Name: series-workflow9hlch Phase: Succeeded StartedAt: 2026-07-26 05:45:14 +0000 UTC FinishedAt: 2026-07-26 07:23:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[0] Phase: Succeeded StartedAt: 2026-07-26 05:45:14 +0000 UTC FinishedAt: 2026-07-26 06:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 05:45:14 +0000 UTC FinishedAt: 2026-07-26 06:03:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9eebf259d5352b87080d67758f483583d9e763d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GFS2_FS", "GFS2_FS_LOCKING_DLM", "DLM", "CONFIGFS_FS", "EROFS_FS", "EROFS_FS_ZIP", "XFS_FS", "XFS_QUOTA", "CEPH_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9eebf259d5352b87080d67758f483583d9e763d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GFS2_FS", "GFS2_FS_LOCKING_DLM", "DLM", "CONFIGFS_FS", "EROFS_FS", "EROFS_FS_ZIP", "XFS_FS", "XFS_QUOTA", "CEPH_FS" ], "series_id": "5d8e7047-7e42-47ea-a239-d79b9aa95506" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ceph_trim_dentries", "xfs_buf_stale", "gfs2_glock_thaw", "gfs2_quota_sync" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dGUzJfRlMmIzM0OywKICAgICYjMzQ7R0ZTMl9GU19MT0NLSU5HX0RMTSYjMzQ7LAogICAgJiMzNDtETE0mIzM0OywKICAgICYjMzQ7Q09ORklHRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfWklQJiMzNDssCiAgICAmIzM0O1hGU19GUyYjMzQ7LAogICAgJiMzNDtYRlNfUVVPVEEmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfdHJpbV9kZW50cmllcyYjMzQ7LAogICAgJiMzNDt4ZnNfYnVmX3N0YWxlJiMzNDssCiAgICAmIzM0O2dmczJfZ2xvY2tfdGhhdyYjMzQ7LAogICAgJiMzNDtnZnMyX3F1b3RhX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMjAwNzQ4Zjc3ZmZlNjAzMWMyNDQzNWY1ZGI5NzdkZDNmMDg3YTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDY6MDA6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvY2VwaC9kaXIuYyBiL2ZzL2NlcGgvZGlyLmNcbmluZGV4IGI5NTcxNDlhYmU1YTBhLi5mMzk4NTZmZjNlYTE1OCAxMDA2NDRcbi0tLSBhL2ZzL2NlcGgvZGlyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NlcGgvZGlyLmNcbkBAIC0xNjY3LDcgJiM0MzsxNjY3LDcgQEAgX19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcbiBcdFx0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jaykpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuJiM0MztcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuIFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGktXHUwMDNlbGVhc2VfbGlzdCk7XG4gXHRcdFx0Z290byBuZXh0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuY1xuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jXG5AQCAtNDM0LDcgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19kX2NsZWFyX3R5cGVfYW5kX2lub2RlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBzdGF0aWMgdm9pZCBkZW50cnlfZnJlZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0REVOVFJZX1dBUk5fT05DRShkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpLCBkZW50cnkpO1xuLVx0REVOVFJZX1dBUk5fT05DRShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzZT0gMCwgZGVudHJ5KTtcbiYjNDM7XHRERU5UUllfV0FSTl9PTkNFKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZiksIGRlbnRyeSk7XG4gXHREX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7XG4gXHRpZiAodW5saWtlbHkoZG5hbWVfZXh0ZXJuYWwoZGVudHJ5KSkpIHtcbiBcdFx0c3RydWN0IGV4dGVybmFsX25hbWUgKnAgPSBleHRlcm5hbF9uYW1lKGRlbnRyeSk7XG5AQCAtNzgyLDcgJiM0Mzs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiAgKlxuICAqIElmIEBkZW50cnkgaXMgaWRsZSBhbmQgcmVtYWlucyBzdWNoIGFmdGVyIHdlIGFzc2VtYmxlIHRoZSBmdWxsXG4gICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuJiM0MzsgKiB3ZSBtYXJrIGl0IGRvb21lZCAoc2VlIGxvY2tyZWZfbWFya19kZWFkKCkpIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuICAqIGl0IGZyb20gYW55IGZpbGVzeXN0ZW0gb2JqZWN0cy4gIE90aGVyd2lzZSB3ZSBkcm9wIC1cdTAwM2VkX2xvY2sgYW5kXG4gICogcmV0dXJuICVOVUxMLlxuICAqXG5AQCAtOTQ2LDcgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRcdGlmIChXQVJOX09OX09OQ0UoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2M9IDApKSB7XG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG5AQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3Qodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmIChkYXRhLVx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcbiBcdFx0Z290byBvdXQ7XG4gXG4tXHRpZiAoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2M9IDApIHtcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpIHtcbiBcdFx0X19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKTtcbiBcdFx0ZGF0YS1cdTAwM2Vmb3VuZCYjNDM7JiM0Mzs7XG4gXHR9XG5AQCAtMTY3Niw3ICYjNDM7MTY3Niw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3QyKHZvaWQgKl9kYXRhLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAoZGF0YS1cdTAwM2VzdGFydCA9PSBkZW50cnkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0aWYgKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjPSAwKSB7XG4mIzQzO1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdGlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2UgbmVlZCBhbiBlbnRlciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIGFyZWEgdGhhdFxuQEAgLTE3NDcsNyAmIzQzOzE3NDcsNyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfZGNhY2hlX3RyZWUoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBib29sIGZvcl91bW91bnQpXG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNnYtXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbi1cdFx0XHRpZiAodW5saWtlbHkodi1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoXHUwMDI2di1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdFx0Ly8gSXQmIzM5O3MgZG9vbWVkOyBpZiBpdCBpc24mIzM5O3QgZGVhZCB5ZXQsIG5vdGlmeSB1c1xuIFx0XHRcdFx0Ly8gb25jZSBpdCBiZWNvbWVzIGludmlzaWJsZSB0byBkX3dhbGsoKS5cbiBcdFx0XHRcdG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcih2LCBcdTAwMjZ3YWl0KTtcbkBAIC0xODIzLDcgJiM0MzsxODIzLDcgQEAgdm9pZCBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2c2ItXHUwMDNlc19yb290c19sb2NrKTtcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdFx0aWYgKHVubGlrZWx5KGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHN0cnVjdCBjb21wbGV0aW9uX2xpc3Qgd2FpdDtcbiBcdFx0XHRib29sIG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcihkZW50cnksIFx1MDAyNndhaXQpO1xuIFxuQEAgLTI4MjIsNyAmIzQzOzI4MjIsNyBAQCBzdHJ1Y3QgZGVudHJ5ICpkX2FsbG9jX3BhcmFsbGVsKHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0Lyogbm93IHdlIGNhbiB0cnkgdG8gZ3JhYiBhIHJlZmVyZW5jZSAqL1xuLVx0XHRpZiAodW5saWtlbHkoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2MgMCkpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpKSB7XG4gXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdFx0Z290byByZXRyeTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9mcy9lcm9mcy96ZGF0YS5jXG5pbmRleCA3NDUyMGU5MTAyNTk2Ni4uZDAyMmQxZGZmNWExY2UgMTAwNjQ0XG4tLS0gYS9mcy9lcm9mcy96ZGF0YS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9lcm9mcy96ZGF0YS5jXG5AQCAtNzI1LDcgJiM0Mzs3MjUsNyBAQCBzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpIHtcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSkge1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuQEAgLTk0NSw3ICYjNDM7OTQ1LDcgQEAgc3RhdGljIHZvaWQgel9lcm9mc19wdXRfcGNsdXN0ZXIoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSxcbiBcdGlmIChsb2NrcmVmX3B1dF9vcl9sb2NrKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0REJHX0JVR09OKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSk7XG4mIzQzO1x0REJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuIFx0aWYgKCEtLXBjbC1cdTAwM2Vsb2NrcmVmLmNvdW50KSB7XG4gXHRcdGlmICh0cnlfZnJlZSBcdTAwMjZcdTAwMjYgeGFfdHJ5bG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpKSB7XG4gXHRcdFx0ZnJlZSA9IF9fZXJvZnNfdHJ5X3RvX3JlbGVhc2VfcGNsdXN0ZXIoc2JpLCBwY2wpO1xuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xuaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9nbG9jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2dsb2NrLmNcbkBAIC0yMDgwLDcgJiM0MzsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxuIFx0Z2ZzMl9nbG9ja19yZW1vdmVfZnJvbV9scnUoZ2wpO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYubG9jayk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0Z2wtXHUwMDNlZ2xfbG9ja3JlZi5jb3VudCYjNDM7JiM0Mzs7XG4gXHRcdGlmIChnbC1cdTAwM2VnbF9zdGF0ZSAhPSBMTV9TVF9VTkxPQ0tFRClcbiBcdFx0XHRyZXF1ZXN0X2RlbW90ZShnbCwgTE1fU1RfVU5MT0NLRUQsIDAsIGZhbHNlKTtcbkBAIC0yMTE1LDcgJiM0MzsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbiBzdGF0aWMgdm9pZCB3aXRoZHJhd19nbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4ge1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYubG9jayk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0LypcbiBcdFx0ICogV2UgZG9uJiMzOTt0IHdhbnQgdG8gd3JpdGUgYmFjayBhbnkgbW9yZSBkaXJ0eSBkYXRhLiAgVW5sb2NrIHRoZVxuIFx0XHQgKiByZW1haW5pbmcgaW5vZGUgYW5kIHJlc291cmNlIGdyb3VwIGdsb2NrczsgdGhpcyB3aWxsIGNhdXNlXG5AQCAtMjQ4Myw3ICYjNDM7MjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiYjNDM7XHRcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdG4tLTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xuaW5kZXggNzgyOGFkMGI2ZjVhNmYuLmNjOTAxZmI5N2RhMGNhIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9sb2NrX2RsbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2xvY2tfZGxtLmNcbkBAIC0xMjYsNyAmIzQzOzEyNiw3IEBAIHN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcbiBcdGNsZWFyX2JpdChHTEZfQkxPQ0tJTkcsIFx1MDAyNmdsLVx1MDAzZWdsX2ZsYWdzKTtcbiBcbiBcdC8qIElmIHRoZSBnbG9jayBpcyBkZWFkLCB3ZSBvbmx5IHJlYWN0IHRvIGEgZGxtX3VubG9jaygpIHJlcGx5LiAqL1xuLVx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikgXHUwMDI2XHUwMDI2XG4gXHQgICAgZ2wtXHUwMDNlZ2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wgPSBhcmc7XG4gXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4mIzQzO1x0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0c3dpdGNoIChtb2RlKSB7XG5AQCAtMzI5LDcgJiM0MzszMjksNyBAQCBzdGF0aWMgdm9pZCBnZGxtX3B1dF9sb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbiBcdHVpbnQzMl90IGZsYWdzID0gMDtcbiBcdGludCBlcnJvcjtcbiBcbi1cdEJVR19PTighX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpO1xuJiM0MztcdEJVR19PTighbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpKSB7XG4gXHRcdGdmczJfZ2xvY2tfZnJlZShnbCk7XG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXG5pbmRleCA5MWU5OTc1ZDI1ZTg5MC4uMDAxYzhiMzljYTU1NzMgMTAwNjQ0XG4tLS0gYS9mcy9nZnMyL3F1b3RhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2dmczIvcXVvdGEuY1xuQEAgLTM0Miw3ICYjNDM7MzQyLDcgQEAgc3RhdGljIHZvaWQgcWRfcHV0KHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxuIFx0aWYgKGxvY2tyZWZfcHV0X29yX2xvY2soXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpXG4gXHRcdHJldHVybjtcbiBcbi1cdEJVR19PTihfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSk7XG4mIzQzO1x0QlVHX09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSk7XG4gXHRzZHAgPSBxZC1cdTAwM2VxZF9zYmQ7XG4gXHRpZiAodW5saWtlbHkoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsIFx1MDAyNnNkcC1cdTAwM2VzZF9mbGFncykpKSB7XG4gXHRcdGxvY2tyZWZfbWFya19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpO1xuQEAgLTQ4Niw3ICYjNDM7NDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcbiBcdCAgICBxZC1cdTAwM2VxZF9zeW5jX2dlbiBcdTAwM2U9IHN5bmNfZ2VuKVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpKVxuIFx0XHRnb3RvIG91dDtcbiBcdHFkLVx1MDAzZXFkX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7O1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXG5pbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0XG4tLS0gYS9mcy94ZnMveGZzX2J1Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy94ZnMveGZzX2J1Zi5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgeGZzX2J1Zl9zdGFsZShcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYubG9jayk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmJwLVx1MDAzZWJfbHJ1X3JlZiwgMCk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpXG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSlcbiBcdFx0bGlzdF9scnVfZGVsX29iaihcdTAwMjZicC1cdTAwM2ViX3RhcmdldC1cdTAwM2VidF9scnUsIFx1MDAyNmJwLVx1MDAzZWJfbHJ1KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcbiB9XG5AQCAtODQxLDcgJiM0Mzs4NDEsNyBAQCBzdGF0aWMgdm9pZFxuIHhmc19idWZfZGVzdHJveShcbiBcdHN0cnVjdCB4ZnNfYnVmXHRcdCpicClcbiB7XG4tXHRBU1NFUlQoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSk7XG4mIzQzO1x0QVNTRVJUKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYpKTtcbiBcdEFTU0VSVCghKGJwLVx1MDAzZWJfZmxhZ3MgXHUwMDI2IF9YQkZfREVMV1JJX1EpKTtcbiBcbiBcdGlmIChicC1cdTAwM2ViX3BhZylcbmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmNcbmluZGV4IDg5NmIyNGY4N2FjOWQ1Li45OWE4MjEwN2I4ZTZmMiAxMDA2NDRcbi0tLSBhL2ZzL3hmcy94ZnNfcW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19xbS5jXG5AQCAtMTI4LDcgJiM0MzsxMjgsNyBAQCB4ZnNfcW1fZHFwdXJnZShcbiBcdHN0cnVjdCB4ZnNfcXVvdGFpbmZvXHQqcWkgPSBkcXAtXHUwMDNlcV9tb3VudC1cdTAwM2VtX3F1b3RhaW5mbztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZkcXAtXHUwMDNlcV9sb2NrcmVmLmxvY2spO1xuLVx0aWYgKGRxcC1cdTAwM2VxX2xvY2tyZWYuY291bnQgXHUwMDNlIDAgfHwgX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiYjNDM7XHRpZiAoZHFwLVx1MDAzZXFfbG9ja3JlZi5jb3VudCBcdTAwM2UgMCB8fCBsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXHR9XG5AQCAtNDI5LDcgJiM0Mzs0MjksNyBAQCB4ZnNfcW1fZHF1b3RfaXNvbGF0ZShcbiBcdCAqIGZyb20gdGhlIExSVSwgbGVhdmUgaXQgZm9yIHRoZSBmcmVlaW5nIHRhc2sgdG8gY29tcGxldGUgdGhlIGZyZWVpbmdcbiBcdCAqIHByb2Nlc3MgcmF0aGVyIHRoYW4gcmlzayBpdCBiZWluZyBmcmVlIGZyb20gdW5kZXIgdXMgaGVyZS5cbiBcdCAqL1xuLVx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKVxuJiM0MztcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpXG4gXHRcdGdvdG8gb3V0X21pc3NfdW5sb2NrO1xuIFxuIFx0LypcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaCBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXG5pbmRleCA2ZGVkMjRjZGI0YTgyYy4uZGRmYjdkM2I4Y2VjMmUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcbkBAIC0zNCw2ICYjNDM7MzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XG4gXHR9O1xuIH07XG4gXG4mIzQzOyNkZWZpbmUgX19MT0NLUkVGX0RFQURfVkFMXHQtMTI4XG4mIzQzO1xuIC8qKlxuICAqIGxvY2tyZWZfaW5pdCAtIEluaXRpYWxpemUgYSBsb2NrcmVmXG4gICogQGxvY2tyZWY6IHBvaW50ZXIgdG8gbG9ja3JlZiBzdHJ1Y3R1cmVcbkBAIC01NSw5ICYjNDM7NTcsMTUgQEAgdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgdW5kZXIgc3BpbmxvY2sgZm9yIHJlbGlhYmxlIHJlc3VsdHMgKi9cbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gKFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbG9ja3JlZl9pc19kZWFkX29yX3plcm8oY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4ge1xuLVx0cmV0dXJuICgoaW50KWwtXHUwMDNlY291bnQgXHUwMDNjIDApO1xuJiM0MztcdGludCBjb3VudCA9IFJFQURfT05DRShsLVx1MDAzZWNvdW50KTtcbiYjNDM7XHRyZXR1cm4gKGNvdW50ID09IF9fTE9DS1JFRl9ERUFEX1ZBTCB8fCBjb3VudCA9PSAwKTtcbiB9XG4gXG4gI2VuZGlmIC8qIF9fTElOVVhfTE9DS1JFRl9IICovXG5kaWZmIC0tZ2l0IGEvbGliL2xvY2tyZWYuYyBiL2xpYi9sb2NrcmVmLmNcbmluZGV4IDVkOGUzZWYzODYwZWUxLi45YjNkZDY4OGQ4Y2RhMSAxMDA2NDRcbi0tLSBhL2xpYi9sb2NrcmVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9sb2NrcmVmLmNcbkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9wdXRfb3JfbG9jayk7XG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcbiB7XG4gXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXHUwMDI2bG9ja3JlZi1cdTAwM2Vsb2NrKTtcbi1cdGxvY2tyZWYtXHUwMDNlY291bnQgPSAtMTI4O1xuJiM0MztcdGxvY2tyZWYtXHUwMDNlY291bnQgPSBfX0xPQ0tSRUZfREVBRF9WQUw7XG4gfVxuIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9tYXJrX2RlYWQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHRlMyX0ZTJiMzNDssCiAgICAmIzM0O0dGUzJfRlNfTE9DS0lOR19ETE0mIzM0OywKICAgICYjMzQ7RExNJiMzNDssCiAgICAmIzM0O0NPTkZJR0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1pJUCYjMzQ7LAogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1FVT1RBJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX3RyaW1fZGVudHJpZXMmIzM0OywKICAgICYjMzQ7eGZzX2J1Zl9zdGFsZSYjMzQ7LAogICAgJiMzNDtnZnMyX2dsb2NrX3RoYXcmIzM0OywKICAgICYjMzQ7Z2ZzMl9xdW90YV9zeW5jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTIwMDc0OGY3N2ZmZTYwMzFjMjQ0MzVmNWRiOTc3ZGQzZjA4N2EzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDA2OjAwOjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9kaXIuYyBiL2ZzL2NlcGgvZGlyLmMKaW5kZXggYjk1NzE0OWFiZTVhMGEuLmYzOTg1NmZmM2VhMTU4IDEwMDY0NAotLS0gYS9mcy9jZXBoL2Rpci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NlcGgvZGlyLmMKQEAgLTE2NjcsNyAmIzQzOzE2NjcsNyBAQCBfX2RlbnRyeV9sZWFzZXNfd2FsayhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLAogCQlpZiAoIXNwaW5fdHJ5bG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkgewomIzQzOwkJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkgewogCQkJbGlzdF9kZWxfaW5pdCgmYW1wO2RpLSZndDtsZWFzZV9saXN0KTsKIAkJCWdvdG8gbmV4dDsKIAkJfQpkaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuYwppbmRleCAzZTlhZjlkZTcwNzQ2NC4uMmFlZTg1ZjNmYmFhNzggMTAwNjQ0Ci0tLSBhL2ZzL2RjYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jCkBAIC00MzQsNyAmIzQzOzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogc3RhdGljIHZvaWQgZGVudHJ5X2ZyZWUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogewogCURFTlRSWV9XQVJOX09OQ0UoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSwgZGVudHJ5KTsKLQlERU5UUllfV0FSTl9PTkNFKGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZndDs9IDAsIGRlbnRyeSk7CiYjNDM7CURFTlRSWV9XQVJOX09OQ0UoIWxvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSwgZGVudHJ5KTsKIAlEX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7CiAJaWYgKHVubGlrZWx5KGRuYW1lX2V4dGVybmFsKGRlbnRyeSkpKSB7CiAJCXN0cnVjdCBleHRlcm5hbF9uYW1lICpwID0gZXh0ZXJuYWxfbmFtZShkZW50cnkpOwpAQCAtNzgyLDcgJiM0Mzs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKICAqCiAgKiBJZiBAZGVudHJ5IGlzIGlkbGUgYW5kIHJlbWFpbnMgc3VjaCBhZnRlciB3ZSBhc3NlbWJsZSB0aGUgZnVsbAogICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpCi0gKiB3ZSBtYXJrIGl0IGRvb21lZCAoLSZndDtkX2xvY2tyZWYuY291bnQgJmx0OyAwKSBhbmQgcHJvY2VlZCB0byBkZXRhY2hpbmcKJiM0MzsgKiB3ZSBtYXJrIGl0IGRvb21lZCAoc2VlIGxvY2tyZWZfbWFya19kZWFkKCkpIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZwogICogaXQgZnJvbSBhbnkgZmlsZXN5c3RlbSBvYmplY3RzLiAgT3RoZXJ3aXNlIHdlIGRyb3AgLSZndDtkX2xvY2sgYW5kCiAgKiByZXR1cm4gJU5VTEwuCiAgKgpAQCAtOTQ2LDcgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlpZiAodW5saWtlbHkocmV0ICZsdDsgMCkpIHsKIAkJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwogCQlyY3VfcmVhZF91bmxvY2soKTsKLQkJaWYgKFdBUk5fT05fT05DRShkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudCAmbHQ7PSAwKSkgewomIzQzOwkJaWYgKFdBUk5fT05fT05DRShsb2NrcmVmX2lzX2RlYWRfb3JfemVybygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkpIHsKIAkJCXNwaW5fdW5sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTE2NDQsNyAmIzQzOzE2NDQsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0KHZvaWQgKl9kYXRhLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiAJaWYgKGRhdGEtJmd0O3N0YXJ0ID09IGRlbnRyeSkKIAkJZ290byBvdXQ7CiAKLQlpZiAoZGVudHJ5LSZndDtkX2xvY2tyZWYuY291bnQgJmx0Oz0gMCkgewomIzQzOwlpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oJmFtcDtkZW50cnktJmd0O2RfbG9ja3JlZikpIHsKIAkJX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgJmFtcDtkYXRhLSZndDtkaXNwb3NlKTsKIAkJZGF0YS0mZ3Q7Zm91bmQmIzQzOyYjNDM7OwogCX0KQEAgLTE2NzYsNyAmIzQzOzE2NzYsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0Mih2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCWlmIChkYXRhLSZndDtzdGFydCA9PSBkZW50cnkpCiAJCWdvdG8gb3V0OwogCi0JaWYgKGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZsdDs9IDApIHsKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2tyZWYpKSB7CiAJCWlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgJmFtcDtkYXRhLSZndDtkaXNwb3NlKSkgewogCQkJLyoKIAkJCSAqIFdlIG5lZWQgYW4gZW50ZXIgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBhcmVhIHRoYXQKQEAgLTE3NDcsNyAmIzQzOzE3NDcsNyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfZGNhY2hlX3RyZWUoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBib29sIGZvcl91bW91bnQpCiAJCQlzcGluX2xvY2soJmFtcDt2LSZndDtkX2xvY2spOwogCQkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKLQkJCWlmICh1bmxpa2VseSh2LSZndDtkX2xvY2tyZWYuY291bnQgJmx0OyAwKSkgewomIzQzOwkJCWlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoJmFtcDt2LSZndDtkX2xvY2tyZWYpKSkgewogCQkJCS8vIEl0JiMzOTtzIGRvb21lZDsgaWYgaXQgaXNuJiMzOTt0IGRlYWQgeWV0LCBub3RpZnkgdXMKIAkJCQkvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLgogCQkJCW5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcih2LCAmYW1wO3dhaXQpOwpAQCAtMTgyMyw3ICYjNDM7MTgyMyw3IEBAIHZvaWQgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJCXNwaW5fdW5sb2NrKCZhbXA7c2ItJmd0O3Nfcm9vdHNfbG9jayk7CiAJCXNwaW5fbG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JCWlmICh1bmxpa2VseShkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2tyZWYpKSkgewogCQkJc3RydWN0IGNvbXBsZXRpb25fbGlzdCB3YWl0OwogCQkJYm9vbCBuZWVkX3dhaXQgPSBkX2FkZF93YWl0ZXIoZGVudHJ5LCAmYW1wO3dhaXQpOwogCkBAIC0yODIyLDcgJiM0MzsyODIyLDcgQEAgc3RydWN0IGRlbnRyeSAqZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCXNwaW5fbG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJCS8qIG5vdyB3ZSBjYW4gdHJ5IHRvIGdyYWIgYSByZWZlcmVuY2UgKi8KLQkJaWYgKHVubGlrZWx5KGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZsdDsgMCkpIHsKJiM0MzsJCWlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoJmFtcDtkZW50cnktJmd0O2RfbG9ja3JlZikpKSB7CiAJCQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJCWdvdG8gcmV0cnk7CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9mcy9lcm9mcy96ZGF0YS5jCmluZGV4IDc0NTIwZTkxMDI1OTY2Li5kMDIyZDFkZmY1YTFjZSAxMDA2NDQKLS0tIGEvZnMvZXJvZnMvemRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9lcm9mcy96ZGF0YS5jCkBAIC03MjUsNyAmIzQzOzcyNSw3IEBAIHN0YXRpYyBib29sIHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyICpwY2wpCiAJCXJldHVybiB0cnVlOwogCiAJc3Bpbl9sb2NrKCZhbXA7cGNsLSZndDtsb2NrcmVmLmxvY2spOwotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpIHsKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpIHsKIAkJc3Bpbl91bmxvY2soJmFtcDtwY2wtJmd0O2xvY2tyZWYubG9jayk7CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC05NDUsNyAmIzQzOzk0NSw3IEBAIHN0YXRpYyB2b2lkIHpfZXJvZnNfcHV0X3BjbHVzdGVyKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksCiAJaWYgKGxvY2tyZWZfcHV0X29yX2xvY2soJmFtcDtwY2wtJmd0O2xvY2tyZWYpKQogCQlyZXR1cm47CiAKLQlEQkdfQlVHT04oX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtwY2wtJmd0O2xvY2tyZWYpKTsKJiM0MzsJREJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpOwogCWlmICghLS1wY2wtJmd0O2xvY2tyZWYuY291bnQpIHsKIAkJaWYgKHRyeV9mcmVlICZhbXA7JmFtcDsgeGFfdHJ5bG9jaygmYW1wO3NiaS0mZ3Q7bWFuYWdlZF9wc2xvdHMpKSB7CiAJCQlmcmVlID0gX19lcm9mc190cnlfdG9fcmVsZWFzZV9wY2x1c3RlcihzYmksIHBjbCk7CmRpZmYgLS1naXQgYS9mcy9nZnMyL2dsb2NrLmMgYi9mcy9nZnMyL2dsb2NrLmMKaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NAotLS0gYS9mcy9nZnMyL2dsb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZ2ZzMi9nbG9jay5jCkBAIC0yMDgwLDcgJiM0MzsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKQogCWdmczJfZ2xvY2tfcmVtb3ZlX2Zyb21fbHJ1KGdsKTsKIAogCXNwaW5fbG9jaygmYW1wO2dsLSZndDtnbF9sb2NrcmVmLmxvY2spOwotCWlmICghX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpIHsKJiM0MzsJaWYgKCFsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpIHsKIAkJZ2wtJmd0O2dsX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7OwogCQlpZiAoZ2wtJmd0O2dsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKQogCQkJcmVxdWVzdF9kZW1vdGUoZ2wsIExNX1NUX1VOTE9DS0VELCAwLCBmYWxzZSk7CkBAIC0yMTE1LDcgJiM0MzsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkKIHN0YXRpYyB2b2lkIHdpdGhkcmF3X2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkKIHsKIAlzcGluX2xvY2soJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZi5sb2NrKTsKLQlpZiAoIV9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKSB7CiYjNDM7CWlmICghbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKSB7CiAJCS8qCiAJCSAqIFdlIGRvbiYjMzk7dCB3YW50IHRvIHdyaXRlIGJhY2sgYW55IG1vcmUgZGlydHkgZGF0YS4gIFVubG9jayB0aGUKIAkJICogcmVtYWluaW5nIGlub2RlIGFuZCByZXNvdXJjZSBncm91cCBnbG9ja3M7IHRoaXMgd2lsbCBjYXVzZQpAQCAtMjQ4Myw3ICYjNDM7MjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbikKIAkJCQljb250aW51ZTsKIAkJCWJyZWFrOwogCQl9IGVsc2UgewotCQkJaWYgKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQomIzQzOwkJCWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpCiAJCQkJY29udGludWU7CiAJCQluLS07CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uYwppbmRleCA3ODI4YWQwYjZmNWE2Zi4uY2M5MDFmYjk3ZGEwY2EgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvbG9ja19kbG0uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2xvY2tfZGxtLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKQogCWNsZWFyX2JpdChHTEZfQkxPQ0tJTkcsICZhbXA7Z2wtJmd0O2dsX2ZsYWdzKTsKIAogCS8qIElmIHRoZSBnbG9jayBpcyBkZWFkLCB3ZSBvbmx5IHJlYWN0IHRvIGEgZGxtX3VubG9jaygpIHJlcGx5LiAqLwotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO2dsLSZndDtnbF9sb2NrcmVmKSAmYW1wOyZhbXA7CiYjNDM7CWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikgJmFtcDsmYW1wOwogCSAgICBnbC0mZ3Q7Z2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKQogCQlyZXR1cm47CiAKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpCiB7CiAJc3RydWN0IGdmczJfZ2xvY2sgKmdsID0gYXJnOwogCi0JaWYgKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQomIzQzOwlpZiAobG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQogCQlyZXR1cm47CiAKIAlzd2l0Y2ggKG1vZGUpIHsKQEAgLTMyOSw3ICYjNDM7MzI5LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpCiAJdWludDMyX3QgZmxhZ3MgPSAwOwogCWludCBlcnJvcjsKIAotCUJVR19PTighX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpOwomIzQzOwlCVUdfT04oIWxvY2tyZWZfaXNfZGVhZCgmYW1wO2dsLSZndDtnbF9sb2NrcmVmKSk7CiAKIAlpZiAodGVzdF9iaXQoR0xGX0lOSVRJQUwsICZhbXA7Z2wtJmd0O2dsX2ZsYWdzKSkgewogCQlnZnMyX2dsb2NrX2ZyZWUoZ2wpOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jCmluZGV4IDkxZTk5NzVkMjVlODkwLi4wMDFjOGIzOWNhNTU3MyAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9xdW90YS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2dmczIvcXVvdGEuYwpAQCAtMzQyLDcgJiM0MzszNDIsNyBAQCBzdGF0aWMgdm9pZCBxZF9wdXQoc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQpCiAJaWYgKGxvY2tyZWZfcHV0X29yX2xvY2soJmFtcDtxZC0mZ3Q7cWRfbG9ja3JlZikpCiAJCXJldHVybjsKIAotCUJVR19PTihfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSk7CiYjNDM7CUJVR19PTihsb2NrcmVmX2lzX2RlYWQoJmFtcDtxZC0mZ3Q7cWRfbG9ja3JlZikpOwogCXNkcCA9IHFkLSZndDtxZF9zYmQ7CiAJaWYgKHVubGlrZWx5KCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmYW1wO3NkcC0mZ3Q7c2RfZmxhZ3MpKSkgewogCQlsb2NrcmVmX21hcmtfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKTsKQEAgLTQ4Niw3ICYjNDM7NDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwKIAkgICAgcWQtJmd0O3FkX3N5bmNfZ2VuICZndDs9IHN5bmNfZ2VuKQogCQlnb3RvIG91dDsKIAotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSkKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSkKIAkJZ290byBvdXQ7CiAJcWQtJmd0O3FkX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7OwogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2J1Zi5jIGIvZnMveGZzL3hmc19idWYuYwppbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYnVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19idWYuYwpAQCAtODAsNyAmIzQzOzgwLDcgQEAgeGZzX2J1Zl9zdGFsZSgKIAogCXNwaW5fbG9jaygmYW1wO2JwLSZndDtiX2xvY2tyZWYubG9jayk7CiAJYXRvbWljX3NldCgmYW1wO2JwLSZndDtiX2xydV9yZWYsIDApOwotCWlmICghX19sb2NrcmVmX2lzX2RlYWQoJmFtcDticC0mZ3Q7Yl9sb2NrcmVmKSkKJiM0MzsJaWYgKCFsb2NrcmVmX2lzX2RlYWQoJmFtcDticC0mZ3Q7Yl9sb2NrcmVmKSkKIAkJbGlzdF9scnVfZGVsX29iaigmYW1wO2JwLSZndDtiX3RhcmdldC0mZ3Q7YnRfbHJ1LCAmYW1wO2JwLSZndDtiX2xydSk7CiAJc3Bpbl91bmxvY2soJmFtcDticC0mZ3Q7Yl9sb2NrcmVmLmxvY2spOwogfQpAQCAtODQxLDcgJiM0Mzs4NDEsNyBAQCBzdGF0aWMgdm9pZAogeGZzX2J1Zl9kZXN0cm95KAogCXN0cnVjdCB4ZnNfYnVmCQkqYnApCiB7Ci0JQVNTRVJUKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7YnAtJmd0O2JfbG9ja3JlZikpOwomIzQzOwlBU1NFUlQobG9ja3JlZl9pc19kZWFkKCZhbXA7YnAtJmd0O2JfbG9ja3JlZikpOwogCUFTU0VSVCghKGJwLSZndDtiX2ZsYWdzICZhbXA7IF9YQkZfREVMV1JJX1EpKTsKIAogCWlmIChicC0mZ3Q7Yl9wYWcpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmMKaW5kZXggODk2YjI0Zjg3YWM5ZDUuLjk5YTgyMTA3YjhlNmYyIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3FtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19xbS5jCkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIHhmc19xbV9kcXB1cmdlKAogCXN0cnVjdCB4ZnNfcXVvdGFpbmZvCSpxaSA9IGRxcC0mZ3Q7cV9tb3VudC0mZ3Q7bV9xdW90YWluZm87CiAKIAlzcGluX2xvY2soJmFtcDtkcXAtJmd0O3FfbG9ja3JlZi5sb2NrKTsKLQlpZiAoZHFwLSZndDtxX2xvY2tyZWYuY291bnQgJmd0OyAwIHx8IF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYpKSB7CiYjNDM7CWlmIChkcXAtJmd0O3FfbG9ja3JlZi5jb3VudCAmZ3Q7IDAgfHwgbG9ja3JlZl9pc19kZWFkKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYpKSB7CiAJCXNwaW5fdW5sb2NrKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYubG9jayk7CiAJCXJldHVybiAtRUFHQUlOOwogCX0KQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgeGZzX3FtX2RxdW90X2lzb2xhdGUoCiAJICogZnJvbSB0aGUgTFJVLCBsZWF2ZSBpdCBmb3IgdGhlIGZyZWVpbmcgdGFzayB0byBjb21wbGV0ZSB0aGUgZnJlZWluZwogCSAqIHByb2Nlc3MgcmF0aGVyIHRoYW4gcmlzayBpdCBiZWluZyBmcmVlIGZyb20gdW5kZXIgdXMgaGVyZS4KIAkgKi8KLQlpZiAoX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtkcXAtJmd0O3FfbG9ja3JlZikpCiYjNDM7CWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtkcXAtJmd0O3FfbG9ja3JlZikpCiAJCWdvdG8gb3V0X21pc3NfdW5sb2NrOwogCiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmgKaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaApAQCAtMzQsNiAmIzQzOzM0LDggQEAgc3RydWN0IGxvY2tyZWYgewogCX07CiB9OwogCiYjNDM7I2RlZmluZSBfX0xPQ0tSRUZfREVBRF9WQUwJLTEyOAomIzQzOwogLyoqCiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZgogICogQGxvY2tyZWY6IHBvaW50ZXIgdG8gbG9ja3JlZiBzdHJ1Y3R1cmUKQEAgLTU1LDkgJiM0Mzs1NywxNSBAQCB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICpsb2NrcmVmKTsKIGJvb2wgbG9ja3JlZl9nZXRfbm90X2RlYWQoc3RydWN0IGxvY2tyZWYgKmxvY2tyZWYpOwogCiAvKiBNdXN0IGJlIGNhbGxlZCB1bmRlciBzcGlubG9jayBmb3IgcmVsaWFibGUgcmVzdWx0cyAqLwotc3RhdGljIGlubGluZSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0cnVjdCBsb2NrcmVmICpsKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpCiYjNDM7ewomIzQzOwlyZXR1cm4gKFJFQURfT05DRShsLSZndDtjb3VudCkgPT0gX19MT0NLUkVGX0RFQURfVkFMKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBib29sIGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKGNvbnN0IHN0cnVjdCBsb2NrcmVmICpsKQogewotCXJldHVybiAoKGludClsLSZndDtjb3VudCAmbHQ7IDApOwomIzQzOwlpbnQgY291bnQgPSBSRUFEX09OQ0UobC0mZ3Q7Y291bnQpOwomIzQzOwlyZXR1cm4gKGNvdW50ID09IF9fTE9DS1JFRl9ERUFEX1ZBTCB8fCBjb3VudCA9PSAwKTsKIH0KIAogI2VuZGlmIC8qIF9fTElOVVhfTE9DS1JFRl9IICovCmRpZmYgLS1naXQgYS9saWIvbG9ja3JlZi5jIGIvbGliL2xvY2tyZWYuYwppbmRleCA1ZDhlM2VmMzg2MGVlMS4uOWIzZGQ2ODhkOGNkYTEgMTAwNjQ0Ci0tLSBhL2xpYi9sb2NrcmVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL2xvY2tyZWYuYwpAQCAtMTMxLDcgJiM0MzsxMzEsNyBAQCBFWFBPUlRfU1lNQk9MKGxvY2tyZWZfcHV0X29yX2xvY2spOwogdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZikKIHsKIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJmFtcDtsb2NrcmVmLSZndDtsb2NrKTsKLQlsb2NrcmVmLSZndDtjb3VudCA9IC0xMjg7CiYjNDM7CWxvY2tyZWYtJmd0O2NvdW50ID0gX19MT0NLUkVGX0RFQURfVkFMOwogfQogRVhQT1JUX1NZTUJPTChsb2NrcmVmX21hcmtfZGVhZCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTG9ja3JlZiBDaGFuZ2UgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHN3YXBwaW5nIG91dCBgX19sb2NrcmVmX2lzX2RlYWRgIHdpdGggYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSBkZXRlcm1pbmUgaWYgYSBgZGVudHJ5YCYjMzk7cyBsb2NrIHJlZmVyZW5jZSBpcyAmIzM0O2RlYWQuJiMzNDsgIFByZXZpb3VzbHksIGFueSBuZWdhdGl2ZSB2YWx1ZSBvZiBgZGVudHJ5LSZndDtkX2xvY2tyZWYuY291bnRgIGluZGljYXRlZCBhIGRlYWQgbG9ja3JlZi4gTm93LCBpdCYjMzk7cyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBgLTEyOGAgKGRlZmluZWQgYXMgYF9fTE9DS1JFRl9ERUFEX1ZBTGApLiAgV2UmIzM5O3JlIGdvaW5nIGZyb20gY2hlY2tpbmcgYGNvdW50ICZsdDsgMGAgdG8gY2hlY2tpbmcgYFJFQURfT05DRShsLSZndDtjb3VudCkgPT0gX19MT0NLUkVGX0RFQURfVkFMYCBvciB6ZXJvLCByaWdodD8KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBubyBsb25nZXIgYSBjYXRjaC1hbGwgZm9yIGFueSBuZWdhdGl2ZSB2YWx1ZTsgaXQmIzM5O3Mgbm93IHNwZWNpZmljIHRvIHRoYXQgYC0xMjhgIHZhbHVlLiAgSXMgdGhpcyBhIGJ1ZyBmaXgvcmVmYWN0b3Jpbmcgb3IgYW4gYWN0dWFsIGZ1bmN0aW9uYWwgY2hhbmdlPyBMZXQgbWUgdGhpbmssIGFtIEkgaW50cm9kdWNpbmcgbmV3IGZlYXR1cmVzPyBOby4gSXQmIzM5O3MgcHVyZWx5IGZpeGluZyBhIGxvY2tyZWYgY2hlY2suCgpUaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB3aXRob3V0IGltcGFjdGluZyBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUsIG9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycy4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIChkY2FjaGUgYW5kIGxvY2tyZWYpLCBzbyBpbml0aWFsbHksIEkmIzM5O2Qgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgJiMzNDtudW1lcmljIGNvbnN0YW50cyYjMzQ7IGV4Y2VwdGlvbi4gRG9lcyB0aGlzIG5ldyBiZWhhdmlvciBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IFllcyEgIFByZXZpb3VzbHksIGFuIHVuZGVyZmxvdyBjb3VsZCBiZSB0cmVhdGVkIGFzIGRlYWQsIGJ1dCBub3cgaXQgd2lsbCBub3QgYmUuIFRoZSBgbG9ja3JlZmAgY291bnQgaXMgb25seSBzZXQgdG8gYC0xMjhgIHdoZW4gbWFya2VkIGRlYWQuIFNvIGFueSBvdGhlciBuZWdhdGl2ZSB2YWx1ZSBzaG91bGRuJiMzOTt0IHJlYWxseSAqYmUqIHBvc3NpYmxlIHVubGVzcyB0aGVyZSYjMzk7cyBhbiB1bmRlcmZsb3cuIFRoYXQgY291bGQgdHJpZ2dlciBvdGhlciBidWdzIG9yIHdhcm5pbmdzLiBFZGdlIGNhc2VzIGFyZSBteSBmb2N1cy4KClNvLCB3aGVyZSBhcmUgdGhlc2UgY2hhbmdlcz8gSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyB2YXJpb3VzIGRjYWNoZSBmdW5jdGlvbnMgKGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBldGMuKSwgY2VwaCwgZXJvZnMsIGdmczIsIGFuZCB4ZnMuICBJIHdhbnQgdG8gYXZvaWQgZnV6emluZyB0aGUgaG90IHBhdGggZGNhY2hlIHJvdXRpbmVzLCB0aG9zZSBhcmUgaGl0IHRvbyBvZnRlbiB0byBiZSB1c2VmdWwgZm9yIGZvY3VzZWQgZnV6emluZy4gQnV0IGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAsIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAsIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAsIGBnZGxtX2FzdGAsIGBnZGxtX2Jhc3RgLCBgZ2RsbV9wdXRfbG9ja2AsIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YCwgYF9fZGVudHJ5X2xlYXNlc193YWxrYD8gTGV0IG1lIHNlZS4gSSBjYW4gZm9jdXMgb24gdGhvc2Ugcm91dGluZXMgaW4gbXkgZnV6emluZy4KCk15IGNvbmNsdXNpb24gaXMgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgLiBBbmQgSSBuZWVkIHRvIHRlc3QgdGhvc2UgZnVuY3Rpb25zLiBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFzIHdlbGwgLSBpcyBgQ09ORklHX1hGU19RVU9UQWAgbmVlZGVkIGZvciBYRlMgdGVzdHM/IEkgbmVlZCB0byBjaGVjayBgZnMveGZzL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlNfUVVPVEEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZz01MD1jb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcbi0tXG5mcy94ZnMvS2NvbmZpZy03Ni1cbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcbmZzL3hmcy9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtYRlMgUXVvdGEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIEdGUzIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3MsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9nZnMyL0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0JiMzOTtzIHRoZSBjYW5vbmljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHRlMyIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGludHJvZHVjZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQgYWxsb3dzIG1lIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgR0ZTMiBmZWF0dXJlcywgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBhbmQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB0YXNrLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGZvciBHRlMyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMgb24gZmVhdHVyZXMgbGlrZSBgQ09ORklHX0JMT0NLYCwgYENPTkZJR19GU2AsIGBDT05GSUdfWEZTYCBhbmQgYENPTkZJR19KQkQyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR0ZTMl9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2dmczIvS2NvbmZpZzoyOmNvbmZpZyBHRlMyX0ZTXG5mcy9nZnMyL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2dmczIvS2NvbmZpZy0yNi1cbmZzL2dmczIvS2NvbmZpZzoyNzpjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVxuZnMvZ2ZzMi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtHRlMyIERMTSBsb2NraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZToKCioqQ2hlY2tpbmcgdGhlIEVST0ZTIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgZnMvZXJvZnMvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoaXMgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEVST0ZTIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucywgbmV3IGZlYXR1cmVzLCBvciBwZXJoYXBzIGV2ZW4gYW55IGRlcHJlY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0IGFsbC4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwcm9tcHQgc3RyaW5ncy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb250cm9sbGFibGUgYXQgY29tcGlsZSB0aW1lIHZlcnN1cyBwb3RlbnRpYWxseSBydW50aW1lLiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHRoZSBvdmVyYWxsIGZlYXR1cmUgc2V0LCBvciBhcmVhcyBJIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBpbiB0aGUgcGFzdD8gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBjb25zaWRlcmluZzogY29tcHJlc3Npb24gb3B0aW9ucywgc3VwZXJibG9jayBzdXBwb3J0LCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvb3QtdGltZSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoZXNlIG9wdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsJiMzOTtzIG92ZXJhbGwgbW9kdWxlIHN5c3RlbSB0b28uIElzIHRoZXJlIGFueXRoaW5nIHRoYXQgY291bGQgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgb2J2aW91cyBidWdzIG9yIHVudXN1YWwgaWRpb21zLiBBZnRlciB0aGF0LCBJIHdpbGwgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBJIG1heSBoYXZlIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWctMi1cbmZzL2Vyb2ZzL0tjb25maWc6Mzpjb25maWcgRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0VST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNDktXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xuZnMvZXJvZnMvS2NvbmZpZy01MS1cdGJvb2wgXCYjMzQ7RVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxuZnMvZXJvZnMvS2NvbmZpZzo2MDpjb25maWcgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0VST0ZTIGV4dGVuZGVkIGF0dHJpYnV0ZXNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTcwLVxuZnMvZXJvZnMvS2NvbmZpZzo3MTpjb25maWcgRVJPRlNfRlNfUE9TSVhfQUNMXG5mcy9lcm9mcy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtFUk9GUyBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctODQtXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxuZnMvZXJvZnMvS2NvbmZpZy04Ni1cdGJvb2wgXCYjMzQ7RVJPRlMgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cbmZzL2Vyb2ZzL0tjb25maWc6OTg6Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG5mcy9lcm9mcy9LY29uZmlnLTk5LVx0Ym9vbCBcJiMzNDtGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTExMS1cbmZzL2Vyb2ZzL0tjb25maWc6MTEyOmNvbmZpZyBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVx0Ym9vbCBcJiMzNDtFUk9GUyBEYXRhIENvbXByZXNzaW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTEyMS1cbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxuZnMvZXJvZnMvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O0VST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cbmZzL2Vyb2ZzL0tjb25maWc6MTM0OmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQV9ERUZBVUxUX01BWF9TVFJFQU1TXG5mcy9lcm9mcy9LY29uZmlnLTEzNS1cdGludCBcJiMzNDtFUk9GUyBMWk1BIGRlZmF1bHQgbWF4aW11bSBkZWNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE0Ny1cbmZzL2Vyb2ZzL0tjb25maWc6MTQ4OmNvbmZpZyBFUk9GU19GU19aSVBfREVGTEFURVxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O0VST0ZTIERFRkxBVEUgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE1OC1cbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxuZnMvZXJvZnMvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O0VST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxuZnMvZXJvZnMvS2NvbmZpZzoxNzA6Y29uZmlnIEVST0ZTX0ZTX1pJUF9BQ0NFTFxuZnMvZXJvZnMvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O0VST0ZTIGhhcmR3YXJlIGRlY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTgzLVxuZnMvZXJvZnMvS2NvbmZpZzoxODQ6Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXHRib29sIFwmIzM0O0VST0ZTIHBlci1jcHUgZGVjb21wcmVzc2lvbiBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE5Mi1cbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbmZzL2Vyb2ZzL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXG5mcy9lcm9mcy9LY29uZmlnOjIwMzpjb25maWcgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVxuZnMvZXJvZnMvS2NvbmZpZy0yMDQtXHRib29sIFwmIzM0O0VST0ZTIHBhZ2UgY2FjaGUgc2hhcmUgc3VwcG9ydCAoZXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVST0ZTIEJ1aWxkIFN5c3RlbSBmb3IgWklQIFN1cHBvcnQqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGB6ZGF0YS5jYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtBaCwgcmlnaHQsIHRoaXMgaXMgb25seSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiB0aGF0IGBDT05GSUdfRVJPRlNfRlNfWklQYCBvcHRpb24gaXMgZW5hYmxlZC4mIzM0OyBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIHdoZXJlIHdvdWxkIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBsaXZlIGZvciB0aGF0PyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB3aXRoIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBpbiBgZnMvZXJvZnMvTWFrZWZpbGVgLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGNvbnRyb2xsaW5nIHRoaXMgcGFydGljdWxhciBpbmNsdXNpb24uIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGhvdyBaSVAgY29tcHJlc3Npb24gaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBFUk9GUyBmaWxlc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlPTU9ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWEFUVFIpICYjNDM7PSB4YXR0ci5vXG5mcy9lcm9mcy9NYWtlZmlsZTo2OmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUCkgJiM0Mzs9IGRlY29tcHJlc3Nvci5vIHptYXAubyB6ZGF0YS5vIHp1dGlsLm9cbmZzL2Vyb2ZzL01ha2VmaWxlLTctZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWklQX0xaTUEpICYjNDM7PSBkZWNvbXByZXNzb3JfbHptYS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTkyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uIGZvciBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgT2JqZWN0KioKCkFscmlnaHQsIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGBsb2NrX2RsbS5vYCBvYmplY3QgaXMgYmVpbmcgYnVpbHQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBsb2NraW5nLCBhbmQga25vd2luZyB0aGUgR0ZTMiBmaWxlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9ucy4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgZnMvZ2ZzMi9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBsb29raW5nIGZvciBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IGZsYWdzIHJlbGF0ZWQgdG8gdGhlIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEdGUzIgbW9kdWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja19kbG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvTWFrZWZpbGU9ND1nZnMyLXkgOj0gYWNsLm8gYm1hcC5vIGRpci5vIHhhdHRyLm8gZ2xvY2subyBcXFxuLS1cbmZzL2dmczIvTWFrZWZpbGUtOS1cbmZzL2dmczIvTWFrZWZpbGU6MTA6Z2ZzMi0kKENPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfRExNKSAmIzQzOz0gbG9ja19kbG0ub1xuZnMvZ2ZzMi9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4OTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaWxlc3lzdGVtIEZlYXR1cmUgU2VsZWN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBidWlsZGluZyB1cCBhIHBpY3R1cmUgaGVyZSBvZiB0aGUgZmlsZXN5c3RlbXMgd2UgbmVlZCB0byBjb25zaWRlci4gVGhlIGltbWVkaWF0ZSByZXF1aXJlbWVudHMgYXJlIGBHRlMyX0ZTYCwgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIHN0b3JhZ2UgbmVlZHMsIGFuZCB3ZSYjMzk7bGwgcHJvYmFibHkgYWxzbyBuZWVkIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCB0byBtYWtlIHRoYXQgZnVuY3Rpb25hbC4gVGhlbiB3ZSBoYXZlIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19aSVBgLCB3aGljaCBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBmb3IgYSBwYXJ0aWN1bGFyIHJlYWQtb25seSBpbWFnZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTmV4dCwgYFhGU19GU2AgaXMgYWx3YXlzIGEgZ29vZCBvcHRpb24gd2hlbiBoaWdoLXBlcmZvcm1hbmNlIGlzIGEgZmFjdG9yIGFuZCB3ZSYjMzk7bGwgbmVlZCBgWEZTX1FVT1RBYCBlbmFibGVkIGFsb25nIHdpdGggWEZTLiBGaW5hbGx5LCBgQ0VQSF9GU2AgaXMgYW5vdGhlciBkaXN0cmlidXRlZCBmaWxlc3lzdGVtIHRoYXQgd2UgbWF5IG5lZWQgdG8gdXNlLiBJIHRoaW5rIHRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYGZzL2NlcGgvS2NvbmZpZ2AgZmlsZSwgdG8gcmV2aWV3IGFuZCBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHNwZWNpZmljIG9wdGlvbnMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuLS1cbmZzL2NlcGgvS2NvbmZpZz0xOT1pZiBDRVBIX0ZTXG5mcy9jZXBoL0tjb25maWc6MjA6Y29uZmlnIENFUEhfRlNDQUNIRVxuZnMvY2VwaC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgQ2VwaCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI3PWVuZGlmXG5mcy9jZXBoL0tjb25maWctMjgtXG5mcy9jZXBoL0tjb25maWc6Mjk6Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9jZXBoL0tjb25maWctMzgtXG5mcy9jZXBoL0tjb25maWc6Mzk6Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcbmZzL2NlcGgvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7Q2VwaEZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBGaWxlIFN5c3RlbSBDb2RlKioKClJpZ2h0LCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9jZXBoL2Rpci5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIENlcGggZmlsZSBzeXN0ZW0sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIHBhdGguIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBpbiB0aGUgYENFUEhfRlNgIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgbWlnaHQgYWZmZWN0IG90aGVyIGZpbGUgc3lzdGVtcyBvciByZWxhdGVkIGNvbXBvbmVudHMuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IGEgZmlsZSBzeXN0ZW0gcGF0Y2gsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgYGZzL3hmcy9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbWVudGlvbnMgb2YgbW9kdWxlcy4gSSBuZWVkIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBpZiBvdGhlciBmaWxlIHN5c3RlbXMsIGFuZCBwYXJ0aWN1bGFybHkgdGhvc2UgdGhhdCBtaWdodCBiZSB1c2luZyBhIHNpbWlsYXIgYXBwcm9hY2ggdG8gcXVvdGEgbWFuYWdlbWVudCwgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBgeGZzX3FtLm9gIChxdW90YSBtb2R1bGUpLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgbWlnaHQgcHJvdmlkZSBhIHJlbGF0ZWQgZXhhbXBsZS4gS25vd2luZyB3aGVyZSB0aGUgb3RoZXIgbW9kdWxlcyBhcmUgaW4gdGhlIHN5c3RlbSB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc19xbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvTWFrZWZpbGU9MTMzPXhmcy0kKENPTkZJR19YRlNfUVVPVEEpXHRcdCYjNDM7PSB4ZnNfZHF1b3QubyBcXFxuLS1cbmZzL3hmcy9NYWtlZmlsZS0xMzUtXHRcdFx0XHQgICB4ZnNfdHJhbnNfZHF1b3QubyBcXFxuZnMveGZzL01ha2VmaWxlOjEzNjpcdFx0XHRcdCAgIHhmc19xbV9zeXNjYWxscy5vIFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM3Olx0XHRcdFx0ICAgeGZzX3FtX2Jodi5vIFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM4Olx0XHRcdFx0ICAgeGZzX3FtLm8gXFxcbmZzL3hmcy9NYWtlZmlsZS0xMzktXHRcdFx0XHQgICB4ZnNfcXVvdGFvcHMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgWEZTIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gWEZTIGl0c2VsZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lLCBhbmQgSSB0aGluayBpdCYjMzk7cyBgWEZTX0ZTYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyBgZnMveGZzL0tjb25maWdgLiBJJiMzOTtsbCBvcGVuIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlIGZvciBYRlMgYW5kIHdoZXJlIGBYRlNfRlNgIGlzIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gYW5kIExvY2tpbmcgTWVjaGFuaXNtcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBzZWVpbmcgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnM6IGBHRlMyX0ZTYCwgYEdGUzJfRlNfTE9DS0lOR19ETE1gLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgYENFUEhfRlNgLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnZXQgbXkgYmVhcmluZ3MuCgpOb3csIEkgbmVlZCB0byBsb29rIGF0IHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGZpbGVzeXN0ZW1zLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLCBgel9lcm9mc19wdXRfcGNsdXN0ZXJgLCBzdWdnZXN0aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIEVST0ZTJiMzOTsgcGVyc2lzdGVudCBjbHVzdGVycywgYW5kIGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgY2xlYXJseSBwb2ludHMgdG8gcXVvdGEgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBGb3IgR0ZTMiwgYGdkbG1fYXN0YCwgYGdkbG1fYmFzdGAsIGBnZGxtX3B1dF9sb2NrYCBqdW1wIG91dCBhdCBtZSBhcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkaXN0cmlidXRlZCBsb2NraW5nLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiB0aGVyZSYjMzk7cyBgcWRfcHV0YCwgYHFkX2dyYWJfc3luY2AsIGxpa2VseSBkZWFsaW5nIHdpdGggcXVvdGEtcmVsYXRlZCBkYXRhLiBGaW5hbGx5LCB0aGUgZ2xvY2sgb3BlcmF0aW9ucyBhcmUgcmVwcmVzZW50ZWQgYnkgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGBfX2RlbnRyeV9sZWFzZXNfd2Fsa2AuIEkgcmVjb2duaXplIHRoYXQsIHRoYXQmIzM5O3MgaW4gYGZzL2NlcGgvZGlyLmNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5kZWVkIHN0YXRpYyB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBkZXRhaWwgdGhhdCBkaWN0YXRlcyBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBhY2Nlc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2RlbnRyeV9sZWFzZXNfd2FsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY2VwaC9kaXIuYz0xNjQ1PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5mcy9jZXBoL2Rpci5jOjE2NDY6X19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcbmZzL2NlcGgvZGlyLmMtMTY0Ny1cdFx0ICAgICBzdHJ1Y3QgY2VwaF9sZWFzZV93YWxrX2NvbnRyb2wgKmx3Yylcbi0tXG5mcy9jZXBoL2Rpci5jPTE3NzU9aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuLS1cbmZzL2NlcGgvZGlyLmMtMTc5MC1cdGx3Yy5ucl90b19zY2FuICA9IENFUEhfQ0FQU19QRVJfUkVMRUFTRSAqIDI7XG5mcy9jZXBoL2Rpci5jOjE3OTE6XHRmcmVlZCA9IF9fZGVudHJ5X2xlYXNlc193YWxrKG1kc2MsIFx1MDAyNmx3Yyk7XG5mcy9jZXBoL2Rpci5jLTE3OTItXHRpZiAoIWx3Yy5ucl90b19zY2FuKSAvKiBtb3JlIGludmFsaWQgbGVhc2VzICovXG4tLVxuZnMvY2VwaC9kaXIuYy0xODAwLVx0bHdjLmRpcl9sZWFzZV90dGwgPSBtZHNjLVx1MDAzZWZzYy1cdTAwM2Vtb3VudF9vcHRpb25zLVx1MDAzZWNhcHNfd2FudGVkX2RlbGF5X21heCAqIEhaO1xuZnMvY2VwaC9kaXIuYzoxODAxOlx0ZnJlZWQgJiM0Mzs9X19kZW50cnlfbGVhc2VzX3dhbGsobWRzYywgXHUwMDI2bHdjKTtcbmZzL2NlcGgvZGlyLmMtMTgwMi1cdGlmICghbHdjLm5yX3RvX3NjYW4pIC8qIG1vcmUgdG8gY2hlY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgdG8gYGNlcGhfdHJpbV9kZW50cmllc2AqKgoKQWxyaWdodCwgdGhpcyBzaXR1YXRpb24gZmVlbHMgcHJldHR5IHN0YXRpYy4gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgY2FsbCB0byBgY2VwaF90cmltX2RlbnRyaWVzYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdmVyaWZ5IGl0cyB2aXNpYmlsaXR5LiBJcyB0aGlzIGEgcHVibGljbHkgZXhwb3J0ZWQgZnVuY3Rpb24sIG9yIGlzIGl0IGRlZmluZWQgYXMgYHN0YXRpY2Agd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0PyBLbm93aW5nIHRoYXQgZHJhc3RpY2FsbHkgYWx0ZXJzIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGJlaW5nIGludm9rZWQgYW5kLCBjcnVjaWFsbHksIHdoYXQgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoYXQgZnVuY3Rpb24gY2FsbCBpcyB2aXRhbCB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQgaXMgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWxseSB3aWRlbHktdXNlZCwgZXh0ZXJuYWxseSBjYWxsYWJsZSBmdW5jdGlvbiBvciBhIG1vcmUgdGlnaHRseS1zY29wZWQsIGludGVybmFsIHV0aWxpdHkuIFRoYXQgZGlzdGluY3Rpb24mIzM5O3MgZ29pbmcgdG8gZHJpdmUgbXkgbmV4dCBzdGVwcyBmb3IgZGlnZ2luZyBpbnRvIHRoZSByb290IGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX3RyaW1fZGVudHJpZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jZXBoL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmM9MTc1MD1zdGF0aWMgaW50IF9fZGlyX2xlYXNlX2NoZWNrKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2Rpci5jLTE3NzQtXG5mcy9jZXBoL2Rpci5jOjE3NzU6aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuZnMvY2VwaC9kaXIuYy0xNzc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0OTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDb25zaWRlcmluZyBUcmltIE9wZXJhdGlvbnMgYW5kIEVST0ZTIENsdXN0ZXIgUmV0cmlldmFsKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBjZXBoX3RyaW1fZGVudHJpZXNgIGZ1bmN0aW9uLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzICpub3QqIHN0YXRpYyBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhhdCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIFdlIGNhbiBkZWZpbml0ZWx5IGxldmVyYWdlIHRoYXQgbm9uLXN0YXRpYyBuYXR1cmU7IHRoYXQmIzM5O3MgZ29vZCBuZXdzLgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBhbm90aGVyIHJlbGF0ZWQgZnVuY3Rpb24sIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAuIEkgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBvbmUgZmFjdG9ycyBpbnRvIHRoZSBlcXVhdGlvbiwgaWYgYXQgYWxsLiBJcyB0aGVyZSBhIGNvbm5lY3Rpb24gaGVyZT8gQ291bGQgYGNlcGhfdHJpbV9kZW50cmllc2AgaGF2ZSBhbiBpbnRlcmFjdGlvbiB3aXRoIG9yIGEgZGVwZW5kZW5jeSBvbiBgel9lcm9mc19nZXRfcGNsdXN0ZXJgIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGF0JiMzOTtzIHdoYXQgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgYmVmb3JlIEkgbW92ZSBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19nZXRfcGNsdXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy96ZGF0YS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmM9Njg5PXN0YXRpYyBpbnQgel9lcm9mc19hdHRhY2hfcGFnZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy03MjEtXG5mcy9lcm9mcy96ZGF0YS5jOjcyMjpzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuZnMvZXJvZnMvemRhdGEuYy03MjMte1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG4tLVxuZnMvZXJvZnMvemRhdGEuYy03NzYtXHRcdFx0XHRcdCAgIE5VTEwsIHBjbCwgR0ZQX0tFUk5FTCk7XG5mcy9lcm9mcy96ZGF0YS5jOjc3NzpcdFx0XHRpZiAoIXByZSB8fCB4YV9pc19lcnIocHJlKSB8fCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihwcmUpKSB7XG5mcy9lcm9mcy96ZGF0YS5jLTc3OC1cdFx0XHRcdHhhX3VubG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9ODAzPXN0YXRpYyBpbnQgel9lcm9mc19wY2x1c3Rlcl9iZWdpbihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG4tLVxuZnMvZXJvZnMvemRhdGEuYy04MzEtXHRcdFx0cGNsID0geGFfbG9hZChcdTAwMjZFUk9GU19TQihzYiktXHUwMDNlbWFuYWdlZF9wc2xvdHMsIG1hcC1cdTAwM2VtX3BhKTtcbmZzL2Vyb2ZzL3pkYXRhLmM6ODMyOlx0XHRcdG5lZWRyZXRyeSA9IHBjbCBcdTAwMjZcdTAwMjYgIXpfZXJvZnNfZ2V0X3BjbHVzdGVyKHBjbCk7XG5mcy9lcm9mcy96ZGF0YS5jLTgzMy1cdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKlN0YXRpYyBBbmFseXNpcyBhbmQgQ2x1c3RlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGlzIHRoaW5nIGlzICpzdGF0aWMqLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjcnVjaWFsIGNsdWUuIE5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGNhbGxlcnMuIEkgc2VlIGB6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyYCBhbmQgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gLiBUaGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIG5vdyBpczogKmFyZSB0aG9zZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBzdGF0aWM/KiBUaGVpciBzdGF0dXMgYXMgc3RhdGljIG9yIG5vbiBzdGF0aWMgaGFzIGNyaXRpY2FsIHJhbWlmaWNhdGlvbnMgb24gdGhlIHNjb3BlIG9mIHRoZWlyIGFjY2Vzc2liaWxpdHkgYW5kIHRoZSBpbXBsaWNhdGlvbnMgaXQgaGFzIG9uIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz03MjI9c3RhdGljIGJvb2wgel9lcm9mc19nZXRfcGNsdXN0ZXIoc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXIgKnBjbClcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTczOC1cbmZzL2Vyb2ZzL3pkYXRhLmM6NzM5OnN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG5mcy9lcm9mcy96ZGF0YS5jLTc0MC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTg0MS1cdH0gZWxzZSB7XG5mcy9lcm9mcy96ZGF0YS5jOjg0MjpcdFx0cmV0ID0gel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihmZSk7XG5mcy9lcm9mcy96ZGF0YS5jLTg0My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgU3RhdGljIEluaXRpYWxpemF0aW9uIGFuZCBDYWxsZXJzKioKCk9rYXksIHNvIGJvdGggb2YgdGhlc2UgY29tcG9uZW50cyBhcmUgaW5oZXJlbnRseSBzdGF0aWMgaW4gdGhlaXIgbmF0dXJlLiBCdXQgdGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogd2hhdCYjMzk7cyB0aGUgcm9sZSBhbmQgYmVoYXZpb3Igb2YgYW55IGNvZGUgdGhhdCYjMzk7cyBjYWxsaW5nIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYD8gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGlzIGFsc28gc3RhdGljLCBob3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBjb21wb25lbnRzPyBJdCBpbXBsaWVzIGEgc3RhdGljIGluaXRpYWxpemF0aW9uIHBhdHRlcm4uIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGNhbGxlcnMuIEtub3dpbmcgdGhlaXIgbmF0dXJlIHdpbGwgZ2l2ZSB1cyB0aGUgZnVsbCBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdGF0aWMgY29tcG9uZW50cyBhbmQgdGhlIGNhbGxlcnMgb2YgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBpdCBkZXRlcm1pbmVzIGhvdyBhbmQgd2hlbiB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0IGluIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19wY2x1c3Rlcl9iZWdpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz03Mzk9c3RhdGljIGludCB6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTgwMi1cbmZzL2Vyb2ZzL3pkYXRhLmM6ODAzOnN0YXRpYyBpbnQgel9lcm9mc19wY2x1c3Rlcl9iZWdpbihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG5mcy9lcm9mcy96ZGF0YS5jLTgwNC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0Ny1cdFx0XHRpZiAoIWYtXHUwMDNlcGNsKSB7XG5mcy9lcm9mcy96ZGF0YS5jOjEwNDg6XHRcdFx0XHRlcnIgPSB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKGYpO1xuZnMvZXJvZnMvemRhdGEuYy0xMDQ5LVx0XHRcdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGB6X2Vyb2ZzX3NjYW5fZm9saW9gKioKCk9rYXksIHNvIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgc29tZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gVGhlIHVzZSBvZiAmIzM5O3N0YXRpYyYjMzk7IHVzdWFsbHkgaW1wbGllcyBhIHNoYXJlZCBzY29wZSBhbmQgbGlmZXRpbWUgd2l0aGluIGEgY29tcGlsYXRpb24gdW5pdC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIG5leHQgY3JpdGljYWwgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBvciBtZXRob2RzLiBUaGlzIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgaXRzIG92ZXJhbGwgcHVycG9zZSB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgcGFydCBvZiBhIGxhcmdlciwgZXN0YWJsaXNoZWQgbW9kdWxlPyBPciBpcyB0aGlzIGEgbW9yZSBpc29sYXRlZCB1dGlsaXR5IGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIGlzIGtleSB0byBxdWlja2x5IGdyYXNwaW5nIGl0cyByb2xlIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRvIGl0cyBvcmlnaW4gYW5kIHVuZGVyc3RhbmQgaXRzIGludm9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfc2Nhbl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz05ODA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZnJhZ21lbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEwMDQtXG5mcy9lcm9mcy96ZGF0YS5jOjEwMDU6c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG5mcy9lcm9mcy96ZGF0YS5jLTEwMDYtXHRcdFx0ICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCByYSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTE4NTktXHRcdFx0ZWxzZVxuZnMvZXJvZnMvemRhdGEuYzoxODYwOlx0XHRcdFx0el9lcm9mc19zY2FuX2ZvbGlvKGYsIGZvbGlvLCAhIXJhYyk7XG5mcy9lcm9mcy96ZGF0YS5jLTE4NjEtXHRcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE4NzA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODc5LVx0el9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShcdTAwMjZmLCBOVUxMLCB0cnVlKTtcbmZzL2Vyb2ZzL3pkYXRhLmM6MTg4MDpcdGVyciA9IHpfZXJvZnNfc2Nhbl9mb2xpbyhcdTAwMjZmLCBmb2xpbywgZmFsc2UpO1xuZnMvZXJvZnMvemRhdGEuYy0xODgxLVx0el9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShcdTAwMjZmLCBOVUxMLCBmYWxzZSk7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xODk4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcmVhZGFoZWFkKHN0cnVjdCByZWFkYWhlYWRfY29udHJvbCAqcmFjKVxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTkxOS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTkyMDpcdFx0ZXJyID0gel9lcm9mc19zY2FuX2ZvbGlvKFx1MDAyNmYsIGZvbGlvLCB0cnVlKTtcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkyMS1cdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgZXJyICE9IC1FSU5UUilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gRVJPRlMgUmVhZCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IEVST0ZTIGlzIGhhbmRsaW5nIHJlYWRzLCBwYXJ0aWN1bGFybHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnNgLiBJJiMzOTt2ZSBnb3QgYSBodW5jaCB0aGF0IGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgIGFyZSBsaWtlbHkgcGxheWluZyBhIGtleSByb2xlIGhlcmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIGl0IHNlZW1zIGxvZ2ljYWwgdGhleSYjMzk7ZCBiZSBwbHVnZ2VkIGluIHNvbWV3aGVyZSB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUuCgpNeSBmaXJzdCBzdGVwIGlzIHRvIGZvY3VzIG9uIGB6X2Vyb2ZzX3JlYWRfZm9saW9gLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCYjMzk7cyBkb2luZy4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljIHdpbGwgZ2l2ZSBtZSBhIGdyZWF0IGZvb3Rob2xkIG9uIGhvdyB0aGUgRVJPRlMgcmVhZCBtZWNoYW5pc20gd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZvbGlvLCBob3cgaXQgaGFuZGxlcyB0aGUgcGh5c2ljYWwgcmVhZCwgaWYgaXQgdXNlcyBhbnkgY2FjaGluZyBhbmQgZXZlcnl0aGluZyBlbHNlIHRoYXQgaXMgZ29pbmcgb24gd2l0aCB0aGUgZm9saW8gcmVhZHMuIFRoaXMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpZXMsIEkgdGhpbmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfcmVhZF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODY5LVxuZnMvZXJvZnMvemRhdGEuYzoxODcwOnN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvZXJvZnMvemRhdGEuYy0xODcxLXtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE5MzY9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2FvcHMgPSB7XG5mcy9lcm9mcy96ZGF0YS5jOjE5Mzc6XHQucmVhZF9mb2xpbyA9IHpfZXJvZnNfcmVhZF9mb2xpbyxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkzOC1cdC5yZWFkYWhlYWQgPSB6X2Vyb2ZzX3JlYWRhaGVhZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNjIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgel9lcm9mc19yZWFkX2ZvbGlvYCBhbmQgUG90ZW50aWFsIEFsdGVybmF0aXZlcyoqCgpPa2F5LCBzbyBgel9lcm9mc19yZWFkX2ZvbGlvYCBpcyBkZWZpbml0ZWx5IGFuIGVudHJ5IHBvaW50LCB0aGF0IG11Y2ggaXMgY2xlYXIsIGFuZCBpdCYjMzk7cyBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aXRoaW4gdGhlIGB6ZGF0YS5jYCBmaWxlIHNwZWNpZmljYWxseSwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMsICphbnkqIGZ1bmN0aW9ucyBhdCBhbGwsIHRoYXQgYXJlbiYjMzk7dCBkZWZpbmVkIGFzIHN0YXRpYz8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBpZGVudGlmeSByaWdodCBub3cuIFRoZSBhbnN3ZXIgd2lsbCBjaGFuZ2UgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYy0xNS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTY6c3RydWN0IHpfZXJvZnNfYnZlYyB7XG5mcy9lcm9mcy96ZGF0YS5jLTE3LVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0yOT1fX1pfRVJPRlNfQlZTRVQoel9lcm9mc19idnNldF9pbmxpbmUsIFpfRVJPRlNfSU5MSU5FX0JWRUNTKTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTQwLSAqL1xuZnMvZXJvZnMvemRhdGEuYzo0MTpzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciB7XG5mcy9lcm9mcy96ZGF0YS5jLTQyLVx0c3RydWN0IG11dGV4IGxvY2s7XG4tLVxuZnMvZXJvZnMvemRhdGEuYy05Mi1cbmZzL2Vyb2ZzL3pkYXRhLmM6OTM6c3RydWN0IHpfZXJvZnNfZGVjb21wcmVzc3F1ZXVlIHtcbmZzL2Vyb2ZzL3pkYXRhLmMtOTQtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9MTExPXN0YXRpYyBib29sIGVyb2ZzX2ZvbGlvX2lzX21hbmFnZWQoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmbylcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEyMS0gKi9cbmZzL2Vyb2ZzL3pkYXRhLmM6MTIyOnN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIge1xuZnMvZXJvZnMvemRhdGEuYy0xMjMtXHRzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYjtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTEzMD1zdGF0aWMgc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXJfc2xhYiBwY2x1c3Rlcl9wb29sW10gX19yZWFkX21vc3RseSA9IHtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEzNC1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTM1OnN0cnVjdCB6X2Vyb2ZzX2J2ZWNfaXRlciB7XG5mcy9lcm9mcy96ZGF0YS5jLTEzNi1cdHN0cnVjdCBwYWdlICpidnBhZ2U7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz00Mzc9c3RhdGljIGlubGluZSB2b2lkIHpfZXJvZnNfZGVzdHJveV9wY3B1X3dvcmtlcnModm9pZCkge31cbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTQzOS1cbmZzL2Vyb2ZzL3pkYXRhLmM6NDQwOnZvaWQgel9lcm9mc19leGl0X3N1YnN5c3RlbSh2b2lkKVxuZnMvZXJvZnMvemRhdGEuYy00NDEte1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9NDQ5PWludCBfX2luaXQgel9lcm9mc19pbml0X3N1YnN5c3RlbSh2b2lkKVxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtNDc2LVxuZnMvZXJvZnMvemRhdGEuYzo0Nzc6ZW51bSB6X2Vyb2ZzX3BjbHVzdGVybW9kZSB7XG5mcy9lcm9mcy96ZGF0YS5jLTQ3OC1cdC8qIEl0IGhhcyBwcmV2aW91c2x5IGJlZW4gbGlua2VkIGludG8gYW5vdGhlciBwcm9jZXNzaW5nIGNoYWluICovXG4tLVxuZnMvZXJvZnMvemRhdGEuYy00OTUtXG5mcy9lcm9mcy96ZGF0YS5jOjQ5NjpzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCB7XG5mcy9lcm9mcy96ZGF0YS5jLTQ5Ny1cdHN0cnVjdCBpbm9kZSAqaW5vZGUsICpzaGFyZWRpbm9kZTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2NhY2hlX2FvcHMgPSB7XG4tLVxuZnMvZXJvZnMvemRhdGEuYy02NjYtXG5mcy9lcm9mcy96ZGF0YS5jOjY2NzppbnQgel9lcm9mc19pbml0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9lcm9mcy96ZGF0YS5jLTY2OC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDk3PXN0YXRpYyBib29sIHpfZXJvZnNfcGFnZV9pc19pbnZhbGlkYXRlZChzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTExMDEtXG5mcy9lcm9mcy96ZGF0YS5jOjExMDI6c3RydWN0IHpfZXJvZnNfYmFja2VuZCB7XG5mcy9lcm9mcy96ZGF0YS5jLTExMDMtXHRzdHJ1Y3QgcGFnZSAqb25zdGFja19wYWdlc1taX0VST0ZTX09OU1RBQ0tfUEFHRVNdO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTExNy1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTExODpzdHJ1Y3Qgel9lcm9mc19idmVjX2l0ZW0ge1xuZnMvZXJvZnMvemRhdGEuYy0xMTE5LVx0c3RydWN0IHpfZXJvZnNfYnZlYyBidmVjO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ4NQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqUmVmbGVjdGluZyBvbiBTeW1ib2wgVmlzaWJpbGl0eSBpbiBYRlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB6X2Vyb2ZzX2luaXRfc3VwZXJgLiBJdCYjMzk7cyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBIb3dldmVyLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0JiMzOTtzIG5vdCBhIHBhcnRpY3VsYXJseSBpbnNpZ2h0ZnVsIG9yIGlsbHVtaW5hdGluZyBzeW1ib2wgdG8gYmUgZm9jdXNpbmcgb24uIFdlIG5lZWQgdG8gZGlnIGEgYml0IGRlZXBlciB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHJlbGV2YW50IGZvciB3aGF0IHdlIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZS4gTGV0JiMzOTtzIHJlZGlyZWN0IG91ciBhdHRlbnRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbnN0aW5jdCBpcyB0byBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGZpbGUgYGZzL3hmcy94ZnNfcW0uY2AuIEhvcGVmdWxseSwgdGhlcmUmIzM5O2xsIGJlIHNvbWV0aGluZyBpbiB0aGVyZSB0aGF0IHByb3ZpZGVzIG1vcmUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogeGZzX3FtXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmM9MzgyPXhmc19xbV9kcWRldGFjaChcbi0tXG5mcy94ZnMveGZzX3FtLmMtNDA2LVxuZnMveGZzL3hmc19xbS5jOjQwNzpzdHJ1Y3QgeGZzX3FtX2lzb2xhdGUge1xuZnMveGZzL3hmc19xbS5jLTQwOC1cdHN0cnVjdCBsaXN0X2hlYWRcdGJ1ZmZlcnM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqWEZTIFF1b3RhIE1hbmFnZW1lbnQ6IEEgUXVpY2sgQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0b3Agb2YgYHhmc19xbV9kcXB1cmdlYC4gTmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgdW51c3VhbCBnb2luZyBvbiwgYW55IGxpbmdlcmluZyBpc3N1ZXMsIG9yIHBlcmhhcHMgYSBwZXJmb3JtYW5jZSBoaWNjdXAgSSBuZWVkIHRvIGFkZHJlc3MgcHJvYWN0aXZlbHkuIE5vIG5lZWQgdG8gZ28gdG9vIGRlZXAgYXQgdGhpcyBzdGFnZSwgYnV0IEkgd2FudCB0byBrZWVwIHRoaXMgcHJvY2VzcyBzdHJlYW1saW5lZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IHBvdGVudGlhbCBpc3N1ZXMgbWF5IGJlIHByZXNlbnQsIGFuZCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIHN0YXkgYWhlYWQgb2YgdGhlIGN1cnZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnNfcW1fZHFwdXJnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmM9MTIzPVNUQVRJQyBpbnRcbmZzL3hmcy94ZnNfcW0uYzoxMjQ6eGZzX3FtX2RxcHVyZ2UoXG5mcy94ZnMveGZzX3FtLmMtMTI1LVx0c3RydWN0IHhmc19kcXVvdFx0KmRxcCxcbi0tXG5mcy94ZnMveGZzX3FtLmM9MjAyPXN0YXRpYyB2b2lkXG5mcy94ZnMveGZzX3FtLmM6MjAzOnhmc19xbV9kcXB1cmdlX2FsbChcbmZzL3hmcy94ZnNfcW0uYy0yMDQtXHRzdHJ1Y3QgeGZzX21vdW50XHQqbXApXG5mcy94ZnMveGZzX3FtLmMtMjA1LXtcbmZzL3hmcy94ZnNfcW0uYzoyMDY6XHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9VU0VSLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XG5mcy94ZnMveGZzX3FtLmM6MjA3Olx0eGZzX3FtX2RxdW90X3dhbGsobXAsIFhGU19EUVRZUEVfR1JPVVAsIHhmc19xbV9kcXB1cmdlLCBOVUxMKTtcbmZzL3hmcy94ZnNfcW0uYzoyMDg6XHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9QUk9KLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XG5mcy94ZnMveGZzX3FtLmMtMjA5LX1cbi0tXG5mcy94ZnMveGZzX3FtLmM9MjE1PXhmc19xbV91bm1vdW50KFxuLS1cbmZzL3hmcy94ZnNfcW0uYy0yMTgtXHRpZiAobXAtXHUwMDNlbV9xdW90YWluZm8pIHtcbmZzL3hmcy94ZnNfcW0uYzoyMTk6XHRcdHhmc19xbV9kcXB1cmdlX2FsbChtcCk7XG5mcy94ZnMveGZzX3FtLmMtMjIwLVx0XHR4ZnNfcW1fZGVzdHJveV9xdW90YWluZm8obXApO1xuLS1cbmZzL3hmcy94ZnNfcW0uYz0xNDU2PXhmc19xbV9xdW90YWNoZWNrKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy0xNTkyLVx0eGZzX2lub2RlZ2NfZmx1c2gobXApO1xuZnMveGZzL3hmc19xbS5jOjE1OTM6XHR4ZnNfcW1fZHFwdXJnZV9hbGwobXApO1xuZnMveGZzL3hmc19xbS5jLTE1OTQtXHRnb3RvIGVycm9yX3JldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDEKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgRGF0YSBTdHJ1Y3R1cmUgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHhmc19xbV9kcXB1cmdlYCBhbmQgYHhmc19xbV91bm1vdW50YC4gVGhlIGtleSBkaWZmZXJlbmNlIGltbWVkaWF0ZWx5IHN0aWNrcyBvdXQ6IG9uZSYjMzk7cyBzdGF0aWMsIHRoZSBvdGhlciBpc24mIzM5O3QuIFRoYXQgYWxvbmUgcmFpc2VzIHNvbWUgZmxhZ3MgZm9yIG1lLiBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIGZvciBob3cgdGhlIHF1b3RhIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB1bm1vdW50aW5nLiBEb2VzIHRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3QgYSBsb2NhbCwgY29udGV4dC1zcGVjaWZpYyBjbGVhbnVwLCB3aGlsZSB0aGUgbm9uLXN0YXRpYyBpbXBsaWVzIGEgbW9yZSBnbG9iYWwsIHBvdGVudGlhbGx5IHNoYXJlZCByZXNvdXJjZSBtYW5hZ2VtZW50PyBJcyB0aGVyZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIG9yIGxpZmVzcGFuIG9mIGB4ZnNfcW1fZHFwdXJnZWAgdGhhdCYjMzk7cyBpbmhlcmVudGx5IGRpZmZlcmVudD8KClRvIGRpZyBkZWVwZXIsIEkgd2FudCB0byBzZWUgaWYgdGhpcyBwYXR0ZXJuIG9yIHNpbWlsYXIgaW50ZXJhY3Rpb25zIGFyZSB1c2VkIGluIGEgcmVsYXRlZCBmaWxlIHN5c3RlbS4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgZnMvZ2ZzMi9nbG9jay5jYC4gVGhlIEdGUzIgZGlzdHJpYnV0ZWQgbG9jayBtYW5hZ2VyIGlzIGxpa2VseSB0byBnaXZlIHVzIGEgZ29vZCB2aWV3IG9mIGhvdyBhIHNpbWlsYXJseSBkZXNpZ25lZCBmaWxlIHN5c3RlbSBoYW5kbGVzIHJlc291cmNlcy4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciBjb21wYXJpc29uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX2dsb2NrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvZ2xvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL2dsb2NrLmMtNTMtXG5mcy9nZnMyL2dsb2NrLmM6NTQ6c3RydWN0IGdmczJfZ2xvY2tfaXRlciB7XG5mcy9nZnMyL2dsb2NrLmMtNTUtXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcDtcdFx0LyogaW5jb3JlIHN1cGVyYmxvY2sgICAgICAgICAgICovXG4tLVxuZnMvZ2ZzMi9nbG9jay5jPTE0MT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE0OC1cbmZzL2dmczIvZ2xvY2suYzoxNDk6dm9pZCBnZnMyX2dsb2NrX2ZyZWUoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XG5mcy9nZnMyL2dsb2NrLmMtMTUwLVx0c3RydWN0IGdmczJfc2JkICpzZHAgPSBnbG9ja19zYmQoZ2wpO1xuLS1cbmZzL2dmczIvZ2xvY2suYy0xNTYtXG5mcy9nZnMyL2dsb2NrLmM6MTU3OnZvaWQgZ2ZzMl9nbG9ja19mcmVlX2xhdGVyKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkge1xuZnMvZ2ZzMi9nbG9jay5jLTE1OC1cdHN0cnVjdCBnZnMyX3NiZCAqc2RwID0gZ2xvY2tfc2JkKGdsKTtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MjU0PXN0YXRpYyBib29sIF9fZ2ZzMl9nbG9ja19wdXRfb3JfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTI3My1cbmZzL2dmczIvZ2xvY2suYzoyNzQ6dm9pZCBnZnMyX2dsb2NrX3B1dChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2dsb2NrLmMtMjc1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjg4LSAqL1xuZnMvZ2ZzMi9nbG9jay5jOjI4OTp2b2lkIGdmczJfZ2xvY2tfcHV0X2FzeW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbmZzL2dmczIvZ2xvY2suYy0yOTAte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0xMDMxPXN0YXRpYyBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZmluZF9pbnNlcnRfZ2xvY2soc3RydWN0IGxtX2xvY2tuYW1lICpuYW1lLFxuLS1cbmZzL2dmczIvZ2xvY2suYy0xMDc5LVxuZnMvZ2ZzMi9nbG9jay5jOjEwODA6aW50IGdmczJfZ2xvY2tfZ2V0KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgbnVtYmVyLFxuZnMvZ2ZzMi9nbG9jay5jLTEwODEtXHRcdCAgIGNvbnN0IHN0cnVjdCBnZnMyX2dsb2NrX29wZXJhdGlvbnMgKmdsb3BzLCBpbnQgY3JlYXRlLFxuLS1cbmZzL2dmczIvZ2xvY2suYz0xMjI2PXN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfdXBkYXRlX2hvbGRfdGltZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTEyNDUtXG5mcy9nZnMyL2dsb2NrLmM6MTI0NjppbnQgZ2ZzMl9nbG9ja19ob2xkZXJfcmVhZHkoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xMjQ3LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTI2Mi1cbmZzL2dmczIvZ2xvY2suYzoxMjYzOmludCBnZnMyX2dsb2NrX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xMjY0LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTI3Mz1zdGF0aWMgaW50IGdsb2Nrc19wZW5kaW5nKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxuLS1cbmZzL2dmczIvZ2xvY2suYy0xMjkzLVxuZnMvZ2ZzMi9nbG9jay5jOjEyOTQ6aW50IGdmczJfZ2xvY2tfYXN5bmNfd2FpdCh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocyxcbmZzL2dmczIvZ2xvY2suYy0xMjk1LVx0XHRcdCAgdW5zaWduZWQgaW50IHJldHJpZXMpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jPTE0MzY9c3RhdGljIGlubGluZSB2b2lkIGFkZF90b19xdWV1ZShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxuLS1cbmZzL2dmczIvZ2xvY2suYy0xNDg5LVxuZnMvZ2ZzMi9nbG9jay5jOjE0OTA6aW50IGdmczJfZ2xvY2tfbnEoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNDkxLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTU0My1cbmZzL2dmczIvZ2xvY2suYzoxNTQ0OmludCBnZnMyX2dsb2NrX3BvbGwoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNTQ1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTU0OT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZHEoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTU5Mi0gKi9cbmZzL2dmczIvZ2xvY2suYzoxNTkzOnZvaWQgZ2ZzMl9nbG9ja19kcShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxuZnMvZ2ZzMi9nbG9jay5jLTE1OTQte1xuLS1cbmZzL2dmczIvZ2xvY2suYy0xNjM5LVxuZnMvZ2ZzMi9nbG9jay5jOjE2NDA6dm9pZCBnZnMyX2dsb2NrX2RxX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNjQxLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTY1My1cbmZzL2dmczIvZ2xvY2suYzoxNjU0OnZvaWQgZ2ZzMl9nbG9ja19kcV91bmluaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNjU1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTY3MS1cbmZzL2dmczIvZ2xvY2suYzoxNjcyOmludCBnZnMyX2dsb2NrX25xX251bShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdTY0IG51bWJlcixcbmZzL2dmczIvZ2xvY2suYy0xNjczLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9ja19vcGVyYXRpb25zICpnbG9wcyxcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTcyMD1zdGF0aWMgaW50IG5xX21fc3luYyh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocyxcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTc1MS1cbmZzL2dmczIvZ2xvY2suYzoxNzUyOmludCBnZnMyX2dsb2NrX25xX20odW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMpXG5mcy9nZnMyL2dsb2NrLmMtMTc1My17XG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE3ODUtXG5mcy9nZnMyL2dsb2NrLmM6MTc4Njp2b2lkIGdmczJfZ2xvY2tfZHFfbSh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocylcbmZzL2dmczIvZ2xvY2suYy0xNzg3LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTc5MS1cbmZzL2dmczIvZ2xvY2suYzoxNzkyOnZvaWQgZ2ZzMl9nbG9ja19jYihzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCBzdGF0ZSlcbmZzL2dmczIvZ2xvY2suYy0xNzkzLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTgyNj1zdGF0aWMgaW50IGdmczJfc2hvdWxkX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE4NTMtXG5mcy9nZnMyL2dsb2NrLmM6MTg1NDp2b2lkIGdmczJfZ2xvY2tfY29tcGxldGUoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBpbnQgcmV0KVxuZnMvZ2ZzMi9nbG9jay5jLTE4NTUte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjA5Ny1cbmZzL2dmczIvZ2xvY2suYzoyMDk4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9nbG9jay5jLTIwOTkte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0yNDI5PWludCBfX2luaXQgZ2ZzMl9nbG9ja19pbml0KHZvaWQpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTI0NTMtXG5mcy9nZnMyL2dsb2NrLmM6MjQ1NDp2b2lkIGdmczJfZ2xvY2tfZXhpdCh2b2lkKVxuZnMvZ2ZzMi9nbG9jay5jLTI0NTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA0MAoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgR0ZTMiBHbG9jayBUaGF3IEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIGBnZnMyX2dsb2NrX3RoYXdgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBOb24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGNvbnRleHQgb2Z0ZW4gaW5kaWNhdGUgZXh0ZXJuYWwgdmlzaWJpbGl0eSBvciBwb3RlbnRpYWwgZm9yIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gR2l2ZW4gdGhhdCB0aGlzIGlzIGluIEdGUzIsIGFuZCBkZWFsaW5nIHdpdGggZ2xvY2tzIChnbG9iYWwgbG9ja3MpLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgd2h5IHRoaXMgdGhhdyBmdW5jdGlvbiBpcyBiZWluZyB1c2VkLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNsdXN0ZXItd2lkZSBjb25zaXN0ZW5jeS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIHF1b3RhIG1hbmFnZW1lbnQgY29kZSwgc3BlY2lmaWNhbGx5IGBmcy9nZnMyL3F1b3RhLmNgLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBnbG9ja3MgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBwb3RlbnRpYWwgdGhhdyBvcGVyYXRpb25zLCB3b3VsZCByZXNpZGUgaW4gR0ZTMi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCByZWxhdGVkIHF1b3RhIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBiZSBjb29yZGluYXRlZCBvciBzeW5jaHJvbml6ZWQgYnkgdGhpcyBgZ2ZzMl9nbG9ja190aGF3YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHF1b3RhLmMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIGdmczJfcXVvdGFfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9xdW90YS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvcXVvdGEuYz01ODY9dm9pZCBnZnMyX3FhX3B1dChzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXG4tLVxuZnMvZ2ZzMi9xdW90YS5jLTU5Ny1cbmZzL2dmczIvcXVvdGEuYzo1OTg6aW50IGdmczJfcXVvdGFfaG9sZChzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXG5mcy9nZnMyL3F1b3RhLmMtNTk5LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtNjU2LVxuZnMvZ2ZzMi9xdW90YS5jOjY1Nzp2b2lkIGdmczJfcXVvdGFfdW5ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcClcbmZzL2dmczIvcXVvdGEuYy02NTgte1xuLS1cbmZzL2dmczIvcXVvdGEuYz0xMDM3PXN0YXRpYyBpbnQgZG9fZ2xvY2soc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQsIGludCBmb3JjZV9yZWZyZXNoLFxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMDg3LVxuZnMvZ2ZzMi9xdW90YS5jOjEwODg6aW50IGdmczJfcXVvdGFfbG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXG5mcy9nZnMyL3F1b3RhLmMtMTA4OS17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jPTExMjM9c3RhdGljIGJvb2wgbmVlZF9zeW5jKHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMTU4LVxuZnMvZ2ZzMi9xdW90YS5jOjExNTk6dm9pZCBnZnMyX3F1b3RhX3VubG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXG5mcy9nZnMyL3F1b3RhLmMtMTE2MC17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jPTEyMTE9c3RhdGljIHZvaWQgcHJpbnRfbWVzc2FnZShzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwgY2hhciAqdHlwZSlcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTIzOS0gKi9cbmZzL2dmczIvcXVvdGEuYzoxMjQwOmludCBnZnMyX3F1b3RhX2NoZWNrKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZCxcbmZzL2dmczIvcXVvdGEuYy0xMjQxLVx0XHQgICAgIHN0cnVjdCBnZnMyX2FsbG9jX3Bhcm1zICphcClcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTI5Ny1cbmZzL2dmczIvcXVvdGEuYzoxMjk4OnZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxuZnMvZ2ZzMi9xdW90YS5jLTEyOTktXHRcdCAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkKVxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcbmZzL2dmczIvcXVvdGEuYy0xMzI1LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTM4NC1cbmZzL2dmczIvcXVvdGEuYzoxMzg1OmludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZClcbmZzL2dmczIvcXVvdGEuYy0xMzg2LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTQwMi1cbmZzL2dmczIvcXVvdGEuYzoxNDAzOmludCBnZnMyX3F1b3RhX2luaXQoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL3F1b3RhLmMtMTQwNC17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jLTE1MjUtXG5mcy9nZnMyL3F1b3RhLmM6MTUyNjp2b2lkIGdmczJfcXVvdGFfY2xlYW51cChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbmZzL2dmczIvcXVvdGEuYy0xNTI3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNjIKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKioKCk9rYXksIGBnZnMyX3F1b3RhX3N5bmNgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBwb2ludCBvZiBmb2N1cy4gVGhhdCBmdW5jdGlvbiBzZWVtcyBsaWtlIGEga2V5IHBpZWNlIGluIHRoZSBxdW90YSBzeW5jaHJvbml6YXRpb24gcHV6emxlIHdpdGhpbiBHRlMyLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMuIEkgdGhpbmsgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2luIHRoaXMgZGVlcCBkaXZlIGlzIHdpdGhpbiB0aGUgYGZzL2dmczIvbG9ja19kbG0uY2AgZmlsZS4gSXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0IGZvciBhbnl0aGluZyBpbnZvbHZpbmcgZGlzdHJpYnV0ZWQgbG9ja2luZyBhbmQgcXVvdGEgb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIGFuZCB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIGdmczJfbG9ja18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ5NQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBmcy9nZnMyL2xvY2tfZGxtLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gbGFuZHNjYXBlIHdpdGhpbiB0aGUgR0ZTMiBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBmaXJzdCBzdGVwIGhlcmUgaXMgdG8gdGFrZSBhIGxvb2sgYXQgYGZzL2dmczIvbG9ja19kbG0uY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgbG9ja2luZyBwcmltaXRpdmVzIGFuZCBhc3NvY2lhdGVkIG1hbmFnZW1lbnQgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZ1bmN0aW9ucyB3aXRoIGV4dGVybmFsIHZpc2liaWxpdHksIHRoZSBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgZXhwb3NlZCBvciBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIEdGUzIgY29kZSBvciBwb3RlbnRpYWxseSBmcm9tIHRoZSBnZW5lcmljIFZGUyBsYXllci4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgdGhlIERMTSYjMzk7cyBBUEkgYW5kIGludGVyYWN0aW9uIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZGxtXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvbG9ja19kbG0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzUzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlN0YXRpYyBWYXJpYWJsZXMgJmFtcDsgUG90ZW50aWFsIENvbmN1cnJlbmN5IElzc3VlcyoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCBydW4gdGhyb3VnaCB0aGlzIG9uZSBtb3JlIHRpbWUuIFdhaXQuLi4gSG9sZCBvbiBhIHNlY29uZC4gKmBnZGxtX2FzdGAqLCAqYGdkbG1fYmFzdGAqLCBhbmQgKmBnZGxtX3B1dF9sb2NrYCogYXJlICpzdGF0aWMqPyBSaWdodC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBJIGFsbW9zdCBtaXNzZWQuIEl0IGNoYW5nZXMgZXZlcnl0aGluZyB3aGVuIHlvdSYjMzk7cmUgbG9va2luZyBhdCB0aGUgYXJjaGl0ZWN0dXJlIG9mIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGxpa2UgdGhpcy4gU3RhdGljIHZhcmlhYmxlcywgaW4gYW55IHNoYXJlZCBtZW1vcnkgY29udGV4dCwgaW1tZWRpYXRlbHkgc2NyZWFtICYjMzQ7cG90ZW50aWFsIGZvciBjb250ZW50aW9uLiYjMzQ7IElmIHRob3NlIGFyZSBhY2Nlc3NlZCBhY3Jvc3MgbXVsdGlwbGUgdGhyZWFkcyBvciwgZXZlbiB3b3JzZSwgZGlmZmVyZW50IHByb2Nlc3Nlcywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmVyeSByZWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhpcyByZXF1aXJlcyBpbW1lZGlhdGUgYW5kIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBtdXRleGVzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2RsbV9hc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9sb2NrX2RsbS5jPTEwMT1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZzMl91cGRhdGVfcmVxdWVzdF90aW1lcyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNy0gXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE4OnN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcbmZzL2dmczIvbG9ja19kbG0uYy0xMTkte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYz0yNzc9c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0zMTQtXHRcdGVycm9yID0gZGxtX2xvY2sobHMtXHUwMDNlbHNfZGxtLCByZXEsIFx1MDAyNmdsLVx1MDAzZWdsX2xrc2IsIGxrZiwgc3RybmFtZSxcbmZzL2dmczIvbG9ja19kbG0uYzozMTU6XHRcdFx0XHRHRExNX1NUUk5BTUVfQllURVMgLSAxLCAwLCBnZGxtX2FzdCwgZ2wsIGdkbG1fYmFzdCk7XG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI3NgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCBmb3IgRHluYW1pc20qKgoKQWxyaWdodCwgSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgZnMvZ2ZzMi9sb2NrX2RsbS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlcmUgYW55ICppbnRlcmVzdGluZyogZnVuY3Rpb25zIGluIGhlcmUgdGhhdCBhcmVuJiMzOTt0IHB1cmVseSBzdGF0aWM/IEkmIzM5O20gbm90IGp1c3QgbG9va2luZyBmb3Igc29tZXRoaW5nIHRoYXQgKmlzbiYjMzk7dCogZGVjbGFyZWQgYHN0YXRpY2AsIGJ1dCByYXRoZXIgZnVuY3Rpb25zIHRoYXQgdHJ1bHkgcHJvdmlkZSBkeW5hbWlzbSwgb3IgYSBsZXZlbCBvZiBvcGVyYXRpb24gdGhhdCBpcyBub3QgY29uZmluZWQgd2l0aGluIGEgc3RhdGljIG1ldGhvZC4gSXMgdGhlcmUgYW55IGZ1bmN0aW9uIGluIHRoaXMgZmlsZSB0aGF0IGFjdHVhbGx5ICpkb2VzKiBzb21ldGhpbmcgaW50ZXJlc3RpbmcsIGJleW9uZCBzaW1wbGUgaGVscGVyIHRhc2tzLCBhbmQgaXNuJiMzOTt0IHNvbGVseSBkZWRpY2F0ZWQgdG8gc29tZSBzcGVjaWZpYyBzdGF0aWNhbGx5LWRlZmluZWQgZnVuY3Rpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciBpbnRlcmFjdHMgd2l0aCB0aGUgbGFyZ2VyIEdGUzIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZmlsZSBpcyB0cnVseSBkeW5hbWljIG9yIGp1c3QgYSBsaWJyYXJ5IG9mIGhlbHBlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvbG9ja19kbG0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMtMjgtICovXG5mcy9nZnMyL2xvY2tfZGxtLmM6Mjk6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3N0YXRzKHN0cnVjdCBnZnMyX2xrc3RhdHMgKnMsIHVuc2lnbmVkIGluZGV4LFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMwLVx0XHRcdFx0ICAgICBzNjQgc2FtcGxlKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy03My0gKi9cbmZzL2dmczIvbG9ja19kbG0uYzo3NDpzdGF0aWMgaW5saW5lIHZvaWQgZ2ZzMl91cGRhdGVfcmVwbHlfdGltZXMoc3RydWN0IGdmczJfZ2xvY2sgKmdsLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTc1LVx0XHRcdFx0XHQgICBib29sIGJsb2NraW5nKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMDAtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXF1ZXN0X3RpbWVzKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbmZzL2dmczIvbG9ja19kbG0uYy0xMDIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMTctIFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExODpzdGF0aWMgdm9pZCBnZGxtX2FzdCh2b2lkICphcmcpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE5LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTgwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE4MTpzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbmZzL2dmczIvbG9ja19kbG0uYy0xODIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMDUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjA2OnN0YXRpYyBpbnQgbWFrZV9tb2RlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCB1bnNpZ25lZCBpbnQgbG1zdGF0ZSlcbmZzL2dmczIvbG9ja19kbG0uYy0yMDcte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMjQtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjI1OnN0YXRpYyBib29sIG1pZGRsZV9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjI2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjMwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjIzMTpzdGF0aWMgYm9vbCBkb3duX2NvbnZlcnNpb24oaW50IGN1ciwgaW50IHJlcSlcbmZzL2dmczIvbG9ja19kbG0uYy0yMzIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMzUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjM2OnN0YXRpYyB1MzIgbWFrZV9mbGFncyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIGNvbnN0IHVuc2lnbmVkIGludCBnZnNfZmxhZ3MsXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM3LVx0XHQgICAgICBjb25zdCBpbnQgcmVxLCBib29sIGJsb2NraW5nKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yNjctXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjY4OnN0YXRpYyB2b2lkIGdmczJfcmV2ZXJzZV9oZXgoY2hhciAqYywgdTY0IHZhbHVlKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI2OS17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI3Ni1cbmZzL2dmczIvbG9ja19kbG0uYzoyNzc6c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI3OC1cdFx0ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMyNC1cbmZzL2dmczIvbG9ja19kbG0uYzozMjU6c3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzI2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzgzLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjM4NDpzdGF0aWMgdm9pZCBnZGxtX2NhbmNlbChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzg1LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM2LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjUzNzpzdGF0aWMgdm9pZCBjb250cm9sX2x2Yl9yZWFkKHN0cnVjdCBsbV9sb2Nrc3RydWN0ICpscywgdWludDMyX3QgKmx2Yl9nZW4sXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM4LVx0XHRcdCAgICAgY2hhciAqbHZiX2JpdHMpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU0NS1cbmZzL2dmczIvbG9ja19kbG0uYzo1NDY6c3RhdGljIHZvaWQgY29udHJvbF9sdmJfd3JpdGUoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCBsdmJfZ2VuLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU0Ny1cdFx0XHQgICAgICBjaGFyICpsdmJfYml0cylcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjU1NTpzdGF0aWMgaW50IGFsbF9qaWRfYml0c19jbGVhcihjaGFyICpsdmIpXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTYwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjU2MTpzdGF0aWMgdm9pZCBzeW5jX3dhaXRfY2Iodm9pZCAqYXJnKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Mi17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Ni1cbmZzL2dmczIvbG9ja19kbG0uYzo1Njc6c3RhdGljIGludCBzeW5jX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2OC17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5Mi1cbmZzL2dmczIvbG9ja19kbG0uYzo1OTM6c3RhdGljIGludCBzeW5jX2xvY2soc3RydWN0IGdmczJfc2JkICpzZHAsIGludCBtb2RlLCB1aW50MzJfdCBmbGFncyxcbmZzL2dmczIvbG9ja19kbG0uYy01OTQtXHRcdCAgICAgdW5zaWduZWQgaW50IG51bSwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy02MjgtXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjI5OnN0YXRpYyBpbnQgbW91bnRlZF91bmxvY2soc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjMwLXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjM0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjYzNTpzdGF0aWMgaW50IG1vdW50ZWRfbG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgaW50IG1vZGUsIHVpbnQzMl90IGZsYWdzKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNi17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTY0MS1cbmZzL2dmczIvbG9ja19kbG0uYzo2NDI6c3RhdGljIGludCBjb250cm9sX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbmZzL2dmczIvbG9ja19kbG0uYy02NDMte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy02NDctXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjQ4OnN0YXRpYyBpbnQgY29udHJvbF9sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MpXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQ5LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjY1NTpzdGF0aWMgdm9pZCBnZnMyX2NvbnRyb2xfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtODMyLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjgzMzpzdGF0aWMgaW50IGNvbnRyb2xfbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2xvY2tfZGxtLmMtODM0LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMS1cbmZzL2dmczIvbG9ja19kbG0uYzoxMDMyOnN0YXRpYyBpbnQgY29udHJvbF9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwMzMte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMDk3LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEwOTg6c3RhdGljIGludCBzZXRfcmVjb3Zlcl9zaXplKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZGxtX3Nsb3QgKnNsb3RzLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwOTktXHRcdFx0ICAgIGludCBudW1fc2xvdHMpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNDUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE0NjpzdGF0aWMgdm9pZCBmcmVlX3JlY292ZXJfc2l6ZShzdHJ1Y3QgbG1fbG9ja3N0cnVjdCAqbHMpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE0Ny17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNTgtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE1OTpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJfcHJlcCh2b2lkICphcmcpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE2MC17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExODMtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE4NDpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJfc2xvdCh2b2lkICphcmcsIHN0cnVjdCBkbG1fc2xvdCAqc2xvdClcbmZzL2dmczIvbG9ja19kbG0uYy0xMTg1LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTIxMi1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjEzOnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9kb25lKHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90cywgaW50IG51bV9zbG90cyxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjE0LVx0XHRcdCAgICAgIGludCBvdXJfc2xvdCwgdWludDMyX3QgZ2VuZXJhdGlvbilcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0NC1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjQ1OnN0YXRpYyB2b2lkIGdkbG1fcmVjb3ZlcnlfcmVzdWx0KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1bnNpZ25lZCBpbnQgamlkLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyNDYtXHRcdFx0XHQgdW5zaWduZWQgaW50IHJlc3VsdClcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI4OC1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGxtX2xvY2tzcGFjZV9vcHMgZ2RsbV9sb2Nrc3BhY2Vfb3BzID0ge1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTAtXHQucmVjb3Zlcl9wcmVwID0gZ2RsbV9yZWNvdmVyX3ByZXAsXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTQtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTI5NTpzdGF0aWMgaW50IGdkbG1fbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKnRhYmxlKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTYte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMzkzLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEzOTQ6c3RhdGljIHZvaWQgZ2RsbV9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEzOTUte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDE0LSAqL1xuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0MTU6c3RhdGljIHZvaWQgZ2RsbV91bm1vdW50KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBib29sIGNsZWFuKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0MTYte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDQyLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NDM6c3RhdGljIGNvbnN0IG1hdGNoX3RhYmxlX3QgZGxtX3Rva2VucyA9IHtcbmZzL2dmczIvbG9ja19kbG0uYy0xNDQ0LVx0eyBPcHRfamlkLCBcJiMzNDtqaWQ9JWRcJiMzNDt9LFxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDUwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NTE6Y29uc3Qgc3RydWN0IGxtX2xvY2tvcHMgZ2ZzMl9kbG1fb3BzID0ge1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0NTItXHQubG1fcHJvdG9fbmFtZSA9IFwmIzM0O2xvY2tfZGxtXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjYzMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaW5kaW5nIFN1aXRhYmxlIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMgd2l0aGluIHRoZSBHRlMyIGFuZCBFUk9GUyBmaWxlc3lzdGVtcyBmb3IgYW5hbHlzaXMsIGxpa2VseSBmb3Igc29tZSBzb3J0IG9mIGNvZGUgdW5kZXJzdGFuZGluZyBvciBkZWJ1Z2dpbmcgdGFzay4gVGhlIGZpcnN0IHBsYWNlIEkgbG9va2VkLCBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCwgc2VlbWVkIHByb21pc2luZywgYnV0IHVuZm9ydHVuYXRlbHksIGV2ZXJ5dGhpbmcgd2l0aGluIHRoYXQgZmlsZSBpcyBzdGF0aWMgZXhjZXB0IHRoZSBgZ2ZzMl9kbG1fb3BzYCBzdHJ1Y3QuIE5vdCByZWFsbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZXJlLCBhcyBJIG5lZWQgZnVuY3Rpb25zLCBub3QgZGF0YSBzdHJ1Y3R1cmVzLCB0byBiZSBzdWl0YWJsZSBmb3IgZm9jdXMgc3ltYm9scy4KCkkmIzM5O2xsIG1vdmUgb24gdG8gYGZzL2dmczIvcXVvdGEuY2AuIExldCYjMzk7cyBzZWUuLi4gYGdmczJfcXVvdGFfc3luY2AsIGBnZnMyX3F1b3RhX2NoZWNrYCwgYGdmczJfcXVvdGFfbG9ja2AsIGFuZCBgZ2ZzMl9xdW90YV9yZWZyZXNoYCBhcmUgYWxsIG5vbi1zdGF0aWMsIHNvIHRoZXkgbWlnaHQgYmUgZ29vZCBjYW5kaWRhdGVzLiBJJiMzOTtsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhvc2UgYXMgcG90ZW50aWFsIG9wdGlvbnMuCgpOZXh0LCBJJiMzOTtsbCBjaGVjayBgZnMvZ2ZzMi9nbG9jay5jYC4gT2theSwgaGVyZSBJIHNlZSBgZ2ZzMl9nbG9ja190aGF3YCwgYGdmczJfZ2xvY2tfbnFgLCBgZ2ZzMl9nbG9ja19kcWAsIGFuZCBgZ2ZzMl9nbG9ja19wdXRgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhvc2UgbG9vayBsaWtlIHRoZXkgY291bGQgYmUgaW50ZXJlc3RpbmcuCgpGaW5hbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZnMvZXJvZnMvemRhdGEuY2AuIGB6X2Vyb2ZzX2luaXRfc3VwZXJgLCBgel9lcm9mc19leGl0X3N1YnN5c3RlbWAsIGFuZCBgel9lcm9mc19pbml0X3N1YnN5c3RlbWAgYXJlIG5vbi1zdGF0aWMuIFRob3NlIGFyZW4mIzM5O3QgcmVhbGx5IGp1bXBpbmcgb3V0IGF0IG1lIGFzIHN0cm9uZyBjYW5kaWRhdGVzLiBPaCwgd2FpdCwgd2hhdCBhYm91dCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgPyBUaGF0IG1pZ2h0IGJlIHRoZSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy96ZGF0YS5jPTEwMDU9c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xMDIzLVx0XHRcdG1hcC1cdTAwM2VtX2xsZW4gPSAwO1xuZnMvZXJvZnMvemRhdGEuYzoxMDI0Olx0XHRcdGVyciA9IHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyKGlub2RlLCBtYXAsIDApO1xuZnMvZXJvZnMvemRhdGEuYy0xMDI1LVx0XHRcdGlmIChlcnIpXG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODMxLVx0XHRtYXAtXHUwMDNlbV9sYSA9IGVuZDtcbmZzL2Vyb2ZzL3pkYXRhLmM6MTgzMjpcdFx0ZXJyID0gel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoaW5vZGUsIG1hcCxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTgzMy1cdFx0XHRcdFx0ICAgICAgRVJPRlNfR0VUX0JMT0NLU19SRUFETU9SRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NjMwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEVST0ZTIFptYXAgSW1wbGVtZW50YXRpb24qKgoKUmlnaHQsIHNvIHRoZSB6bWFwIGlzIGRlZmluZWQgaW4gYGZzL2Vyb2ZzL3ptYXAuY2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgZmlsZSBzdHJ1Y3R1cmUsIGFuZCBrbm93IHRvIGZpbmQgdGhlIGltcG9ydGFudCBzdHVmZiwgSSYjMzk7bGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byBgZnMvZXJvZnMvem1hcC5jYC4gTGV0JiMzOTtzIHNraXAgdGhlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIG5vdyBhbmQgZm9jdXMgb24gdGhlIGV4dGVybmFsIGludGVyZmFjZSBhbmQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpbiBvcmRlciB0byBpbnRlcmFjdCB3aXRoIHRoZSB6bWFwLCB3aGljaCBpcyB0aGUga2V5IGRhdGEgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3ptYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy96bWFwLmMtOS1cbmZzL2Vyb2ZzL3ptYXAuYzoxMDpzdHJ1Y3Qgel9lcm9mc19tYXByZWNvcmRlciB7XG5mcy9lcm9mcy96bWFwLmMtMTEtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuLS1cbmZzL2Vyb2ZzL3ptYXAuYz03MTU9c3RhdGljIGludCB6X2Vyb2ZzX21hcF9zYW5pdHlfY2hlY2soc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9lcm9mcy96bWFwLmMtNzU1LVxuZnMvZXJvZnMvem1hcC5jOjc1NjppbnQgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGVyb2ZzX21hcF9ibG9ja3MgKm1hcCxcbmZzL2Vyb2ZzL3ptYXAuYy03NTctXHRcdFx0ICAgIGludCBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3N1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgc2VlIHRoYXQgYHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMuIFRoZSBwYXRjaCB0b3VjaGVzIGB6ZGF0YS5jYCwgd2hpY2ggaGFzIG1lIHdvbmRlcmluZyB3aHkuICBBaCwgaXQgbW9kaWZpZXMgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYCBhbmQgYHpfZXJvZnNfcHV0X3BjbHVzdGVyYCB3aXRoaW4gdGhhdCBmaWxlLiBTaW5jZSB0aGVyZSBhcmVuJiMzOTt0IG1hbnkgb3RoZXIgdXNlZnVsIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB6ZGF0YS5jYCwgSSBjb3VsZCBlaXRoZXIgaWdub3JlIHRoZSBFUk9GUyBmb2N1c2VkIHN5bWJvbHMgZW50aXJlbHkgb3IgdXRpbGl6ZSBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0LiBXYWl0LCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgIGRvZXMgKm5vdCogZGlyZWN0bHkgY2FsbCBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiAgTGV0JiMzOTtzIHNlZS4uLiBgel9lcm9mc19zY2FuX2ZvbGlvYCBjYWxscyBgel9lcm9mc19wY2x1c3Rlcl9iZWdpbmAsIGFuZCAqdGhhdCogaW4gdHVybiBjYWxscyBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiBSaWdodCwgYW5kIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIGNhbGxlZCBieSBib3RoIGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgLiBHaXZlbiB0aGF0IGJvdGggb2YgdGhvc2UgYXJlIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9ucywgdGhleSYjMzk7cmUgY2FsbGVkIGJ5IFZGUy4gIFRoZXJlZm9yZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBqdXN0IG9taXR0aW5nIHRoZSBFUk9GUyBmb2N1cyBzeW1ib2xzIHNpbmNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIHNlZW1zIG1hbmFnZWFibGUgd2l0aG91dCBleHBvc2luZyBhZGRpdGlvbmFsIGludGVybmFsIGRldGFpbHMuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNvbnNpZGVyIGBmcy94ZnMveGZzX3FtLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzYW1lIGxvZ2ljIGFwcGxpZXMgaW4gdGhpcyBmaWxlLiBJIHNlZSB0aGF0IGB4ZnNfcW1fdW5tb3VudGAgaXMgbm9uLXN0YXRpYywgYW5kIHNvIGlzIGB4ZnNfcW1fcXVvdGFjaGVja2AuIEludGVyZXN0aW5nLCBgeGZzX3FtX2RxdW90X2lzb2xhdGVgIGlzIHN0YXRpYy4gV2FpdCwgYHhmc19xbV9kcXVvdF9pc29sYXRlYCBpcyBwYXNzZWQgdG8gYGxpc3RfbHJ1X3dhbGtgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBkZXRhaWwgdG8gY29uc2lkZXIgcmVnYXJkaW5nIHN5bWJvbCBleHBvc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX3FtX2RxdW90X2lzb2xhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19xbS5jPTQxMj1zdGF0aWMgZW51bSBscnVfc3RhdHVzXG5mcy94ZnMveGZzX3FtLmM6NDEzOnhmc19xbV9kcXVvdF9pc29sYXRlKFxuZnMveGZzL3hmc19xbS5jLTQxNC1cdHN0cnVjdCBsaXN0X2hlYWRcdCppdGVtLFxuLS1cbmZzL3hmcy94ZnNfcW0uYz00OTE9eGZzX3FtX3Nocmlua19zY2FuKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy01MDYtXHRmcmVlZCA9IGxpc3RfbHJ1X3Nocmlua193YWxrKFx1MDAyNnFpLVx1MDAzZXFpX2xydSwgc2MsXG5mcy94ZnMveGZzX3FtLmM6NTA3Olx0XHRcdFx0ICAgICB4ZnNfcW1fZHF1b3RfaXNvbGF0ZSwgXHUwMDI2aXNvbCk7XG5mcy94ZnMveGZzX3FtLmMtNTA4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTA0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGZzX3FtX3Nocmlua19zY2FuYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhmc19xbV9zaHJpbmtfc2NhbmAuLi4gYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgJiMzNDtXaHkgaXNuJiMzOTt0IHRoaXMgZnVuY3Rpb24gZGVjbGFyZWQgYXMgYHN0YXRpY2A/JiMzNDsgSSBtZWFuLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdHMgcHJpbWFyeSBwdXJwb3NlIGlzIGludGVybmFsIHRvIHRoZSBYRlMgcXVvdGEgbWFuYWdlbWVudCBjb2RlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhIGNvbXBvbmVudCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIFRoZXJlJiMzOTtzIHVzdWFsbHkgYSBnb29kIHJlYXNvbiBmb3IgYSBub24tc3RhdGljIGRlY2xhcmF0aW9uLiBJcyBpdCBjYWxsZWQgZnJvbSBlbHNld2hlcmU/IFBlcmhhcHMgYXMgYSBjYWxsYmFjaywgb3IgbWF5YmUgaXQmIzM5O3MgZXhwb3NlZCBmb3Igc29tZSB2ZXJ5IHNwZWNpZmljLCBhbmQgbGlrZWx5IHVudXN1YWwsIGRlYnVnZ2luZyBzY2VuYXJpbz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHZpc2liaWxpdHkgYW5kIGNhbGxpbmcgY29udGV4dHMgb2YgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSB0byBpZGVudGlmeSBhbGwgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFuIGludGVudGlvbmFsIHJlYXNvbiBmb3IgdGhlIGJyb2FkZXIgc2NvcGUsIG9yIGlmIHRoaXMgZGVjbGFyYXRpb24gaXMganVzdCBsZWdhY3kgY29kZSB0aGF0IGhhc24mIzM5O3QgYmVlbiBwcm9wZXJseSByZWZhY3RvcmVkLiBUaGUgaW1wbGljYXRpb25zIG9mIGl0cyB2aXNpYmlsaXR5IGFyZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGFiaWxpdHkgb2YgdGhlIHF1b3RhIGNvZGUuIElmIGl0IF9pc18gdW5pbnRlbnRpb25hbGx5IG5vbi1zdGF0aWMsIGZpeGluZyB0aGF0IGNvdWxkIGhhdmUgYSBzdWJzdGFudGlhbCBwb3NpdGl2ZSBpbXBhY3QsIHJlZHVjaW5nIHRoZSBjaGFuY2Ugb2YgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgb2Ygc29tZW9uZSBvdXRzaWRlIHRoZSB4ZnMgY29kZWJhc2UgdXNpbmcgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX3FtX3Nocmlua19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19xbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYz00OTA9c3RhdGljIHVuc2lnbmVkIGxvbmdcbmZzL3hmcy94ZnNfcW0uYzo0OTE6eGZzX3FtX3Nocmlua19zY2FuKFxuZnMveGZzL3hmc19xbS5jLTQ5Mi1cdHN0cnVjdCBzaHJpbmtlclx0XHQqc2hyaW5rLFxuLS1cbmZzL3hmcy94ZnNfcW0uYz03NjU9eGZzX3FtX2luaXRfcXVvdGFpbmZvKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy04MzQtXHRxaW5mLVx1MDAzZXFpX3Nocmlua2VyLVx1MDAzZWNvdW50X29iamVjdHMgPSB4ZnNfcW1fc2hyaW5rX2NvdW50O1xuZnMveGZzL3hmc19xbS5jOjgzNTpcdHFpbmYtXHUwMDNlcWlfc2hyaW5rZXItXHUwMDNlc2Nhbl9vYmplY3RzID0geGZzX3FtX3Nocmlua19zY2FuO1xuZnMveGZzL3hmc19xbS5jLTgzNi1cdHFpbmYtXHUwMDNlcWlfc2hyaW5rZXItXHUwMDNlcHJpdmF0ZV9kYXRhID0gcWluZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1OTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogVGhlIENvZGUgaXMgU3RhZ25hbnQqKgoKUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IGhpdHMgbWUgaXMgdGhhdCB0aGUgc2l0dWF0aW9uIGlzLi4uIHN0YXRpYy4gTm90IG11Y2ggaGFwcGVuaW5nLCBubyBvYnZpb3VzIGNoYW5nZXMsIG5vIGZyZXNoIGFuZ2xlcy4gVGhlIGNvZGUsIGFzIGl0IHN0YW5kcywgZmVlbHMgc3RhZ25hbnQsIGxpa2UgYSBzbmFwc2hvdCBpbiB0aW1lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYWN0aXZlIGRldmVsb3BtZW50IGlzLCBpZiB0aGVyZSBpcyBhbnkuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgYmFzZWQgb24gdGhlIHZlcnkgc3BhcnNlIGluZm9ybWF0aW9uLCB0aGlzIGlzIGEgY29kZSBiYXNlIHRoYXQgbWF5IG5lZWQgc29tZSBmcmVzaCBleWVzIHRvIHJldmlldyBpdC4KClRoZW4sIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGZzL3hmcy94ZnNfYnVmLmNgLiBNeSB0aG91Z2h0cyBhcmUgZHJhd24gdG8gdGhpcyBzcGVjaWZpYyBmaWxlIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29kZWJhc2UuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuIEl0JiMzOTtzIHRoZSBidWZmZXIgbGF5ZXIuIEkga25vdyB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBwYXJ0aWN1bGFyIGZpbGUsIGl0cyByb2xlIGluIEkvTywgY2FjaGluZywgYW5kIGJsb2NrIG1hbmFnZW1lbnQgd2l0aGluIFhGUy4gQW55IGlzc3VlcyBoZXJlIGNhbiByaXBwbGUgb3V0d2FyZHMgZHJhbWF0aWNhbGx5LiBUaGF0JiMzOTtzIGEga2V5IGFyZWEgdG8gc3RhcnQgZGlnZ2luZyBpbnRvLiBQZXJoYXBzIGl0IGlzIGEgcGxhY2UgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMveGZzX2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfYnVmLmM9Mjc9c3RydWN0IGttZW1fY2FjaGUgKnhmc19idWZfY2FjaGU7XG4tLVxuZnMveGZzL3hmc19idWYuYy0zMS0gKlxuZnMveGZzL3hmc19idWYuYzozMjogKiB4ZnNfYnVmX3N0YWxlOlxuZnMveGZzL3hmc19idWYuYy0zMy0gKlx0Yl9zZW1hIChjYWxsZXIgaG9sZHMpXG4tLVxuZnMveGZzL3hmc19idWYuYz02Nj12b2lkXG5mcy94ZnMveGZzX2J1Zi5jOjY3Onhmc19idWZfc3RhbGUoXG5mcy94ZnMveGZzX2J1Zi5jLTY4LVx0c3RydWN0IHhmc19idWZcdCpicClcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTY2MD14ZnNfYnVmX3JlYWRfbWFwKFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtNzE4LVx0XHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzo3MTk6XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy03MjAtXHRcdHhmc19idWZfcmVsc2UoYnApO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTAyNT14ZnNfYnVmX2lvZW5kX2hhbmRsZV9lcnJvcihcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTEwOTMtb3V0X3N0YWxlOlxuZnMveGZzL3hmc19idWYuYzoxMDk0Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTEwOTUtXHRicC1cdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTE5ND14ZnNfYnVmX2ZhaWwoXG4tLVxuZnMveGZzL3hmc19idWYuYy0xMjAwLVx0YnAtXHUwMDNlYl9mbGFncyBcdTAwMjY9IH5YQkZfRE9ORTtcbmZzL3hmcy94ZnNfYnVmLmM6MTIwMTpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xMjAyLVx0eGZzX2J1Zl9pb2Vycm9yKGJwLCAtRUlPKTtcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTEzNTc9eGZzX2J1Zl9zdWJtaXQoXG4tLVxuZnMveGZzL3hmc19idWYuYy0xNDA3LVx0YnAtXHUwMDNlYl9mbGFncyBcdTAwMjY9IH5YQkZfRE9ORTtcbmZzL3hmcy94ZnNfYnVmLmM6MTQwODpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xNDA5LWVuZF9pbzpcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTE0Mjg9X194ZnNfYnVmX21hcmtfY29ycnVwdChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTE0MzQtXHR4ZnNfYnVmX2NvcnJ1cHRpb25fZXJyb3IoYnAsIGZhKTtcbmZzL3hmcy94ZnNfYnVmLmM6MTQzNTpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xNDM2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2MzgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBLZXJuZWwgRnVuY3Rpb24gQ2FuZGlkYXRlcyBmb3IgUGF0Y2ggSW5jbHVzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBsaXN0LCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0aGlzIGtlcm5lbCBwYXRjaC4gSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgYSBmZXcsIGFuZCBJIG5vdGVkIGRvd24gYHhmc19idWZfc3RhbGVgLCBhbmQgdGhlbiBJIHJlbWVtYmVyZWQgYGZzL2NlcGgvZGlyLmNgLi4uIGFoLCBgY2VwaF90cmltX2RlbnRyaWVzYCBpcyBhbHNvIG5vbi1zdGF0aWMsIHNvIHRob3NlIGFyZSB0d28gY2FuZGlkYXRlcyB0byBjb25zaWRlci4gQWRkaW5nIGBnZnMyX2dsb2NrX3RoYXdgIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYCB0byB0aGUgcG90ZW50aWFsIGxpc3QgYXMgd2VsbC4KCknigJltIGFsc28ga2VlcGluZyBhbiBleWUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC4gVGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoZSBwYXRjaCBiZWhhdmVzIHByb3Blcmx5LgoKV2FpdCwgaG9sZCBvbi4uLiBgbG9ja3JlZl9pc19kZWFkYCBpcyBhbHNvIHVzZWQgaW4gYGZzL2RjYWNoZS5jYCEgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQ6IGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBgc2VsZWN0X2NvbGxlY3RgLCBgc2VsZWN0X2NvbGxlY3QyYCwgYHNocmlua19kY2FjaGVfdHJlZWAsIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgLCBhbmQgYGRfYWxsb2NfcGFyYWxsZWxgLiBUaGF0JiMzOTtzIGEgbG90IG9mIGNvcmUgVkZTIGZ1bmN0aW9ucy4gSXQgZG9lcyBtYWtlIG1lIHdvbmRlciBpZiBhbnkgb2YgdGhvc2Ugd291bGQgYmUgd29ydGggaW5jbHVkaW5nLCBidXQgdGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG5vbi1zdGF0aWMsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIHRoaW5rIGFib3V0LCBhcyBpcyBgZF9hbGxvY19wYXJhbGxlbGAuIEJ1dCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpdCBzb3VuZHMgbGlrZSB0aG9zZSBhcmUgcHJvYmFibHkgb3V0IGJlY2F1c2UgdGhleSBhcmUgaG90LXBhdGggb3IgZ2VuZXJpYy4gU28gbGV0JiMzOTtzIHN0aWNrIHdpdGggdGhlIG1vcmUgc3BlY2lmaWMgY2FzZXMuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gdGhvc2UgZWFybGllciBmdW5jdGlvbnM6IGB4ZnNfYnVmX3N0YWxlYCDigJMgc3RpbGwgbm9uLXN0YXRpYy4gYGdmczJfcXVvdGFfc3luY2Ag4oCTIGFsc28gbm9uLXN0YXRpYy4gYGdmczJfZ2xvY2tfdGhhd2Ag4oCTIG5vbi1zdGF0aWMuIGBjZXBoX3RyaW1fZGVudHJpZXNgIOKAkyB5ZXAsIG5vbi1zdGF0aWMuIE9rYXksIHRob3NlIGFsbCBzdGlsbCBsb29rIGdvb2QgYXMgbW9yZSBzcGVjaWZpYyBjYW5kaWRhdGVzLgoKQWxyaWdodCwgbm93IGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgbG9ja3JlZl9pc19kZWFkYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2xvY2tyZWYuaGAuIFllcywgdGhlIHBhdGNoIGFkZHMgaXQsIHNvIHRoYXQgY2hlY2tzIG91dC4KCkZpbmFsbHksIEnigJlsbCB0YWtlIGEgbG9vayB0byBzZWUgaWYgYW55IGFkZGl0aW9uYWwgY29uZmlnIGRlcGVuZGVuY2llcyBtYXkgYmUgbmVlZGVkLiBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4sIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEdGUzJfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQsIHNvIHRoZXkgc2hvdWxkbiYjMzk7dCBiZSBhbiBpc3N1ZS4gTGV0IG1lIGFsc28gZG91YmxlIGNoZWNrIGBmcy9nZnMyL0tjb25maWdgIGZvciBgR0ZTMl9GU19MT0NLSU5HX0RMTWAuIEFuZCBsb29rcyBsaWtlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG4tLVxuZnMvZ2ZzMi9LY29uZmlnLTI2LVxuZnMvZ2ZzMi9LY29uZmlnOjI3OmNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXG5mcy9nZnMyL0tjb25maWctMjgtXHRib29sIFwmIzM0O0dGUzIgRExNIGxvY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYEdGUzJfRlNfTE9DS0lOR19ETE1gIGNvbmNlcHQuIFJpZ2h0LCBzbyBteSBpbnR1aXRpb24gaXMgc2F5aW5nIHRoYXQgdGhpcyAqYWJzb2x1dGVseSogcmVsaWVzIG9uIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIsIG9yIGBETE1gLiBUaGF0IGZlZWxzIHJpZ2h0LCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBJJiMzOTt2ZSBzZWVuIGl0IHdpcmVkIHVwIHRoYXQgd2F5IGJlZm9yZS4gQnV0LCBsZXQmIzM5O3Mgbm90IGp1c3QgdHJ1c3QgZ3V0IGZlZWxpbmcgaGVyZSwgZXZlbiBhcyBhIGhpZ2hseSBleHBlcmllbmNlZCBwZXJzb24gaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHNvbGlkIG9uIHRoaXMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIG9yIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGJldHdlZW4gYEdGUzJfRlNfTE9DS0lOR19ETE1gIGFuZCBgRExNYC4gSSYjMzk7bGwgZG8gYSBxdWljayBzY2FuIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9LY29uZmlnPTI3PWNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXG5mcy9nZnMyL0tjb25maWctMjgtXHRib29sIFwmIzM0O0dGUzIgRExNIGxvY2tpbmdcJiMzNDtcbmZzL2dmczIvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gKEdGUzJfRlMhPW4pIFx1MDAyNlx1MDAyNiBORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFxcXG5mcy9nZnMyL0tjb25maWctMzAtXHRcdENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgKERMTT15IHx8IERMTT1HRlMyX0ZTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI4OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gYXMgSSB3b3VsZCBteXNlbGYuCgoqKkVuYWJsaW5nIERlcGVuZGVuY2llcyBmb3IgRVJPRlMgT3B0aW1pemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBidXNpbmVzcy4gRnJvbSB0aGUgbG9va3Mgb2YgaXQsIHdlIG5lZWQgdG8gZW5zdXJlIHNvbWUgZGVwZW5kZW5jaWVzIGFyZSBlbmFibGVkIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gU3BlY2lmaWNhbGx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRExNYCBhbmQgYENPTkZJR0ZTX0ZTYC4gUmlnaHQsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSBhY3RpdmF0ZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBCZXN0IHRvIHRha2UgY2FyZSBvZiB0aGUgZm91bmRhdGlvbiBlYXJseSBvbi4gVGhlbiwgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgZnMvZXJvZnMvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBFUk9GU19GU19aSVBgIHNldHRpbmcuIE5vIHBvaW50IGdvaW5nIGFoZWFkIGJsaW5kLCBiZXN0IHRvIGNvbmZpcm0gdGhlIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnPTM9Y29uZmlnIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6NTpcdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2Vyb2ZzL0tjb25maWctNi1cdHNlbGVjdCBDUkMzMlxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9NTA9Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXG5mcy9lcm9mcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo1MjpcdGRlcGVuZHMgb24gRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz02MD1jb25maWcgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0VST0ZTIGV4dGVuZGVkIGF0dHJpYnV0ZXNcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6NjI6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTYzLVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz03MT1jb25maWcgRVJPRlNfRlNfUE9TSVhfQUNMXG5mcy9lcm9mcy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtFUk9GUyBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo3MzpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNzQtXHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcbmZzL2Vyb2ZzL0tjb25maWctODYtXHRib29sIFwmIzM0O0VST0ZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo4NzpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctODgtXHRkZWZhdWx0IHlcbi0tXG5mcy9lcm9mcy9LY29uZmlnPTk4PWNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxuZnMvZXJvZnMvS2NvbmZpZy05OS1cdGJvb2wgXCYjMzQ7RmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG5mcy9lcm9mcy9LY29uZmlnOjEwMDpcdGRlcGVuZHMgb24gRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctMTAxLVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xMTI9Y29uZmlnIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXHRib29sIFwmIzM0O0VST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxMTQ6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTExNS1cdGRlZmF1bHQgeVxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTIyPWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxuZnMvZXJvZnMvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O0VST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTI1LVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xMzQ9Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BX0RFRkFVTFRfTUFYX1NUUkVBTVNcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVx0aW50IFwmIzM0O0VST0ZTIExaTUEgZGVmYXVsdCBtYXhpbXVtIGRlY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxMzY6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUF9MWk1BXG5mcy9lcm9mcy9LY29uZmlnLTEzNy1cdHJhbmdlIDEgTlJfQ1BVU1xuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTQ4PWNvbmZpZyBFUk9GU19GU19aSVBfREVGTEFURVxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O0VST0ZTIERFRkxBVEUgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTUwOlx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTUxLVx0aGVscFxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTU5PWNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxuZnMvZXJvZnMvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O0VST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxNjE6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xNjItXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xNzA9Y29uZmlnIEVST0ZTX0ZTX1pJUF9BQ0NFTFxuZnMvZXJvZnMvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O0VST0ZTIGhhcmR3YXJlIGRlY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxNzI6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xNzMtXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xODQ9Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXHRib29sIFwmIzM0O0VST0ZTIHBlci1jcHUgZGVjb21wcmVzc2lvbiBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTg2Olx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTg3LVx0aGVscFxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbmZzL2Vyb2ZzL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXCYjMzQ7XG5mcy9lcm9mcy9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWklQIFx1MDAyNlx1MDAyNiBFUk9GU19GU19QQ1BVX0tUSFJFQURcbmZzL2Vyb2ZzL0tjb25maWctMTk2LVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0yMDM9Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcbmZzL2Vyb2ZzL0tjb25maWctMjA0LVx0Ym9vbCBcJiMzNDtFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MjA1Olx0ZGVwZW5kcyBvbiBFUk9GU19GUyBcdTAwMjZcdTAwMjYgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctMjA2LVx0c2VsZWN0IEZTX1NUQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODY2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgU2NvcGUqKgoKQWxyaWdodCwgc28gYEVST0ZTX0ZTX1pJUGAgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgY2xlYXJseSBhIGNoaWxkIG9mIGBFUk9GU19GU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBFUk9GUyBmaWxlc3lzdGVtIGlzIHByZXNlbnQgZmlyc3QsIG9idmlvdXNseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgY29tcGxleGl0eSB0aGVyZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgZWxzZSBxdWlja2x5LiBJIGhhdmUgdG8gbG9vayBpbnRvIGBmcy94ZnMvS2NvbmZpZ2AgdG8gc2VlIGFib3V0IGBYRlNfUVVPVEFgLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIHF1b3RhIGludGVncmF0aW9uIG9yIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gaWYgaW5kaXJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmlsZSBoYXMgdG8gc2F5LiBOZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnPTI9Y29uZmlnIFhGU19GU1xuZnMveGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1hGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIEJMT0NLXG5mcy94ZnMvS2NvbmZpZy01LVx0c2VsZWN0IEVYUE9SVEZTXG4tLVxuZnMveGZzL0tjb25maWc9MjU9Y29uZmlnIFhGU19TVVBQT1JUX1Y0XG5mcy94ZnMvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0yOC1cdGRlZmF1bHQgblxuLS1cbmZzL3hmcy9LY29uZmlnPTUwPWNvbmZpZyBYRlNfU1VQUE9SVF9BU0NJSV9DSVxuZnMveGZzL0tjb25maWctNTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZGVwcmVjYXRlZCBjYXNlLWluc2Vuc2l0aXZlIGFzY2lpIChhc2NpaS1jaT0xKSBmb3JtYXRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjUyOlx0ZGVwZW5kcyBvbiBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTUzLVx0ZGVmYXVsdCBuXG4tLVxuZnMveGZzL0tjb25maWc9Nzc9Y29uZmlnIFhGU19RVU9UQVxuZnMveGZzL0tjb25maWctNzgtXHRib29sIFwmIzM0O1hGUyBRdW90YSBzdXBwb3J0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy04MC1cdHNlbGVjdCBRVU9UQUNUTFxuLS1cbmZzL3hmcy9LY29uZmlnPTk1PWNvbmZpZyBYRlNfUE9TSVhfQUNMXG5mcy94ZnMvS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7WEZTIFBPU0lYIEFDTCBzdXBwb3J0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzo5NzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy05OC1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbi0tXG5mcy94ZnMvS2NvbmZpZz0xMDU9Y29uZmlnIFhGU19SVFxuZnMveGZzL0tjb25maWctMTA2LVx0Ym9vbCBcJiMzNDtYRlMgUmVhbHRpbWUgc3Vidm9sdW1lIHN1cHBvcnRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjEwNzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0xMDgtXHRkZWZhdWx0IEJMS19ERVZfWk9ORURcbi0tXG5mcy94ZnMvS2NvbmZpZz0xNDc9Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJcbi0tXG5mcy94ZnMvS2NvbmZpZy0xNDktXHRkZWZhdWx0IHlcbmZzL3hmcy9LY29uZmlnOjE1MDpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIFRNUEZTIFx1MDAyNlx1MDAyNiBTSE1FTVxuZnMveGZzL0tjb25maWctMTUyLVx0c2VsZWN0IFhGU19MSVZFX0hPT0tTXG4tLVxuZnMveGZzL0tjb25maWc9MTY0PWNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXG4tLVxuZnMveGZzL0tjb25maWctMTY2LVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoxNjc6XHRkZXBlbmRzIG9uIFhGU19PTkxJTkVfU0NSVUJcbmZzL3hmcy9LY29uZmlnOjE2ODpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmZzL3hmcy9LY29uZmlnLTE2OS1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0xNzk9Y29uZmlnIFhGU19PTkxJTkVfUkVQQUlSXG4tLVxuZnMveGZzL0tjb25maWctMTgxLVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX09OTElORV9TQ1JVQlxuZnMveGZzL0tjb25maWctMTgzLVx0c2VsZWN0IFhGU19CVFJFRV9JTl9NRU1cbi0tXG5mcy94ZnMvS2NvbmZpZz0xOTQ9Y29uZmlnIFhGU19XQVJOXG5mcy94ZnMvS2NvbmZpZy0xOTUtXHRib29sIFwmIzM0O1hGUyBWZXJib3NlIFdhcm5pbmdzXCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgIVhGU19ERUJVR1xuZnMveGZzL0tjb25maWctMTk3LVx0aGVscFxuLS1cbmZzL3hmcy9LY29uZmlnPTIwNz1jb25maWcgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1hGUyBEZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuZnMveGZzL0tjb25maWc6MjA5Olx0ZGVwZW5kcyBvbiBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTIxMC1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0yMjA9Y29uZmlnIFhGU19ERUJVR19FWFBFTlNJVkVcbmZzL3hmcy9LY29uZmlnLTIyMS1cdGJvb2wgXCYjMzQ7WEZTIGV4cGVuc2l2ZSBkZWJ1Z2dpbmcgY2hlY2tzXCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoyMjI6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMjMtXHRoZWxwXG4tLVxuZnMveGZzL0tjb25maWc9MjMyPWNvbmZpZyBYRlNfQVNTRVJUX0ZBVEFMXG4tLVxuZnMveGZzL0tjb25maWctMjM0LVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoyMzU6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMzYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjE5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIENlcGggRlMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYFhGU19RVU9UQWAuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0JiMzOTtzIGp1c3QgYSBkZXBlbmRlbmN5IG9mIHRoZSBjb3JlIGBYRlNfRlNgIGZ1bmN0aW9uYWxpdHksIGFzIGV4cGVjdGVkLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHF1b3RhIGluZm9ybWF0aW9uIGZpdHMgaW4gcmVsYXRpb24gdG8gb3RoZXIgZmlsZSBzeXN0ZW1zLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGBLY29uZmlnYCBmb3IgdGhlIENlcGggZmlsZSBzeXN0ZW0uIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBzZWUgaG93IHRoZXkmIzM5O3ZlIGludGVncmF0ZWQgcXVvdGEgc3VwcG9ydC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQsIG9yIG1vcmUgbG9vc2VseSBoYW5kbGVkLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jZXBoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuZnMvY2VwaC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIElORVRcbmZzL2NlcGgvS2NvbmZpZy01LVx0c2VsZWN0IENFUEhfTElCXG4tLVxuZnMvY2VwaC9LY29uZmlnPTIwPWNvbmZpZyBDRVBIX0ZTQ0FDSEVcbmZzL2NlcGgvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIENlcGggY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuZnMvY2VwaC9LY29uZmlnOjIyOlx0ZGVwZW5kcyBvbiBDRVBIX0ZTPW0gXHUwMDI2XHUwMDI2IEZTQ0FDSEUgfHwgQ0VQSF9GUz15IFx1MDAyNlx1MDAyNiBGU0NBQ0hFPXlcbmZzL2NlcGgvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5mcy9jZXBoL0tjb25maWc9Mjk9Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbmZzL2NlcGgvS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gQ0VQSF9GU1xuZnMvY2VwaC9LY29uZmlnLTMyLVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2NlcGgvS2NvbmZpZz0zOT1jb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxuZnMvY2VwaC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG5mcy9jZXBoL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIENFUEhfRlMgXHUwMDI2XHUwMDI2IFNFQ1VSSVRZXG5mcy9jZXBoL0tjb25maWctNDItXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIHN5bWJvbHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgZmlsZSBzeXN0ZW1zLiBGaXJzdCwgYENFUEhfRlNgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBJTkVUYCwgdGhhdCYjMzk7cyBrZXkuIE5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBzeW1ib2xzIEkgd2FudCB0byBjb25maXJtIGFyZTogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBETE1gLCBgQ09ORklHRlNfRlNgLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgb2YgY291cnNlIGBDRVBIX0ZTYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHZlcmlmeSBhcmUgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290IGBjZXBoX3RyaW1fZGVudHJpZXNgLCBgeGZzX2J1Zl9zdGFsZWAsIGBnZnMyX2dsb2NrX3RoYXdgLCBhbmQgYGdmczJfcXVvdGFfc3luY2AuIFRpbWUgdG8gcXVpY2tseSB2ZXJpZnkgdGhlaXIgbG9jYXRpb25zIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZS4gQWgsIHllcywgYHhmc19idWZfc3RhbGVgIGlzIGluIGBmcy94ZnMveGZzX2J1Zi5jYCwganVzdCBhcyBJIGV4cGVjdGVkLiBgZ2ZzMl9nbG9ja190aGF3YCBpcyBpbiBgZnMvZ2ZzMi9nbG9jay5jYC4gYGdmczJfcXVvdGFfc3luY2AgbGl2ZXMgaW4gYGZzL2dmczIvcXVvdGEuY2AsIGFuZCBmaW5hbGx5LCBgY2VwaF90cmltX2RlbnRyaWVzYCBpcyB0dWNrZWQgYXdheSBpbiBgZnMvY2VwaC9kaXIuY2AuCgpPa2F5LCBuZXh0IHN0ZXAsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVycyBvZiBgeGZzX2J1Zl9zdGFsZWAuIEtub3dpbmcgd2hhdCBjYWxscyB0aGF0IGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIGhlbHBmdWwuIFRoaXMgd2lsbCBoZWxwIHdpdGggZGVidWdnaW5nIGxhdGVyIGFuZCB1bmRlcnN0YW5kaW5nIHdoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX2J1Zl9zdGFsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYz01NjI9eGZzX2F0dHJfcm10dmFsX3N0YWxlKFxuLS1cbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTg4LVxuZnMveGZzL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYzo1ODk6XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTkwLVx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM9NTY3PXhyZXBfeGF0dHJfcmVjb3Zlcl9ibG9jayhcbi0tXG5mcy94ZnMvc2NydWIvYXR0cl9yZXBhaXIuYy02MDItXHRpZiAoYnAtXHUwMDNlYl9vcHMgPT0gTlVMTClcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jOjYwMzpcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMvc2NydWIvYXR0cl9yZXBhaXIuYy02MDQtXG4tLVxuZnMveGZzL3NjcnViL3JlYXAuYz0xMzE0PXhyZWFwX2JtYXBpX2JpbnZhbChcbi0tXG5mcy94ZnMvc2NydWIvcmVhcC5jLTEzOTEtXHRcdFx0fSBlbHNlIHtcbmZzL3hmcy9zY3J1Yi9yZWFwLmM6MTM5MjpcdFx0XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3NjcnViL3JlYXAuYy0xMzkzLVx0XHRcdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc19idWYuYz0yNz1zdHJ1Y3Qga21lbV9jYWNoZSAqeGZzX2J1Zl9jYWNoZTtcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTMxLSAqXG5mcy94ZnMveGZzX2J1Zi5jOjMyOiAqIHhmc19idWZfc3RhbGU6XG5mcy94ZnMveGZzX2J1Zi5jLTMzLSAqXHRiX3NlbWEgKGNhbGxlciBob2xkcylcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTY2PXZvaWRcbmZzL3hmcy94ZnNfYnVmLmM6Njc6eGZzX2J1Zl9zdGFsZShcbmZzL3hmcy94ZnNfYnVmLmMtNjgtXHRzdHJ1Y3QgeGZzX2J1Zlx0KmJwKVxuLS1cbmZzL3hmcy94ZnNfYnVmLmM9NjYwPXhmc19idWZfcmVhZF9tYXAoXG4tLVxuZnMveGZzL3hmc19idWYuYy03MTgtXHRcdGJwLVx1MDAzZWJfZmxhZ3MgXHUwMDI2PSB+WEJGX0RPTkU7XG5mcy94ZnMveGZzX2J1Zi5jOjcxOTpcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTcyMC1cdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc19idWYuYz0xMDI1PXhmc19idWZfaW9lbmRfaGFuZGxlX2Vycm9yKFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtMTA5My1vdXRfc3RhbGU6XG5mcy94ZnMveGZzX2J1Zi5jOjEwOTQ6XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy94ZnNfYnVmLmMtMTA5NS1cdGJwLVx1MDAzZWJfZmxhZ3MgfD0gWEJGX0RPTkU7XG4tLVxuZnMveGZzL3hmc19idWYuYz0xMTk0PXhmc19idWZfZmFpbChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDAtXHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzoxMjAxOlx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTEyMDItXHR4ZnNfYnVmX2lvZXJyb3IoYnAsIC1FSU8pO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTM1Nz14ZnNfYnVmX3N1Ym1pdChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTE0MDctXHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzoxNDA4Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTE0MDktZW5kX2lvOlxuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTQyOD1fX3hmc19idWZfbWFya19jb3JydXB0KFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtMTQzNC1cdHhmc19idWZfY29ycnVwdGlvbl9lcnJvcihicCwgZmEpO1xuZnMveGZzL3hmc19idWYuYzoxNDM1Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTE0MzYtfVxuLS1cbmZzL3hmcy94ZnNfYnVmLmg9MzAzPXN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfYnVmX3plcm8oc3RydWN0IHhmc19idWYgKmJwLCBzaXplX3QgYm9mZiwgc2l6ZV90IGJzaXplKVxuLS1cbmZzL3hmcy94ZnNfYnVmLmgtMzA3LVxuZnMveGZzL3hmc19idWYuaDozMDg6ZXh0ZXJuIHZvaWQgeGZzX2J1Zl9zdGFsZShzdHJ1Y3QgeGZzX2J1ZiAqYnApO1xuZnMveGZzL3hmc19idWYuaC0zMDktXG4tLVxuZnMveGZzL3hmc19idWZfaXRlbV9yZWNvdmVyLmM9MTAzMT14bG9nX3JlY292ZXJfYnVmX2NvbW1pdF9wYXNzMihcbi0tXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYy0xMTYyLVx0ICAgIChCQlRPQihicC1cdTAwM2ViX2xlbmd0aCkgIT0gTV9JR0VPKGxvZy1cdTAwM2VsX21wKS1cdTAwM2Vpbm9kZV9jbHVzdGVyX3NpemUpKSB7XG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYzoxMTYzOlx0XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy94ZnNfYnVmX2l0ZW1fcmVjb3Zlci5jLTExNjQtXHRcdGVycm9yID0geGZzX2J3cml0ZShicCk7XG4tLVxuZnMveGZzL3hmc19pbm9kZS5jPTExMDc9eGZzX2luYWN0aXZlX2Rpcihcbi0tXG5mcy94ZnMveGZzX2lub2RlLmMtMTEzOC1cbmZzL3hmcy94ZnNfaW5vZGUuYzoxMTM5Olx0XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19pbm9kZS5jLTExNDAtXHRcdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc190cmFuc19idWYuYz0xMTY9eGZzX3RyYW5zX2dldF9idWZfbWFwKFxuLS1cbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQxLVx0XHRpZiAoeGZzX2lzX3NodXRkb3duKHRwLVx1MDAzZXRfbW91bnRwKSkge1xuZnMveGZzL3hmc190cmFuc19idWYuYzoxNDI6XHRcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX3RyYW5zX2J1Zi5jLTE0My1cdFx0XHRicC1cdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xuLS1cbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM9NTY1PXhmc190cmFuc19iaW52YWwoXG4tLVxuZnMveGZzL3hmc190cmFuc19idWYuYy01OTItXG5mcy94ZnMveGZzX3RyYW5zX2J1Zi5jOjU5MzpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc190cmFuc19idWYuYy01OTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTExCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqWEZTIEJ1ZiBTdGFsZSBJbnZlc3RpZ2F0aW9uIEZvY3VzKioKCk9rYXksIHNvIGB4ZnNfYnVmX3N0YWxlYCBpcyBjYWxsZWQgYWxsIG92ZXIgdGhlIHBsYWNlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyAmIzM0O3NtZWxseSYjMzQ7IGZ1bmN0aW9uLCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuIEl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBpc3N1ZSB0aGF0JiMzOTtzIG1hbmlmZXN0aW5nIGluIHZhcmlvdXMgbG9jYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyBjb250ZXh0IHRvIHNlZSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSB0aGluayBhIGdvb2QgcG9pbnQgb2YgYXR0YWNrIGlzIGBnZnMyX3F1b3RhX3N5bmNgLCBiZWNhdXNlIEkgaGF2ZSBhbiBpbnR1aXRpb24gdGhhdCBpdCByZWxhdGVzIHRvIHN0YWxlIGJ1ZmZlciBpc3N1ZXMgaW4gcXVvdGFzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaHVuY2ggcGFucyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvcXVvdGEuYz0xMjk4PXZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcbmZzL2dmczIvcXVvdGEuYy0xMzI1LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmM9MTU4OD1pbnQgZ2ZzMl9xdW90YWQodm9pZCAqZGF0YSlcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTYxOS1cdFx0XHQvKiBVcGRhdGUgdGhlIHF1b3RhIGZpbGUgKi9cbmZzL2dmczIvcXVvdGEuYzoxNjIwOlx0XHRcdGVycm9yID0gZ2ZzMl9xdW90YV9zeW5jKHNkcC1cdTAwM2VzZF92ZnMsIDApO1xuZnMvZ2ZzMi9xdW90YS5jLTE2MjEtXHRcdFx0cXVvdGFkX2Vycm9yKHNkcCwgXCYjMzQ7c3luY1wmIzM0OywgZXJyb3IpO1xuLS1cbmZzL2dmczIvcXVvdGEuYz0xODE2PWNvbnN0IHN0cnVjdCBxdW90YWN0bF9vcHMgZ2ZzMl9xdW90YWN0bF9vcHMgPSB7XG5mcy9nZnMyL3F1b3RhLmM6MTgxNzpcdC5xdW90YV9zeW5jICAgICA9IGdmczJfcXVvdGFfc3luYyxcbmZzL2dmczIvcXVvdGEuYy0xODE4LVx0LmdldF9zdGF0ZVx0PSBnZnMyX3F1b3RhX2dldF9zdGF0ZSxcbi0tXG5mcy9nZnMyL3F1b3RhLmg9Mjg9dm9pZCBnZnMyX3F1b3RhX2NoYW5nZShzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIHM2NCBjaGFuZ2UsXG4tLVxuZnMvZ2ZzMi9xdW90YS5oLTMwLVxuZnMvZ2ZzMi9xdW90YS5oOjMxOmludCBnZnMyX3F1b3RhX3N5bmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpO1xuZnMvZ2ZzMi9xdW90YS5oLTMyLWludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZCk7XG4tLVxuZnMvZ2ZzMi9zdXBlci5jPTUzOT12b2lkIGdmczJfbWFrZV9mc19ybyhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbi0tXG5mcy9nZnMyL3N1cGVyLmMtNTQ4LVx0aWYgKGxvZ193cml0ZV9hbGxvd2VkKSB7XG5mcy9nZnMyL3N1cGVyLmM6NTQ5Olx0XHRnZnMyX3F1b3RhX3N5bmMoc2RwLVx1MDAzZXNkX3ZmcywgMCk7XG5mcy9nZnMyL3N1cGVyLmMtNTUwLVx0XHRnZnMyX3N0YXRmc19zeW5jKHNkcC1cdTAwM2VzZF92ZnMsIDApO1xuLS1cbmZzL2dmczIvc3VwZXIuYz02NTg9c3RhdGljIGludCBnZnMyX3N5bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpXG4tLVxuZnMvZ2ZzMi9zdXBlci5jLTY2MS1cbmZzL2dmczIvc3VwZXIuYzo2NjI6XHRnZnMyX3F1b3RhX3N5bmMoc2IsIC0xKTtcbmZzL2dmczIvc3VwZXIuYy02NjMtXHRpZiAod2FpdClcbi0tXG5mcy9nZnMyL3N5cy5jPTIzMT1zdGF0aWMgc3NpemVfdCBxdW90YV9zeW5jX3N0b3JlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCBjaGFyICpidWYsXG4tLVxuZnMvZ2ZzMi9zeXMuYy0yNDUtXG5mcy9nZnMyL3N5cy5jOjI0NjpcdGdmczJfcXVvdGFfc3luYyhzZHAtXHUwMDNlc2RfdmZzLCAwKTtcbmZzL2dmczIvc3lzLmMtMjQ3LVx0cmV0dXJuIGxlbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKioKClJpZ2h0LCBzbyBgZ2ZzMl9xdW90YV9zeW5jYCDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHdlJiMzOTtyZSB1c2luZyBhcyB0aGUgYHF1b3RhX3N5bmNgIGluIGBxdW90YWN0bF9vcHNgLiBHb29kLCB0aGF0IG1ha2VzIGl0IGEgY2xlYXIgZm9jYWwgcG9pbnQuIFNlZW1zIGxpa2UgYSBzb2xpZCBjaG9pY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHF1b3RhcyBhcmUgYmVpbmcgc3luY2hyb25pemVkIHdpdGhpbiB0aGUgR0ZTMiBmaWxlIHN5c3RlbS4gSXTigJlzIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uCgpOb3csIHdoZXJlIGRvIHdlIGdvIGZyb20gaGVyZT8gVGltZSB0byBkaWcgaW50byBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBzaG91bGQgZ2l2ZSB1cyBzb21lIGluc2lnaHQgaW50byBob3cgdGhpbmdzIGFyZSB1bmJsb2NrZWQuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBpdCBzaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dmczJfZ2xvY2tfdGhhdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjA5Mi0vKipcbmZzL2dmczIvZ2xvY2suYzoyMDkzOiAqIGdmczJfZ2xvY2tfdGhhdyAtIFRoYXcgYW55IGZyb3plbiBnbG9ja3NcbmZzL2dmczIvZ2xvY2suYy0yMDk0LSAqIEBzZHA6IFRoZSBzdXBlciBibG9ja1xuLS1cbmZzL2dmczIvZ2xvY2suYy0yMDk3LVxuZnMvZ2ZzMi9nbG9jay5jOjIwOTg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2dsb2NrLmMtMjA5OS17XG4tLVxuZnMvZ2ZzMi9nbG9jay5oPTI2Nz12b2lkIGdmczJfd2l0aGRyYXdfZ2xvY2tzKHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcbmZzL2dmczIvZ2xvY2suaDoyNjg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApO1xuZnMvZ2ZzMi9nbG9jay5oLTI2OS12b2lkIGdmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpO1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYz02NTU9c3RhdGljIHZvaWQgZ2ZzMl9jb250cm9sX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy04MjQtXHRcdGZzX2luZm8oc2RwLCBcJiMzNDtyZWNvdmVyIGdlbmVyYXRpb24gJXUgZG9uZVxcblwmIzM0Oywgc3RhcnRfZ2VuKTtcbmZzL2dmczIvbG9ja19kbG0uYzo4MjU6XHRcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTgyNi1cdH0gZWxzZSB7XG4tLVxuZnMvZ2ZzMi9zeXMuYz00MDc9c3RhdGljIHNzaXplX3QgYmxvY2tfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5mcy9nZnMyL3N5cy5jLTQyMC1cdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbmZzL2dmczIvc3lzLmM6NDIxOlx0XHRnZnMyX2dsb2NrX3RoYXcoc2RwKTtcbmZzL2dmczIvc3lzLmMtNDIyLVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIEFyZWFzKioKClJpZ2h0LCBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBib3RoIHN5c2ZzIGFuZCB0aGUgRExNIGNvbnRyb2wgZnVuY3Rpb25zLCBzbyBpdCBzZWVtcyBsaWtlIGEgcHJldHR5IGltcG9ydGFudCBzeW1ib2wgdG8gZm9jdXMgb24uIEl0JiMzOTtzIGEga2V5IHBvaW50IG9mIGludGVyYWN0aW9uIGZvciB0aGUgZmlsZXN5c3RlbSB3aXRoIHRoZSB1bmRlcmx5aW5nIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciwgYW5kIHN5c2ZzIGFjY2VzcyBpcyBhbHdheXMgaW50ZXJlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgd29uZGVyIGlmIGBjZXBoX3RyaW1fZGVudHJpZXNgIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGxpbmUgb2YgaW5xdWlyeSB0byBmb2xsb3cgbmV4dCwgcHJvYmFibHkgaGFzIHNvbWUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zLiBJIHRoaW5rIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyB0aGVyZSwgYW5kIGl0IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfdHJpbV9kZW50cmllcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NlcGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmM9MTc1MD1zdGF0aWMgaW50IF9fZGlyX2xlYXNlX2NoZWNrKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2Rpci5jLTE3NzQtXG5mcy9jZXBoL2Rpci5jOjE3NzU6aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuZnMvY2VwaC9kaXIuYy0xNzc2LXtcbi0tXG5mcy9jZXBoL21kc19jbGllbnQuYz0yNTg2PXN0YXRpYyB2b2lkIGNlcGhfY2FwX3JlY2xhaW1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmMtMjU4OS1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjZXBoX21kc19jbGllbnQsIGNhcF9yZWNsYWltX3dvcmspO1xuZnMvY2VwaC9tZHNfY2xpZW50LmM6MjU5MDpcdGludCByZXQgPSBjZXBoX3RyaW1fZGVudHJpZXMobWRzYyk7XG5mcy9jZXBoL21kc19jbGllbnQuYy0yNTkxLVx0aWYgKHJldCA9PSAtRUFHQUlOKVxuLS1cbmZzL2NlcGgvc3VwZXIuaD0xMzgwPWV4dGVybiB2b2lkIGNlcGhfaW52YWxpZGF0ZV9kZW50cnlfbGVhc2Uoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcbmZzL2NlcGgvc3VwZXIuaDoxMzgxOmV4dGVybiBpbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpO1xuZnMvY2VwaC9zdXBlci5oLTEzODItZXh0ZXJuIHVuc2lnbmVkIGNlcGhfZGVudHJ5X2hhc2goc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MjUKCQkJCQkJCW91dHB1dDogMjc4CgkJCQkJCQl0aG91Z2h0czogNzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEZpbGVzeXN0ZW0gRGVwZW5kZW5jaWVzIGFuZCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBzZWUuIGBjZXBoX3RyaW1fZGVudHJpZXNgIGxvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbCDigJMgaXQmIzM5O3MgY2FsbGVkIGZyb20gYSB3b3JrcXVldWUuIE5vdywgc2hvdWxkIEkgaW5jbHVkZSBgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50YD8gVGhhdCYjMzk7cyBhIGNvcmUgVkZTIGZ1bmN0aW9uLCBidXQgdGhlIHByb21wdCBzYWlkIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBBbmQsIHNpbmNlIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG9ubHkgY2FsbGVkIGR1cmluZyB1bW91bnQsIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBvbiB0aGUgaG90IHBhdGguIEJ1dCwgaXQgaXMgZ2VuZXJpYy4gTWF5YmUgZm91ciBmdW5jdGlvbnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoZSBmb2N1cy4KCkFscmlnaHQsIGxldCBtZSByZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbGlzdCB0aGVtOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuCgpBcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkga25vdyBgRExNYCBkZXBlbmRzIG9uIGBJTkVUYCwgYENPTkZJR0ZTX0ZTYCBkZXBlbmRzIG9uIGBTWVNGU2AsIGFuZCBgU1lTRlNgLCBgSU5FVGAsIGFuZCBgQkxPQ0tgIGFyZSBhbHdheXMgZW5hYmxlZC4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBgZnMvZXJvZnMvS2NvbmZpZ2AuIGBFUk9GU19GU19aSVBgIGRlcGVuZHMgb24gYEVST0ZTX0ZTYCwgYW5kIGBFUk9GU19GU2AgZGVwZW5kcyBvbiBgQkxPQ0tgLiBOb3cgZm9yIGBmcy94ZnMvS2NvbmZpZ2AuIEkgc2VlIHRoYXQgYFhGU19RVU9UQWAgZGVwZW5kcyBvbiBgWEZTX0ZTYCwgYW5kIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gQW5kIGZpbmFsbHksIGluIGBmcy9jZXBoL0tjb25maWdgLCBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4gSSBzaG91bGQgY2hlY2sgYGZzL2dmczIvS2NvbmZpZ2AuIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCBkZXBlbmRzIG9uIGAoR0ZTMl9GUyE9bikgJmFtcDsmYW1wOyBORVQgJmFtcDsmYW1wOyBJTkVUICZhbXA7JmFtcDsgQ09ORklHRlNfRlMgJmFtcDsmYW1wOyBTWVNGUyAmYW1wOyZhbXA7IChETE09eSB8fCBETE09R0ZTMl9GUylgLiBUaGlzIG1lYW5zIGBETE1gIG11c3QgYmUgYHlgIG9yIGBtYC4gV2UgY2FuIGp1c3QgbGlzdCBgRExNYC4KClNvLCB0aGUgY29uZmlnIGxpc3QgaXMgY29uZmlybWVkOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuCgpBbmQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOiBgY2VwaF90cmltX2RlbnRyaWVzYCwgYHhmc19idWZfc3RhbGVgLCBgZ2ZzMl9nbG9ja190aGF3YCwgYW5kIGBnZnMyX3F1b3RhX3N5bmNgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbG9ja3JlZmAgbWVjaGFuaXNtIGFuZCBpbnRyb2R1Y2VzIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gIHRvIGhhbmRsZSBsb2NrcmVmIGNvdW50cyB0aGF0IGFyZSBuZWdhdGl2ZSwgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhpcyBpcyBhbiBlZGdlLWNhc2UgY2hhbmdlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHNwZWNpZmljIGVudHJ5IHBvaW50cyBpbiBjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCBhbmQgeGZzIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbG9ja3JlZiBsb2dpYy4gSSYjMzk7bSBhdm9pZGluZyB0aGUgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R0ZTMl9GUyYjMzQ7LAogICAgJiMzNDtHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgICAmIzM0O0RMTSYjMzQ7LAogICAgJiMzNDtDT05GSUdGU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19aSVAmIzM0OywKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19RVU9UQSYjMzQ7LAogICAgJiMzNDtDRVBIX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF90cmltX2RlbnRyaWVzJiMzNDssCiAgICAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAgICYjMzQ7Z2ZzMl9nbG9ja190aGF3JiMzNDssCiAgICAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBrZXJuZWwgbG9ja3JlZiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZGVhZCBsb2NrcmVmcyBhcmUgZGV0ZWN0ZWQgYnkgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoaXMgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdyBpbiBlZGdlIGNhc2VzIHdoZXJlIHRoZSBsb2NrcmVmIGNvdW50IG1pZ2h0IGJlIG5lZ2F0aXZlIGJ1dCBub3QgZXhhY3RseSBgLTEyOGAuIFRoZSBjaGFuZ2VzIGFmZmVjdCBzZXZlcmFsIGZpbGVzeXN0ZW1zIChjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCB4ZnMpIHRoYXQgcmVseSBvbiBsb2NrcmVmLiBXZSBmb2N1cyBmdXp6aW5nIG9uIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGluIHRoZXNlIGZpbGVzeXN0ZW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9kaWZpZWQgbG9ja3JlZiBsb2dpYywgd2hpbGUgYXZvaWRpbmcgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R0ZTMl9GUyYjMzQ7LAogICAgJiMzNDtHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgICAmIzM0O0RMTSYjMzQ7LAogICAgJiMzNDtDT05GSUdGU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19aSVAmIzM0OywKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19RVU9UQSYjMzQ7LAogICAgJiMzNDtDRVBIX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF90cmltX2RlbnRyaWVzJiMzNDssCiAgICAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAgICYjMzQ7Z2ZzMl9nbG9ja190aGF3JiMzNDssCiAgICAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBrZXJuZWwgbG9ja3JlZiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZGVhZCBsb2NrcmVmcyBhcmUgZGV0ZWN0ZWQgYnkgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoaXMgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdyBpbiBlZGdlIGNhc2VzIHdoZXJlIHRoZSBsb2NrcmVmIGNvdW50IG1pZ2h0IGJlIG5lZ2F0aXZlIGJ1dCBub3QgZXhhY3RseSBgLTEyOGAuIFRoZSBjaGFuZ2VzIGFmZmVjdCBzZXZlcmFsIGZpbGVzeXN0ZW1zIChjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCB4ZnMpIHRoYXQgcmVseSBvbiBsb2NrcmVmLiBXZSBmb2N1cyBmdXp6aW5nIG9uIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGluIHRoZXNlIGZpbGVzeXN0ZW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9kaWZpZWQgbG9ja3JlZiBsb2dpYywgd2hpbGUgYXZvaWRpbmcgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjA1Ljk1NDcwMzMyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDA0NDgzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdGUzJfRlNcIixcbiAgICBcIkdGUzJfRlNfTE9DS0lOR19ETE1cIixcbiAgICBcIkRMTVwiLFxuICAgIFwiQ09ORklHRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19aSVBcIixcbiAgICBcIlhGU19GU1wiLFxuICAgIFwiWEZTX1FVT1RBXCIsXG4gICAgXCJDRVBIX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF90cmltX2RlbnRyaWVzXCIsXG4gICAgXCJ4ZnNfYnVmX3N0YWxlXCIsXG4gICAgXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgICBcImdmczJfcXVvdGFfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDowNS45NTQ3MDk1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyMjYwNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTIwMDc0OGY3N2ZmZTYwMzFjMjQ0MzVmNWRiOTc3ZGQzZjA4N2EzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAwNjowMDowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9jZXBoL2Rpci5jIGIvZnMvY2VwaC9kaXIuY1xcbmluZGV4IGI5NTcxNDlhYmU1YTBhLi5mMzk4NTZmZjNlYTE1OCAxMDA2NDRcXG4tLS0gYS9mcy9jZXBoL2Rpci5jXFxuKysrIGIvZnMvY2VwaC9kaXIuY1xcbkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBfX2RlbnRyeV9sZWFzZXNfd2FsayhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLFxcbiBcXHRcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpKSB7XFxuK1xcdFxcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkaS1cXHUwMDNlbGVhc2VfbGlzdCk7XFxuIFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXFxuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxcbi0tLSBhL2ZzL2RjYWNoZS5jXFxuKysrIGIvZnMvZGNhY2hlLmNcXG5AQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBzdGF0aWMgdm9pZCBkZW50cnlfZnJlZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIHtcXG4gXFx0REVOVFJZX1dBUk5fT05DRShkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpLCBkZW50cnkpO1xcbi1cXHRERU5UUllfV0FSTl9PTkNFKGRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2U9IDAsIGRlbnRyeSk7XFxuK1xcdERFTlRSWV9XQVJOX09OQ0UoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpLCBkZW50cnkpO1xcbiBcXHREX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7XFxuIFxcdGlmICh1bmxpa2VseShkbmFtZV9leHRlcm5hbChkZW50cnkpKSkge1xcbiBcXHRcXHRzdHJ1Y3QgZXh0ZXJuYWxfbmFtZSAqcCA9IGV4dGVybmFsX25hbWUoZGVudHJ5KTtcXG5AQCAtNzgyLDcgKzc4Miw3IEBAIHN0YXRpYyBib29sIGxvY2tfZm9yX2tpbGwoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiAgKlxcbiAgKiBJZiBAZGVudHJ5IGlzIGlkbGUgYW5kIHJlbWFpbnMgc3VjaCBhZnRlciB3ZSBhc3NlbWJsZSB0aGUgZnVsbFxcbiAgKiBsb2NraW5nIGVudmlyb25tZW50IGZvciBldmljdGlvbiAoc2VlIGxvY2tfZm9yX2tpbGwoKSBmb3IgZGV0YWlscylcXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2MgMCkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXFxuKyAqIHdlIG1hcmsgaXQgZG9vbWVkIChzZWUgbG9ja3JlZl9tYXJrX2RlYWQoKSkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXFxuICAqIGl0IGZyb20gYW55IGZpbGVzeXN0ZW0gb2JqZWN0cy4gIE90aGVyd2lzZSB3ZSBkcm9wIC1cXHUwMDNlZF9sb2NrIGFuZFxcbiAgKiByZXR1cm4gJU5VTEwuXFxuICAqXFxuQEAgLTk0Niw3ICs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKHVubGlrZWx5KHJldCBcXHUwMDNjIDApKSB7XFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0XFx0aWYgKFdBUk5fT05fT05DRShkZW50cnktXFx1MDAzZWRfbG9ja3JlZi5jb3VudCBcXHUwMDNjPSAwKSkge1xcbitcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9ja3JlZikpKSB7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRcXHR9XFxuQEAgLTE2NDQsNyArMTY0NCw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3Qodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKGRhdGEtXFx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYz0gMCkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRfX21vdmVfdG9fc2hyaW5rX2xpc3QoZGVudHJ5LCBcXHUwMDI2ZGF0YS1cXHUwMDNlZGlzcG9zZSk7XFxuIFxcdFxcdGRhdGEtXFx1MDAzZWZvdW5kKys7XFxuIFxcdH1cXG5AQCAtMTY3Niw3ICsxNjc2LDcgQEAgc3RhdGljIGVudW0gZF93YWxrX3JldCBzZWxlY3RfY29sbGVjdDIodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKGRhdGEtXFx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYz0gMCkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRpZiAoIV9fbW92ZV90b19zaHJpbmtfbGlzdChkZW50cnksIFxcdTAwMjZkYXRhLVxcdTAwM2VkaXNwb3NlKSkge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBXZSBuZWVkIGFuIGVudGVyIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgYXJlYSB0aGF0XFxuQEAgLTE3NDcsNyArMTc0Nyw3IEBAIHN0YXRpYyB2b2lkIHNocmlua19kY2FjaGVfdHJlZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJvb2wgZm9yX3Vtb3VudClcXG4gXFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFxuLVxcdFxcdFxcdGlmICh1bmxpa2VseSh2LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYyAwKSkge1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZ2LVxcdTAwM2VkX2xvY2tyZWYpKSkge1xcbiBcXHRcXHRcXHRcXHQvLyBJdCdzIGRvb21lZDsgaWYgaXQgaXNuJ3QgZGVhZCB5ZXQsIG5vdGlmeSB1c1xcbiBcXHRcXHRcXHRcXHQvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLlxcbiBcXHRcXHRcXHRcXHRuZWVkX3dhaXQgPSBkX2FkZF93YWl0ZXIodiwgXFx1MDAyNndhaXQpO1xcbkBAIC0xODIzLDcgKzE4MjMsNyBAQCB2b2lkIHNocmlua19kY2FjaGVfZm9yX3Vtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2c2ItXFx1MDAzZXNfcm9vdHNfbG9jayk7XFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpKSkge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbl9saXN0IHdhaXQ7XFxuIFxcdFxcdFxcdGJvb2wgbmVlZF93YWl0ID0gZF9hZGRfd2FpdGVyKGRlbnRyeSwgXFx1MDAyNndhaXQpO1xcbiBcXG5AQCAtMjgyMiw3ICsyODIyLDcgQEAgc3RydWN0IGRlbnRyeSAqZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0Lyogbm93IHdlIGNhbiB0cnkgdG8gZ3JhYiBhIHJlZmVyZW5jZSAqL1xcbi1cXHRcXHRpZiAodW5saWtlbHkoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYyAwKSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9ja3JlZikpKSB7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdGdvdG8gcmV0cnk7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZnMvZXJvZnMvemRhdGEuYyBiL2ZzL2Vyb2ZzL3pkYXRhLmNcXG5pbmRleCA3NDUyMGU5MTAyNTk2Ni4uZDAyMmQxZGZmNWExY2UgMTAwNjQ0XFxuLS0tIGEvZnMvZXJvZnMvemRhdGEuY1xcbisrKyBiL2ZzL2Vyb2ZzL3pkYXRhLmNcXG5AQCAtNzI1LDcgKzcyNSw3IEBAIHN0YXRpYyBib29sIHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyICpwY2wpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYubG9jayk7XFxuLVxcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2cGNsLVxcdTAwM2Vsb2NrcmVmKSkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYpKSB7XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYubG9jayk7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbkBAIC05NDUsNyArOTQ1LDcgQEAgc3RhdGljIHZvaWQgel9lcm9mc19wdXRfcGNsdXN0ZXIoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSxcXG4gXFx0aWYgKGxvY2tyZWZfcHV0X29yX2xvY2soXFx1MDAyNnBjbC1cXHUwMDNlbG9ja3JlZikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdERCR19CVUdPTihfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2cGNsLVxcdTAwM2Vsb2NrcmVmKSk7XFxuK1xcdERCR19CVUdPTihsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnBjbC1cXHUwMDNlbG9ja3JlZikpO1xcbiBcXHRpZiAoIS0tcGNsLVxcdTAwM2Vsb2NrcmVmLmNvdW50KSB7XFxuIFxcdFxcdGlmICh0cnlfZnJlZSBcXHUwMDI2XFx1MDAyNiB4YV90cnlsb2NrKFxcdTAwMjZzYmktXFx1MDAzZW1hbmFnZWRfcHNsb3RzKSkge1xcbiBcXHRcXHRcXHRmcmVlID0gX19lcm9mc190cnlfdG9fcmVsZWFzZV9wY2x1c3RlcihzYmksIHBjbCk7XFxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xcbmluZGV4IGI4YTE0NGQzYTczYjg3Li5lYWEyOTgwMDUxZWQ1ZiAxMDA2NDRcXG4tLS0gYS9mcy9nZnMyL2dsb2NrLmNcXG4rKysgYi9mcy9nZnMyL2dsb2NrLmNcXG5AQCAtMjA4MCw3ICsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbiBcXHRnZnMyX2dsb2NrX3JlbW92ZV9mcm9tX2xydShnbCk7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmLmxvY2spO1xcbi1cXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpIHtcXG4rXFx0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSkge1xcbiBcXHRcXHRnbC1cXHUwMDNlZ2xfbG9ja3JlZi5jb3VudCsrO1xcbiBcXHRcXHRpZiAoZ2wtXFx1MDAzZWdsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKVxcbiBcXHRcXHRcXHRyZXF1ZXN0X2RlbW90ZShnbCwgTE1fU1RfVU5MT0NLRUQsIDAsIGZhbHNlKTtcXG5AQCAtMjExNSw3ICsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4gc3RhdGljIHZvaWQgd2l0aGRyYXdfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbiB7XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYubG9jayk7XFxuLVxcdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSkge1xcbitcXHRpZiAoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFdlIGRvbid0IHdhbnQgdG8gd3JpdGUgYmFjayBhbnkgbW9yZSBkaXJ0eSBkYXRhLiAgVW5sb2NrIHRoZVxcbiBcXHRcXHQgKiByZW1haW5pbmcgaW5vZGUgYW5kIHJlc291cmNlIGdyb3VwIGdsb2NrczsgdGhpcyB3aWxsIGNhdXNlXFxuQEAgLTI0ODMsNyArMjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbilcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSlcXG4rXFx0XFx0XFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0bi0tO1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xcbmluZGV4IDc4MjhhZDBiNmY1YTZmLi5jYzkwMWZiOTdkYTBjYSAxMDA2NDRcXG4tLS0gYS9mcy9nZnMyL2xvY2tfZGxtLmNcXG4rKysgYi9mcy9nZnMyL2xvY2tfZGxtLmNcXG5AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcXG4gXFx0Y2xlYXJfYml0KEdMRl9CTE9DS0lORywgXFx1MDAyNmdsLVxcdTAwM2VnbF9mbGFncyk7XFxuIFxcbiBcXHQvKiBJZiB0aGUgZ2xvY2sgaXMgZGVhZCwgd2Ugb25seSByZWFjdCB0byBhIGRsbV91bmxvY2soKSByZXBseS4gKi9cXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBnbC1cXHUwMDNlZ2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpXFxuIHtcXG4gXFx0c3RydWN0IGdmczJfZ2xvY2sgKmdsID0gYXJnO1xcbiBcXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpXFxuK1xcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0c3dpdGNoIChtb2RlKSB7XFxuQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgdm9pZCBnZGxtX3B1dF9sb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4gXFx0dWludDMyX3QgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgZXJyb3I7XFxuIFxcbi1cXHRCVUdfT04oIV9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpO1xcbitcXHRCVUdfT04oIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKTtcXG4gXFxuIFxcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXFx1MDAyNmdsLVxcdTAwM2VnbF9mbGFncykpIHtcXG4gXFx0XFx0Z2ZzMl9nbG9ja19mcmVlKGdsKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXFxuaW5kZXggOTFlOTk3NWQyNWU4OTAuLjAwMWM4YjM5Y2E1NTczIDEwMDY0NFxcbi0tLSBhL2ZzL2dmczIvcXVvdGEuY1xcbisrKyBiL2ZzL2dmczIvcXVvdGEuY1xcbkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIHZvaWQgcWRfcHV0KHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxcbiBcXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRCVUdfT04oX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSk7XFxuK1xcdEJVR19PTihsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSk7XFxuIFxcdHNkcCA9IHFkLVxcdTAwM2VxZF9zYmQ7XFxuIFxcdGlmICh1bmxpa2VseSghdGVzdF9iaXQoU0RGX0pPVVJOQUxfTElWRSwgXFx1MDAyNnNkcC1cXHUwMDNlc2RfZmxhZ3MpKSkge1xcbiBcXHRcXHRsb2NrcmVmX21hcmtfZGVhZChcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpO1xcbkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcXG4gXFx0ICAgIHFkLVxcdTAwM2VxZF9zeW5jX2dlbiBcXHUwMDNlPSBzeW5jX2dlbilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSlcXG4rXFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0cWQtXFx1MDAzZXFkX2xvY2tyZWYuY291bnQrKztcXG4gXFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXFxuaW5kZXggMjFkNjdhZjc4MWRhM2QuLjE3YjlkNjQzZTFhODc3IDEwMDY0NFxcbi0tLSBhL2ZzL3hmcy94ZnNfYnVmLmNcXG4rKysgYi9mcy94ZnMveGZzX2J1Zi5jXFxuQEAgLTgwLDcgKzgwLDcgQEAgeGZzX2J1Zl9zdGFsZShcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2YnAtXFx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2YnAtXFx1MDAzZWJfbHJ1X3JlZiwgMCk7XFxuLVxcdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYpKVxcbitcXHRpZiAoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2YnAtXFx1MDAzZWJfbG9ja3JlZikpXFxuIFxcdFxcdGxpc3RfbHJ1X2RlbF9vYmooXFx1MDAyNmJwLVxcdTAwM2ViX3RhcmdldC1cXHUwMDNlYnRfbHJ1LCBcXHUwMDI2YnAtXFx1MDAzZWJfbHJ1KTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYubG9jayk7XFxuIH1cXG5AQCAtODQxLDcgKzg0MSw3IEBAIHN0YXRpYyB2b2lkXFxuIHhmc19idWZfZGVzdHJveShcXG4gXFx0c3RydWN0IHhmc19idWZcXHRcXHQqYnApXFxuIHtcXG4tXFx0QVNTRVJUKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZicC1cXHUwMDNlYl9sb2NrcmVmKSk7XFxuK1xcdEFTU0VSVChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYpKTtcXG4gXFx0QVNTRVJUKCEoYnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNiBfWEJGX0RFTFdSSV9RKSk7XFxuIFxcbiBcXHRpZiAoYnAtXFx1MDAzZWJfcGFnKVxcbmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmNcXG5pbmRleCA4OTZiMjRmODdhYzlkNS4uOTlhODIxMDdiOGU2ZjIgMTAwNjQ0XFxuLS0tIGEvZnMveGZzL3hmc19xbS5jXFxuKysrIGIvZnMveGZzL3hmc19xbS5jXFxuQEAgLTEyOCw3ICsxMjgsNyBAQCB4ZnNfcW1fZHFwdXJnZShcXG4gXFx0c3RydWN0IHhmc19xdW90YWluZm9cXHQqcWkgPSBkcXAtXFx1MDAzZXFfbW91bnQtXFx1MDAzZW1fcXVvdGFpbmZvO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcXG4tXFx0aWYgKGRxcC1cXHUwMDNlcV9sb2NrcmVmLmNvdW50IFxcdTAwM2UgMCB8fCBfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZHFwLVxcdTAwM2VxX2xvY2tyZWYpKSB7XFxuK1xcdGlmIChkcXAtXFx1MDAzZXFfbG9ja3JlZi5jb3VudCBcXHUwMDNlIDAgfHwgbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZikpIHtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmRxcC1cXHUwMDNlcV9sb2NrcmVmLmxvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFx0fVxcbkBAIC00MjksNyArNDI5LDcgQEAgeGZzX3FtX2RxdW90X2lzb2xhdGUoXFxuIFxcdCAqIGZyb20gdGhlIExSVSwgbGVhdmUgaXQgZm9yIHRoZSBmcmVlaW5nIHRhc2sgdG8gY29tcGxldGUgdGhlIGZyZWVpbmdcXG4gXFx0ICogcHJvY2VzcyByYXRoZXIgdGhhbiByaXNrIGl0IGJlaW5nIGZyZWUgZnJvbSB1bmRlciB1cyBoZXJlLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZikpXFxuK1xcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmRxcC1cXHUwMDNlcV9sb2NrcmVmKSlcXG4gXFx0XFx0Z290byBvdXRfbWlzc191bmxvY2s7XFxuIFxcbiBcXHQvKlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaCBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXFxuaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcXG5AQCAtMzQsNiArMzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XFxuIFxcdH07XFxuIH07XFxuIFxcbisjZGVmaW5lIF9fTE9DS1JFRl9ERUFEX1ZBTFxcdC0xMjhcXG4rXFxuIC8qKlxcbiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZlxcbiAgKiBAbG9ja3JlZjogcG9pbnRlciB0byBsb2NrcmVmIHN0cnVjdHVyZVxcbkBAIC01NSw5ICs1NywxNSBAQCB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICpsb2NrcmVmKTtcXG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XFxuIFxcbiAvKiBNdXN0IGJlIGNhbGxlZCB1bmRlciBzcGlubG9jayBmb3IgcmVsaWFibGUgcmVzdWx0cyAqL1xcbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXFxuK3tcXG4rXFx0cmV0dXJuIChSRUFEX09OQ0UobC1cXHUwMDNlY291bnQpID09IF9fTE9DS1JFRl9ERUFEX1ZBTCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWRfb3JfemVybyhjb25zdCBzdHJ1Y3QgbG9ja3JlZiAqbClcXG4ge1xcbi1cXHRyZXR1cm4gKChpbnQpbC1cXHUwMDNlY291bnQgXFx1MDAzYyAwKTtcXG4rXFx0aW50IGNvdW50ID0gUkVBRF9PTkNFKGwtXFx1MDAzZWNvdW50KTtcXG4rXFx0cmV0dXJuIChjb3VudCA9PSBfX0xPQ0tSRUZfREVBRF9WQUwgfHwgY291bnQgPT0gMCk7XFxuIH1cXG4gXFxuICNlbmRpZiAvKiBfX0xJTlVYX0xPQ0tSRUZfSCAqL1xcbmRpZmYgLS1naXQgYS9saWIvbG9ja3JlZi5jIGIvbGliL2xvY2tyZWYuY1xcbmluZGV4IDVkOGUzZWYzODYwZWUxLi45YjNkZDY4OGQ4Y2RhMSAxMDA2NDRcXG4tLS0gYS9saWIvbG9ja3JlZi5jXFxuKysrIGIvbGliL2xvY2tyZWYuY1xcbkBAIC0xMzEsNyArMTMxLDcgQEAgRVhQT1JUX1NZTUJPTChsb2NrcmVmX3B1dF9vcl9sb2NrKTtcXG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcXG4ge1xcbiBcXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXFx1MDAyNmxvY2tyZWYtXFx1MDAzZWxvY2spO1xcbi1cXHRsb2NrcmVmLVxcdTAwM2Vjb3VudCA9IC0xMjg7XFxuK1xcdGxvY2tyZWYtXFx1MDAzZWNvdW50ID0gX19MT0NLUkVGX0RFQURfVkFMO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9tYXJrX2RlYWQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MDYuODA3NzI2MzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY1MTUxNDUxMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdGUzJfRlNcIixcbiAgICBcIkdGUzJfRlNfTE9DS0lOR19ETE1cIixcbiAgICBcIkRMTVwiLFxuICAgIFwiQ09ORklHRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19aSVBcIixcbiAgICBcIlhGU19GU1wiLFxuICAgIFwiWEZTX1FVT1RBXCIsXG4gICAgXCJDRVBIX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF90cmltX2RlbnRyaWVzXCIsXG4gICAgXCJ4ZnNfYnVmX3N0YWxlXCIsXG4gICAgXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgICBcImdmczJfcXVvdGFfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjAwNzQ4Zjc3ZmZlNjAzMWMyNDQzNWY1ZGI5NzdkZDNmMDg3YTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDY6MDA6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9jZXBoL2Rpci5jIGIvZnMvY2VwaC9kaXIuY1xuaW5kZXggYjk1NzE0OWFiZTVhMGEuLmYzOTg1NmZmM2VhMTU4IDEwMDY0NFxuLS0tIGEvZnMvY2VwaC9kaXIuY1xuKysrIGIvZnMvY2VwaC9kaXIuY1xuQEAgLTE2NjcsNyArMTY2Nyw3IEBAIF9fZGVudHJ5X2xlYXNlc193YWxrKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MsXG4gXHRcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpIHtcbitcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuIFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGktXHUwMDNlbGVhc2VfbGlzdCk7XG4gXHRcdFx0Z290byBuZXh0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuY1xuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbisrKyBiL2ZzL2RjYWNoZS5jXG5AQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIHN0YXRpYyB2b2lkIGRlbnRyeV9mcmVlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRERU5UUllfV0FSTl9PTkNFKGRfcmVhbGx5X2lzX3Bvc2l0aXZlKGRlbnRyeSksIGRlbnRyeSk7XG4tXHRERU5UUllfV0FSTl9PTkNFKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNlPSAwLCBkZW50cnkpO1xuK1x0REVOVFJZX1dBUk5fT05DRSghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpLCBkZW50cnkpO1xuIFx0RF9GTEFHX1ZFUklGWShkZW50cnksIDApO1xuIFx0aWYgKHVubGlrZWx5KGRuYW1lX2V4dGVybmFsKGRlbnRyeSkpKSB7XG4gXHRcdHN0cnVjdCBleHRlcm5hbF9uYW1lICpwID0gZXh0ZXJuYWxfbmFtZShkZW50cnkpO1xuQEAgLTc4Miw3ICs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiAgKlxuICAqIElmIEBkZW50cnkgaXMgaWRsZSBhbmQgcmVtYWlucyBzdWNoIGFmdGVyIHdlIGFzc2VtYmxlIHRoZSBmdWxsXG4gICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuKyAqIHdlIG1hcmsgaXQgZG9vbWVkIChzZWUgbG9ja3JlZl9tYXJrX2RlYWQoKSkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXG4gICogaXQgZnJvbSBhbnkgZmlsZXN5c3RlbSBvYmplY3RzLiAgT3RoZXJ3aXNlIHdlIGRyb3AgLVx1MDAzZWRfbG9jayBhbmRcbiAgKiByZXR1cm4gJU5VTEwuXG4gICpcbkBAIC05NDYsNyArOTQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGZhc3RfZHB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSkge1xuIFx0XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0XHRpZiAoV0FSTl9PTl9PTkNFKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjPSAwKSkge1xuK1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG5AQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3RhdGljIGVudW0gZF93YWxrX3JldCBzZWxlY3RfY29sbGVjdCh2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0aWYgKGRhdGEtXHUwMDNlc3RhcnQgPT0gZGVudHJ5KVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYz0gMCkge1xuK1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdF9fbW92ZV90b19zaHJpbmtfbGlzdChkZW50cnksIFx1MDAyNmRhdGEtXHUwMDNlZGlzcG9zZSk7XG4gXHRcdGRhdGEtXHUwMDNlZm91bmQrKztcbiBcdH1cbkBAIC0xNjc2LDcgKzE2NzYsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0Mih2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0aWYgKGRhdGEtXHUwMDNlc3RhcnQgPT0gZGVudHJ5KVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYz0gMCkge1xuK1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdGlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2UgbmVlZCBhbiBlbnRlciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIGFyZWEgdGhhdFxuQEAgLTE3NDcsNyArMTc0Nyw3IEBAIHN0YXRpYyB2b2lkIHNocmlua19kY2FjaGVfdHJlZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJvb2wgZm9yX3Vtb3VudClcbiBcdFx0XHRzcGluX2xvY2soXHUwMDI2di1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuLVx0XHRcdGlmICh1bmxpa2VseSh2LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2MgMCkpIHtcbitcdFx0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNnYtXHUwMDNlZF9sb2NrcmVmKSkpIHtcbiBcdFx0XHRcdC8vIEl0J3MgZG9vbWVkOyBpZiBpdCBpc24ndCBkZWFkIHlldCwgbm90aWZ5IHVzXG4gXHRcdFx0XHQvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLlxuIFx0XHRcdFx0bmVlZF93YWl0ID0gZF9hZGRfd2FpdGVyKHYsIFx1MDAyNndhaXQpO1xuQEAgLTE4MjMsNyArMTgyMyw3IEBAIHZvaWQgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnNiLVx1MDAzZXNfcm9vdHNfbG9jayk7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRcdGlmICh1bmxpa2VseShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYyAwKSkge1xuK1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHN0cnVjdCBjb21wbGV0aW9uX2xpc3Qgd2FpdDtcbiBcdFx0XHRib29sIG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcihkZW50cnksIFx1MDAyNndhaXQpO1xuIFxuQEAgLTI4MjIsNyArMjgyMiw3IEBAIHN0cnVjdCBkZW50cnkgKmRfYWxsb2NfcGFyYWxsZWwoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHQvKiBub3cgd2UgY2FuIHRyeSB0byBncmFiIGEgcmVmZXJlbmNlICovXG4tXHRcdGlmICh1bmxpa2VseShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYyAwKSkge1xuK1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdGdvdG8gcmV0cnk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9mcy9lcm9mcy96ZGF0YS5jIGIvZnMvZXJvZnMvemRhdGEuY1xuaW5kZXggNzQ1MjBlOTEwMjU5NjYuLmQwMjJkMWRmZjVhMWNlIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvemRhdGEuY1xuKysrIGIvZnMvZXJvZnMvemRhdGEuY1xuQEAgLTcyNSw3ICs3MjUsNyBAQCBzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpIHtcbitcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cGNsLVx1MDAzZWxvY2tyZWYpKSB7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmLmxvY2spO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG5AQCAtOTQ1LDcgKzk0NSw3IEBAIHN0YXRpYyB2b2lkIHpfZXJvZnNfcHV0X3BjbHVzdGVyKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksXG4gXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpXG4gXHRcdHJldHVybjtcbiBcbi1cdERCR19CVUdPTihfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuK1x0REJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuIFx0aWYgKCEtLXBjbC1cdTAwM2Vsb2NrcmVmLmNvdW50KSB7XG4gXHRcdGlmICh0cnlfZnJlZSBcdTAwMjZcdTAwMjYgeGFfdHJ5bG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpKSB7XG4gXHRcdFx0ZnJlZSA9IF9fZXJvZnNfdHJ5X3RvX3JlbGVhc2VfcGNsdXN0ZXIoc2JpLCBwY2wpO1xuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xuaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9nbG9jay5jXG4rKysgYi9mcy9nZnMyL2dsb2NrLmNcbkBAIC0yMDgwLDcgKzIwODAsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9nbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gXHRnZnMyX2dsb2NrX3JlbW92ZV9mcm9tX2xydShnbCk7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZi5sb2NrKTtcbi1cdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbitcdGlmICghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4gXHRcdGdsLVx1MDAzZWdsX2xvY2tyZWYuY291bnQrKztcbiBcdFx0aWYgKGdsLVx1MDAzZWdsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKVxuIFx0XHRcdHJlcXVlc3RfZGVtb3RlKGdsLCBMTV9TVF9VTkxPQ0tFRCwgMCwgZmFsc2UpO1xuQEAgLTIxMTUsNyArMjExNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZ2xvY2tfZnVuYyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gc3RhdGljIHZvaWQgd2l0aGRyYXdfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxuIHtcbiBcdHNwaW5fbG9jayhcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmLmxvY2spO1xuLVx0aWYgKCFfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSkge1xuK1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0LypcbiBcdFx0ICogV2UgZG9uJ3Qgd2FudCB0byB3cml0ZSBiYWNrIGFueSBtb3JlIGRpcnR5IGRhdGEuICBVbmxvY2sgdGhlXG4gXHRcdCAqIHJlbWFpbmluZyBpbm9kZSBhbmQgcmVzb3VyY2UgZ3JvdXAgZ2xvY2tzOyB0aGlzIHdpbGwgY2F1c2VcbkBAIC0yNDgzLDcgKzI0ODMsNyBAQCBzdGF0aWMgdm9pZCBnZnMyX2dsb2NrX2l0ZXJfbmV4dChzdHJ1Y3QgZ2ZzMl9nbG9ja19pdGVyICpnaSwgbG9mZl90IG4pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4rXHRcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdG4tLTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xuaW5kZXggNzgyOGFkMGI2ZjVhNmYuLmNjOTAxZmI5N2RhMGNhIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9sb2NrX2RsbS5jXG4rKysgYi9mcy9nZnMyL2xvY2tfZGxtLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKVxuIFx0Y2xlYXJfYml0KEdMRl9CTE9DS0lORywgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpO1xuIFxuIFx0LyogSWYgdGhlIGdsb2NrIGlzIGRlYWQsIHdlIG9ubHkgcmVhY3QgdG8gYSBkbG1fdW5sb2NrKCkgcmVwbHkuICovXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikgXHUwMDI2XHUwMDI2XG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGdsLVx1MDAzZWdsX2xrc2Iuc2Jfc3RhdHVzICE9IC1ETE1fRVVOTE9DSylcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wgPSBhcmc7XG4gXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRzd2l0Y2ggKG1vZGUpIHtcbkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gXHR1aW50MzJfdCBmbGFncyA9IDA7XG4gXHRpbnQgZXJyb3I7XG4gXG4tXHRCVUdfT04oIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbitcdEJVR19PTighbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpKSB7XG4gXHRcdGdmczJfZ2xvY2tfZnJlZShnbCk7XG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXG5pbmRleCA5MWU5OTc1ZDI1ZTg5MC4uMDAxYzhiMzljYTU1NzMgMTAwNjQ0XG4tLS0gYS9mcy9nZnMyL3F1b3RhLmNcbisrKyBiL2ZzL2dmczIvcXVvdGEuY1xuQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgdm9pZCBxZF9wdXQoc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQpXG4gXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0QlVHX09OKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpKTtcbitcdEJVR19PTihsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpO1xuIFx0c2RwID0gcWQtXHUwMDNlcWRfc2JkO1xuIFx0aWYgKHVubGlrZWx5KCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCBcdTAwMjZzZHAtXHUwMDNlc2RfZmxhZ3MpKSkge1xuIFx0XHRsb2NrcmVmX21hcmtfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKTtcbkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcbiBcdCAgICBxZC1cdTAwM2VxZF9zeW5jX2dlbiBcdTAwM2U9IHN5bmNfZ2VuKVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbitcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpXG4gXHRcdGdvdG8gb3V0O1xuIFx0cWQtXHUwMDNlcWRfbG9ja3JlZi5jb3VudCsrO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXG5pbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0XG4tLS0gYS9mcy94ZnMveGZzX2J1Zi5jXG4rKysgYi9mcy94ZnMveGZzX2J1Zi5jXG5AQCAtODAsNyArODAsNyBAQCB4ZnNfYnVmX3N0YWxlKFxuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2YnAtXHUwMDNlYl9scnVfcmVmLCAwKTtcbi1cdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSlcbitcdGlmICghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpXG4gXHRcdGxpc3RfbHJ1X2RlbF9vYmooXHUwMDI2YnAtXHUwMDNlYl90YXJnZXQtXHUwMDNlYnRfbHJ1LCBcdTAwMjZicC1cdTAwM2ViX2xydSk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYubG9jayk7XG4gfVxuQEAgLTg0MSw3ICs4NDEsNyBAQCBzdGF0aWMgdm9pZFxuIHhmc19idWZfZGVzdHJveShcbiBcdHN0cnVjdCB4ZnNfYnVmXHRcdCpicClcbiB7XG4tXHRBU1NFUlQoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSk7XG4rXHRBU1NFUlQobG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpO1xuIFx0QVNTRVJUKCEoYnAtXHUwMDNlYl9mbGFncyBcdTAwMjYgX1hCRl9ERUxXUklfUSkpO1xuIFxuIFx0aWYgKGJwLVx1MDAzZWJfcGFnKVxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcW0uYyBiL2ZzL3hmcy94ZnNfcW0uY1xuaW5kZXggODk2YjI0Zjg3YWM5ZDUuLjk5YTgyMTA3YjhlNmYyIDEwMDY0NFxuLS0tIGEvZnMveGZzL3hmc19xbS5jXG4rKysgYi9mcy94ZnMveGZzX3FtLmNcbkBAIC0xMjgsNyArMTI4LDcgQEAgeGZzX3FtX2RxcHVyZ2UoXG4gXHRzdHJ1Y3QgeGZzX3F1b3RhaW5mb1x0KnFpID0gZHFwLVx1MDAzZXFfbW91bnQtXHUwMDNlbV9xdW90YWluZm87XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChkcXAtXHUwMDNlcV9sb2NrcmVmLmNvdW50IFx1MDAzZSAwIHx8IF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKSB7XG4rXHRpZiAoZHFwLVx1MDAzZXFfbG9ja3JlZi5jb3VudCBcdTAwM2UgMCB8fCBsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXHR9XG5AQCAtNDI5LDcgKzQyOSw3IEBAIHhmc19xbV9kcXVvdF9pc29sYXRlKFxuIFx0ICogZnJvbSB0aGUgTFJVLCBsZWF2ZSBpdCBmb3IgdGhlIGZyZWVpbmcgdGFzayB0byBjb21wbGV0ZSB0aGUgZnJlZWluZ1xuIFx0ICogcHJvY2VzcyByYXRoZXIgdGhhbiByaXNrIGl0IGJlaW5nIGZyZWUgZnJvbSB1bmRlciB1cyBoZXJlLlxuIFx0ICovXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpXG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKVxuIFx0XHRnb3RvIG91dF9taXNzX3VubG9jaztcbiBcbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9sb2NrcmVmLmggYi9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaFxuaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXG5AQCAtMzQsNiArMzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XG4gXHR9O1xuIH07XG4gXG4rI2RlZmluZSBfX0xPQ0tSRUZfREVBRF9WQUxcdC0xMjhcbitcbiAvKipcbiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZlxuICAqIEBsb2NrcmVmOiBwb2ludGVyIHRvIGxvY2tyZWYgc3RydWN0dXJlXG5AQCAtNTUsOSArNTcsMTUgQEAgdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgdW5kZXIgc3BpbmxvY2sgZm9yIHJlbGlhYmxlIHJlc3VsdHMgKi9cbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4rc3RhdGljIGlubGluZSBib29sIGxvY2tyZWZfaXNfZGVhZChjb25zdCBzdHJ1Y3QgbG9ja3JlZiAqbClcbit7XG4rXHRyZXR1cm4gKFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUwpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGJvb2wgbG9ja3JlZl9pc19kZWFkX29yX3plcm8oY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4ge1xuLVx0cmV0dXJuICgoaW50KWwtXHUwMDNlY291bnQgXHUwMDNjIDApO1xuK1x0aW50IGNvdW50ID0gUkVBRF9PTkNFKGwtXHUwMDNlY291bnQpO1xuK1x0cmV0dXJuIChjb3VudCA9PSBfX0xPQ0tSRUZfREVBRF9WQUwgfHwgY291bnQgPT0gMCk7XG4gfVxuIFxuICNlbmRpZiAvKiBfX0xJTlVYX0xPQ0tSRUZfSCAqL1xuZGlmZiAtLWdpdCBhL2xpYi9sb2NrcmVmLmMgYi9saWIvbG9ja3JlZi5jXG5pbmRleCA1ZDhlM2VmMzg2MGVlMS4uOWIzZGQ2ODhkOGNkYTEgMTAwNjQ0XG4tLS0gYS9saWIvbG9ja3JlZi5jXG4rKysgYi9saWIvbG9ja3JlZi5jXG5AQCAtMTMxLDcgKzEzMSw3IEBAIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9wdXRfb3JfbG9jayk7XG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcbiB7XG4gXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXHUwMDI2bG9ja3JlZi1cdTAwM2Vsb2NrKTtcbi1cdGxvY2tyZWYtXHUwMDNlY291bnQgPSAtMTI4O1xuK1x0bG9ja3JlZi1cdTAwM2Vjb3VudCA9IF9fTE9DS1JFRl9ERUFEX1ZBTDtcbiB9XG4gRVhQT1JUX1NZTUJPTChsb2NrcmVmX21hcmtfZGVhZCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDowNi44MDc3Mjk0MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDMzNzM5NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBMb2NrcmVmIENoYW5nZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3Mgc3dhcHBpbmcgb3V0IGBfX2xvY2tyZWZfaXNfZGVhZGAgd2l0aCBgbG9ja3JlZl9pc19kZWFkYCBhbmQgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHdlIGRldGVybWluZSBpZiBhIGBkZW50cnlgJ3MgbG9jayByZWZlcmVuY2UgaXMgXCJkZWFkLlwiICBQcmV2aW91c2x5LCBhbnkgbmVnYXRpdmUgdmFsdWUgb2YgYGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnRgIGluZGljYXRlZCBhIGRlYWQgbG9ja3JlZi4gTm93LCBpdCdzIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAtMTI4YCAoZGVmaW5lZCBhcyBgX19MT0NLUkVGX0RFQURfVkFMYCkuICBXZSdyZSBnb2luZyBmcm9tIGNoZWNraW5nIGBjb3VudCBcdTAwM2MgMGAgdG8gY2hlY2tpbmcgYFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUxgIG9yIHplcm8sIHJpZ2h0P1xuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBubyBsb25nZXIgYSBjYXRjaC1hbGwgZm9yIGFueSBuZWdhdGl2ZSB2YWx1ZTsgaXQncyBub3cgc3BlY2lmaWMgdG8gdGhhdCBgLTEyOGAgdmFsdWUuICBJcyB0aGlzIGEgYnVnIGZpeC9yZWZhY3RvcmluZyBvciBhbiBhY3R1YWwgZnVuY3Rpb25hbCBjaGFuZ2U/IExldCBtZSB0aGluaywgYW0gSSBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXM/IE5vLiBJdCdzIHB1cmVseSBmaXhpbmcgYSBsb2NrcmVmIGNoZWNrLlxuXG5UaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB3aXRob3V0IGltcGFjdGluZyBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUsIG9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycy4gSXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgKGRjYWNoZSBhbmQgbG9ja3JlZiksIHNvIGluaXRpYWxseSwgSSdkIHNheSBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgXCJudW1lcmljIGNvbnN0YW50c1wiIGV4Y2VwdGlvbi4gRG9lcyB0aGlzIG5ldyBiZWhhdmlvciBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IFllcyEgIFByZXZpb3VzbHksIGFuIHVuZGVyZmxvdyBjb3VsZCBiZSB0cmVhdGVkIGFzIGRlYWQsIGJ1dCBub3cgaXQgd2lsbCBub3QgYmUuIFRoZSBgbG9ja3JlZmAgY291bnQgaXMgb25seSBzZXQgdG8gYC0xMjhgIHdoZW4gbWFya2VkIGRlYWQuIFNvIGFueSBvdGhlciBuZWdhdGl2ZSB2YWx1ZSBzaG91bGRuJ3QgcmVhbGx5ICpiZSogcG9zc2libGUgdW5sZXNzIHRoZXJlJ3MgYW4gdW5kZXJmbG93LiBUaGF0IGNvdWxkIHRyaWdnZXIgb3RoZXIgYnVncyBvciB3YXJuaW5ncy4gRWRnZSBjYXNlcyBhcmUgbXkgZm9jdXMuXG5cblNvLCB3aGVyZSBhcmUgdGhlc2UgY2hhbmdlcz8gSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyB2YXJpb3VzIGRjYWNoZSBmdW5jdGlvbnMgKGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBldGMuKSwgY2VwaCwgZXJvZnMsIGdmczIsIGFuZCB4ZnMuICBJIHdhbnQgdG8gYXZvaWQgZnV6emluZyB0aGUgaG90IHBhdGggZGNhY2hlIHJvdXRpbmVzLCB0aG9zZSBhcmUgaGl0IHRvbyBvZnRlbiB0byBiZSB1c2VmdWwgZm9yIGZvY3VzZWQgZnV6emluZy4gQnV0IGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAsIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAsIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAsIGBnZGxtX2FzdGAsIGBnZGxtX2Jhc3RgLCBgZ2RsbV9wdXRfbG9ja2AsIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YCwgYF9fZGVudHJ5X2xlYXNlc193YWxrYD8gTGV0IG1lIHNlZS4gSSBjYW4gZm9jdXMgb24gdGhvc2Ugcm91dGluZXMgaW4gbXkgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEFuZCBJIG5lZWQgdG8gdGVzdCB0aG9zZSBmdW5jdGlvbnMuIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYXMgd2VsbCAtIGlzIGBDT05GSUdfWEZTX1FVT1RBYCBuZWVkZWQgZm9yIFhGUyB0ZXN0cz8gSSBuZWVkIHRvIGNoZWNrIGBmcy94ZnMvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDM3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjEuMTQ1MTI3NTczWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODQwMTYxMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19RVU9UQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZz01MD1jb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTc2LVxcbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjIuNDI5MTQ5Nzg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNTE0MjY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBHRlMyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzcywgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvZ2ZzMi9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCdzIHRoZSBjYW5vbmljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHRlMyIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGludHJvZHVjZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQgYWxsb3dzIG1lIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgR0ZTMiBmZWF0dXJlcywgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBhbmQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB0YXNrLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGZvciBHRlMyLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGRlcGVuZGVuY2llcyBvbiBmZWF0dXJlcyBsaWtlIGBDT05GSUdfQkxPQ0tgLCBgQ09ORklHX0ZTYCwgYENPTkZJR19YRlNgIGFuZCBgQ09ORklHX0pCRDJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjIwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjUuMzU0Mjk0MDkxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTkwNDQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR0ZTMl9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZ2ZzMi9LY29uZmlnOjI6Y29uZmlnIEdGUzJfRlNcXG5mcy9nZnMyL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR0ZTMiBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZ2ZzMi9LY29uZmlnLTI2LVxcbmZzL2dmczIvS2NvbmZpZzoyNzpjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVxcbmZzL2dmczIvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJHRlMyIERMTSBsb2NraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDoyNS42MzYyMDQ0NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzcyNzcxOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkNoZWNraW5nIHRoZSBFUk9GUyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBmcy9lcm9mcy9LY29uZmlnYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGlzIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBFUk9GUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucywgbmV3IGZlYXR1cmVzLCBvciBwZXJoYXBzIGV2ZW4gYW55IGRlcHJlY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0IGFsbC5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgcHJvbXB0IHN0cmluZ3MuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb250cm9sbGFibGUgYXQgY29tcGlsZSB0aW1lIHZlcnN1cyBwb3RlbnRpYWxseSBydW50aW1lLiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHRoZSBvdmVyYWxsIGZlYXR1cmUgc2V0LCBvciBhcmVhcyBJIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBpbiB0aGUgcGFzdD8gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBjb25zaWRlcmluZzogY29tcHJlc3Npb24gb3B0aW9ucywgc3VwZXJibG9jayBzdXBwb3J0LCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvb3QtdGltZSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhlc2Ugb3B0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWwncyBvdmVyYWxsIG1vZHVsZSBzeXN0ZW0gdG9vLiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGNvdWxkIGNvbmZsaWN0IHdpdGggZXhpc3RpbmcgY29uZmlndXJhdGlvbnM/IEFuZCBvZiBjb3Vyc2UsIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgb2J2aW91cyBidWdzIG9yIHVudXN1YWwgaWRpb21zLiBBZnRlciB0aGF0LCBJIHdpbGwgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBJIG1heSBoYXZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjI5LjAwODk3ODUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzcxNTQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVJPRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXJvZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9LY29uZmlnLTItXFxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy00OS1cXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xcbmZzL2Vyb2ZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiRVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxcbmZzL2Vyb2ZzL0tjb25maWc6NjA6Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy03MC1cXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy04NC1cXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxcbmZzL2Vyb2ZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiRVJPRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cXG5mcy9lcm9mcy9LY29uZmlnOjk4OmNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxcbmZzL2Vyb2ZzL0tjb25maWctOTktXFx0Ym9vbCBcXFwiRmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTEtXFxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVxcdGJvb2wgXFxcIkVST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cXG5mcy9lcm9mcy9LY29uZmlnOjEzNDpjb25maWcgRVJPRlNfRlNfWklQX0xaTUFfREVGQVVMVF9NQVhfU1RSRUFNU1xcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVxcdGludCBcXFwiRVJPRlMgTFpNQSBkZWZhdWx0IG1heGltdW0gZGVjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDctXFxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTcwOmNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTE4My1cXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjI5LjEzNjY5OTMxN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzI1MTY3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBFUk9GUyBCdWlsZCBTeXN0ZW0gZm9yIFpJUCBTdXBwb3J0KipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYHpkYXRhLmNgLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkFoLCByaWdodCwgdGhpcyBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIHRoYXQgYENPTkZJR19FUk9GU19GU19aSVBgIG9wdGlvbiBpcyBlbmFibGVkLlwiIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgd2hlcmUgd291bGQgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIGxpdmUgZm9yIHRoYXQ/IExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIHJlbGV2YW50IGJ1aWxkIHJ1bGVzIGluIGBmcy9lcm9mcy9NYWtlZmlsZWAuIEknbSBndWVzc2luZyB0aGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgY29udHJvbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIGluY2x1c2lvbi4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBob3cgWklQIGNvbXByZXNzaW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgRVJPRlMgZmlsZXN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDozMy4zMDkyMTgyNjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTI2NzU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9NYWtlZmlsZT01PWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSArPSB4YXR0ci5vXFxuZnMvZXJvZnMvTWFrZWZpbGU6Njplcm9mcy0kKENPTkZJR19FUk9GU19GU19aSVApICs9IGRlY29tcHJlc3Nvci5vIHptYXAubyB6ZGF0YS5vIHp1dGlsLm9cXG5mcy9lcm9mcy9NYWtlZmlsZS03LWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUF9MWk1BKSArPSBkZWNvbXByZXNzb3JfbHptYS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjMzLjYyNDQ5MTI4N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM3NjE0NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24gZm9yIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBPYmplY3QqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgbG9ja19kbG0ub2Agb2JqZWN0IGlzIGJlaW5nIGJ1aWx0LiBHaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBsb2NraW5nLCBhbmQga25vd2luZyB0aGUgR0ZTMiBmaWxlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9ucy4gU28sIGxldCdzIHN0YXJ0IHdpdGggdGhlIGBmcy9nZnMyL01ha2VmaWxlYC4gVGhhdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgYnVpbGQgcnVsZXMsIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBmbGFncyByZWxhdGVkIHRvIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBHRlMyIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDozNy43NjIxMDg1MjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDczMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvY2tfZGxtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9NYWtlZmlsZT00PWdmczIteSA6PSBhY2wubyBibWFwLm8gZGlyLm8geGF0dHIubyBnbG9jay5vIFxcXFxcXG4tLVxcbmZzL2dmczIvTWFrZWZpbGUtOS1cXG5mcy9nZnMyL01ha2VmaWxlOjEwOmdmczItJChDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTSkgKz0gbG9ja19kbG0ub1xcbmZzL2dmczIvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjM3Ljg0MDU4NzIwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk5NDcwMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpbGVzeXN0ZW0gRmVhdHVyZSBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBidWlsZGluZyB1cCBhIHBpY3R1cmUgaGVyZSBvZiB0aGUgZmlsZXN5c3RlbXMgd2UgbmVlZCB0byBjb25zaWRlci4gVGhlIGltbWVkaWF0ZSByZXF1aXJlbWVudHMgYXJlIGBHRlMyX0ZTYCwgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIHN0b3JhZ2UgbmVlZHMsIGFuZCB3ZSdsbCBwcm9iYWJseSBhbHNvIG5lZWQgYEdGUzJfRlNfTE9DS0lOR19ETE1gIHRvIG1ha2UgdGhhdCBmdW5jdGlvbmFsLiBUaGVuIHdlIGhhdmUgYEVST0ZTX0ZTYCBhbmQgYEVST0ZTX0ZTX1pJUGAsIHdoaWNoIHNvdW5kcyBsaWtlIGl0IG1pZ2h0IGJlIGZvciBhIHBhcnRpY3VsYXIgcmVhZC1vbmx5IGltYWdlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBOZXh0LCBgWEZTX0ZTYCBpcyBhbHdheXMgYSBnb29kIG9wdGlvbiB3aGVuIGhpZ2gtcGVyZm9ybWFuY2UgaXMgYSBmYWN0b3IgYW5kIHdlJ2xsIG5lZWQgYFhGU19RVU9UQWAgZW5hYmxlZCBhbG9uZyB3aXRoIFhGUy4gRmluYWxseSwgYENFUEhfRlNgIGlzIGFub3RoZXIgZGlzdHJpYnV0ZWQgZmlsZXN5c3RlbSB0aGF0IHdlIG1heSBuZWVkIHRvIHVzZS4gSSB0aGluayB0aGUgbmV4dCB0aGluZyB0byBkbyBpcyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBmcy9jZXBoL0tjb25maWdgIGZpbGUsIHRvIHJldmlldyBhbmQgY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzcGVjaWZpYyBvcHRpb25zIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg5OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjQxLjE0MDA2MTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMzMzU5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENFUEhfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0ZTXFxuZnMvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggZGlzdHJpYnV0ZWQgZmlsZSBzeXN0ZW1cXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9MTk9aWYgQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZzoyMDpjb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjc9ZW5kaWZcXG5mcy9jZXBoL0tjb25maWctMjgtXFxuZnMvY2VwaC9LY29uZmlnOjI5OmNvbmZpZyBDRVBIX0ZTX1BPU0lYX0FDTFxcbmZzL2NlcGgvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJDZXBoIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTM4LVxcbmZzL2NlcGgvS2NvbmZpZzozOTpjb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxcbmZzL2NlcGgvS2NvbmZpZy00MC1cXHRib29sIFxcXCJDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0MS4yNTM0MDI2NDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0OTE4NTI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEZpbGUgU3lzdGVtIENvZGUqKlxuXG5SaWdodCwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvY2VwaC9kaXIuY2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIENlcGggZmlsZSBzeXN0ZW0sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIHBhdGguIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBpbiB0aGUgYENFUEhfRlNgIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHNlZSBob3cgdGhpcyBtaWdodCBhZmZlY3Qgb3RoZXIgZmlsZSBzeXN0ZW1zIG9yIHJlbGF0ZWQgY29tcG9uZW50cy4gU2luY2UgdGhpcyBpcyBsaWtlbHkgYSBmaWxlIHN5c3RlbSBwYXRjaCwgSSdsbCBxdWlja2x5IGNoZWNrIGBmcy94ZnMvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1lbnRpb25zIG9mIG1vZHVsZXMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaWYgb3RoZXIgZmlsZSBzeXN0ZW1zLCBhbmQgcGFydGljdWxhcmx5IHRob3NlIHRoYXQgbWlnaHQgYmUgdXNpbmcgYSBzaW1pbGFyIGFwcHJvYWNoIHRvIHF1b3RhIG1hbmFnZW1lbnQsIGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBgeGZzX3FtLm9gIChxdW90YSBtb2R1bGUpLiBJJ20gYXNzdW1pbmcgdGhhdCBtaWdodCBwcm92aWRlIGEgcmVsYXRlZCBleGFtcGxlLiBLbm93aW5nIHdoZXJlIHRoZSBvdGhlciBtb2R1bGVzIGFyZSBpbiB0aGUgc3lzdGVtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IHRoZSByZXN0IG9mIHRoZSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0NC44MDI1OTAyODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNDU5Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmc19xbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL01ha2VmaWxlPTEzMz14ZnMtJChDT05GSUdfWEZTX1FVT1RBKVxcdFxcdCs9IHhmc19kcXVvdC5vIFxcXFxcXG4tLVxcbmZzL3hmcy9NYWtlZmlsZS0xMzUtXFx0XFx0XFx0XFx0ICAgeGZzX3RyYW5zX2RxdW90Lm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxMzY6XFx0XFx0XFx0XFx0ICAgeGZzX3FtX3N5c2NhbGxzLm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxMzc6XFx0XFx0XFx0XFx0ICAgeGZzX3FtX2Jodi5vIFxcXFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM4OlxcdFxcdFxcdFxcdCAgIHhmc19xbS5vIFxcXFxcXG5mcy94ZnMvTWFrZWZpbGUtMTM5LVxcdFxcdFxcdFxcdCAgIHhmc19xdW90YW9wcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjQ0Ljg2MzA1NDcwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg1NTI1NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgWEZTIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gWEZTIGl0c2VsZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lLCBhbmQgSSB0aGluayBpdCdzIGBYRlNfRlNgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgYGZzL3hmcy9LY29uZmlnYC4gSSdsbCBvcGVuIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlIGZvciBYRlMgYW5kIHdoZXJlIGBYRlNfRlNgIGlzIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0Ny43NDg1ODE5OTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODk3NzY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMveGZzL0tjb25maWc6Mjpjb25maWcgWEZTX0ZTXFxuZnMveGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiWEZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NDguMDE3NTY2NjQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTEzNzczNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBhbmQgTG9ja2luZyBNZWNoYW5pc21zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIHNlZWluZyBhIGxpc3Qgb2YgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uczogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuIFRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdldCBteSBiZWFyaW5ncy5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBhdCBzcGVjaWZpYyBmb2N1cyBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBmaWxlc3lzdGVtcy4gSSBzZWUgZnVuY3Rpb25zIGxpa2UgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYCwgYHpfZXJvZnNfcHV0X3BjbHVzdGVyYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBFUk9GUycgcGVyc2lzdGVudCBjbHVzdGVycywgYW5kIGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgY2xlYXJseSBwb2ludHMgdG8gcXVvdGEgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBGb3IgR0ZTMiwgYGdkbG1fYXN0YCwgYGdkbG1fYmFzdGAsIGBnZGxtX3B1dF9sb2NrYCBqdW1wIG91dCBhdCBtZSBhcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkaXN0cmlidXRlZCBsb2NraW5nLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiB0aGVyZSdzIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBxdW90YS1yZWxhdGVkIGRhdGEuIEZpbmFsbHksIHRoZSBnbG9jayBvcGVyYXRpb25zIGFyZSByZXByZXNlbnRlZCBieSBgY2xlYXJfZ2xvY2tgLCBgd2l0aGRyYXdfZ2xvY2tgLCBgZ2ZzMl9nbG9ja19pdGVyX25leHRgLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgX19kZW50cnlfbGVhc2VzX3dhbGtgLiBJIHJlY29nbml6ZSB0aGF0LCB0aGF0J3MgaW4gYGZzL2NlcGgvZGlyLmNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5kZWVkIHN0YXRpYyB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgYSBjcnVjaWFsIGRldGFpbCB0aGF0IGRpY3RhdGVzIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGFjY2Vzc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjUyLjY2ODk0NjEzNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyOTA0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19kZW50cnlfbGVhc2VzX3dhbGtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9kaXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5mcy9jZXBoL2Rpci5jOjE2NDY6X19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcXG5mcy9jZXBoL2Rpci5jLTE2NDctXFx0XFx0ICAgICBzdHJ1Y3QgY2VwaF9sZWFzZV93YWxrX2NvbnRyb2wgKmx3YylcXG4tLVxcbmZzL2NlcGgvZGlyLmM9MTc3NT1pbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3OTAtXFx0bHdjLm5yX3RvX3NjYW4gID0gQ0VQSF9DQVBTX1BFUl9SRUxFQVNFICogMjtcXG5mcy9jZXBoL2Rpci5jOjE3OTE6XFx0ZnJlZWQgPSBfX2RlbnRyeV9sZWFzZXNfd2FsayhtZHNjLCBcXHUwMDI2bHdjKTtcXG5mcy9jZXBoL2Rpci5jLTE3OTItXFx0aWYgKCFsd2MubnJfdG9fc2NhbikgLyogbW9yZSBpbnZhbGlkIGxlYXNlcyAqL1xcbi0tXFxuZnMvY2VwaC9kaXIuYy0xODAwLVxcdGx3Yy5kaXJfbGVhc2VfdHRsID0gbWRzYy1cXHUwMDNlZnNjLVxcdTAwM2Vtb3VudF9vcHRpb25zLVxcdTAwM2VjYXBzX3dhbnRlZF9kZWxheV9tYXggKiBIWjtcXG5mcy9jZXBoL2Rpci5jOjE4MDE6XFx0ZnJlZWQgKz1fX2RlbnRyeV9sZWFzZXNfd2FsayhtZHNjLCBcXHUwMDI2bHdjKTtcXG5mcy9jZXBoL2Rpci5jLTE4MDItXFx0aWYgKCFsd2MubnJfdG9fc2NhbikgLyogbW9yZSB0byBjaGVjayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1Mi43NDQyNDIwNjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MzQzMjc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIHRvIGBjZXBoX3RyaW1fZGVudHJpZXNgKipcblxuQWxyaWdodCwgdGhpcyBzaXR1YXRpb24gZmVlbHMgcHJldHR5IHN0YXRpYy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBjYWxsIHRvIGBjZXBoX3RyaW1fZGVudHJpZXNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgaXRzIHZpc2liaWxpdHkuIElzIHRoaXMgYSBwdWJsaWNseSBleHBvcnRlZCBmdW5jdGlvbiwgb3IgaXMgaXQgZGVmaW5lZCBhcyBgc3RhdGljYCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQ/IEtub3dpbmcgdGhhdCBkcmFzdGljYWxseSBhbHRlcnMgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBiZWluZyBpbnZva2VkIGFuZCwgY3J1Y2lhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwgaXMgdml0YWwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIEknbSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWxseSB3aWRlbHktdXNlZCwgZXh0ZXJuYWxseSBjYWxsYWJsZSBmdW5jdGlvbiBvciBhIG1vcmUgdGlnaHRseS1zY29wZWQsIGludGVybmFsIHV0aWxpdHkuIFRoYXQgZGlzdGluY3Rpb24ncyBnb2luZyB0byBkcml2ZSBteSBuZXh0IHN0ZXBzIGZvciBkaWdnaW5nIGludG8gdGhlIHJvb3QgY2F1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTM3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NTUuODI3Njc4MTQ0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg2NzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9kaXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE3NTA9c3RhdGljIGludCBfX2Rpcl9sZWFzZV9jaGVjayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3NzQtXFxuZnMvY2VwaC9kaXIuYzoxNzc1OmludCBjZXBoX3RyaW1fZGVudHJpZXMoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYylcXG5mcy9jZXBoL2Rpci5jLTE3NzYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1NS44ODg1NTIwMDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MTkxMDU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgVHJpbSBPcGVyYXRpb25zIGFuZCBFUk9GUyBDbHVzdGVyIFJldHJpZXZhbCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGNlcGhfdHJpbV9kZW50cmllc2AgZnVuY3Rpb24uIFRoZSBmYWN0IHRoYXQgaXQncyAqbm90KiBzdGF0aWMgaXMgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoYXQgb3BlbnMgdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSB0aGF0IG5vbi1zdGF0aWMgbmF0dXJlOyB0aGF0J3MgZ29vZCBuZXdzLlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIGFub3RoZXIgcmVsYXRlZCBmdW5jdGlvbiwgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYC4gSSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIG9uZSBmYWN0b3JzIGludG8gdGhlIGVxdWF0aW9uLCBpZiBhdCBhbGwuIElzIHRoZXJlIGEgY29ubmVjdGlvbiBoZXJlPyBDb3VsZCBgY2VwaF90cmltX2RlbnRyaWVzYCBoYXZlIGFuIGludGVyYWN0aW9uIHdpdGggb3IgYSBkZXBlbmRlbmN5IG9uIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoYXQncyB3aGF0IEkgaGF2ZSB0byBmaWd1cmUgb3V0IGJlZm9yZSBJIG1vdmUgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDkwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NTguODYwNDY1MjU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjM2Mzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6X2Vyb2ZzX2dldF9wY2x1c3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmM9Njg5PXN0YXRpYyBpbnQgel9lcm9mc19hdHRhY2hfcGFnZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTcyMS1cXG5mcy9lcm9mcy96ZGF0YS5jOjcyMjpzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNzIzLXtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTc3Ni1cXHRcXHRcXHRcXHRcXHQgICBOVUxMLCBwY2wsIEdGUF9LRVJORUwpO1xcbmZzL2Vyb2ZzL3pkYXRhLmM6Nzc3OlxcdFxcdFxcdGlmICghcHJlIHx8IHhhX2lzX2VycihwcmUpIHx8IHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHByZSkpIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTc3OC1cXHRcXHRcXHRcXHR4YV91bmxvY2soXFx1MDAyNnNiaS1cXHUwMDNlbWFuYWdlZF9wc2xvdHMpO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODMxLVxcdFxcdFxcdHBjbCA9IHhhX2xvYWQoXFx1MDAyNkVST0ZTX1NCKHNiKS1cXHUwMDNlbWFuYWdlZF9wc2xvdHMsIG1hcC1cXHUwMDNlbV9wYSk7XFxuZnMvZXJvZnMvemRhdGEuYzo4MzI6XFx0XFx0XFx0bmVlZHJldHJ5ID0gcGNsIFxcdTAwMjZcXHUwMDI2ICF6X2Vyb2ZzX2dldF9wY2x1c3RlcihwY2wpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtODMzLVxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1OC45NDI4MzQ2MTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjU3OTQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipTdGF0aWMgQW5hbHlzaXMgYW5kIENsdXN0ZXIgUmVnaXN0cmF0aW9uKipcblxuUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGlzIHRoaW5nIGlzICpzdGF0aWMqLiBUaGF0J3MgdGhlIGZpcnN0IGNydWNpYWwgY2x1ZS4gTm93LCBsZXQncyB6b29tIGluIG9uIHRoZSBjYWxsZXJzLiBJIHNlZSBgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcmAgYW5kIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYC4gVGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBub3cgaXM6ICphcmUgdGhvc2UgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgc3RhdGljPyogVGhlaXIgc3RhdHVzIGFzIHN0YXRpYyBvciBub24gc3RhdGljIGhhcyBjcml0aWNhbCByYW1pZmljYXRpb25zIG9uIHRoZSBzY29wZSBvZiB0aGVpciBhY2Nlc3NpYmlsaXR5IGFuZCB0aGUgaW1wbGljYXRpb25zIGl0IGhhcyBvbiBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTMzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MDIuNjg1NDE2NzQxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYzNzgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz03MjI9c3RhdGljIGJvb2wgel9lcm9mc19nZXRfcGNsdXN0ZXIoc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXIgKnBjbClcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNzM4LVxcbmZzL2Vyb2ZzL3pkYXRhLmM6NzM5OnN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuZnMvZXJvZnMvemRhdGEuYy03NDAte1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODQxLVxcdH0gZWxzZSB7XFxuZnMvZXJvZnMvemRhdGEuYzo4NDI6XFx0XFx0cmV0ID0gel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihmZSk7XFxuZnMvZXJvZnMvemRhdGEuYy04NDMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTowMi43NTQwNjAwNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA5NDY2NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgU3RhdGljIEluaXRpYWxpemF0aW9uIGFuZCBDYWxsZXJzKipcblxuT2theSwgc28gYm90aCBvZiB0aGVzZSBjb21wb25lbnRzIGFyZSBpbmhlcmVudGx5IHN0YXRpYyBpbiB0aGVpciBuYXR1cmUuIEJ1dCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uOiB3aGF0J3MgdGhlIHJvbGUgYW5kIGJlaGF2aW9yIG9mIGFueSBjb2RlIHRoYXQncyBjYWxsaW5nIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYD8gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGlzIGFsc28gc3RhdGljLCBob3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBjb21wb25lbnRzPyBJdCBpbXBsaWVzIGEgc3RhdGljIGluaXRpYWxpemF0aW9uIHBhdHRlcm4uIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGNhbGxlcnMuIEtub3dpbmcgdGhlaXIgbmF0dXJlIHdpbGwgZ2l2ZSB1cyB0aGUgZnVsbCBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdGF0aWMgY29tcG9uZW50cyBhbmQgdGhlIGNhbGxlcnMgb2YgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gIGlzIGNyaXRpY2FsLiBJdCdzIGxpa2VseSB0aGF0IGl0IGRldGVybWluZXMgaG93IGFuZCB3aGVuIHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgaW4gdGhlIG92ZXJhbGwgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjA2LjM2MzUyODc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM2NDQ1MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19wY2x1c3Rlcl9iZWdpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTgwMi1cXG5mcy9lcm9mcy96ZGF0YS5jOjgwMzpzdGF0aWMgaW50IHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW4oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmZlKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODA0LXtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTAwNT1zdGF0aWMgaW50IHpfZXJvZnNfc2Nhbl9mb2xpbyhzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0Ny1cXHRcXHRcXHRpZiAoIWYtXFx1MDAzZXBjbCkge1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTA0ODpcXHRcXHRcXHRcXHRlcnIgPSB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKGYpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0OS1cXHRcXHRcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTowNi40NzcxODAxNDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NzIwMTcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgel9lcm9mc19zY2FuX2ZvbGlvYCoqXG5cbk9rYXksIHNvIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgc29tZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gVGhlIHVzZSBvZiAnc3RhdGljJyB1c3VhbGx5IGltcGxpZXMgYSBzaGFyZWQgc2NvcGUgYW5kIGxpZmV0aW1lIHdpdGhpbiBhIGNvbXBpbGF0aW9uIHVuaXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgb3IgbWV0aG9kcy4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIGVzdGFibGlzaGVkIG1vZHVsZT8gT3IgaXMgdGhpcyBhIG1vcmUgaXNvbGF0ZWQgdXRpbGl0eSBmdW5jdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBpcyBrZXkgdG8gcXVpY2tseSBncmFzcGluZyBpdHMgcm9sZSBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3Igc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0byBpdHMgb3JpZ2luIGFuZCB1bmRlcnN0YW5kIGl0cyBpbnZvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAyNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjA5LjQyNDM4NDQ4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NDQ1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19zY2FuX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz05ODA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZnJhZ21lbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTAwNC1cXG5mcy9lcm9mcy96ZGF0YS5jOjEwMDU6c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuZnMvZXJvZnMvemRhdGEuYy0xMDA2LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmEpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg1OS1cXHRcXHRcXHRlbHNlXFxuZnMvZXJvZnMvemRhdGEuYzoxODYwOlxcdFxcdFxcdFxcdHpfZXJvZnNfc2Nhbl9mb2xpbyhmLCBmb2xpbywgISFyYWMpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg2MS1cXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0xODcwPXN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xODc5LVxcdHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoXFx1MDAyNmYsIE5VTEwsIHRydWUpO1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTg4MDpcXHRlcnIgPSB6X2Vyb2ZzX3NjYW5fZm9saW8oXFx1MDAyNmYsIGZvbGlvLCBmYWxzZSk7XFxuZnMvZXJvZnMvemRhdGEuYy0xODgxLVxcdHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoXFx1MDAyNmYsIE5VTEwsIGZhbHNlKTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTg5OD1zdGF0aWMgdm9pZCB6X2Vyb2ZzX3JlYWRhaGVhZChzdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2wgKnJhYylcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkxOS1cXG5mcy9lcm9mcy96ZGF0YS5jOjE5MjA6XFx0XFx0ZXJyID0gel9lcm9mc19zY2FuX2ZvbGlvKFxcdTAwMjZmLCBmb2xpbywgdHJ1ZSk7XFxuZnMvZXJvZnMvemRhdGEuYy0xOTIxLVxcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgZXJyICE9IC1FSU5UUilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MDkuNDg0MjMzNTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1OTIyNzQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gRVJPRlMgUmVhZCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBFUk9GUyBpcyBoYW5kbGluZyByZWFkcywgcGFydGljdWxhcmx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zYC4gSSd2ZSBnb3QgYSBodW5jaCB0aGF0IGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgIGFyZSBsaWtlbHkgcGxheWluZyBhIGtleSByb2xlIGhlcmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIGl0IHNlZW1zIGxvZ2ljYWwgdGhleSdkIGJlIHBsdWdnZWQgaW4gc29tZXdoZXJlIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS5cblxuTXkgZmlyc3Qgc3RlcCBpcyB0byBmb2N1cyBvbiBgel9lcm9mc19yZWFkX2ZvbGlvYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyBsb2dpYyB3aWxsIGdpdmUgbWUgYSBncmVhdCBmb290aG9sZCBvbiBob3cgdGhlIEVST0ZTIHJlYWQgbWVjaGFuaXNtIHdvcmtzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZvbGlvLCBob3cgaXQgaGFuZGxlcyB0aGUgcGh5c2ljYWwgcmVhZCwgaWYgaXQgdXNlcyBhbnkgY2FjaGluZyBhbmQgZXZlcnl0aGluZyBlbHNlIHRoYXQgaXMgZ29pbmcgb24gd2l0aCB0aGUgZm9saW8gcmVhZHMuIFRoaXMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpZXMsIEkgdGhpbmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MTIuOTQzNDYzMjM0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQ5NjUwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19yZWFkX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTE4NjktXFxuZnMvZXJvZnMvemRhdGEuYzoxODcwOnN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg3MS17XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE5MzY9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2FvcHMgPSB7XFxuZnMvZXJvZnMvemRhdGEuYzoxOTM3OlxcdC5yZWFkX2ZvbGlvID0gel9lcm9mc19yZWFkX2ZvbGlvLFxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkzOC1cXHQucmVhZGFoZWFkID0gel9lcm9mc19yZWFkYWhlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjEzLjIwODQzNDg1OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg2ODc0NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgel9lcm9mc19yZWFkX2ZvbGlvYCBhbmQgUG90ZW50aWFsIEFsdGVybmF0aXZlcyoqXG5cbk9rYXksIHNvIGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGlzIGRlZmluaXRlbHkgYW4gZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBpcyBjbGVhciwgYW5kIGl0J3Mgc3RhdGljYWxseSBkZWZpbmVkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdyB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2l0aGluIHRoZSBgemRhdGEuY2AgZmlsZSBzcGVjaWZpY2FsbHksIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zLCAqYW55KiBmdW5jdGlvbnMgYXQgYWxsLCB0aGF0IGFyZW4ndCBkZWZpbmVkIGFzIHN0YXRpYz8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGlkZW50aWZ5IHJpZ2h0IG5vdy4gVGhlIGFuc3dlciB3aWxsIGNoYW5nZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjYyLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MTYuMjk1MzExOTM5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU0Njk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmMtMTUtXFxuZnMvZXJvZnMvemRhdGEuYzoxNjpzdHJ1Y3Qgel9lcm9mc19idmVjIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTE3LVxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0yOT1fX1pfRVJPRlNfQlZTRVQoel9lcm9mc19idnNldF9pbmxpbmUsIFpfRVJPRlNfSU5MSU5FX0JWRUNTKTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNDAtICovXFxuZnMvZXJvZnMvemRhdGEuYzo0MTpzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciB7XFxuZnMvZXJvZnMvemRhdGEuYy00Mi1cXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtOTItXFxuZnMvZXJvZnMvemRhdGEuYzo5MzpzdHJ1Y3Qgel9lcm9mc19kZWNvbXByZXNzcXVldWUge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtOTQtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTExPXN0YXRpYyBib29sIGVyb2ZzX2ZvbGlvX2lzX21hbmFnZWQoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmbylcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTIxLSAqL1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTIyOnN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTIzLVxcdHN0cnVjdCBrbWVtX2NhY2hlICpzbGFiO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0xMzA9c3RhdGljIHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIgcGNsdXN0ZXJfcG9vbFtdIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTEzNC1cXG5mcy9lcm9mcy96ZGF0YS5jOjEzNTpzdHJ1Y3Qgel9lcm9mc19idmVjX2l0ZXIge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTM2LVxcdHN0cnVjdCBwYWdlICpidnBhZ2U7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTQzNz1zdGF0aWMgaW5saW5lIHZvaWQgel9lcm9mc19kZXN0cm95X3BjcHVfd29ya2Vycyh2b2lkKSB7fVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy00MzktXFxuZnMvZXJvZnMvemRhdGEuYzo0NDA6dm9pZCB6X2Vyb2ZzX2V4aXRfc3Vic3lzdGVtKHZvaWQpXFxuZnMvZXJvZnMvemRhdGEuYy00NDEte1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz00NDk9aW50IF9faW5pdCB6X2Vyb2ZzX2luaXRfc3Vic3lzdGVtKHZvaWQpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTQ3Ni1cXG5mcy9lcm9mcy96ZGF0YS5jOjQ3NzplbnVtIHpfZXJvZnNfcGNsdXN0ZXJtb2RlIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTQ3OC1cXHQvKiBJdCBoYXMgcHJldmlvdXNseSBiZWVuIGxpbmtlZCBpbnRvIGFub3RoZXIgcHJvY2Vzc2luZyBjaGFpbiAqL1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy00OTUtXFxuZnMvZXJvZnMvemRhdGEuYzo0OTY6c3RydWN0IHpfZXJvZnNfZnJvbnRlbmQge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtNDk3LVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUsICpzaGFyZWRpbm9kZTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHpfZXJvZnNfY2FjaGVfYW9wcyA9IHtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNjY2LVxcbmZzL2Vyb2ZzL3pkYXRhLmM6NjY3OmludCB6X2Vyb2ZzX2luaXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9lcm9mcy96ZGF0YS5jLTY2OC17XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTEwOTc9c3RhdGljIGJvb2wgel9lcm9mc19wYWdlX2lzX2ludmFsaWRhdGVkKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xMTAxLVxcbmZzL2Vyb2ZzL3pkYXRhLmM6MTEwMjpzdHJ1Y3Qgel9lcm9mc19iYWNrZW5kIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTExMDMtXFx0c3RydWN0IHBhZ2UgKm9uc3RhY2tfcGFnZXNbWl9FUk9GU19PTlNUQUNLX1BBR0VTXTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTExNy1cXG5mcy9lcm9mcy96ZGF0YS5jOjExMTg6c3RydWN0IHpfZXJvZnNfYnZlY19pdGVtIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTExMTktXFx0c3RydWN0IHpfZXJvZnNfYnZlYyBidmVjO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMToxNi4zNTk4NjU0NzhaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NDk5NTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipSZWZsZWN0aW5nIG9uIFN5bWJvbCBWaXNpYmlsaXR5IGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB6X2Vyb2ZzX2luaXRfc3VwZXJgLiBJdCdzIGRlZmluZWQgYXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEhvd2V2ZXIsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBpdCdzIG5vdCBhIHBhcnRpY3VsYXJseSBpbnNpZ2h0ZnVsIG9yIGlsbHVtaW5hdGluZyBzeW1ib2wgdG8gYmUgZm9jdXNpbmcgb24uIFdlIG5lZWQgdG8gZGlnIGEgYml0IGRlZXBlciB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHJlbGV2YW50IGZvciB3aGF0IHdlIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZS4gTGV0J3MgcmVkaXJlY3Qgb3VyIGF0dGVudGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluc3RpbmN0IGlzIHRvIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZmlsZSBgZnMveGZzL3hmc19xbS5jYC4gSG9wZWZ1bGx5LCB0aGVyZSdsbCBiZSBzb21ldGhpbmcgaW4gdGhlcmUgdGhhdCBwcm92aWRlcyBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDg1LCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjAuNjE0ODYzMzgzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzUyNTY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB4ZnNfcW1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy94ZnNfcW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMveGZzX3FtLmM9MzgyPXhmc19xbV9kcWRldGFjaChcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYy00MDYtXFxuZnMveGZzL3hmc19xbS5jOjQwNzpzdHJ1Y3QgeGZzX3FtX2lzb2xhdGUge1xcbmZzL3hmcy94ZnNfcW0uYy00MDgtXFx0c3RydWN0IGxpc3RfaGVhZFxcdGJ1ZmZlcnM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjIwLjcwMjM5NTU0MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODkyNDk1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipYRlMgUXVvdGEgTWFuYWdlbWVudDogQSBRdWljayBDaGVjayoqXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlJ3JlIG9uIHRvcCBvZiBgeGZzX3FtX2RxcHVyZ2VgLiBOZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIHVudXN1YWwgZ29pbmcgb24sIGFueSBsaW5nZXJpbmcgaXNzdWVzLCBvciBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgaGljY3VwIEkgbmVlZCB0byBhZGRyZXNzIHByb2FjdGl2ZWx5LiBObyBuZWVkIHRvIGdvIHRvbyBkZWVwIGF0IHRoaXMgc3RhZ2UsIGJ1dCBJIHdhbnQgdG8ga2VlcCB0aGlzIHByb2Nlc3Mgc3RyZWFtbGluZWQuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IHBvdGVudGlhbCBpc3N1ZXMgbWF5IGJlIHByZXNlbnQsIGFuZCBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gc3RheSBhaGVhZCBvZiB0aGUgY3VydmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODM3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjMuNTk0ODk0NzU3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzc4MzQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnNfcW1fZHFwdXJnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMveGZzX3FtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL3hmc19xbS5jPTEyMz1TVEFUSUMgaW50XFxuZnMveGZzL3hmc19xbS5jOjEyNDp4ZnNfcW1fZHFwdXJnZShcXG5mcy94ZnMveGZzX3FtLmMtMTI1LVxcdHN0cnVjdCB4ZnNfZHF1b3RcXHQqZHFwLFxcbi0tXFxuZnMveGZzL3hmc19xbS5jPTIwMj1zdGF0aWMgdm9pZFxcbmZzL3hmcy94ZnNfcW0uYzoyMDM6eGZzX3FtX2RxcHVyZ2VfYWxsKFxcbmZzL3hmcy94ZnNfcW0uYy0yMDQtXFx0c3RydWN0IHhmc19tb3VudFxcdCptcClcXG5mcy94ZnMveGZzX3FtLmMtMjA1LXtcXG5mcy94ZnMveGZzX3FtLmM6MjA2OlxcdHhmc19xbV9kcXVvdF93YWxrKG1wLCBYRlNfRFFUWVBFX1VTRVIsIHhmc19xbV9kcXB1cmdlLCBOVUxMKTtcXG5mcy94ZnMveGZzX3FtLmM6MjA3OlxcdHhmc19xbV9kcXVvdF93YWxrKG1wLCBYRlNfRFFUWVBFX0dST1VQLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XFxuZnMveGZzL3hmc19xbS5jOjIwODpcXHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9QUk9KLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XFxuZnMveGZzL3hmc19xbS5jLTIwOS19XFxuLS1cXG5mcy94ZnMveGZzX3FtLmM9MjE1PXhmc19xbV91bm1vdW50KFxcbi0tXFxuZnMveGZzL3hmc19xbS5jLTIxOC1cXHRpZiAobXAtXFx1MDAzZW1fcXVvdGFpbmZvKSB7XFxuZnMveGZzL3hmc19xbS5jOjIxOTpcXHRcXHR4ZnNfcW1fZHFwdXJnZV9hbGwobXApO1xcbmZzL3hmcy94ZnNfcW0uYy0yMjAtXFx0XFx0eGZzX3FtX2Rlc3Ryb3lfcXVvdGFpbmZvKG1wKTtcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYz0xNDU2PXhmc19xbV9xdW90YWNoZWNrKFxcbi0tXFxuZnMveGZzL3hmc19xbS5jLTE1OTItXFx0eGZzX2lub2RlZ2NfZmx1c2gobXApO1xcbmZzL3hmcy94ZnNfcW0uYzoxNTkzOlxcdHhmc19xbV9kcXB1cmdlX2FsbChtcCk7XFxuZnMveGZzL3hmc19xbS5jLTE1OTQtXFx0Z290byBlcnJvcl9yZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjIzLjY1ODY4ODYyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0ODEyOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFN0cnVjdHVyZSBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHhmc19xbV9kcXB1cmdlYCBhbmQgYHhmc19xbV91bm1vdW50YC4gVGhlIGtleSBkaWZmZXJlbmNlIGltbWVkaWF0ZWx5IHN0aWNrcyBvdXQ6IG9uZSdzIHN0YXRpYywgdGhlIG90aGVyIGlzbid0LiBUaGF0IGFsb25lIHJhaXNlcyBzb21lIGZsYWdzIGZvciBtZS4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIGZvciBob3cgdGhlIHF1b3RhIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB1bm1vdW50aW5nLiBEb2VzIHRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3QgYSBsb2NhbCwgY29udGV4dC1zcGVjaWZpYyBjbGVhbnVwLCB3aGlsZSB0aGUgbm9uLXN0YXRpYyBpbXBsaWVzIGEgbW9yZSBnbG9iYWwsIHBvdGVudGlhbGx5IHNoYXJlZCByZXNvdXJjZSBtYW5hZ2VtZW50PyBJcyB0aGVyZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIG9yIGxpZmVzcGFuIG9mIGB4ZnNfcW1fZHFwdXJnZWAgdGhhdCdzIGluaGVyZW50bHkgZGlmZmVyZW50P1xuXG5UbyBkaWcgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgcGF0dGVybiBvciBzaW1pbGFyIGludGVyYWN0aW9ucyBhcmUgdXNlZCBpbiBhIHJlbGF0ZWQgZmlsZSBzeXN0ZW0uIExldCdzIHNoaWZ0IG91ciBmb2N1cyB0byBgZnMvZ2ZzMi9nbG9jay5jYC4gVGhlIEdGUzIgZGlzdHJpYnV0ZWQgbG9jayBtYW5hZ2VyIGlzIGxpa2VseSB0byBnaXZlIHVzIGEgZ29vZCB2aWV3IG9mIGhvdyBhIHNpbWlsYXJseSBkZXNpZ25lZCBmaWxlIHN5c3RlbSBoYW5kbGVzIHJlc291cmNlcy4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciBjb21wYXJpc29uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYwMSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjI3LjQwMzUwMzc2M1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2NjY2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogZ2ZzMl9nbG9ja19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9nbG9jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2dmczIvZ2xvY2suYy01My1cXG5mcy9nZnMyL2dsb2NrLmM6NTQ6c3RydWN0IGdmczJfZ2xvY2tfaXRlciB7XFxuZnMvZ2ZzMi9nbG9jay5jLTU1LVxcdHN0cnVjdCBnZnMyX3NiZCAqc2RwO1xcdFxcdC8qIGluY29yZSBzdXBlcmJsb2NrICAgICAgICAgICAqL1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTE0MT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTQ4LVxcbmZzL2dmczIvZ2xvY2suYzoxNDk6dm9pZCBnZnMyX2dsb2NrX2ZyZWUoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XFxuZnMvZ2ZzMi9nbG9jay5jLTE1MC1cXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9IGdsb2NrX3NiZChnbCk7XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTU2LVxcbmZzL2dmczIvZ2xvY2suYzoxNTc6dm9pZCBnZnMyX2dsb2NrX2ZyZWVfbGF0ZXIoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XFxuZnMvZ2ZzMi9nbG9jay5jLTE1OC1cXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9IGdsb2NrX3NiZChnbCk7XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MjU0PXN0YXRpYyBib29sIF9fZ2ZzMl9nbG9ja19wdXRfb3JfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjczLVxcbmZzL2dmczIvZ2xvY2suYzoyNzQ6dm9pZCBnZnMyX2dsb2NrX3B1dChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9nbG9jay5jLTI3NS17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjg4LSAqL1xcbmZzL2dmczIvZ2xvY2suYzoyODk6dm9pZCBnZnMyX2dsb2NrX3B1dF9hc3luYyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9nbG9jay5jLTI5MC17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MTAzMT1zdGF0aWMgc3RydWN0IGdmczJfZ2xvY2sgKmZpbmRfaW5zZXJ0X2dsb2NrKHN0cnVjdCBsbV9sb2NrbmFtZSAqbmFtZSxcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xMDc5LVxcbmZzL2dmczIvZ2xvY2suYzoxMDgwOmludCBnZnMyX2dsb2NrX2dldChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdTY0IG51bWJlcixcXG5mcy9nZnMyL2dsb2NrLmMtMTA4MS1cXHRcXHQgICBjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9ja19vcGVyYXRpb25zICpnbG9wcywgaW50IGNyZWF0ZSxcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xMjI2PXN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfdXBkYXRlX2hvbGRfdGltZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTI0NS1cXG5mcy9nZnMyL2dsb2NrLmM6MTI0NjppbnQgZ2ZzMl9nbG9ja19ob2xkZXJfcmVhZHkoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG5mcy9nZnMyL2dsb2NrLmMtMTI0Ny17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTI2Mi1cXG5mcy9nZnMyL2dsb2NrLmM6MTI2MzppbnQgZ2ZzMl9nbG9ja193YWl0KHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTEyNjQte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTEyNzM9c3RhdGljIGludCBnbG9ja3NfcGVuZGluZyh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocylcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xMjkzLVxcbmZzL2dmczIvZ2xvY2suYzoxMjk0OmludCBnZnMyX2dsb2NrX2FzeW5jX3dhaXQodW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMsXFxuZnMvZ2ZzMi9nbG9jay5jLTEyOTUtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgcmV0cmllcylcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xNDM2PXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfdG9fcXVldWUoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNDg5LVxcbmZzL2dmczIvZ2xvY2suYzoxNDkwOmludCBnZnMyX2dsb2NrX25xKHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE0OTEte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE1NDMtXFxuZnMvZ2ZzMi9nbG9jay5jOjE1NDQ6aW50IGdmczJfZ2xvY2tfcG9sbChzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxcbmZzL2dmczIvZ2xvY2suYy0xNTQ1LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xNTQ5PXN0YXRpYyB2b2lkIF9fZ2ZzMl9nbG9ja19kcShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE1OTItICovXFxuZnMvZ2ZzMi9nbG9jay5jOjE1OTM6dm9pZCBnZnMyX2dsb2NrX2RxKHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE1OTQte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE2MzktXFxuZnMvZ2ZzMi9nbG9jay5jOjE2NDA6dm9pZCBnZnMyX2dsb2NrX2RxX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG5mcy9nZnMyL2dsb2NrLmMtMTY0MS17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTY1My1cXG5mcy9nZnMyL2dsb2NrLmM6MTY1NDp2b2lkIGdmczJfZ2xvY2tfZHFfdW5pbml0KHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE2NTUte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE2NzEtXFxuZnMvZ2ZzMi9nbG9jay5jOjE2NzI6aW50IGdmczJfZ2xvY2tfbnFfbnVtKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgbnVtYmVyLFxcbmZzL2dmczIvZ2xvY2suYy0xNjczLVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBnZnMyX2dsb2NrX29wZXJhdGlvbnMgKmdsb3BzLFxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTE3MjA9c3RhdGljIGludCBucV9tX3N5bmModW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMsXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTc1MS1cXG5mcy9nZnMyL2dsb2NrLmM6MTc1MjppbnQgZ2ZzMl9nbG9ja19ucV9tKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxcbmZzL2dmczIvZ2xvY2suYy0xNzUzLXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNzg1LVxcbmZzL2dmczIvZ2xvY2suYzoxNzg2OnZvaWQgZ2ZzMl9nbG9ja19kcV9tKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxcbmZzL2dmczIvZ2xvY2suYy0xNzg3LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNzkxLVxcbmZzL2dmczIvZ2xvY2suYzoxNzkyOnZvaWQgZ2ZzMl9nbG9ja19jYihzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCBzdGF0ZSlcXG5mcy9nZnMyL2dsb2NrLmMtMTc5My17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MTgyNj1zdGF0aWMgaW50IGdmczJfc2hvdWxkX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTg1My1cXG5mcy9nZnMyL2dsb2NrLmM6MTg1NDp2b2lkIGdmczJfZ2xvY2tfY29tcGxldGUoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBpbnQgcmV0KVxcbmZzL2dmczIvZ2xvY2suYy0xODU1LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0yMDk3LVxcbmZzL2dmczIvZ2xvY2suYzoyMDk4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvZ2xvY2suYy0yMDk5LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0yNDI5PWludCBfX2luaXQgZ2ZzMl9nbG9ja19pbml0KHZvaWQpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjQ1My1cXG5mcy9nZnMyL2dsb2NrLmM6MjQ1NDp2b2lkIGdmczJfZ2xvY2tfZXhpdCh2b2lkKVxcbmZzL2dmczIvZ2xvY2suYy0yNDU1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjcuNDcxMTc4MDAxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTAwMzY3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgR0ZTMiBHbG9jayBUaGF3IEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gYGdmczJfZ2xvY2tfdGhhd2AgaXNuJ3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0IG9mdGVuIGluZGljYXRlIGV4dGVybmFsIHZpc2liaWxpdHkgb3IgcG90ZW50aWFsIGZvciBiZWluZyBjYWxsZWQgZnJvbSBlbHNld2hlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBpbiBHRlMyLCBhbmQgZGVhbGluZyB3aXRoIGdsb2NrcyAoZ2xvYmFsIGxvY2tzKSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIHdoeSB0aGlzIHRoYXcgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaW1wbGljYXRpb25zIGZvciBjbHVzdGVyLXdpZGUgY29uc2lzdGVuY3kuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBxdW90YSBtYW5hZ2VtZW50IGNvZGUsIHNwZWNpZmljYWxseSBgZnMvZ2ZzMi9xdW90YS5jYC4gVGhhdCdzIGxpa2VseSB3aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBnbG9ja3MgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBwb3RlbnRpYWwgdGhhdyBvcGVyYXRpb25zLCB3b3VsZCByZXNpZGUgaW4gR0ZTMi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHJlbGF0ZWQgcXVvdGEgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNvb3JkaW5hdGVkIG9yIHN5bmNocm9uaXplZCBieSB0aGlzIGBnZnMyX2dsb2NrX3RoYXdgIGZ1bmN0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIHF1b3RhLmMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDQwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MzEuMzgxMjE3MTU0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE0NDY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX3F1b3RhX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL3F1b3RhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9xdW90YS5jPTU4Nj12b2lkIGdmczJfcWFfcHV0KHN0cnVjdCBnZnMyX2lub2RlICppcClcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy01OTctXFxuZnMvZ2ZzMi9xdW90YS5jOjU5ODppbnQgZ2ZzMl9xdW90YV9ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZClcXG5mcy9nZnMyL3F1b3RhLmMtNTk5LXtcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy02NTYtXFxuZnMvZ2ZzMi9xdW90YS5jOjY1Nzp2b2lkIGdmczJfcXVvdGFfdW5ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcClcXG5mcy9nZnMyL3F1b3RhLmMtNjU4LXtcXG4tLVxcbmZzL2dmczIvcXVvdGEuYz0xMDM3PXN0YXRpYyBpbnQgZG9fZ2xvY2soc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQsIGludCBmb3JjZV9yZWZyZXNoLFxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTEwODctXFxuZnMvZ2ZzMi9xdW90YS5jOjEwODg6aW50IGdmczJfcXVvdGFfbG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXFxuZnMvZ2ZzMi9xdW90YS5jLTEwODkte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTExMjM9c3RhdGljIGJvb2wgbmVlZF9zeW5jKHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTExNTgtXFxuZnMvZ2ZzMi9xdW90YS5jOjExNTk6dm9pZCBnZnMyX3F1b3RhX3VubG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXFxuZnMvZ2ZzMi9xdW90YS5jLTExNjAte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTEyMTE9c3RhdGljIHZvaWQgcHJpbnRfbWVzc2FnZShzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwgY2hhciAqdHlwZSlcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMjM5LSAqL1xcbmZzL2dmczIvcXVvdGEuYzoxMjQwOmludCBnZnMyX3F1b3RhX2NoZWNrKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZCxcXG5mcy9nZnMyL3F1b3RhLmMtMTI0MS1cXHRcXHQgICAgIHN0cnVjdCBnZnMyX2FsbG9jX3Bhcm1zICphcClcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMjk3LVxcbmZzL2dmczIvcXVvdGEuYzoxMjk4OnZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxcbmZzL2dmczIvcXVvdGEuYy0xMjk5LVxcdFxcdCAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkKVxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTEzMjMtXFxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcXG5mcy9nZnMyL3F1b3RhLmMtMTMyNS17XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTM4NC1cXG5mcy9nZnMyL3F1b3RhLmM6MTM4NTppbnQgZ2ZzMl9xdW90YV9yZWZyZXNoKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3Qga3FpZCBxaWQpXFxuZnMvZ2ZzMi9xdW90YS5jLTEzODYte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTE0MDItXFxuZnMvZ2ZzMi9xdW90YS5jOjE0MDM6aW50IGdmczJfcXVvdGFfaW5pdChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL3F1b3RhLmMtMTQwNC17XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTUyNS1cXG5mcy9nZnMyL3F1b3RhLmM6MTUyNjp2b2lkIGdmczJfcXVvdGFfY2xlYW51cChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL3F1b3RhLmMtMTUyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjMxLjQ0NDM3MDk1M1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUwMTIxMTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKipcblxuT2theSwgYGdmczJfcXVvdGFfc3luY2AgZmVlbHMgbGlrZSBhIGdvb2QsIHNvbGlkIHBvaW50IG9mIGZvY3VzLiBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBrZXkgcGllY2UgaW4gdGhlIHF1b3RhIHN5bmNocm9uaXphdGlvbiBwdXp6bGUgd2l0aGluIEdGUzIuIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzLiBJIHRoaW5rIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB0aGlzIGRlZXAgZGl2ZSBpcyB3aXRoaW4gdGhlIGBmcy9nZnMyL2xvY2tfZGxtLmNgIGZpbGUuIEl0J3MgYSBwcmltZSBzdXNwZWN0IGZvciBhbnl0aGluZyBpbnZvbHZpbmcgZGlzdHJpYnV0ZWQgbG9ja2luZyBhbmQgcXVvdGEgb3BlcmF0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSBhbmQgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyNjIsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTozNC40OTQ0OTQ1MTVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDUzMjQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX2xvY2tfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvbG9ja19kbG0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MzQuNTU2OTU2NDczWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDYxNTA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgcHJvdmlkZWQgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBmcy9nZnMyL2xvY2tfZGxtLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBsYW5kc2NhcGUgd2l0aGluIHRoZSBHRlMyIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBpbXBsZW1lbnRhdGlvbi4gQSBnb29kIGZpcnN0IHN0ZXAgaGVyZSBpcyB0byB0YWtlIGEgbG9vayBhdCBgZnMvZ2ZzMi9sb2NrX2RsbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2NraW5nIHByaW1pdGl2ZXMgYW5kIGFzc29jaWF0ZWQgbWFuYWdlbWVudCBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gSSdtIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHRoZSBmdW5jdGlvbnMgd2l0aCBleHRlcm5hbCB2aXNpYmlsaXR5LCB0aGUgb25lcyB0aGF0IGFyZSBleHBsaWNpdGx5IGV4cG9zZWQgb3IgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBHRlMyIGNvZGUgb3IgcG90ZW50aWFsbHkgZnJvbSB0aGUgZ2VuZXJpYyBWRlMgbGF5ZXIuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHRoZSBETE0ncyBBUEkgYW5kIGludGVyYWN0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0OTUsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTozNy43MDMxMTAwMTRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg0MzU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZGxtX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL2xvY2tfZGxtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjM3Ljc2NTMwMTM5MloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTIzNjEzNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipTdGF0aWMgVmFyaWFibGVzIFx1MDAyNiBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhpcyBvbmUgbW9yZSB0aW1lLiBXYWl0Li4uIEhvbGQgb24gYSBzZWNvbmQuICpgZ2RsbV9hc3RgKiwgKmBnZGxtX2Jhc3RgKiwgYW5kICpgZ2RsbV9wdXRfbG9ja2AqIGFyZSAqc3RhdGljKj8gUmlnaHQuIFRoYXQncyBhIGNyaXRpY2FsIGRldGFpbCBJIGFsbW9zdCBtaXNzZWQuIEl0IGNoYW5nZXMgZXZlcnl0aGluZyB3aGVuIHlvdSdyZSBsb29raW5nIGF0IHRoZSBhcmNoaXRlY3R1cmUgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0gbGlrZSB0aGlzLiBTdGF0aWMgdmFyaWFibGVzLCBpbiBhbnkgc2hhcmVkIG1lbW9yeSBjb250ZXh0LCBpbW1lZGlhdGVseSBzY3JlYW0gXCJwb3RlbnRpYWwgZm9yIGNvbnRlbnRpb24uXCIgSWYgdGhvc2UgYXJlIGFjY2Vzc2VkIGFjcm9zcyBtdWx0aXBsZSB0aHJlYWRzIG9yLCBldmVuIHdvcnNlLCBkaWZmZXJlbnQgcHJvY2Vzc2VzLCB3ZSdyZSB0YWxraW5nIGFib3V0IHZlcnkgcmVhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgcmVxdWlyZXMgaW1tZWRpYXRlIGFuZCBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSB0aGlua2luZyBhYm91dCBtdXRleGVzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo0MS4yODg5MTc5NDRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTIxNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdkbG1fYXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvbG9ja19kbG0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9nZnMyL2xvY2tfZGxtLmM9MTAxPXN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXF1ZXN0X3RpbWVzKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTctIFxcbmZzL2dmczIvbG9ja19kbG0uYzoxMTg6c3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTkte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jPTI3Nz1zdGF0aWMgaW50IGdkbG1fbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCByZXFfc3RhdGUsXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE0LVxcdFxcdGVycm9yID0gZGxtX2xvY2sobHMtXFx1MDAzZWxzX2RsbSwgcmVxLCBcXHUwMDI2Z2wtXFx1MDAzZWdsX2xrc2IsIGxrZiwgc3RybmFtZSxcXG5mcy9nZnMyL2xvY2tfZGxtLmM6MzE1OlxcdFxcdFxcdFxcdEdETE1fU1RSTkFNRV9CWVRFUyAtIDEsIDAsIGdkbG1fYXN0LCBnbCwgZ2RsbV9iYXN0KTtcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE2LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDEuMzQ5MDQ0NTEzWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUwMTcwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCBmb3IgRHluYW1pc20qKlxuXG5BbHJpZ2h0LCBJJ20gZm9jdXNpbmcgaW4gb24gYGZzL2dmczIvbG9ja19kbG0uY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYXJlIHRoZXJlIGFueSAqaW50ZXJlc3RpbmcqIGZ1bmN0aW9ucyBpbiBoZXJlIHRoYXQgYXJlbid0IHB1cmVseSBzdGF0aWM/IEknbSBub3QganVzdCBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCAqaXNuJ3QqIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgcmF0aGVyIGZ1bmN0aW9ucyB0aGF0IHRydWx5IHByb3ZpZGUgZHluYW1pc20sIG9yIGEgbGV2ZWwgb2Ygb3BlcmF0aW9uIHRoYXQgaXMgbm90IGNvbmZpbmVkIHdpdGhpbiBhIHN0YXRpYyBtZXRob2QuIElzIHRoZXJlIGFueSBmdW5jdGlvbiBpbiB0aGlzIGZpbGUgdGhhdCBhY3R1YWxseSAqZG9lcyogc29tZXRoaW5nIGludGVyZXN0aW5nLCBiZXlvbmQgc2ltcGxlIGhlbHBlciB0YXNrcywgYW5kIGlzbid0IHNvbGVseSBkZWRpY2F0ZWQgdG8gc29tZSBzcGVjaWZpYyBzdGF0aWNhbGx5LWRlZmluZWQgZnVuY3Rpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciBpbnRlcmFjdHMgd2l0aCB0aGUgbGFyZ2VyIEdGUzIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZmlsZSBpcyB0cnVseSBkeW5hbWljIG9yIGp1c3QgYSBsaWJyYXJ5IG9mIGhlbHBlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjc2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDQuNTA0MDY0MTMyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc4NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9sb2NrX2RsbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2dmczIvbG9ja19kbG0uYy0yOC0gKi9cXG5mcy9nZnMyL2xvY2tfZGxtLmM6Mjk6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3N0YXRzKHN0cnVjdCBnZnMyX2xrc3RhdHMgKnMsIHVuc2lnbmVkIGluZGV4LFxcbmZzL2dmczIvbG9ja19kbG0uYy0zMC1cXHRcXHRcXHRcXHQgICAgIHM2NCBzYW1wbGUpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNzMtICovXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjc0OnN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXBseV90aW1lcyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTc1LVxcdFxcdFxcdFxcdFxcdCAgIGJvb2wgYmxvY2tpbmcpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMDE6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3JlcXVlc3RfdGltZXMoc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMDIte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNy0gXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExODpzdGF0aWMgdm9pZCBnZGxtX2FzdCh2b2lkICphcmcpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExOS17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTgwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxODE6c3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE4Mi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjA1LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMDY6c3RhdGljIGludCBtYWtlX21vZGUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IHVuc2lnbmVkIGludCBsbXN0YXRlKVxcbmZzL2dmczIvbG9ja19kbG0uYy0yMDcte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIyNC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjI1OnN0YXRpYyBib29sIG1pZGRsZV9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIyNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjMwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMzE6c3RhdGljIGJvb2wgZG93bl9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIzMi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM1LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMzY6c3RhdGljIHUzMiBtYWtlX2ZsYWdzKHN0cnVjdCBnZnMyX2dsb2NrICpnbCwgY29uc3QgdW5zaWduZWQgaW50IGdmc19mbGFncyxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM3LVxcdFxcdCAgICAgIGNvbnN0IGludCByZXEsIGJvb2wgYmxvY2tpbmcpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjY3LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyNjg6c3RhdGljIHZvaWQgZ2ZzMl9yZXZlcnNlX2hleChjaGFyICpjLCB1NjQgdmFsdWUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI2OS17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjc2LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyNzc6c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxcbmZzL2dmczIvbG9ja19kbG0uYy0yNzgtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzI0LVxcbmZzL2dmczIvbG9ja19kbG0uYzozMjU6c3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMyNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzgzLVxcbmZzL2dmczIvbG9ja19kbG0uYzozODQ6c3RhdGljIHZvaWQgZ2RsbV9jYW5jZWwoc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbmZzL2dmczIvbG9ja19kbG0uYy0zODUte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTUzNi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTM3OnN0YXRpYyB2b2lkIGNvbnRyb2xfbHZiX3JlYWQoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCAqbHZiX2dlbixcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM4LVxcdFxcdFxcdCAgICAgY2hhciAqbHZiX2JpdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTQ1LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1NDY6c3RhdGljIHZvaWQgY29udHJvbF9sdmJfd3JpdGUoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCBsdmJfZ2VuLFxcbmZzL2dmczIvbG9ja19kbG0uYy01NDctXFx0XFx0XFx0ICAgICAgY2hhciAqbHZiX2JpdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU0LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1NTU6c3RhdGljIGludCBhbGxfamlkX2JpdHNfY2xlYXIoY2hhciAqbHZiKVxcbmZzL2dmczIvbG9ja19kbG0uYy01NTYte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2MC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTYxOnN0YXRpYyB2b2lkIHN5bmNfd2FpdF9jYih2b2lkICphcmcpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Mi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTY2LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1Njc6c3RhdGljIGludCBzeW5jX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxcbmZzL2dmczIvbG9ja19kbG0uYy01Njgte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5Mi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTkzOnN0YXRpYyBpbnQgc3luY19sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5NC1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBudW0sIHN0cnVjdCBkbG1fbGtzYiAqbGtzYiwgY2hhciAqbmFtZSlcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy02MjgtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjYyOTpzdGF0aWMgaW50IG1vdW50ZWRfdW5sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvbG9ja19kbG0uYy02MzAte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjM1OnN0YXRpYyBpbnQgbW91bnRlZF9sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQxLVxcbmZzL2dmczIvbG9ja19kbG0uYzo2NDI6c3RhdGljIGludCBjb250cm9sX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQzLXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy02NDctXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjY0ODpzdGF0aWMgaW50IGNvbnRyb2xfbG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgaW50IG1vZGUsIHVpbnQzMl90IGZsYWdzKVxcbmZzL2dmczIvbG9ja19kbG0uYy02NDkte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTY1NC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjU1OnN0YXRpYyB2b2lkIGdmczJfY29udHJvbF9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU2LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy04MzItXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjgzMzpzdGF0aWMgaW50IGNvbnRyb2xfbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHApXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTgzNC17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTAzMjpzdGF0aWMgaW50IGNvbnRyb2xfZmlyc3RfZG9uZShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMy17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTA5Ny1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTA5ODpzdGF0aWMgaW50IHNldF9yZWNvdmVyX3NpemUoc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBkbG1fc2xvdCAqc2xvdHMsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwOTktXFx0XFx0XFx0ICAgIGludCBudW1fc2xvdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE0NS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE0NjpzdGF0aWMgdm9pZCBmcmVlX3JlY292ZXJfc2l6ZShzdHJ1Y3QgbG1fbG9ja3N0cnVjdCAqbHMpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNDcte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNTgtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExNTk6c3RhdGljIHZvaWQgZ2RsbV9yZWNvdmVyX3ByZXAodm9pZCAqYXJnKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTYwLXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTgzLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMTg0OnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9zbG90KHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90KVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTg1LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjEyLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjEzOnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9kb25lKHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90cywgaW50IG51bV9zbG90cyxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTIxNC1cXHRcXHRcXHQgICAgICBpbnQgb3VyX3Nsb3QsIHVpbnQzMl90IGdlbmVyYXRpb24pXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0NC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTI0NTpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJ5X3Jlc3VsdChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdW5zaWduZWQgaW50IGppZCxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0Ni1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IHJlc3VsdClcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjg4LVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGxtX2xvY2tzcGFjZV9vcHMgZ2RsbV9sb2Nrc3BhY2Vfb3BzID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xMjkwLVxcdC5yZWNvdmVyX3ByZXAgPSBnZGxtX3JlY292ZXJfcHJlcCxcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjk0LVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjk1OnN0YXRpYyBpbnQgZ2RsbV9tb3VudChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgY29uc3QgY2hhciAqdGFibGUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTYte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEzOTMtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEzOTQ6c3RhdGljIHZvaWQgZ2RsbV9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMzk1LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xNDE0LSAqL1xcbmZzL2dmczIvbG9ja19kbG0uYzoxNDE1OnN0YXRpYyB2b2lkIGdkbG1fdW5tb3VudChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgYm9vbCBjbGVhbilcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTQxNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTQ0Mi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTQ0MzpzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBkbG1fdG9rZW5zID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xNDQ0LVxcdHsgT3B0X2ppZCwgXFxcImppZD0lZFxcXCJ9LFxcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0NTAtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NTE6Y29uc3Qgc3RydWN0IGxtX2xvY2tvcHMgZ2ZzMl9kbG1fb3BzID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xNDUyLVxcdC5sbV9wcm90b19uYW1lID0gXFxcImxvY2tfZGxtXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDQuNTY1ODU3NTUxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTMxNTk5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRmluZGluZyBTdWl0YWJsZSBGb2N1cyBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBpZGVudGlmeSBzb21lIGdvb2QgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIEdGUzIgYW5kIEVST0ZTIGZpbGVzeXN0ZW1zIGZvciBhbmFseXNpcywgbGlrZWx5IGZvciBzb21lIHNvcnQgb2YgY29kZSB1bmRlcnN0YW5kaW5nIG9yIGRlYnVnZ2luZyB0YXNrLiBUaGUgZmlyc3QgcGxhY2UgSSBsb29rZWQsIGBmcy9nZnMyL2xvY2tfZGxtLmNgLCBzZWVtZWQgcHJvbWlzaW5nLCBidXQgdW5mb3J0dW5hdGVseSwgZXZlcnl0aGluZyB3aXRoaW4gdGhhdCBmaWxlIGlzIHN0YXRpYyBleGNlcHQgdGhlIGBnZnMyX2RsbV9vcHNgIHN0cnVjdC4gTm90IHJlYWxseSB3aGF0IEknbSBsb29raW5nIGZvciB0aGVyZSwgYXMgSSBuZWVkIGZ1bmN0aW9ucywgbm90IGRhdGEgc3RydWN0dXJlcywgdG8gYmUgc3VpdGFibGUgZm9yIGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgbW92ZSBvbiB0byBgZnMvZ2ZzMi9xdW90YS5jYC4gTGV0J3Mgc2VlLi4uIGBnZnMyX3F1b3RhX3N5bmNgLCBgZ2ZzMl9xdW90YV9jaGVja2AsIGBnZnMyX3F1b3RhX2xvY2tgLCBhbmQgYGdmczJfcXVvdGFfcmVmcmVzaGAgYXJlIGFsbCBub24tc3RhdGljLCBzbyB0aGV5IG1pZ2h0IGJlIGdvb2QgY2FuZGlkYXRlcy4gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhvc2UgYXMgcG90ZW50aWFsIG9wdGlvbnMuXG5cbk5leHQsIEknbGwgY2hlY2sgYGZzL2dmczIvZ2xvY2suY2AuIE9rYXksIGhlcmUgSSBzZWUgYGdmczJfZ2xvY2tfdGhhd2AsIGBnZnMyX2dsb2NrX25xYCwgYGdmczJfZ2xvY2tfZHFgLCBhbmQgYGdmczJfZ2xvY2tfcHV0YCBhcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRob3NlIGxvb2sgbGlrZSB0aGV5IGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5GaW5hbGx5LCBsZXQncyBsb29rIGF0IGBmcy9lcm9mcy96ZGF0YS5jYC4gYHpfZXJvZnNfaW5pdF9zdXBlcmAsIGB6X2Vyb2ZzX2V4aXRfc3Vic3lzdGVtYCwgYW5kIGB6X2Vyb2ZzX2luaXRfc3Vic3lzdGVtYCBhcmUgbm9uLXN0YXRpYy4gVGhvc2UgYXJlbid0IHJlYWxseSBqdW1waW5nIG91dCBhdCBtZSBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gT2gsIHdhaXQsIHdoYXQgYWJvdXQgYHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyYD8gVGhhdCBtaWdodCBiZSB0aGUgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjYzMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1MC4wNzkwMjE5OTlaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMTU3MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xMDIzLVxcdFxcdFxcdG1hcC1cXHUwMDNlbV9sbGVuID0gMDtcXG5mcy9lcm9mcy96ZGF0YS5jOjEwMjQ6XFx0XFx0XFx0ZXJyID0gel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoaW5vZGUsIG1hcCwgMCk7XFxuZnMvZXJvZnMvemRhdGEuYy0xMDI1LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTgzMS1cXHRcXHRtYXAtXFx1MDAzZW1fbGEgPSBlbmQ7XFxuZnMvZXJvZnMvemRhdGEuYzoxODMyOlxcdFxcdGVyciA9IHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyKGlub2RlLCBtYXAsXFxuZnMvZXJvZnMvemRhdGEuYy0xODMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIEVST0ZTX0dFVF9CTE9DS1NfUkVBRE1PUkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1MC4xNjAxODUwNTdaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjkwNTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRVJPRlMgWm1hcCBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBzbyB0aGUgem1hcCBpcyBkZWZpbmVkIGluIGBmcy9lcm9mcy96bWFwLmNgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgaXQncyB1c2VkLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGZpbGUgc3RydWN0dXJlLCBhbmQga25vdyB0byBmaW5kIHRoZSBpbXBvcnRhbnQgc3R1ZmYsIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byBgZnMvZXJvZnMvem1hcC5jYC4gTGV0J3Mgc2tpcCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBmb3Igbm93IGFuZCBmb2N1cyBvbiB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGFuZCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaW4gb3JkZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgem1hcCwgd2hpY2ggaXMgdGhlIGtleSBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc2MzAsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1My4yOTMwOTMwOTdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTQyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHpfZXJvZnNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3ptYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy96bWFwLmMtOS1cXG5mcy9lcm9mcy96bWFwLmM6MTA6c3RydWN0IHpfZXJvZnNfbWFwcmVjb3JkZXIge1xcbmZzL2Vyb2ZzL3ptYXAuYy0xMS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbi0tXFxuZnMvZXJvZnMvem1hcC5jPTcxNT1zdGF0aWMgaW50IHpfZXJvZnNfbWFwX3Nhbml0eV9jaGVjayhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXJvZnMvem1hcC5jLTc1NS1cXG5mcy9lcm9mcy96bWFwLmM6NzU2OmludCB6X2Vyb2ZzX21hcF9ibG9ja3NfaXRlcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXJvZnNfbWFwX2Jsb2NrcyAqbWFwLFxcbmZzL2Vyb2ZzL3ptYXAuYy03NTctXFx0XFx0XFx0ICAgIGludCBmbGFncylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTMuMzYwMDQyNDc2WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTU4OTEyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3N1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBJIHNlZSB0aGF0IGB6X2Vyb2ZzX21hcF9ibG9ja3NfaXRlcmAgaXMgZGVmaW5lZCBhcyBub24tc3RhdGljLiBUaGUgcGF0Y2ggdG91Y2hlcyBgemRhdGEuY2AsIHdoaWNoIGhhcyBtZSB3b25kZXJpbmcgd2h5LiAgQWgsIGl0IG1vZGlmaWVzIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAgYW5kIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAgd2l0aGluIHRoYXQgZmlsZS4gU2luY2UgdGhlcmUgYXJlbid0IG1hbnkgb3RoZXIgdXNlZnVsIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB6ZGF0YS5jYCwgSSBjb3VsZCBlaXRoZXIgaWdub3JlIHRoZSBFUk9GUyBmb2N1c2VkIHN5bWJvbHMgZW50aXJlbHkgb3IgdXRpbGl6ZSBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0LiBXYWl0LCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgIGRvZXMgKm5vdCogZGlyZWN0bHkgY2FsbCBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiAgTGV0J3Mgc2VlLi4uIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGNhbGxzIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYCwgYW5kICp0aGF0KiBpbiB0dXJuIGNhbGxzIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAuIFJpZ2h0LCBhbmQgYHpfZXJvZnNfc2Nhbl9mb2xpb2AgaXMgY2FsbGVkIGJ5IGJvdGggYHpfZXJvZnNfcmVhZF9mb2xpb2AgYW5kIGB6X2Vyb2ZzX3JlYWRhaGVhZGAuIEdpdmVuIHRoYXQgYm90aCBvZiB0aG9zZSBhcmUgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb25zLCB0aGV5J3JlIGNhbGxlZCBieSBWRlMuICBUaGVyZWZvcmUsIEknbSBsZWFuaW5nIHRvd2FyZCBqdXN0IG9taXR0aW5nIHRoZSBFUk9GUyBmb2N1cyBzeW1ib2xzIHNpbmNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIHNlZW1zIG1hbmFnZWFibGUgd2l0aG91dCBleHBvc2luZyBhZGRpdGlvbmFsIGludGVybmFsIGRldGFpbHMuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjb25zaWRlciBgZnMveGZzL3hmc19xbS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIGluIHRoaXMgZmlsZS4gSSBzZWUgdGhhdCBgeGZzX3FtX3VubW91bnRgIGlzIG5vbi1zdGF0aWMsIGFuZCBzbyBpcyBgeGZzX3FtX3F1b3RhY2hlY2tgLiBJbnRlcmVzdGluZywgYHhmc19xbV9kcXVvdF9pc29sYXRlYCBpcyBzdGF0aWMuIFdhaXQsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgaXMgcGFzc2VkIHRvIGBsaXN0X2xydV93YWxrYC4gVGhhdCdzIGFuIGltcG9ydGFudCBkZXRhaWwgdG8gY29uc2lkZXIgcmVnYXJkaW5nIHN5bWJvbCBleHBvc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTkuMTE1OTM1OTE4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc0MjIxNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3FtX2RxdW90X2lzb2xhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzL3hmc19xbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfcW0uYz00MTI9c3RhdGljIGVudW0gbHJ1X3N0YXR1c1xcbmZzL3hmcy94ZnNfcW0uYzo0MTM6eGZzX3FtX2RxdW90X2lzb2xhdGUoXFxuZnMveGZzL3hmc19xbS5jLTQxNC1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0Kml0ZW0sXFxuLS1cXG5mcy94ZnMveGZzX3FtLmM9NDkxPXhmc19xbV9zaHJpbmtfc2NhbihcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYy01MDYtXFx0ZnJlZWQgPSBsaXN0X2xydV9zaHJpbmtfd2FsayhcXHUwMDI2cWktXFx1MDAzZXFpX2xydSwgc2MsXFxuZnMveGZzL3hmc19xbS5jOjUwNzpcXHRcXHRcXHRcXHQgICAgIHhmc19xbV9kcXVvdF9pc29sYXRlLCBcXHUwMDI2aXNvbCk7XFxuZnMveGZzL3hmc19xbS5jLTUwOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTkuMjIzMzYzMDk2WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODAwMjk2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB4ZnNfcW1fc2hyaW5rX3NjYW5gIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHhmc19xbV9zaHJpbmtfc2NhbmAuLi4gYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgXCJXaHkgaXNuJ3QgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZCBhcyBgc3RhdGljYD9cIiBJIG1lYW4sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXRzIHByaW1hcnkgcHVycG9zZSBpcyBpbnRlcm5hbCB0byB0aGUgWEZTIHF1b3RhIG1hbmFnZW1lbnQgY29kZS4gSXQncyBkZXNpZ25lZCB0byBiZSBhIGNvbXBvbmVudCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIFRoZXJlJ3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBhIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24uIElzIGl0IGNhbGxlZCBmcm9tIGVsc2V3aGVyZT8gUGVyaGFwcyBhcyBhIGNhbGxiYWNrLCBvciBtYXliZSBpdCdzIGV4cG9zZWQgZm9yIHNvbWUgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bnVzdWFsLCBkZWJ1Z2dpbmcgc2NlbmFyaW8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB2aXNpYmlsaXR5IGFuZCBjYWxsaW5nIGNvbnRleHRzIG9mIHRoaXMgZnVuY3Rpb24uIEknbSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSB0byBpZGVudGlmeSBhbGwgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW4gaW50ZW50aW9uYWwgcmVhc29uIGZvciB0aGUgYnJvYWRlciBzY29wZSwgb3IgaWYgdGhpcyBkZWNsYXJhdGlvbiBpcyBqdXN0IGxlZ2FjeSBjb2RlIHRoYXQgaGFzbid0IGJlZW4gcHJvcGVybHkgcmVmYWN0b3JlZC4gVGhlIGltcGxpY2F0aW9ucyBvZiBpdHMgdmlzaWJpbGl0eSBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhYmlsaXR5IG9mIHRoZSBxdW90YSBjb2RlLiBJZiBpdCBfaXNfIHVuaW50ZW50aW9uYWxseSBub24tc3RhdGljLCBmaXhpbmcgdGhhdCBjb3VsZCBoYXZlIGEgc3Vic3RhbnRpYWwgcG9zaXRpdmUgaW1wYWN0LCByZWR1Y2luZyB0aGUgY2hhbmNlIG9mIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9mIHNvbWVvbmUgb3V0c2lkZSB0aGUgeGZzIGNvZGViYXNlIHVzaW5nIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDIuNzAzMzk1MTM4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzg4MTkxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3FtX3Nocmlua19zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy94ZnNfcW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMveGZzX3FtLmM9NDkwPXN0YXRpYyB1bnNpZ25lZCBsb25nXFxuZnMveGZzL3hmc19xbS5jOjQ5MTp4ZnNfcW1fc2hyaW5rX3NjYW4oXFxuZnMveGZzL3hmc19xbS5jLTQ5Mi1cXHRzdHJ1Y3Qgc2hyaW5rZXJcXHRcXHQqc2hyaW5rLFxcbi0tXFxuZnMveGZzL3hmc19xbS5jPTc2NT14ZnNfcW1faW5pdF9xdW90YWluZm8oXFxuLS1cXG5mcy94ZnMveGZzX3FtLmMtODM0LVxcdHFpbmYtXFx1MDAzZXFpX3Nocmlua2VyLVxcdTAwM2Vjb3VudF9vYmplY3RzID0geGZzX3FtX3Nocmlua19jb3VudDtcXG5mcy94ZnMveGZzX3FtLmM6ODM1OlxcdHFpbmYtXFx1MDAzZXFpX3Nocmlua2VyLVxcdTAwM2VzY2FuX29iamVjdHMgPSB4ZnNfcW1fc2hyaW5rX3NjYW47XFxuZnMveGZzL3hmc19xbS5jLTgzNi1cXHRxaW5mLVxcdTAwM2VxaV9zaHJpbmtlci1cXHUwMDNlcHJpdmF0ZV9kYXRhID0gcWluZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDIuOTQyMjIwOTYzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDgyMDYxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUaGUgQ29kZSBpcyBTdGFnbmFudCoqXG5cblJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBoaXRzIG1lIGlzIHRoYXQgdGhlIHNpdHVhdGlvbiBpcy4uLiBzdGF0aWMuIE5vdCBtdWNoIGhhcHBlbmluZywgbm8gb2J2aW91cyBjaGFuZ2VzLCBubyBmcmVzaCBhbmdsZXMuIFRoZSBjb2RlLCBhcyBpdCBzdGFuZHMsIGZlZWxzIHN0YWduYW50LCBsaWtlIGEgc25hcHNob3QgaW4gdGltZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGFjdGl2ZSBkZXZlbG9wbWVudCBpcywgaWYgdGhlcmUgaXMgYW55LiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMsIGJhc2VkIG9uIHRoZSB2ZXJ5IHNwYXJzZSBpbmZvcm1hdGlvbiwgdGhpcyBpcyBhIGNvZGUgYmFzZSB0aGF0IG1heSBuZWVkIHNvbWUgZnJlc2ggZXllcyB0byByZXZpZXcgaXQuXG5cblRoZW4sIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGZzL3hmcy94ZnNfYnVmLmNgLiBNeSB0aG91Z2h0cyBhcmUgZHJhd24gdG8gdGhpcyBzcGVjaWZpYyBmaWxlIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29kZWJhc2UuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuIEl0J3MgdGhlIGJ1ZmZlciBsYXllci4gSSBrbm93IHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHBhcnRpY3VsYXIgZmlsZSwgaXRzIHJvbGUgaW4gSS9PLCBjYWNoaW5nLCBhbmQgYmxvY2sgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBBbnkgaXNzdWVzIGhlcmUgY2FuIHJpcHBsZSBvdXR3YXJkcyBkcmFtYXRpY2FsbHkuIFRoYXQncyBhIGtleSBhcmVhIHRvIHN0YXJ0IGRpZ2dpbmcgaW50by4gUGVyaGFwcyBpdCBpcyBhIHBsYWNlIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjA2LjM1MDQzMDU2N1oiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MzM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX2J1Zl9zdGFsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMveGZzX2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfYnVmLmM9Mjc9c3RydWN0IGttZW1fY2FjaGUgKnhmc19idWZfY2FjaGU7XFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jLTMxLSAqXFxuZnMveGZzL3hmc19idWYuYzozMjogKiB4ZnNfYnVmX3N0YWxlOlxcbmZzL3hmcy94ZnNfYnVmLmMtMzMtICpcXHRiX3NlbWEgKGNhbGxlciBob2xkcylcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9NjY9dm9pZFxcbmZzL3hmcy94ZnNfYnVmLmM6Njc6eGZzX2J1Zl9zdGFsZShcXG5mcy94ZnMveGZzX2J1Zi5jLTY4LVxcdHN0cnVjdCB4ZnNfYnVmXFx0KmJwKVxcbi0tXFxuZnMveGZzL3hmc19idWYuYz02NjA9eGZzX2J1Zl9yZWFkX21hcChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtNzE4LVxcdFxcdGJwLVxcdTAwM2ViX2ZsYWdzIFxcdTAwMjY9IH5YQkZfRE9ORTtcXG5mcy94ZnMveGZzX2J1Zi5jOjcxOTpcXHRcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTcyMC1cXHRcXHR4ZnNfYnVmX3JlbHNlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTAyNT14ZnNfYnVmX2lvZW5kX2hhbmRsZV9lcnJvcihcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTA5My1vdXRfc3RhbGU6XFxuZnMveGZzL3hmc19idWYuYzoxMDk0OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTA5NS1cXHRicC1cXHUwMDNlYl9mbGFncyB8PSBYQkZfRE9ORTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTE5ND14ZnNfYnVmX2ZhaWwoXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDAtXFx0YnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNj0gflhCRl9ET05FO1xcbmZzL3hmcy94ZnNfYnVmLmM6MTIwMTpcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDItXFx0eGZzX2J1Zl9pb2Vycm9yKGJwLCAtRUlPKTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTM1Nz14ZnNfYnVmX3N1Ym1pdChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTQwNy1cXHRicC1cXHUwMDNlYl9mbGFncyBcXHUwMDI2PSB+WEJGX0RPTkU7XFxuZnMveGZzL3hmc19idWYuYzoxNDA4OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTQwOS1lbmRfaW86XFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jPTE0Mjg9X194ZnNfYnVmX21hcmtfY29ycnVwdChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTQzNC1cXHR4ZnNfYnVmX2NvcnJ1cHRpb25fZXJyb3IoYnAsIGZhKTtcXG5mcy94ZnMveGZzX2J1Zi5jOjE0MzU6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xNDM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDYuNDEyODcxMzQ2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjI2NTEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBLZXJuZWwgRnVuY3Rpb24gQ2FuZGlkYXRlcyBmb3IgUGF0Y2ggSW5jbHVzaW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbGlzdCwgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgdGhpcyBrZXJuZWwgcGF0Y2guIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGEgZmV3LCBhbmQgSSBub3RlZCBkb3duIGB4ZnNfYnVmX3N0YWxlYCwgYW5kIHRoZW4gSSByZW1lbWJlcmVkIGBmcy9jZXBoL2Rpci5jYC4uLiBhaCwgYGNlcGhfdHJpbV9kZW50cmllc2AgaXMgYWxzbyBub24tc3RhdGljLCBzbyB0aG9zZSBhcmUgdHdvIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIuIEFkZGluZyBgZ2ZzMl9nbG9ja190aGF3YCBhbmQgYGdmczJfcXVvdGFfc3luY2AgdG8gdGhlIHBvdGVudGlhbCBsaXN0IGFzIHdlbGwuXG5cbknigJltIGFsc28ga2VlcGluZyBhbiBleWUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC4gVGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoZSBwYXRjaCBiZWhhdmVzIHByb3Blcmx5LlxuXG5XYWl0LCBob2xkIG9uLi4uIGBsb2NrcmVmX2lzX2RlYWRgIGlzIGFsc28gdXNlZCBpbiBgZnMvZGNhY2hlLmNgISBJIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdDogYGRlbnRyeV9mcmVlYCwgYGZhc3RfZHB1dGAsIGBzZWxlY3RfY29sbGVjdGAsIGBzZWxlY3RfY29sbGVjdDJgLCBgc2hyaW5rX2RjYWNoZV90cmVlYCwgYHNocmlua19kY2FjaGVfZm9yX3Vtb3VudGAsIGFuZCBgZF9hbGxvY19wYXJhbGxlbGAuIFRoYXQncyBhIGxvdCBvZiBjb3JlIFZGUyBmdW5jdGlvbnMuIEl0IGRvZXMgbWFrZSBtZSB3b25kZXIgaWYgYW55IG9mIHRob3NlIHdvdWxkIGJlIHdvcnRoIGluY2x1ZGluZywgYnV0IHRoZSBwcm9tcHQgc2F5cyB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBhdm9pZCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50YCBpcyBub24tc3RhdGljLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIHRoaW5rIGFib3V0LCBhcyBpcyBgZF9hbGxvY19wYXJhbGxlbGAuIEJ1dCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpdCBzb3VuZHMgbGlrZSB0aG9zZSBhcmUgcHJvYmFibHkgb3V0IGJlY2F1c2UgdGhleSBhcmUgaG90LXBhdGggb3IgZ2VuZXJpYy4gU28gbGV0J3Mgc3RpY2sgd2l0aCB0aGUgbW9yZSBzcGVjaWZpYyBjYXNlcy5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gdGhvc2UgZWFybGllciBmdW5jdGlvbnM6IGB4ZnNfYnVmX3N0YWxlYCDigJMgc3RpbGwgbm9uLXN0YXRpYy4gYGdmczJfcXVvdGFfc3luY2Ag4oCTIGFsc28gbm9uLXN0YXRpYy4gYGdmczJfZ2xvY2tfdGhhd2Ag4oCTIG5vbi1zdGF0aWMuIGBjZXBoX3RyaW1fZGVudHJpZXNgIOKAkyB5ZXAsIG5vbi1zdGF0aWMuIE9rYXksIHRob3NlIGFsbCBzdGlsbCBsb29rIGdvb2QgYXMgbW9yZSBzcGVjaWZpYyBjYW5kaWRhdGVzLlxuXG5BbHJpZ2h0LCBub3cgbGV0J3MgbWFrZSBzdXJlIHRoYXQgYGxvY2tyZWZfaXNfZGVhZGAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9sb2NrcmVmLmhgLiBZZXMsIHRoZSBwYXRjaCBhZGRzIGl0LCBzbyB0aGF0IGNoZWNrcyBvdXQuXG5cbkZpbmFsbHksIEnigJlsbCB0YWtlIGEgbG9vayB0byBzZWUgaWYgYW55IGFkZGl0aW9uYWwgY29uZmlnIGRlcGVuZGVuY2llcyBtYXkgYmUgbmVlZGVkLiBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4sIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEdGUzJfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQsIHNvIHRoZXkgc2hvdWxkbid0IGJlIGFuIGlzc3VlLiBMZXQgbWUgYWxzbyBkb3VibGUgY2hlY2sgYGZzL2dmczIvS2NvbmZpZ2AgZm9yIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYC4gQW5kIGxvb2tzIGxpa2UgZXZlcnl0aGluZyBpcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MTQuMjc1NTI1MTkxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTk1ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnPTI9Y29uZmlnIEdGUzJfRlNcXG4tLVxcbmZzL2dmczIvS2NvbmZpZy0yNi1cXG5mcy9nZnMyL0tjb25maWc6Mjc6Y29uZmlnIEdGUzJfRlNfTE9DS0lOR19ETE1cXG5mcy9nZnMyL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiR0ZTMiBETE0gbG9ja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MTQuMzY1NDg4OTM5WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMyNjk2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYEdGUzJfRlNfTE9DS0lOR19ETE1gIGNvbmNlcHQuIFJpZ2h0LCBzbyBteSBpbnR1aXRpb24gaXMgc2F5aW5nIHRoYXQgdGhpcyAqYWJzb2x1dGVseSogcmVsaWVzIG9uIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIsIG9yIGBETE1gLiBUaGF0IGZlZWxzIHJpZ2h0LCBhbmQgSSdtIHByZXR0eSBzdXJlIEkndmUgc2VlbiBpdCB3aXJlZCB1cCB0aGF0IHdheSBiZWZvcmUuIEJ1dCwgbGV0J3Mgbm90IGp1c3QgdHJ1c3QgZ3V0IGZlZWxpbmcgaGVyZSwgZXZlbiBhcyBhIGhpZ2hseSBleHBlcmllbmNlZCBwZXJzb24gaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gc29saWQgb24gdGhpcy4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgYmV0d2VlbiBgR0ZTMl9GU19MT0NLSU5HX0RMTWAgYW5kIGBETE1gLiBJJ2xsIGRvIGEgcXVpY2sgc2NhbiB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTkzOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjE3LjUzODc2MDU0OVoiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1MTc4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnPTI3PWNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXFxuZnMvZ2ZzMi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkdGUzIgRExNIGxvY2tpbmdcXFwiXFxuZnMvZ2ZzMi9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gKEdGUzJfRlMhPW4pIFxcdTAwMjZcXHUwMDI2IE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5mcy9nZnMyL0tjb25maWctMzAtXFx0XFx0Q09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgU1lTRlMgXFx1MDAyNlxcdTAwMjYgKERMTT15IHx8IERMTT1HRlMyX0ZTKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoxNy42MDYyODU3NDdaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTQ4ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gYXMgSSB3b3VsZCBteXNlbGYuXG5cbioqRW5hYmxpbmcgRGVwZW5kZW5jaWVzIGZvciBFUk9GUyBPcHRpbWl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBidXNpbmVzcy4gRnJvbSB0aGUgbG9va3Mgb2YgaXQsIHdlIG5lZWQgdG8gZW5zdXJlIHNvbWUgZGVwZW5kZW5jaWVzIGFyZSBlbmFibGVkIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gU3BlY2lmaWNhbGx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRExNYCBhbmQgYENPTkZJR0ZTX0ZTYC4gUmlnaHQsIHNvIEknbGwgZ28gYWhlYWQgYW5kIGFkZCB0aG9zZSB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIHRoZXkncmUgYWN0aXZhdGVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gQmVzdCB0byB0YWtlIGNhcmUgb2YgdGhlIGZvdW5kYXRpb24gZWFybHkgb24uIFRoZW4sIHRvIGJlIHRob3JvdWdoLCBJJ2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgZnMvZXJvZnMvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBFUk9GU19GU19aSVBgIHNldHRpbmcuIE5vIHBvaW50IGdvaW5nIGFoZWFkIGJsaW5kLCBiZXN0IHRvIGNvbmZpcm0gdGhlIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjIwLjc5MTc3NjAxN1oiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1OTk2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2Vyb2ZzL0tjb25maWctNi1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9NTA9Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXFxuZnMvZXJvZnMvS2NvbmZpZy01MS1cXHRib29sIFxcXCJFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjUyOlxcdGRlcGVuZHMgb24gRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTUzLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9NjA9Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNjMtXFx0ZGVmYXVsdCB5XFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTcxPWNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6NzM6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19YQVRUUlxcbmZzL2Vyb2ZzL0tjb25maWctNzQtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcXG5mcy9lcm9mcy9LY29uZmlnLTg2LVxcdGJvb2wgXFxcIkVST0ZTIFNlY3VyaXR5IExhYmVsc1xcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjg3OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcXG5mcy9lcm9mcy9LY29uZmlnLTg4LVxcdGRlZmF1bHQgeVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz05OD1jb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcXG5mcy9lcm9mcy9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjEwMDpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTXFxuZnMvZXJvZnMvS2NvbmZpZy0xMDEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTExMj1jb25maWcgRVJPRlNfRlNfWklQXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXFx0Ym9vbCBcXFwiRVJPRlMgRGF0YSBDb21wcmVzc2lvbiBTdXBwb3J0XFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTExNS1cXHRkZWZhdWx0IHlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTIyPWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcXG5mcy9lcm9mcy9LY29uZmlnLTEyNS1cXHRkZWZhdWx0IHlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTM0PWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQV9ERUZBVUxUX01BWF9TVFJFQU1TXFxuZnMvZXJvZnMvS2NvbmZpZy0xMzUtXFx0aW50IFxcXCJFUk9GUyBMWk1BIGRlZmF1bHQgbWF4aW11bSBkZWNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxMzY6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTM3LVxcdHJhbmdlIDEgTlJfQ1BVU1xcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz0xNDg9Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE1MDpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTU5PWNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE2MTpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTYyLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTcwPWNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxNzI6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcXG5mcy9lcm9mcy9LY29uZmlnLTE3My1cXHRoZWxwXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTE4ND1jb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTg3LVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6MTk1OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNfWklQIFxcdTAwMjZcXHUwMDI2IEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxcbmZzL2Vyb2ZzL0tjb25maWctMTk2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz0yMDM9Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDU6XFx0ZGVwZW5kcyBvbiBFUk9GU19GUyBcXHUwMDI2XFx1MDAyNiBFUk9GU19GU19YQVRUUlxcbmZzL2Vyb2ZzL0tjb25maWctMjA2LVxcdHNlbGVjdCBGU19TVEFDS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoyMC44NjAzODA4NzVaIiwiU2VxIjo2NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NTYwOTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBTY29wZSoqXG5cbkFscmlnaHQsIHNvIGBFUk9GU19GU19aSVBgIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0J3MgY2xlYXJseSBhIGNoaWxkIG9mIGBFUk9GU19GU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBFUk9GUyBmaWxlc3lzdGVtIGlzIHByZXNlbnQgZmlyc3QsIG9idmlvdXNseS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24ndCBzZWUgYW55IGNvbXBsZXhpdHkgdGhlcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgZWxzZSBxdWlja2x5LiBJIGhhdmUgdG8gbG9vayBpbnRvIGBmcy94ZnMvS2NvbmZpZ2AgdG8gc2VlIGFib3V0IGBYRlNfUVVPVEFgLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIHF1b3RhIGludGVncmF0aW9uIG9yIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gaWYgaW5kaXJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmaWxlIGhhcyB0byBzYXkuIE5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg2NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjIzLjcyNTk5MjcyMVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyNDY3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL3hmcy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL3hmcy9LY29uZmlnLTUtXFx0c2VsZWN0IEVYUE9SVEZTXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0yNT1jb25maWcgWEZTX1NVUFBPUlRfVjRcXG5mcy94ZnMvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJTdXBwb3J0IGRlcHJlY2F0ZWQgVjQgKGNyYz0wKSBmb3JtYXRcXFwiXFxuZnMveGZzL0tjb25maWc6Mjc6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IG5cXG4tLVxcbmZzL3hmcy9LY29uZmlnPTUwPWNvbmZpZyBYRlNfU1VQUE9SVF9BU0NJSV9DSVxcbmZzL3hmcy9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZGVwcmVjYXRlZCBjYXNlLWluc2Vuc2l0aXZlIGFzY2lpIChhc2NpaS1jaT0xKSBmb3JtYXRcXFwiXFxuZnMveGZzL0tjb25maWc6NTI6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy01My1cXHRkZWZhdWx0IG5cXG4tLVxcbmZzL3hmcy9LY29uZmlnPTc3PWNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG5mcy94ZnMvS2NvbmZpZzo3OTpcXHRkZXBlbmRzIG9uIFhGU19GU1xcbmZzL3hmcy9LY29uZmlnLTgwLVxcdHNlbGVjdCBRVU9UQUNUTFxcbi0tXFxuZnMveGZzL0tjb25maWc9OTU9Y29uZmlnIFhGU19QT1NJWF9BQ0xcXG5mcy94ZnMvS2NvbmZpZy05Ni1cXHRib29sIFxcXCJYRlMgUE9TSVggQUNMIHN1cHBvcnRcXFwiXFxuZnMveGZzL0tjb25maWc6OTc6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy05OC1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xMDU9Y29uZmlnIFhGU19SVFxcbmZzL3hmcy9LY29uZmlnLTEwNi1cXHRib29sIFxcXCJYRlMgUmVhbHRpbWUgc3Vidm9sdW1lIHN1cHBvcnRcXFwiXFxuZnMveGZzL0tjb25maWc6MTA3OlxcdGRlcGVuZHMgb24gWEZTX0ZTXFxuZnMveGZzL0tjb25maWctMTA4LVxcdGRlZmF1bHQgQkxLX0RFVl9aT05FRFxcbi0tXFxuZnMveGZzL0tjb25maWc9MTQ3PWNvbmZpZyBYRlNfT05MSU5FX1NDUlVCXFxuLS1cXG5mcy94ZnMvS2NvbmZpZy0xNDktXFx0ZGVmYXVsdCB5XFxuZnMveGZzL0tjb25maWc6MTUwOlxcdGRlcGVuZHMgb24gWEZTX0ZTXFxuZnMveGZzL0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gVE1QRlMgXFx1MDAyNlxcdTAwMjYgU0hNRU1cXG5mcy94ZnMvS2NvbmZpZy0xNTItXFx0c2VsZWN0IFhGU19MSVZFX0hPT0tTXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xNjQ9Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJfU1RBVFNcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE2Ni1cXHRkZWZhdWx0IHlcXG5mcy94ZnMvS2NvbmZpZzoxNjc6XFx0ZGVwZW5kcyBvbiBYRlNfT05MSU5FX1NDUlVCXFxuZnMveGZzL0tjb25maWc6MTY4OlxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG5mcy94ZnMvS2NvbmZpZy0xNjktXFx0aGVscFxcbi0tXFxuZnMveGZzL0tjb25maWc9MTc5PWNvbmZpZyBYRlNfT05MSU5FX1JFUEFJUlxcbi0tXFxuZnMveGZzL0tjb25maWctMTgxLVxcdGRlZmF1bHQgeVxcbmZzL3hmcy9LY29uZmlnOjE4MjpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiBYRlNfT05MSU5FX1NDUlVCXFxuZnMveGZzL0tjb25maWctMTgzLVxcdHNlbGVjdCBYRlNfQlRSRUVfSU5fTUVNXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xOTQ9Y29uZmlnIFhGU19XQVJOXFxuZnMveGZzL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlhGUyBWZXJib3NlIFdhcm5pbmdzXFxcIlxcbmZzL3hmcy9LY29uZmlnOjE5NjpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiAhWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMTk3LVxcdGhlbHBcXG4tLVxcbmZzL3hmcy9LY29uZmlnPTIwNz1jb25maWcgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlhGUyBEZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG5mcy94ZnMvS2NvbmZpZzoyMDk6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0yMTAtXFx0aGVscFxcbi0tXFxuZnMveGZzL0tjb25maWc9MjIwPWNvbmZpZyBYRlNfREVCVUdfRVhQRU5TSVZFXFxuZnMveGZzL0tjb25maWctMjIxLVxcdGJvb2wgXFxcIlhGUyBleHBlbnNpdmUgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5mcy94ZnMvS2NvbmZpZzoyMjI6XFx0ZGVwZW5kcyBvbiBYRlNfRlMgXFx1MDAyNlxcdTAwMjYgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjIzLVxcdGhlbHBcXG4tLVxcbmZzL3hmcy9LY29uZmlnPTIzMj1jb25maWcgWEZTX0FTU0VSVF9GQVRBTFxcbi0tXFxuZnMveGZzL0tjb25maWctMjM0LVxcdGRlZmF1bHQgeVxcbmZzL3hmcy9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiBYRlNfREVCVUdcXG5mcy94ZnMvS2NvbmZpZy0yMzYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoyMy43ODgyNDg4M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUwMDg0Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBDZXBoIEZTKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgWEZTX1FVT1RBYC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQncyBqdXN0IGEgZGVwZW5kZW5jeSBvZiB0aGUgY29yZSBgWEZTX0ZTYCBmdW5jdGlvbmFsaXR5LCBhcyBleHBlY3RlZC4gTm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHF1b3RhIGluZm9ybWF0aW9uIGZpdHMgaW4gcmVsYXRpb24gdG8gb3RoZXIgZmlsZSBzeXN0ZW1zLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGBLY29uZmlnYCBmb3IgdGhlIENlcGggZmlsZSBzeXN0ZW0uIExldCdzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBob3cgdGhleSd2ZSBpbnRlZ3JhdGVkIHF1b3RhIHN1cHBvcnQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIHRpZ2h0bHkgY291cGxlZCwgb3IgbW9yZSBsb29zZWx5IGhhbmRsZWQuIEknbGwgbmVlZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjI2LjYzODMzNjEyN1oiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzOTQ1MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcXG5mcy9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVxcXCJcXG5mcy9jZXBoL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVRcXG5mcy9jZXBoL0tjb25maWctNS1cXHRzZWxlY3QgQ0VQSF9MSUJcXG4tLVxcbmZzL2NlcGgvS2NvbmZpZz0yMD1jb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuZnMvY2VwaC9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gQ0VQSF9GUz1tIFxcdTAwMjZcXHUwMDI2IEZTQ0FDSEUgfHwgQ0VQSF9GUz15IFxcdTAwMjZcXHUwMDI2IEZTQ0FDSEU9eVxcbmZzL2NlcGgvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjk9Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXFxuZnMvY2VwaC9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIkNlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvY2VwaC9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZy0zMi1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mzk9Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcXG5mcy9jZXBoL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQ2VwaEZTIFNlY3VyaXR5IExhYmVsc1xcXCJcXG5mcy9jZXBoL0tjb25maWc6NDE6XFx0ZGVwZW5kcyBvbiBDRVBIX0ZTIFxcdTAwMjZcXHUwMDI2IFNFQ1VSSVRZXFxuZnMvY2VwaC9LY29uZmlnLTQyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MjYuNzAxNzQwOTk1WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzY5NjI3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2VybmVsIENvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIHN5bWJvbHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgZmlsZSBzeXN0ZW1zLiBGaXJzdCwgYENFUEhfRlNgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBJTkVUYCwgdGhhdCdzIGtleS4gTm93LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIHN5bWJvbHMgSSB3YW50IHRvIGNvbmZpcm0gYXJlOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBvZiBjb3Vyc2UgYENFUEhfRlNgLiBUaGVzZSBhcmUgdGhlIGZvdW5kYXRpb25hbCBmaWxlIHN5c3RlbSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdmVyaWZ5IGFyZSBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3QgYGNlcGhfdHJpbV9kZW50cmllc2AsIGB4ZnNfYnVmX3N0YWxlYCwgYGdmczJfZ2xvY2tfdGhhd2AsIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGVpciBsb2NhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCwgeWVzLCBgeGZzX2J1Zl9zdGFsZWAgaXMgaW4gYGZzL3hmcy94ZnNfYnVmLmNgLCBqdXN0IGFzIEkgZXhwZWN0ZWQuIGBnZnMyX2dsb2NrX3RoYXdgIGlzIGluIGBmcy9nZnMyL2dsb2NrLmNgLiBgZ2ZzMl9xdW90YV9zeW5jYCBsaXZlcyBpbiBgZnMvZ2ZzMi9xdW90YS5jYCwgYW5kIGZpbmFsbHksIGBjZXBoX3RyaW1fZGVudHJpZXNgIGlzIHR1Y2tlZCBhd2F5IGluIGBmcy9jZXBoL2Rpci5jYC5cblxuT2theSwgbmV4dCBzdGVwLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYHhmc19idWZfc3RhbGVgLiBLbm93aW5nIHdoYXQgY2FsbHMgdGhhdCBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBoZWxwZnVsLiBUaGlzIHdpbGwgaGVscCB3aXRoIGRlYnVnZ2luZyBsYXRlciBhbmQgdW5kZXJzdGFuZGluZyB3aGF0IG1pZ2h0IGJlIGltcGFjdGVkIGJ5IG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjMxLjU3ODcwNjMxN1oiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAzMzYwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX2J1Zl9zdGFsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmM9NTYyPXhmc19hdHRyX3JtdHZhbF9zdGFsZShcXG4tLVxcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTg4LVxcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmM6NTg5OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTkwLVxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM9NTY3PXhyZXBfeGF0dHJfcmVjb3Zlcl9ibG9jayhcXG4tLVxcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jLTYwMi1cXHRpZiAoYnAtXFx1MDAzZWJfb3BzID09IE5VTEwpXFxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM6NjAzOlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jLTYwNC1cXG4tLVxcbmZzL3hmcy9zY3J1Yi9yZWFwLmM9MTMxND14cmVhcF9ibWFwaV9iaW52YWwoXFxuLS1cXG5mcy94ZnMvc2NydWIvcmVhcC5jLTEzOTEtXFx0XFx0XFx0fSBlbHNlIHtcXG5mcy94ZnMvc2NydWIvcmVhcC5jOjEzOTI6XFx0XFx0XFx0XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3NjcnViL3JlYXAuYy0xMzkzLVxcdFxcdFxcdFxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0yNz1zdHJ1Y3Qga21lbV9jYWNoZSAqeGZzX2J1Zl9jYWNoZTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMzEtICpcXG5mcy94ZnMveGZzX2J1Zi5jOjMyOiAqIHhmc19idWZfc3RhbGU6XFxuZnMveGZzL3hmc19idWYuYy0zMy0gKlxcdGJfc2VtYSAoY2FsbGVyIGhvbGRzKVxcbi0tXFxuZnMveGZzL3hmc19idWYuYz02Nj12b2lkXFxuZnMveGZzL3hmc19idWYuYzo2Nzp4ZnNfYnVmX3N0YWxlKFxcbmZzL3hmcy94ZnNfYnVmLmMtNjgtXFx0c3RydWN0IHhmc19idWZcXHQqYnApXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jPTY2MD14ZnNfYnVmX3JlYWRfbWFwKFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy03MTgtXFx0XFx0YnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNj0gflhCRl9ET05FO1xcbmZzL3hmcy94ZnNfYnVmLmM6NzE5OlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtNzIwLVxcdFxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMDI1PXhmc19idWZfaW9lbmRfaGFuZGxlX2Vycm9yKFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xMDkzLW91dF9zdGFsZTpcXG5mcy94ZnMveGZzX2J1Zi5jOjEwOTQ6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xMDk1LVxcdGJwLVxcdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMTk0PXhmc19idWZfZmFpbChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTIwMC1cXHRicC1cXHUwMDNlYl9mbGFncyBcXHUwMDI2PSB+WEJGX0RPTkU7XFxuZnMveGZzL3hmc19idWYuYzoxMjAxOlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTIwMi1cXHR4ZnNfYnVmX2lvZXJyb3IoYnAsIC1FSU8pO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMzU3PXhmc19idWZfc3VibWl0KFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xNDA3LVxcdGJwLVxcdTAwM2ViX2ZsYWdzIFxcdTAwMjY9IH5YQkZfRE9ORTtcXG5mcy94ZnMveGZzX2J1Zi5jOjE0MDg6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xNDA5LWVuZF9pbzpcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTQyOD1fX3hmc19idWZfbWFya19jb3JydXB0KFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xNDM0LVxcdHhmc19idWZfY29ycnVwdGlvbl9lcnJvcihicCwgZmEpO1xcbmZzL3hmcy94ZnNfYnVmLmM6MTQzNTpcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTE0MzYtfVxcbi0tXFxuZnMveGZzL3hmc19idWYuaD0zMDM9c3RhdGljIGlubGluZSB2b2lkIHhmc19idWZfemVybyhzdHJ1Y3QgeGZzX2J1ZiAqYnAsIHNpemVfdCBib2ZmLCBzaXplX3QgYnNpemUpXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5oLTMwNy1cXG5mcy94ZnMveGZzX2J1Zi5oOjMwODpleHRlcm4gdm9pZCB4ZnNfYnVmX3N0YWxlKHN0cnVjdCB4ZnNfYnVmICpicCk7XFxuZnMveGZzL3hmc19idWYuaC0zMDktXFxuLS1cXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYz0xMDMxPXhsb2dfcmVjb3Zlcl9idWZfY29tbWl0X3Bhc3MyKFxcbi0tXFxuZnMveGZzL3hmc19idWZfaXRlbV9yZWNvdmVyLmMtMTE2Mi1cXHQgICAgKEJCVE9CKGJwLVxcdTAwM2ViX2xlbmd0aCkgIT0gTV9JR0VPKGxvZy1cXHUwMDNlbF9tcCktXFx1MDAzZWlub2RlX2NsdXN0ZXJfc2l6ZSkpIHtcXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYzoxMTYzOlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmX2l0ZW1fcmVjb3Zlci5jLTExNjQtXFx0XFx0ZXJyb3IgPSB4ZnNfYndyaXRlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfaW5vZGUuYz0xMTA3PXhmc19pbmFjdGl2ZV9kaXIoXFxuLS1cXG5mcy94ZnMveGZzX2lub2RlLmMtMTEzOC1cXG5mcy94ZnMveGZzX2lub2RlLmM6MTEzOTpcXHRcXHRcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2lub2RlLmMtMTE0MC1cXHRcXHRcXHR4ZnNfYnVmX3JlbHNlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM9MTE2PXhmc190cmFuc19nZXRfYnVmX21hcChcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQxLVxcdFxcdGlmICh4ZnNfaXNfc2h1dGRvd24odHAtXFx1MDAzZXRfbW91bnRwKSkge1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM6MTQyOlxcdFxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQzLVxcdFxcdFxcdGJwLVxcdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xcbi0tXFxuZnMveGZzL3hmc190cmFuc19idWYuYz01NjU9eGZzX3RyYW5zX2JpbnZhbChcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtNTkyLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM6NTkzOlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtNTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjozMS42NDkwNDc1NzVaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjg1MjE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqWEZTIEJ1ZiBTdGFsZSBJbnZlc3RpZ2F0aW9uIEZvY3VzKipcblxuT2theSwgc28gYHhmc19idWZfc3RhbGVgIGlzIGNhbGxlZCBhbGwgb3ZlciB0aGUgcGxhY2UuIFRoYXQncyBhIGNsYXNzaWMgXCJzbWVsbHlcIiBmdW5jdGlvbiwgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLiBJdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBpc3N1ZSB0aGF0J3MgbWFuaWZlc3RpbmcgaW4gdmFyaW91cyBsb2NhdGlvbnMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgc3BlY2lmaWMgY29udGV4dCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSB0aGluayBhIGdvb2QgcG9pbnQgb2YgYXR0YWNrIGlzIGBnZnMyX3F1b3RhX3N5bmNgLCBiZWNhdXNlIEkgaGF2ZSBhbiBpbnR1aXRpb24gdGhhdCBpdCByZWxhdGVzIHRvIHN0YWxlIGJ1ZmZlciBpc3N1ZXMgaW4gcXVvdGFzLiBMZXQncyBzZWUgaWYgdGhpcyBodW5jaCBwYW5zIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjozNC45NzU5MDM4MjFaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTM0OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdmczJfcXVvdGFfc3luY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9nZnMyL3F1b3RhLmM9MTI5OD12b2lkIGdmczJfcXVvdGFfY2hhbmdlKHN0cnVjdCBnZnMyX2lub2RlICppcCwgczY0IGNoYW5nZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxcbmZzL2dmczIvcXVvdGEuYzoxMzI0OmludCBnZnMyX3F1b3RhX3N5bmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXFxuZnMvZ2ZzMi9xdW90YS5jLTEzMjUte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTE1ODg9aW50IGdmczJfcXVvdGFkKHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTYxOS1cXHRcXHRcXHQvKiBVcGRhdGUgdGhlIHF1b3RhIGZpbGUgKi9cXG5mcy9nZnMyL3F1b3RhLmM6MTYyMDpcXHRcXHRcXHRlcnJvciA9IGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9xdW90YS5jLTE2MjEtXFx0XFx0XFx0cXVvdGFkX2Vycm9yKHNkcCwgXFxcInN5bmNcXFwiLCBlcnJvcik7XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmM9MTgxNj1jb25zdCBzdHJ1Y3QgcXVvdGFjdGxfb3BzIGdmczJfcXVvdGFjdGxfb3BzID0ge1xcbmZzL2dmczIvcXVvdGEuYzoxODE3OlxcdC5xdW90YV9zeW5jICAgICA9IGdmczJfcXVvdGFfc3luYyxcXG5mcy9nZnMyL3F1b3RhLmMtMTgxOC1cXHQuZ2V0X3N0YXRlXFx0PSBnZnMyX3F1b3RhX2dldF9zdGF0ZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuaD0yOD12b2lkIGdmczJfcXVvdGFfY2hhbmdlKHN0cnVjdCBnZnMyX2lub2RlICppcCwgczY0IGNoYW5nZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuaC0zMC1cXG5mcy9nZnMyL3F1b3RhLmg6MzE6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7XFxuZnMvZ2ZzMi9xdW90YS5oLTMyLWludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZCk7XFxuLS1cXG5mcy9nZnMyL3N1cGVyLmM9NTM5PXZvaWQgZ2ZzMl9tYWtlX2ZzX3JvKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbi0tXFxuZnMvZ2ZzMi9zdXBlci5jLTU0OC1cXHRpZiAobG9nX3dyaXRlX2FsbG93ZWQpIHtcXG5mcy9nZnMyL3N1cGVyLmM6NTQ5OlxcdFxcdGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9zdXBlci5jLTU1MC1cXHRcXHRnZnMyX3N0YXRmc19zeW5jKHNkcC1cXHUwMDNlc2RfdmZzLCAwKTtcXG4tLVxcbmZzL2dmczIvc3VwZXIuYz02NTg9c3RhdGljIGludCBnZnMyX3N5bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpXFxuLS1cXG5mcy9nZnMyL3N1cGVyLmMtNjYxLVxcbmZzL2dmczIvc3VwZXIuYzo2NjI6XFx0Z2ZzMl9xdW90YV9zeW5jKHNiLCAtMSk7XFxuZnMvZ2ZzMi9zdXBlci5jLTY2My1cXHRpZiAod2FpdClcXG4tLVxcbmZzL2dmczIvc3lzLmM9MjMxPXN0YXRpYyBzc2l6ZV90IHF1b3RhX3N5bmNfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1ZixcXG4tLVxcbmZzL2dmczIvc3lzLmMtMjQ1LVxcbmZzL2dmczIvc3lzLmM6MjQ2OlxcdGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9zeXMuYy0yNDctXFx0cmV0dXJuIGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MzUuMDQ2MDQ0MTdaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1Njk1NDgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBHRlMyIFF1b3RhIFN5bmNocm9uaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgZ2ZzMl9xdW90YV9zeW5jYCDigJMgdGhhdCdzIHRoZSBvbmUgd2UncmUgdXNpbmcgYXMgdGhlIGBxdW90YV9zeW5jYCBpbiBgcXVvdGFjdGxfb3BzYC4gR29vZCwgdGhhdCBtYWtlcyBpdCBhIGNsZWFyIGZvY2FsIHBvaW50LiBTZWVtcyBsaWtlIGEgc29saWQgY2hvaWNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBxdW90YXMgYXJlIGJlaW5nIHN5bmNocm9uaXplZCB3aXRoaW4gdGhlIEdGUzIgZmlsZSBzeXN0ZW0uIEl04oCZcyBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLlxuXG5Ob3csIHdoZXJlIGRvIHdlIGdvIGZyb20gaGVyZT8gVGltZSB0byBkaWcgaW50byBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBzaG91bGQgZ2l2ZSB1cyBzb21lIGluc2lnaHQgaW50byBob3cgdGhpbmdzIGFyZSB1bmJsb2NrZWQuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBpdCBzaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MzguMDAzMDAxNzk0WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2NDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9nbG9jay5jPTIwNzg9c3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTItLyoqXFxuZnMvZ2ZzMi9nbG9jay5jOjIwOTM6ICogZ2ZzMl9nbG9ja190aGF3IC0gVGhhdyBhbnkgZnJvemVuIGdsb2Nrc1xcbmZzL2dmczIvZ2xvY2suYy0yMDk0LSAqIEBzZHA6IFRoZSBzdXBlciBibG9ja1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTctXFxuZnMvZ2ZzMi9nbG9jay5jOjIwOTg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTkte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5oPTI2Nz12b2lkIGdmczJfd2l0aGRyYXdfZ2xvY2tzKHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcXG5mcy9nZnMyL2dsb2NrLmg6MjY4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcXG5mcy9nZnMyL2dsb2NrLmgtMjY5LXZvaWQgZ2ZzMl9nbG9ja19mcmVlKHN0cnVjdCBnZnMyX2dsb2NrICpnbCk7XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM9NjU1PXN0YXRpYyB2b2lkIGdmczJfY29udHJvbF9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy04MjQtXFx0XFx0ZnNfaW5mbyhzZHAsIFxcXCJyZWNvdmVyIGdlbmVyYXRpb24gJXUgZG9uZVxcXFxuXFxcIiwgc3RhcnRfZ2VuKTtcXG5mcy9nZnMyL2xvY2tfZGxtLmM6ODI1OlxcdFxcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xcbmZzL2dmczIvbG9ja19kbG0uYy04MjYtXFx0fSBlbHNlIHtcXG4tLVxcbmZzL2dmczIvc3lzLmM9NDA3PXN0YXRpYyBzc2l6ZV90IGJsb2NrX3N0b3JlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5mcy9nZnMyL3N5cy5jLTQyMC1cXHRcXHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xcbmZzL2dmczIvc3lzLmM6NDIxOlxcdFxcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xcbmZzL2dmczIvc3lzLmMtNDIyLVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjM4LjA2NTQ3NTc1M1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUzNDc3MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIEFyZWFzKipcblxuUmlnaHQsIGBnZnMyX2dsb2NrX3RoYXdgLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGJvdGggc3lzZnMgYW5kIHRoZSBETE0gY29udHJvbCBmdW5jdGlvbnMsIHNvIGl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgaW1wb3J0YW50IHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBhIGtleSBwb2ludCBvZiBpbnRlcmFjdGlvbiBmb3IgdGhlIGZpbGVzeXN0ZW0gd2l0aCB0aGUgdW5kZXJseWluZyBkaXN0cmlidXRlZCBsb2NrIG1hbmFnZXIsIGFuZCBzeXNmcyBhY2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIHN3aXRjaCBnZWFycyBhIGJpdC4gSSB3b25kZXIgaWYgYGNlcGhfdHJpbV9kZW50cmllc2AgbWlnaHQgYmUgYW4gaW50ZXJlc3RpbmcgbGluZSBvZiBpbnF1aXJ5IHRvIGZvbGxvdyBuZXh0LCBwcm9iYWJseSBoYXMgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuIEkgdGhpbmsgdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHRoZXJlLCBhbmQgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NTQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjo0MS4wMTg5NTU2ODdaIiwiU2VxIjo3OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjA5Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfdHJpbV9kZW50cmllc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE3NTA9c3RhdGljIGludCBfX2Rpcl9sZWFzZV9jaGVjayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3NzQtXFxuZnMvY2VwaC9kaXIuYzoxNzc1OmludCBjZXBoX3RyaW1fZGVudHJpZXMoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYylcXG5mcy9jZXBoL2Rpci5jLTE3NzYte1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmM9MjU4Nj1zdGF0aWMgdm9pZCBjZXBoX2NhcF9yZWNsYWltX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtMjU4OS1cXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGNlcGhfbWRzX2NsaWVudCwgY2FwX3JlY2xhaW1fd29yayk7XFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6MjU5MDpcXHRpbnQgcmV0ID0gY2VwaF90cmltX2RlbnRyaWVzKG1kc2MpO1xcbmZzL2NlcGgvbWRzX2NsaWVudC5jLTI1OTEtXFx0aWYgKHJldCA9PSAtRUFHQUlOKVxcbi0tXFxuZnMvY2VwaC9zdXBlci5oPTEzODA9ZXh0ZXJuIHZvaWQgY2VwaF9pbnZhbGlkYXRlX2RlbnRyeV9sZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL2NlcGgvc3VwZXIuaDoxMzgxOmV4dGVybiBpbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpO1xcbmZzL2NlcGgvc3VwZXIuaC0xMzgyLWV4dGVybiB1bnNpZ25lZCBjZXBoX2RlbnRyeV9oYXNoKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjQxLjA4MjU3MTYxNVoiLCJTZXEiOjc5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc5MzY0MzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGaWxlc3lzdGVtIERlcGVuZGVuY2llcyBhbmQgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIHNlZS4gYGNlcGhfdHJpbV9kZW50cmllc2AgbG9va3MgbGlrZSBhIGdvb2QgZm9jdXMgc3ltYm9sIOKAkyBpdCdzIGNhbGxlZCBmcm9tIGEgd29ya3F1ZXVlLiBOb3csIHNob3VsZCBJIGluY2x1ZGUgYHNocmlua19kY2FjaGVfZm9yX3Vtb3VudGA/IFRoYXQncyBhIGNvcmUgVkZTIGZ1bmN0aW9uLCBidXQgdGhlIHByb21wdCBzYWlkIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBBbmQsIHNpbmNlIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG9ubHkgY2FsbGVkIGR1cmluZyB1bW91bnQsIGl0J3Mgbm90IGFjdHVhbGx5IG9uIHRoZSBob3QgcGF0aC4gQnV0LCBpdCBpcyBnZW5lcmljLiBNYXliZSBmb3VyIGZ1bmN0aW9ucyBhcmUgc3VmZmljaWVudCBmb3IgdGhlIGZvY3VzLlxuXG5BbHJpZ2h0LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGxpc3QgdGhlbTogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBETE1gLCBgQ09ORklHRlNfRlNgLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgYENFUEhfRlNgLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkga25vdyBgRExNYCBkZXBlbmRzIG9uIGBJTkVUYCwgYENPTkZJR0ZTX0ZTYCBkZXBlbmRzIG9uIGBTWVNGU2AsIGFuZCBgU1lTRlNgLCBgSU5FVGAsIGFuZCBgQkxPQ0tgIGFyZSBhbHdheXMgZW5hYmxlZC4gTGV0J3MgZG91YmxlLWNoZWNrIGBmcy9lcm9mcy9LY29uZmlnYC4gYEVST0ZTX0ZTX1pJUGAgZGVwZW5kcyBvbiBgRVJPRlNfRlNgLCBhbmQgYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIE5vdyBmb3IgYGZzL3hmcy9LY29uZmlnYC4gSSBzZWUgdGhhdCBgWEZTX1FVT1RBYCBkZXBlbmRzIG9uIGBYRlNfRlNgLCBhbmQgYFhGU19GU2AgZGVwZW5kcyBvbiBgQkxPQ0tgLiBBbmQgZmluYWxseSwgaW4gYGZzL2NlcGgvS2NvbmZpZ2AsIGBDRVBIX0ZTYCBkZXBlbmRzIG9uIGBJTkVUYC4gVGhlbiBJIHNob3VsZCBjaGVjayBgZnMvZ2ZzMi9LY29uZmlnYC4gYEdGUzJfRlNfTE9DS0lOR19ETE1gIGRlcGVuZHMgb24gYChHRlMyX0ZTIT1uKSBcdTAwMjZcdTAwMjYgTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBDT05GSUdGU19GUyBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IChETE09eSB8fCBETE09R0ZTMl9GUylgLiBUaGlzIG1lYW5zIGBETE1gIG11c3QgYmUgYHlgIG9yIGBtYC4gV2UgY2FuIGp1c3QgbGlzdCBgRExNYC5cblxuU28sIHRoZSBjb25maWcgbGlzdCBpcyBjb25maXJtZWQ6IGBHRlMyX0ZTYCwgYEdGUzJfRlNfTE9DS0lOR19ETE1gLCBgRExNYCwgYENPTkZJR0ZTX0ZTYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC5cblxuQW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZTogYGNlcGhfdHJpbV9kZW50cmllc2AsIGB4ZnNfYnVmX3N0YWxlYCwgYGdmczJfZ2xvY2tfdGhhd2AsIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbG9ja3JlZmAgbWVjaGFuaXNtIGFuZCBpbnRyb2R1Y2VzIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gIHRvIGhhbmRsZSBsb2NrcmVmIGNvdW50cyB0aGF0IGFyZSBuZWdhdGl2ZSwgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhpcyBpcyBhbiBlZGdlLWNhc2UgY2hhbmdlLiBJJ20gZm9jdXNpbmcgb24gc3BlY2lmaWMgZW50cnkgcG9pbnRzIGluIGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIGFuZCB4ZnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBsb2NrcmVmIGxvZ2ljLiBJJ20gYXZvaWRpbmcgdGhlIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXG5cbk9rYXksIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTI1LCJPdXRwdXRUb2tlbnMiOjI3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjo1MS44NzYyMTgwMzZaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjk0OTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR0ZTMl9GU1wiLFxuICAgIFwiR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICAgIFwiRExNXCIsXG4gICAgXCJDT05GSUdGU19GU1wiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1pJUFwiLFxuICAgIFwiWEZTX0ZTXCIsXG4gICAgXCJYRlNfUVVPVEFcIixcbiAgICBcIkNFUEhfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgICBcInhmc19idWZfc3RhbGVcIixcbiAgICBcImdmczJfZ2xvY2tfdGhhd1wiLFxuICAgIFwiZ2ZzMl9xdW90YV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR0ZTMl9GU1wiLFxuICAgIFwiR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICAgIFwiRExNXCIsXG4gICAgXCJDT05GSUdGU19GU1wiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1pJUFwiLFxuICAgIFwiWEZTX0ZTXCIsXG4gICAgXCJYRlNfUVVPVEFcIixcbiAgICBcIkNFUEhfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgICBcInhmc19idWZfc3RhbGVcIixcbiAgICBcImdmczJfZ2xvY2tfdGhhd1wiLFxuICAgIFwiZ2ZzMl9xdW90YV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 05:45:14 +0000 UTC FinishedAt: 2026-07-26 06:02:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9eebf259d5352b87080d67758f483583d9e763d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GFS2_FS", "GFS2_FS_LOCKING_DLM", "DLM", "CONFIGFS_FS", "EROFS_FS", "EROFS_FS_ZIP", "XFS_FS", "XFS_QUOTA", "CEPH_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "9eebf259d5352b87080d67758f483583d9e763d7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GFS2_FS", "GFS2_FS_LOCKING_DLM", "DLM", "CONFIGFS_FS", "EROFS_FS", "EROFS_FS_ZIP", "XFS_FS", "XFS_QUOTA", "CEPH_FS" ], "series_id": "5d8e7047-7e42-47ea-a239-d79b9aa95506" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ceph_trim_dentries", "xfs_buf_stale", "gfs2_glock_thaw", "gfs2_quota_sync" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dGUzJfRlMmIzM0OywKICAgICYjMzQ7R0ZTMl9GU19MT0NLSU5HX0RMTSYjMzQ7LAogICAgJiMzNDtETE0mIzM0OywKICAgICYjMzQ7Q09ORklHRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlMmIzM0OywKICAgICYjMzQ7RVJPRlNfRlNfWklQJiMzNDssCiAgICAmIzM0O1hGU19GUyYjMzQ7LAogICAgJiMzNDtYRlNfUVVPVEEmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NlcGhfdHJpbV9kZW50cmllcyYjMzQ7LAogICAgJiMzNDt4ZnNfYnVmX3N0YWxlJiMzNDssCiAgICAmIzM0O2dmczJfZ2xvY2tfdGhhdyYjMzQ7LAogICAgJiMzNDtnZnMyX3F1b3RhX3N5bmMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMjAwNzQ4Zjc3ZmZlNjAzMWMyNDQzNWY1ZGI5NzdkZDNmMDg3YTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDY6MDA6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvY2VwaC9kaXIuYyBiL2ZzL2NlcGgvZGlyLmNcbmluZGV4IGI5NTcxNDlhYmU1YTBhLi5mMzk4NTZmZjNlYTE1OCAxMDA2NDRcbi0tLSBhL2ZzL2NlcGgvZGlyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NlcGgvZGlyLmNcbkBAIC0xNjY3LDcgJiM0MzsxNjY3LDcgQEAgX19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcbiBcdFx0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jaykpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuJiM0MztcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuIFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGktXHUwMDNlbGVhc2VfbGlzdCk7XG4gXHRcdFx0Z290byBuZXh0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuY1xuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jXG5AQCAtNDM0LDcgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19kX2NsZWFyX3R5cGVfYW5kX2lub2RlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBzdGF0aWMgdm9pZCBkZW50cnlfZnJlZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4ge1xuIFx0REVOVFJZX1dBUk5fT05DRShkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpLCBkZW50cnkpO1xuLVx0REVOVFJZX1dBUk5fT05DRShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzZT0gMCwgZGVudHJ5KTtcbiYjNDM7XHRERU5UUllfV0FSTl9PTkNFKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZiksIGRlbnRyeSk7XG4gXHREX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7XG4gXHRpZiAodW5saWtlbHkoZG5hbWVfZXh0ZXJuYWwoZGVudHJ5KSkpIHtcbiBcdFx0c3RydWN0IGV4dGVybmFsX25hbWUgKnAgPSBleHRlcm5hbF9uYW1lKGRlbnRyeSk7XG5AQCAtNzgyLDcgJiM0Mzs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiAgKlxuICAqIElmIEBkZW50cnkgaXMgaWRsZSBhbmQgcmVtYWlucyBzdWNoIGFmdGVyIHdlIGFzc2VtYmxlIHRoZSBmdWxsXG4gICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuJiM0MzsgKiB3ZSBtYXJrIGl0IGRvb21lZCAoc2VlIGxvY2tyZWZfbWFya19kZWFkKCkpIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuICAqIGl0IGZyb20gYW55IGZpbGVzeXN0ZW0gb2JqZWN0cy4gIE90aGVyd2lzZSB3ZSBkcm9wIC1cdTAwM2VkX2xvY2sgYW5kXG4gICogcmV0dXJuICVOVUxMLlxuICAqXG5AQCAtOTQ2LDcgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRcdGlmIChXQVJOX09OX09OQ0UoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2M9IDApKSB7XG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG5AQCAtMTY0NCw3ICYjNDM7MTY0NCw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3Qodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiBcdGlmIChkYXRhLVx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcbiBcdFx0Z290byBvdXQ7XG4gXG4tXHRpZiAoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2M9IDApIHtcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpIHtcbiBcdFx0X19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKTtcbiBcdFx0ZGF0YS1cdTAwM2Vmb3VuZCYjNDM7JiM0Mzs7XG4gXHR9XG5AQCAtMTY3Niw3ICYjNDM7MTY3Niw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3QyKHZvaWQgKl9kYXRhLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAoZGF0YS1cdTAwM2VzdGFydCA9PSBkZW50cnkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0aWYgKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjPSAwKSB7XG4mIzQzO1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdGlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2UgbmVlZCBhbiBlbnRlciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIGFyZWEgdGhhdFxuQEAgLTE3NDcsNyAmIzQzOzE3NDcsNyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfZGNhY2hlX3RyZWUoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBib29sIGZvcl91bW91bnQpXG4gXHRcdFx0c3Bpbl9sb2NrKFx1MDAyNnYtXHUwMDNlZF9sb2NrKTtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbi1cdFx0XHRpZiAodW5saWtlbHkodi1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoXHUwMDI2di1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdFx0Ly8gSXQmIzM5O3MgZG9vbWVkOyBpZiBpdCBpc24mIzM5O3QgZGVhZCB5ZXQsIG5vdGlmeSB1c1xuIFx0XHRcdFx0Ly8gb25jZSBpdCBiZWNvbWVzIGludmlzaWJsZSB0byBkX3dhbGsoKS5cbiBcdFx0XHRcdG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcih2LCBcdTAwMjZ3YWl0KTtcbkBAIC0xODIzLDcgJiM0MzsxODIzLDcgQEAgdm9pZCBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2c2ItXHUwMDNlc19yb290c19sb2NrKTtcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdFx0aWYgKHVubGlrZWx5KGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHN0cnVjdCBjb21wbGV0aW9uX2xpc3Qgd2FpdDtcbiBcdFx0XHRib29sIG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcihkZW50cnksIFx1MDAyNndhaXQpO1xuIFxuQEAgLTI4MjIsNyAmIzQzOzI4MjIsNyBAQCBzdHJ1Y3QgZGVudHJ5ICpkX2FsbG9jX3BhcmFsbGVsKHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0Lyogbm93IHdlIGNhbiB0cnkgdG8gZ3JhYiBhIHJlZmVyZW5jZSAqL1xuLVx0XHRpZiAodW5saWtlbHkoZGVudHJ5LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2MgMCkpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpKSB7XG4gXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdFx0Z290byByZXRyeTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9mcy9lcm9mcy96ZGF0YS5jXG5pbmRleCA3NDUyMGU5MTAyNTk2Ni4uZDAyMmQxZGZmNWExY2UgMTAwNjQ0XG4tLS0gYS9mcy9lcm9mcy96ZGF0YS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9lcm9mcy96ZGF0YS5jXG5AQCAtNzI1LDcgJiM0Mzs3MjUsNyBAQCBzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpIHtcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSkge1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuQEAgLTk0NSw3ICYjNDM7OTQ1LDcgQEAgc3RhdGljIHZvaWQgel9lcm9mc19wdXRfcGNsdXN0ZXIoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSxcbiBcdGlmIChsb2NrcmVmX3B1dF9vcl9sb2NrKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0REJHX0JVR09OKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmKSk7XG4mIzQzO1x0REJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuIFx0aWYgKCEtLXBjbC1cdTAwM2Vsb2NrcmVmLmNvdW50KSB7XG4gXHRcdGlmICh0cnlfZnJlZSBcdTAwMjZcdTAwMjYgeGFfdHJ5bG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpKSB7XG4gXHRcdFx0ZnJlZSA9IF9fZXJvZnNfdHJ5X3RvX3JlbGVhc2VfcGNsdXN0ZXIoc2JpLCBwY2wpO1xuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xuaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9nbG9jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2dsb2NrLmNcbkBAIC0yMDgwLDcgJiM0MzsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxuIFx0Z2ZzMl9nbG9ja19yZW1vdmVfZnJvbV9scnUoZ2wpO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYubG9jayk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0Z2wtXHUwMDNlZ2xfbG9ja3JlZi5jb3VudCYjNDM7JiM0Mzs7XG4gXHRcdGlmIChnbC1cdTAwM2VnbF9zdGF0ZSAhPSBMTV9TVF9VTkxPQ0tFRClcbiBcdFx0XHRyZXF1ZXN0X2RlbW90ZShnbCwgTE1fU1RfVU5MT0NLRUQsIDAsIGZhbHNlKTtcbkBAIC0yMTE1LDcgJiM0MzsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbiBzdGF0aWMgdm9pZCB3aXRoZHJhd19nbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4ge1xuIFx0c3Bpbl9sb2NrKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYubG9jayk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0LypcbiBcdFx0ICogV2UgZG9uJiMzOTt0IHdhbnQgdG8gd3JpdGUgYmFjayBhbnkgbW9yZSBkaXJ0eSBkYXRhLiAgVW5sb2NrIHRoZVxuIFx0XHQgKiByZW1haW5pbmcgaW5vZGUgYW5kIHJlc291cmNlIGdyb3VwIGdsb2NrczsgdGhpcyB3aWxsIGNhdXNlXG5AQCAtMjQ4Myw3ICYjNDM7MjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiYjNDM7XHRcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdG4tLTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xuaW5kZXggNzgyOGFkMGI2ZjVhNmYuLmNjOTAxZmI5N2RhMGNhIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9sb2NrX2RsbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2xvY2tfZGxtLmNcbkBAIC0xMjYsNyAmIzQzOzEyNiw3IEBAIHN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcbiBcdGNsZWFyX2JpdChHTEZfQkxPQ0tJTkcsIFx1MDAyNmdsLVx1MDAzZWdsX2ZsYWdzKTtcbiBcbiBcdC8qIElmIHRoZSBnbG9jayBpcyBkZWFkLCB3ZSBvbmx5IHJlYWN0IHRvIGEgZGxtX3VubG9jaygpIHJlcGx5LiAqL1xuLVx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikgXHUwMDI2XHUwMDI2XG4gXHQgICAgZ2wtXHUwMDNlZ2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wgPSBhcmc7XG4gXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4mIzQzO1x0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0c3dpdGNoIChtb2RlKSB7XG5AQCAtMzI5LDcgJiM0MzszMjksNyBAQCBzdGF0aWMgdm9pZCBnZGxtX3B1dF9sb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbiBcdHVpbnQzMl90IGZsYWdzID0gMDtcbiBcdGludCBlcnJvcjtcbiBcbi1cdEJVR19PTighX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpO1xuJiM0MztcdEJVR19PTighbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpKSB7XG4gXHRcdGdmczJfZ2xvY2tfZnJlZShnbCk7XG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXG5pbmRleCA5MWU5OTc1ZDI1ZTg5MC4uMDAxYzhiMzljYTU1NzMgMTAwNjQ0XG4tLS0gYS9mcy9nZnMyL3F1b3RhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2dmczIvcXVvdGEuY1xuQEAgLTM0Miw3ICYjNDM7MzQyLDcgQEAgc3RhdGljIHZvaWQgcWRfcHV0KHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxuIFx0aWYgKGxvY2tyZWZfcHV0X29yX2xvY2soXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpXG4gXHRcdHJldHVybjtcbiBcbi1cdEJVR19PTihfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSk7XG4mIzQzO1x0QlVHX09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSk7XG4gXHRzZHAgPSBxZC1cdTAwM2VxZF9zYmQ7XG4gXHRpZiAodW5saWtlbHkoIXRlc3RfYml0KFNERl9KT1VSTkFMX0xJVkUsIFx1MDAyNnNkcC1cdTAwM2VzZF9mbGFncykpKSB7XG4gXHRcdGxvY2tyZWZfbWFya19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpO1xuQEAgLTQ4Niw3ICYjNDM7NDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcbiBcdCAgICBxZC1cdTAwM2VxZF9zeW5jX2dlbiBcdTAwM2U9IHN5bmNfZ2VuKVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbiYjNDM7XHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpKVxuIFx0XHRnb3RvIG91dDtcbiBcdHFkLVx1MDAzZXFkX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7O1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXG5pbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0XG4tLS0gYS9mcy94ZnMveGZzX2J1Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy94ZnMveGZzX2J1Zi5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgeGZzX2J1Zl9zdGFsZShcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYubG9jayk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmJwLVx1MDAzZWJfbHJ1X3JlZiwgMCk7XG4tXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpXG4mIzQzO1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSlcbiBcdFx0bGlzdF9scnVfZGVsX29iaihcdTAwMjZicC1cdTAwM2ViX3RhcmdldC1cdTAwM2VidF9scnUsIFx1MDAyNmJwLVx1MDAzZWJfbHJ1KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcbiB9XG5AQCAtODQxLDcgJiM0Mzs4NDEsNyBAQCBzdGF0aWMgdm9pZFxuIHhmc19idWZfZGVzdHJveShcbiBcdHN0cnVjdCB4ZnNfYnVmXHRcdCpicClcbiB7XG4tXHRBU1NFUlQoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSk7XG4mIzQzO1x0QVNTRVJUKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYpKTtcbiBcdEFTU0VSVCghKGJwLVx1MDAzZWJfZmxhZ3MgXHUwMDI2IF9YQkZfREVMV1JJX1EpKTtcbiBcbiBcdGlmIChicC1cdTAwM2ViX3BhZylcbmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmNcbmluZGV4IDg5NmIyNGY4N2FjOWQ1Li45OWE4MjEwN2I4ZTZmMiAxMDA2NDRcbi0tLSBhL2ZzL3hmcy94ZnNfcW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19xbS5jXG5AQCAtMTI4LDcgJiM0MzsxMjgsNyBAQCB4ZnNfcW1fZHFwdXJnZShcbiBcdHN0cnVjdCB4ZnNfcXVvdGFpbmZvXHQqcWkgPSBkcXAtXHUwMDNlcV9tb3VudC1cdTAwM2VtX3F1b3RhaW5mbztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZkcXAtXHUwMDNlcV9sb2NrcmVmLmxvY2spO1xuLVx0aWYgKGRxcC1cdTAwM2VxX2xvY2tyZWYuY291bnQgXHUwMDNlIDAgfHwgX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiYjNDM7XHRpZiAoZHFwLVx1MDAzZXFfbG9ja3JlZi5jb3VudCBcdTAwM2UgMCB8fCBsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXHR9XG5AQCAtNDI5LDcgJiM0Mzs0MjksNyBAQCB4ZnNfcW1fZHF1b3RfaXNvbGF0ZShcbiBcdCAqIGZyb20gdGhlIExSVSwgbGVhdmUgaXQgZm9yIHRoZSBmcmVlaW5nIHRhc2sgdG8gY29tcGxldGUgdGhlIGZyZWVpbmdcbiBcdCAqIHByb2Nlc3MgcmF0aGVyIHRoYW4gcmlzayBpdCBiZWluZyBmcmVlIGZyb20gdW5kZXIgdXMgaGVyZS5cbiBcdCAqL1xuLVx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKVxuJiM0MztcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpXG4gXHRcdGdvdG8gb3V0X21pc3NfdW5sb2NrO1xuIFxuIFx0LypcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaCBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXG5pbmRleCA2ZGVkMjRjZGI0YTgyYy4uZGRmYjdkM2I4Y2VjMmUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcbkBAIC0zNCw2ICYjNDM7MzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XG4gXHR9O1xuIH07XG4gXG4mIzQzOyNkZWZpbmUgX19MT0NLUkVGX0RFQURfVkFMXHQtMTI4XG4mIzQzO1xuIC8qKlxuICAqIGxvY2tyZWZfaW5pdCAtIEluaXRpYWxpemUgYSBsb2NrcmVmXG4gICogQGxvY2tyZWY6IHBvaW50ZXIgdG8gbG9ja3JlZiBzdHJ1Y3R1cmVcbkBAIC01NSw5ICYjNDM7NTcsMTUgQEAgdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgdW5kZXIgc3BpbmxvY2sgZm9yIHJlbGlhYmxlIHJlc3VsdHMgKi9cbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gKFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUwpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbG9ja3JlZl9pc19kZWFkX29yX3plcm8oY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4ge1xuLVx0cmV0dXJuICgoaW50KWwtXHUwMDNlY291bnQgXHUwMDNjIDApO1xuJiM0MztcdGludCBjb3VudCA9IFJFQURfT05DRShsLVx1MDAzZWNvdW50KTtcbiYjNDM7XHRyZXR1cm4gKGNvdW50ID09IF9fTE9DS1JFRl9ERUFEX1ZBTCB8fCBjb3VudCA9PSAwKTtcbiB9XG4gXG4gI2VuZGlmIC8qIF9fTElOVVhfTE9DS1JFRl9IICovXG5kaWZmIC0tZ2l0IGEvbGliL2xvY2tyZWYuYyBiL2xpYi9sb2NrcmVmLmNcbmluZGV4IDVkOGUzZWYzODYwZWUxLi45YjNkZDY4OGQ4Y2RhMSAxMDA2NDRcbi0tLSBhL2xpYi9sb2NrcmVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9sb2NrcmVmLmNcbkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9wdXRfb3JfbG9jayk7XG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcbiB7XG4gXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXHUwMDI2bG9ja3JlZi1cdTAwM2Vsb2NrKTtcbi1cdGxvY2tyZWYtXHUwMDNlY291bnQgPSAtMTI4O1xuJiM0MztcdGxvY2tyZWYtXHUwMDNlY291bnQgPSBfX0xPQ0tSRUZfREVBRF9WQUw7XG4gfVxuIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9tYXJrX2RlYWQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHRlMyX0ZTJiMzNDssCiAgICAmIzM0O0dGUzJfRlNfTE9DS0lOR19ETE0mIzM0OywKICAgICYjMzQ7RExNJiMzNDssCiAgICAmIzM0O0NPTkZJR0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1pJUCYjMzQ7LAogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1FVT1RBJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZXBoX3RyaW1fZGVudHJpZXMmIzM0OywKICAgICYjMzQ7eGZzX2J1Zl9zdGFsZSYjMzQ7LAogICAgJiMzNDtnZnMyX2dsb2NrX3RoYXcmIzM0OywKICAgICYjMzQ7Z2ZzMl9xdW90YV9zeW5jJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTIwMDc0OGY3N2ZmZTYwMzFjMjQ0MzVmNWRiOTc3ZGQzZjA4N2EzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDA2OjAwOjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9kaXIuYyBiL2ZzL2NlcGgvZGlyLmMKaW5kZXggYjk1NzE0OWFiZTVhMGEuLmYzOTg1NmZmM2VhMTU4IDEwMDY0NAotLS0gYS9mcy9jZXBoL2Rpci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2NlcGgvZGlyLmMKQEAgLTE2NjcsNyAmIzQzOzE2NjcsNyBAQCBfX2RlbnRyeV9sZWFzZXNfd2FsayhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLAogCQlpZiAoIXNwaW5fdHJ5bG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkgewomIzQzOwkJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkgewogCQkJbGlzdF9kZWxfaW5pdCgmYW1wO2RpLSZndDtsZWFzZV9saXN0KTsKIAkJCWdvdG8gbmV4dDsKIAkJfQpkaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuYwppbmRleCAzZTlhZjlkZTcwNzQ2NC4uMmFlZTg1ZjNmYmFhNzggMTAwNjQ0Ci0tLSBhL2ZzL2RjYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2RjYWNoZS5jCkBAIC00MzQsNyAmIzQzOzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogc3RhdGljIHZvaWQgZGVudHJ5X2ZyZWUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogewogCURFTlRSWV9XQVJOX09OQ0UoZF9yZWFsbHlfaXNfcG9zaXRpdmUoZGVudHJ5KSwgZGVudHJ5KTsKLQlERU5UUllfV0FSTl9PTkNFKGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZndDs9IDAsIGRlbnRyeSk7CiYjNDM7CURFTlRSWV9XQVJOX09OQ0UoIWxvY2tyZWZfaXNfZGVhZCgmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSwgZGVudHJ5KTsKIAlEX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7CiAJaWYgKHVubGlrZWx5KGRuYW1lX2V4dGVybmFsKGRlbnRyeSkpKSB7CiAJCXN0cnVjdCBleHRlcm5hbF9uYW1lICpwID0gZXh0ZXJuYWxfbmFtZShkZW50cnkpOwpAQCAtNzgyLDcgJiM0Mzs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKICAqCiAgKiBJZiBAZGVudHJ5IGlzIGlkbGUgYW5kIHJlbWFpbnMgc3VjaCBhZnRlciB3ZSBhc3NlbWJsZSB0aGUgZnVsbAogICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpCi0gKiB3ZSBtYXJrIGl0IGRvb21lZCAoLSZndDtkX2xvY2tyZWYuY291bnQgJmx0OyAwKSBhbmQgcHJvY2VlZCB0byBkZXRhY2hpbmcKJiM0MzsgKiB3ZSBtYXJrIGl0IGRvb21lZCAoc2VlIGxvY2tyZWZfbWFya19kZWFkKCkpIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZwogICogaXQgZnJvbSBhbnkgZmlsZXN5c3RlbSBvYmplY3RzLiAgT3RoZXJ3aXNlIHdlIGRyb3AgLSZndDtkX2xvY2sgYW5kCiAgKiByZXR1cm4gJU5VTEwuCiAgKgpAQCAtOTQ2LDcgJiM0Mzs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlpZiAodW5saWtlbHkocmV0ICZsdDsgMCkpIHsKIAkJc3Bpbl9sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwogCQlyY3VfcmVhZF91bmxvY2soKTsKLQkJaWYgKFdBUk5fT05fT05DRShkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudCAmbHQ7PSAwKSkgewomIzQzOwkJaWYgKFdBUk5fT05fT05DRShsb2NrcmVmX2lzX2RlYWRfb3JfemVybygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrcmVmKSkpIHsKIAkJCXNwaW5fdW5sb2NrKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2spOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTE2NDQsNyAmIzQzOzE2NDQsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0KHZvaWQgKl9kYXRhLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiAJaWYgKGRhdGEtJmd0O3N0YXJ0ID09IGRlbnRyeSkKIAkJZ290byBvdXQ7CiAKLQlpZiAoZGVudHJ5LSZndDtkX2xvY2tyZWYuY291bnQgJmx0Oz0gMCkgewomIzQzOwlpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oJmFtcDtkZW50cnktJmd0O2RfbG9ja3JlZikpIHsKIAkJX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgJmFtcDtkYXRhLSZndDtkaXNwb3NlKTsKIAkJZGF0YS0mZ3Q7Zm91bmQmIzQzOyYjNDM7OwogCX0KQEAgLTE2NzYsNyAmIzQzOzE2NzYsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0Mih2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCWlmIChkYXRhLSZndDtzdGFydCA9PSBkZW50cnkpCiAJCWdvdG8gb3V0OwogCi0JaWYgKGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZsdDs9IDApIHsKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2tyZWYpKSB7CiAJCWlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgJmFtcDtkYXRhLSZndDtkaXNwb3NlKSkgewogCQkJLyoKIAkJCSAqIFdlIG5lZWQgYW4gZW50ZXIgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBhcmVhIHRoYXQKQEAgLTE3NDcsNyAmIzQzOzE3NDcsNyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfZGNhY2hlX3RyZWUoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBib29sIGZvcl91bW91bnQpCiAJCQlzcGluX2xvY2soJmFtcDt2LSZndDtkX2xvY2spOwogCQkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKLQkJCWlmICh1bmxpa2VseSh2LSZndDtkX2xvY2tyZWYuY291bnQgJmx0OyAwKSkgewomIzQzOwkJCWlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoJmFtcDt2LSZndDtkX2xvY2tyZWYpKSkgewogCQkJCS8vIEl0JiMzOTtzIGRvb21lZDsgaWYgaXQgaXNuJiMzOTt0IGRlYWQgeWV0LCBub3RpZnkgdXMKIAkJCQkvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLgogCQkJCW5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcih2LCAmYW1wO3dhaXQpOwpAQCAtMTgyMyw3ICYjNDM7MTgyMyw3IEBAIHZvaWQgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJCXNwaW5fdW5sb2NrKCZhbXA7c2ItJmd0O3Nfcm9vdHNfbG9jayk7CiAJCXNwaW5fbG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JCWlmICh1bmxpa2VseShkZW50cnktJmd0O2RfbG9ja3JlZi5jb3VudCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKCZhbXA7ZGVudHJ5LSZndDtkX2xvY2tyZWYpKSkgewogCQkJc3RydWN0IGNvbXBsZXRpb25fbGlzdCB3YWl0OwogCQkJYm9vbCBuZWVkX3dhaXQgPSBkX2FkZF93YWl0ZXIoZGVudHJ5LCAmYW1wO3dhaXQpOwogCkBAIC0yODIyLDcgJiM0MzsyODIyLDcgQEAgc3RydWN0IGRlbnRyeSAqZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCXNwaW5fbG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJCS8qIG5vdyB3ZSBjYW4gdHJ5IHRvIGdyYWIgYSByZWZlcmVuY2UgKi8KLQkJaWYgKHVubGlrZWx5KGRlbnRyeS0mZ3Q7ZF9sb2NrcmVmLmNvdW50ICZsdDsgMCkpIHsKJiM0MzsJCWlmICh1bmxpa2VseShsb2NrcmVmX2lzX2RlYWQoJmFtcDtkZW50cnktJmd0O2RfbG9ja3JlZikpKSB7CiAJCQlzcGluX3VubG9jaygmYW1wO2RlbnRyeS0mZ3Q7ZF9sb2NrKTsKIAkJCWdvdG8gcmV0cnk7CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9mcy9lcm9mcy96ZGF0YS5jCmluZGV4IDc0NTIwZTkxMDI1OTY2Li5kMDIyZDFkZmY1YTFjZSAxMDA2NDQKLS0tIGEvZnMvZXJvZnMvemRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9lcm9mcy96ZGF0YS5jCkBAIC03MjUsNyAmIzQzOzcyNSw3IEBAIHN0YXRpYyBib29sIHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyICpwY2wpCiAJCXJldHVybiB0cnVlOwogCiAJc3Bpbl9sb2NrKCZhbXA7cGNsLSZndDtsb2NrcmVmLmxvY2spOwotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpIHsKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpIHsKIAkJc3Bpbl91bmxvY2soJmFtcDtwY2wtJmd0O2xvY2tyZWYubG9jayk7CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC05NDUsNyAmIzQzOzk0NSw3IEBAIHN0YXRpYyB2b2lkIHpfZXJvZnNfcHV0X3BjbHVzdGVyKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksCiAJaWYgKGxvY2tyZWZfcHV0X29yX2xvY2soJmFtcDtwY2wtJmd0O2xvY2tyZWYpKQogCQlyZXR1cm47CiAKLQlEQkdfQlVHT04oX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtwY2wtJmd0O2xvY2tyZWYpKTsKJiM0MzsJREJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3BjbC0mZ3Q7bG9ja3JlZikpOwogCWlmICghLS1wY2wtJmd0O2xvY2tyZWYuY291bnQpIHsKIAkJaWYgKHRyeV9mcmVlICZhbXA7JmFtcDsgeGFfdHJ5bG9jaygmYW1wO3NiaS0mZ3Q7bWFuYWdlZF9wc2xvdHMpKSB7CiAJCQlmcmVlID0gX19lcm9mc190cnlfdG9fcmVsZWFzZV9wY2x1c3RlcihzYmksIHBjbCk7CmRpZmYgLS1naXQgYS9mcy9nZnMyL2dsb2NrLmMgYi9mcy9nZnMyL2dsb2NrLmMKaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NAotLS0gYS9mcy9nZnMyL2dsb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZ2ZzMi9nbG9jay5jCkBAIC0yMDgwLDcgJiM0MzsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKQogCWdmczJfZ2xvY2tfcmVtb3ZlX2Zyb21fbHJ1KGdsKTsKIAogCXNwaW5fbG9jaygmYW1wO2dsLSZndDtnbF9sb2NrcmVmLmxvY2spOwotCWlmICghX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpIHsKJiM0MzsJaWYgKCFsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpIHsKIAkJZ2wtJmd0O2dsX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7OwogCQlpZiAoZ2wtJmd0O2dsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKQogCQkJcmVxdWVzdF9kZW1vdGUoZ2wsIExNX1NUX1VOTE9DS0VELCAwLCBmYWxzZSk7CkBAIC0yMTE1LDcgJiM0MzsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkKIHN0YXRpYyB2b2lkIHdpdGhkcmF3X2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkKIHsKIAlzcGluX2xvY2soJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZi5sb2NrKTsKLQlpZiAoIV9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKSB7CiYjNDM7CWlmICghbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKSB7CiAJCS8qCiAJCSAqIFdlIGRvbiYjMzk7dCB3YW50IHRvIHdyaXRlIGJhY2sgYW55IG1vcmUgZGlydHkgZGF0YS4gIFVubG9jayB0aGUKIAkJICogcmVtYWluaW5nIGlub2RlIGFuZCByZXNvdXJjZSBncm91cCBnbG9ja3M7IHRoaXMgd2lsbCBjYXVzZQpAQCAtMjQ4Myw3ICYjNDM7MjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbikKIAkJCQljb250aW51ZTsKIAkJCWJyZWFrOwogCQl9IGVsc2UgewotCQkJaWYgKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQomIzQzOwkJCWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpCiAJCQkJY29udGludWU7CiAJCQluLS07CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uYwppbmRleCA3ODI4YWQwYjZmNWE2Zi4uY2M5MDFmYjk3ZGEwY2EgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvbG9ja19kbG0uYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9nZnMyL2xvY2tfZGxtLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKQogCWNsZWFyX2JpdChHTEZfQkxPQ0tJTkcsICZhbXA7Z2wtJmd0O2dsX2ZsYWdzKTsKIAogCS8qIElmIHRoZSBnbG9jayBpcyBkZWFkLCB3ZSBvbmx5IHJlYWN0IHRvIGEgZGxtX3VubG9jaygpIHJlcGx5LiAqLwotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO2dsLSZndDtnbF9sb2NrcmVmKSAmYW1wOyZhbXA7CiYjNDM7CWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikgJmFtcDsmYW1wOwogCSAgICBnbC0mZ3Q7Z2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKQogCQlyZXR1cm47CiAKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpCiB7CiAJc3RydWN0IGdmczJfZ2xvY2sgKmdsID0gYXJnOwogCi0JaWYgKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQomIzQzOwlpZiAobG9ja3JlZl9pc19kZWFkKCZhbXA7Z2wtJmd0O2dsX2xvY2tyZWYpKQogCQlyZXR1cm47CiAKIAlzd2l0Y2ggKG1vZGUpIHsKQEAgLTMyOSw3ICYjNDM7MzI5LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpCiAJdWludDMyX3QgZmxhZ3MgPSAwOwogCWludCBlcnJvcjsKIAotCUJVR19PTighX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtnbC0mZ3Q7Z2xfbG9ja3JlZikpOwomIzQzOwlCVUdfT04oIWxvY2tyZWZfaXNfZGVhZCgmYW1wO2dsLSZndDtnbF9sb2NrcmVmKSk7CiAKIAlpZiAodGVzdF9iaXQoR0xGX0lOSVRJQUwsICZhbXA7Z2wtJmd0O2dsX2ZsYWdzKSkgewogCQlnZnMyX2dsb2NrX2ZyZWUoZ2wpOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jCmluZGV4IDkxZTk5NzVkMjVlODkwLi4wMDFjOGIzOWNhNTU3MyAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9xdW90YS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2dmczIvcXVvdGEuYwpAQCAtMzQyLDcgJiM0MzszNDIsNyBAQCBzdGF0aWMgdm9pZCBxZF9wdXQoc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQpCiAJaWYgKGxvY2tyZWZfcHV0X29yX2xvY2soJmFtcDtxZC0mZ3Q7cWRfbG9ja3JlZikpCiAJCXJldHVybjsKIAotCUJVR19PTihfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSk7CiYjNDM7CUJVR19PTihsb2NrcmVmX2lzX2RlYWQoJmFtcDtxZC0mZ3Q7cWRfbG9ja3JlZikpOwogCXNkcCA9IHFkLSZndDtxZF9zYmQ7CiAJaWYgKHVubGlrZWx5KCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCAmYW1wO3NkcC0mZ3Q7c2RfZmxhZ3MpKSkgewogCQlsb2NrcmVmX21hcmtfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKTsKQEAgLTQ4Niw3ICYjNDM7NDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwKIAkgICAgcWQtJmd0O3FkX3N5bmNfZ2VuICZndDs9IHN5bmNfZ2VuKQogCQlnb3RvIG91dDsKIAotCWlmIChfX2xvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSkKJiM0MzsJaWYgKGxvY2tyZWZfaXNfZGVhZCgmYW1wO3FkLSZndDtxZF9sb2NrcmVmKSkKIAkJZ290byBvdXQ7CiAJcWQtJmd0O3FkX2xvY2tyZWYuY291bnQmIzQzOyYjNDM7OwogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2J1Zi5jIGIvZnMveGZzL3hmc19idWYuYwppbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYnVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19idWYuYwpAQCAtODAsNyAmIzQzOzgwLDcgQEAgeGZzX2J1Zl9zdGFsZSgKIAogCXNwaW5fbG9jaygmYW1wO2JwLSZndDtiX2xvY2tyZWYubG9jayk7CiAJYXRvbWljX3NldCgmYW1wO2JwLSZndDtiX2xydV9yZWYsIDApOwotCWlmICghX19sb2NrcmVmX2lzX2RlYWQoJmFtcDticC0mZ3Q7Yl9sb2NrcmVmKSkKJiM0MzsJaWYgKCFsb2NrcmVmX2lzX2RlYWQoJmFtcDticC0mZ3Q7Yl9sb2NrcmVmKSkKIAkJbGlzdF9scnVfZGVsX29iaigmYW1wO2JwLSZndDtiX3RhcmdldC0mZ3Q7YnRfbHJ1LCAmYW1wO2JwLSZndDtiX2xydSk7CiAJc3Bpbl91bmxvY2soJmFtcDticC0mZ3Q7Yl9sb2NrcmVmLmxvY2spOwogfQpAQCAtODQxLDcgJiM0Mzs4NDEsNyBAQCBzdGF0aWMgdm9pZAogeGZzX2J1Zl9kZXN0cm95KAogCXN0cnVjdCB4ZnNfYnVmCQkqYnApCiB7Ci0JQVNTRVJUKF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7YnAtJmd0O2JfbG9ja3JlZikpOwomIzQzOwlBU1NFUlQobG9ja3JlZl9pc19kZWFkKCZhbXA7YnAtJmd0O2JfbG9ja3JlZikpOwogCUFTU0VSVCghKGJwLSZndDtiX2ZsYWdzICZhbXA7IF9YQkZfREVMV1JJX1EpKTsKIAogCWlmIChicC0mZ3Q7Yl9wYWcpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmMKaW5kZXggODk2YjI0Zjg3YWM5ZDUuLjk5YTgyMTA3YjhlNmYyIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3FtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMveGZzL3hmc19xbS5jCkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIHhmc19xbV9kcXB1cmdlKAogCXN0cnVjdCB4ZnNfcXVvdGFpbmZvCSpxaSA9IGRxcC0mZ3Q7cV9tb3VudC0mZ3Q7bV9xdW90YWluZm87CiAKIAlzcGluX2xvY2soJmFtcDtkcXAtJmd0O3FfbG9ja3JlZi5sb2NrKTsKLQlpZiAoZHFwLSZndDtxX2xvY2tyZWYuY291bnQgJmd0OyAwIHx8IF9fbG9ja3JlZl9pc19kZWFkKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYpKSB7CiYjNDM7CWlmIChkcXAtJmd0O3FfbG9ja3JlZi5jb3VudCAmZ3Q7IDAgfHwgbG9ja3JlZl9pc19kZWFkKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYpKSB7CiAJCXNwaW5fdW5sb2NrKCZhbXA7ZHFwLSZndDtxX2xvY2tyZWYubG9jayk7CiAJCXJldHVybiAtRUFHQUlOOwogCX0KQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgeGZzX3FtX2RxdW90X2lzb2xhdGUoCiAJICogZnJvbSB0aGUgTFJVLCBsZWF2ZSBpdCBmb3IgdGhlIGZyZWVpbmcgdGFzayB0byBjb21wbGV0ZSB0aGUgZnJlZWluZwogCSAqIHByb2Nlc3MgcmF0aGVyIHRoYW4gcmlzayBpdCBiZWluZyBmcmVlIGZyb20gdW5kZXIgdXMgaGVyZS4KIAkgKi8KLQlpZiAoX19sb2NrcmVmX2lzX2RlYWQoJmFtcDtkcXAtJmd0O3FfbG9ja3JlZikpCiYjNDM7CWlmIChsb2NrcmVmX2lzX2RlYWQoJmFtcDtkcXAtJmd0O3FfbG9ja3JlZikpCiAJCWdvdG8gb3V0X21pc3NfdW5sb2NrOwogCiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmgKaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaApAQCAtMzQsNiAmIzQzOzM0LDggQEAgc3RydWN0IGxvY2tyZWYgewogCX07CiB9OwogCiYjNDM7I2RlZmluZSBfX0xPQ0tSRUZfREVBRF9WQUwJLTEyOAomIzQzOwogLyoqCiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZgogICogQGxvY2tyZWY6IHBvaW50ZXIgdG8gbG9ja3JlZiBzdHJ1Y3R1cmUKQEAgLTU1LDkgJiM0Mzs1NywxNSBAQCB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICpsb2NrcmVmKTsKIGJvb2wgbG9ja3JlZl9nZXRfbm90X2RlYWQoc3RydWN0IGxvY2tyZWYgKmxvY2tyZWYpOwogCiAvKiBNdXN0IGJlIGNhbGxlZCB1bmRlciBzcGlubG9jayBmb3IgcmVsaWFibGUgcmVzdWx0cyAqLwotc3RhdGljIGlubGluZSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0cnVjdCBsb2NrcmVmICpsKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpCiYjNDM7ewomIzQzOwlyZXR1cm4gKFJFQURfT05DRShsLSZndDtjb3VudCkgPT0gX19MT0NLUkVGX0RFQURfVkFMKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBib29sIGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKGNvbnN0IHN0cnVjdCBsb2NrcmVmICpsKQogewotCXJldHVybiAoKGludClsLSZndDtjb3VudCAmbHQ7IDApOwomIzQzOwlpbnQgY291bnQgPSBSRUFEX09OQ0UobC0mZ3Q7Y291bnQpOwomIzQzOwlyZXR1cm4gKGNvdW50ID09IF9fTE9DS1JFRl9ERUFEX1ZBTCB8fCBjb3VudCA9PSAwKTsKIH0KIAogI2VuZGlmIC8qIF9fTElOVVhfTE9DS1JFRl9IICovCmRpZmYgLS1naXQgYS9saWIvbG9ja3JlZi5jIGIvbGliL2xvY2tyZWYuYwppbmRleCA1ZDhlM2VmMzg2MGVlMS4uOWIzZGQ2ODhkOGNkYTEgMTAwNjQ0Ci0tLSBhL2xpYi9sb2NrcmVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL2xvY2tyZWYuYwpAQCAtMTMxLDcgJiM0MzsxMzEsNyBAQCBFWFBPUlRfU1lNQk9MKGxvY2tyZWZfcHV0X29yX2xvY2spOwogdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZikKIHsKIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJmFtcDtsb2NrcmVmLSZndDtsb2NrKTsKLQlsb2NrcmVmLSZndDtjb3VudCA9IC0xMjg7CiYjNDM7CWxvY2tyZWYtJmd0O2NvdW50ID0gX19MT0NLUkVGX0RFQURfVkFMOwogfQogRVhQT1JUX1NZTUJPTChsb2NrcmVmX21hcmtfZGVhZCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTG9ja3JlZiBDaGFuZ2UgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHN3YXBwaW5nIG91dCBgX19sb2NrcmVmX2lzX2RlYWRgIHdpdGggYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSBkZXRlcm1pbmUgaWYgYSBgZGVudHJ5YCYjMzk7cyBsb2NrIHJlZmVyZW5jZSBpcyAmIzM0O2RlYWQuJiMzNDsgIFByZXZpb3VzbHksIGFueSBuZWdhdGl2ZSB2YWx1ZSBvZiBgZGVudHJ5LSZndDtkX2xvY2tyZWYuY291bnRgIGluZGljYXRlZCBhIGRlYWQgbG9ja3JlZi4gTm93LCBpdCYjMzk7cyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBgLTEyOGAgKGRlZmluZWQgYXMgYF9fTE9DS1JFRl9ERUFEX1ZBTGApLiAgV2UmIzM5O3JlIGdvaW5nIGZyb20gY2hlY2tpbmcgYGNvdW50ICZsdDsgMGAgdG8gY2hlY2tpbmcgYFJFQURfT05DRShsLSZndDtjb3VudCkgPT0gX19MT0NLUkVGX0RFQURfVkFMYCBvciB6ZXJvLCByaWdodD8KClRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBubyBsb25nZXIgYSBjYXRjaC1hbGwgZm9yIGFueSBuZWdhdGl2ZSB2YWx1ZTsgaXQmIzM5O3Mgbm93IHNwZWNpZmljIHRvIHRoYXQgYC0xMjhgIHZhbHVlLiAgSXMgdGhpcyBhIGJ1ZyBmaXgvcmVmYWN0b3Jpbmcgb3IgYW4gYWN0dWFsIGZ1bmN0aW9uYWwgY2hhbmdlPyBMZXQgbWUgdGhpbmssIGFtIEkgaW50cm9kdWNpbmcgbmV3IGZlYXR1cmVzPyBOby4gSXQmIzM5O3MgcHVyZWx5IGZpeGluZyBhIGxvY2tyZWYgY2hlY2suCgpUaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB3aXRob3V0IGltcGFjdGluZyBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUsIG9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycy4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIChkY2FjaGUgYW5kIGxvY2tyZWYpLCBzbyBpbml0aWFsbHksIEkmIzM5O2Qgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgJiMzNDtudW1lcmljIGNvbnN0YW50cyYjMzQ7IGV4Y2VwdGlvbi4gRG9lcyB0aGlzIG5ldyBiZWhhdmlvciBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IFllcyEgIFByZXZpb3VzbHksIGFuIHVuZGVyZmxvdyBjb3VsZCBiZSB0cmVhdGVkIGFzIGRlYWQsIGJ1dCBub3cgaXQgd2lsbCBub3QgYmUuIFRoZSBgbG9ja3JlZmAgY291bnQgaXMgb25seSBzZXQgdG8gYC0xMjhgIHdoZW4gbWFya2VkIGRlYWQuIFNvIGFueSBvdGhlciBuZWdhdGl2ZSB2YWx1ZSBzaG91bGRuJiMzOTt0IHJlYWxseSAqYmUqIHBvc3NpYmxlIHVubGVzcyB0aGVyZSYjMzk7cyBhbiB1bmRlcmZsb3cuIFRoYXQgY291bGQgdHJpZ2dlciBvdGhlciBidWdzIG9yIHdhcm5pbmdzLiBFZGdlIGNhc2VzIGFyZSBteSBmb2N1cy4KClNvLCB3aGVyZSBhcmUgdGhlc2UgY2hhbmdlcz8gSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyB2YXJpb3VzIGRjYWNoZSBmdW5jdGlvbnMgKGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBldGMuKSwgY2VwaCwgZXJvZnMsIGdmczIsIGFuZCB4ZnMuICBJIHdhbnQgdG8gYXZvaWQgZnV6emluZyB0aGUgaG90IHBhdGggZGNhY2hlIHJvdXRpbmVzLCB0aG9zZSBhcmUgaGl0IHRvbyBvZnRlbiB0byBiZSB1c2VmdWwgZm9yIGZvY3VzZWQgZnV6emluZy4gQnV0IGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAsIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAsIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAsIGBnZGxtX2FzdGAsIGBnZGxtX2Jhc3RgLCBgZ2RsbV9wdXRfbG9ja2AsIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YCwgYF9fZGVudHJ5X2xlYXNlc193YWxrYD8gTGV0IG1lIHNlZS4gSSBjYW4gZm9jdXMgb24gdGhvc2Ugcm91dGluZXMgaW4gbXkgZnV6emluZy4KCk15IGNvbmNsdXNpb24gaXMgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgLiBBbmQgSSBuZWVkIHRvIHRlc3QgdGhvc2UgZnVuY3Rpb25zLiBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFzIHdlbGwgLSBpcyBgQ09ORklHX1hGU19RVU9UQWAgbmVlZGVkIGZvciBYRlMgdGVzdHM/IEkgbmVlZCB0byBjaGVjayBgZnMveGZzL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlNfUVVPVEEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZz01MD1jb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcbi0tXG5mcy94ZnMvS2NvbmZpZy03Ni1cbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcbmZzL3hmcy9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtYRlMgUXVvdGEgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIEdGUzIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3MsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9nZnMyL0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0JiMzOTtzIHRoZSBjYW5vbmljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHRlMyIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGludHJvZHVjZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQgYWxsb3dzIG1lIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgR0ZTMiBmZWF0dXJlcywgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBhbmQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB0YXNrLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGZvciBHRlMyLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMgb24gZmVhdHVyZXMgbGlrZSBgQ09ORklHX0JMT0NLYCwgYENPTkZJR19GU2AsIGBDT05GSUdfWEZTYCBhbmQgYENPTkZJR19KQkQyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR0ZTMl9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2dmczIvS2NvbmZpZzoyOmNvbmZpZyBHRlMyX0ZTXG5mcy9nZnMyL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dGUzIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2dmczIvS2NvbmZpZy0yNi1cbmZzL2dmczIvS2NvbmZpZzoyNzpjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVxuZnMvZ2ZzMi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtHRlMyIERMTSBsb2NraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGF0IEtjb25maWcgZmlsZToKCioqQ2hlY2tpbmcgdGhlIEVST0ZTIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgZnMvZXJvZnMvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoaXMgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIEVST0ZTIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucywgbmV3IGZlYXR1cmVzLCBvciBwZXJoYXBzIGV2ZW4gYW55IGRlcHJlY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0IGFsbC4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBwcm9tcHQgc3RyaW5ncy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb250cm9sbGFibGUgYXQgY29tcGlsZSB0aW1lIHZlcnN1cyBwb3RlbnRpYWxseSBydW50aW1lLiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHRoZSBvdmVyYWxsIGZlYXR1cmUgc2V0LCBvciBhcmVhcyBJIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBpbiB0aGUgcGFzdD8gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBjb25zaWRlcmluZzogY29tcHJlc3Npb24gb3B0aW9ucywgc3VwZXJibG9jayBzdXBwb3J0LCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvb3QtdGltZSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoZXNlIG9wdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsJiMzOTtzIG92ZXJhbGwgbW9kdWxlIHN5c3RlbSB0b28uIElzIHRoZXJlIGFueXRoaW5nIHRoYXQgY291bGQgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgb2J2aW91cyBidWdzIG9yIHVudXN1YWwgaWRpb21zLiBBZnRlciB0aGF0LCBJIHdpbGwgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBJIG1heSBoYXZlIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWctMi1cbmZzL2Vyb2ZzL0tjb25maWc6Mzpjb25maWcgRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0VST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctNDktXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xuZnMvZXJvZnMvS2NvbmZpZy01MS1cdGJvb2wgXCYjMzQ7RVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxuZnMvZXJvZnMvS2NvbmZpZzo2MDpjb25maWcgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0VST0ZTIGV4dGVuZGVkIGF0dHJpYnV0ZXNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTcwLVxuZnMvZXJvZnMvS2NvbmZpZzo3MTpjb25maWcgRVJPRlNfRlNfUE9TSVhfQUNMXG5mcy9lcm9mcy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtFUk9GUyBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctODQtXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxuZnMvZXJvZnMvS2NvbmZpZy04Ni1cdGJvb2wgXCYjMzQ7RVJPRlMgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cbmZzL2Vyb2ZzL0tjb25maWc6OTg6Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG5mcy9lcm9mcy9LY29uZmlnLTk5LVx0Ym9vbCBcJiMzNDtGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTExMS1cbmZzL2Vyb2ZzL0tjb25maWc6MTEyOmNvbmZpZyBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVx0Ym9vbCBcJiMzNDtFUk9GUyBEYXRhIENvbXByZXNzaW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTEyMS1cbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxuZnMvZXJvZnMvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O0VST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cbmZzL2Vyb2ZzL0tjb25maWc6MTM0OmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQV9ERUZBVUxUX01BWF9TVFJFQU1TXG5mcy9lcm9mcy9LY29uZmlnLTEzNS1cdGludCBcJiMzNDtFUk9GUyBMWk1BIGRlZmF1bHQgbWF4aW11bSBkZWNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE0Ny1cbmZzL2Vyb2ZzL0tjb25maWc6MTQ4OmNvbmZpZyBFUk9GU19GU19aSVBfREVGTEFURVxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O0VST0ZTIERFRkxBVEUgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE1OC1cbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxuZnMvZXJvZnMvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O0VST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxuZnMvZXJvZnMvS2NvbmZpZzoxNzA6Y29uZmlnIEVST0ZTX0ZTX1pJUF9BQ0NFTFxuZnMvZXJvZnMvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O0VST0ZTIGhhcmR3YXJlIGRlY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2Vyb2ZzL0tjb25maWctMTgzLVxuZnMvZXJvZnMvS2NvbmZpZzoxODQ6Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXHRib29sIFwmIzM0O0VST0ZTIHBlci1jcHUgZGVjb21wcmVzc2lvbiBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTE5Mi1cbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbmZzL2Vyb2ZzL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXCYjMzQ7XG4tLVxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXG5mcy9lcm9mcy9LY29uZmlnOjIwMzpjb25maWcgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVxuZnMvZXJvZnMvS2NvbmZpZy0yMDQtXHRib29sIFwmIzM0O0VST0ZTIHBhZ2UgY2FjaGUgc2hhcmUgc3VwcG9ydCAoZXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEVST0ZTIEJ1aWxkIFN5c3RlbSBmb3IgWklQIFN1cHBvcnQqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGB6ZGF0YS5jYCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtBaCwgcmlnaHQsIHRoaXMgaXMgb25seSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiB0aGF0IGBDT05GSUdfRVJPRlNfRlNfWklQYCBvcHRpb24gaXMgZW5hYmxlZC4mIzM0OyBPa2F5LCB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIHdoZXJlIHdvdWxkIHRoZSBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBsaXZlIGZvciB0aGF0PyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB3aXRoIHRoZSByZWxldmFudCBidWlsZCBydWxlcyBpbiBgZnMvZXJvZnMvTWFrZWZpbGVgLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGNvbnRyb2xsaW5nIHRoaXMgcGFydGljdWxhciBpbmNsdXNpb24uIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGhvdyBaSVAgY29tcHJlc3Npb24gaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBFUk9GUyBmaWxlc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL01ha2VmaWxlPTU9ZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWEFUVFIpICYjNDM7PSB4YXR0ci5vXG5mcy9lcm9mcy9NYWtlZmlsZTo2OmVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUCkgJiM0Mzs9IGRlY29tcHJlc3Nvci5vIHptYXAubyB6ZGF0YS5vIHp1dGlsLm9cbmZzL2Vyb2ZzL01ha2VmaWxlLTctZXJvZnMtJChDT05GSUdfRVJPRlNfRlNfWklQX0xaTUEpICYjNDM7PSBkZWNvbXByZXNzb3JfbHptYS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTkyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uIGZvciBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgT2JqZWN0KioKCkFscmlnaHQsIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGBsb2NrX2RsbS5vYCBvYmplY3QgaXMgYmVpbmcgYnVpbHQuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBsb2NraW5nLCBhbmQga25vd2luZyB0aGUgR0ZTMiBmaWxlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9ucy4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgZnMvZ2ZzMi9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBsb29raW5nIGZvciBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IGZsYWdzIHJlbGF0ZWQgdG8gdGhlIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEdGUzIgbW9kdWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9ja19kbG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvTWFrZWZpbGU9ND1nZnMyLXkgOj0gYWNsLm8gYm1hcC5vIGRpci5vIHhhdHRyLm8gZ2xvY2subyBcXFxuLS1cbmZzL2dmczIvTWFrZWZpbGUtOS1cbmZzL2dmczIvTWFrZWZpbGU6MTA6Z2ZzMi0kKENPTkZJR19HRlMyX0ZTX0xPQ0tJTkdfRExNKSAmIzQzOz0gbG9ja19kbG0ub1xuZnMvZ2ZzMi9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4OTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaWxlc3lzdGVtIEZlYXR1cmUgU2VsZWN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBidWlsZGluZyB1cCBhIHBpY3R1cmUgaGVyZSBvZiB0aGUgZmlsZXN5c3RlbXMgd2UgbmVlZCB0byBjb25zaWRlci4gVGhlIGltbWVkaWF0ZSByZXF1aXJlbWVudHMgYXJlIGBHRlMyX0ZTYCwgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIHN0b3JhZ2UgbmVlZHMsIGFuZCB3ZSYjMzk7bGwgcHJvYmFibHkgYWxzbyBuZWVkIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCB0byBtYWtlIHRoYXQgZnVuY3Rpb25hbC4gVGhlbiB3ZSBoYXZlIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19aSVBgLCB3aGljaCBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBmb3IgYSBwYXJ0aWN1bGFyIHJlYWQtb25seSBpbWFnZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTmV4dCwgYFhGU19GU2AgaXMgYWx3YXlzIGEgZ29vZCBvcHRpb24gd2hlbiBoaWdoLXBlcmZvcm1hbmNlIGlzIGEgZmFjdG9yIGFuZCB3ZSYjMzk7bGwgbmVlZCBgWEZTX1FVT1RBYCBlbmFibGVkIGFsb25nIHdpdGggWEZTLiBGaW5hbGx5LCBgQ0VQSF9GU2AgaXMgYW5vdGhlciBkaXN0cmlidXRlZCBmaWxlc3lzdGVtIHRoYXQgd2UgbWF5IG5lZWQgdG8gdXNlLiBJIHRoaW5rIHRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYGZzL2NlcGgvS2NvbmZpZ2AgZmlsZSwgdG8gcmV2aWV3IGFuZCBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHNwZWNpZmljIG9wdGlvbnMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRVBIX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvY2VwaC9LY29uZmlnOjI6Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuLS1cbmZzL2NlcGgvS2NvbmZpZz0xOT1pZiBDRVBIX0ZTXG5mcy9jZXBoL0tjb25maWc6MjA6Y29uZmlnIENFUEhfRlNDQUNIRVxuZnMvY2VwaC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgQ2VwaCBjbGllbnQgY2FjaGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI3PWVuZGlmXG5mcy9jZXBoL0tjb25maWctMjgtXG5mcy9jZXBoL0tjb25maWc6Mjk6Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9jZXBoL0tjb25maWctMzgtXG5mcy9jZXBoL0tjb25maWc6Mzk6Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcbmZzL2NlcGgvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7Q2VwaEZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0MQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBGaWxlIFN5c3RlbSBDb2RlKioKClJpZ2h0LCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9jZXBoL2Rpci5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIENlcGggZmlsZSBzeXN0ZW0sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIHBhdGguIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBpbiB0aGUgYENFUEhfRlNgIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgbWlnaHQgYWZmZWN0IG90aGVyIGZpbGUgc3lzdGVtcyBvciByZWxhdGVkIGNvbXBvbmVudHMuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IGEgZmlsZSBzeXN0ZW0gcGF0Y2gsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgYGZzL3hmcy9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbWVudGlvbnMgb2YgbW9kdWxlcy4gSSBuZWVkIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBpZiBvdGhlciBmaWxlIHN5c3RlbXMsIGFuZCBwYXJ0aWN1bGFybHkgdGhvc2UgdGhhdCBtaWdodCBiZSB1c2luZyBhIHNpbWlsYXIgYXBwcm9hY2ggdG8gcXVvdGEgbWFuYWdlbWVudCwgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBgeGZzX3FtLm9gIChxdW90YSBtb2R1bGUpLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgbWlnaHQgcHJvdmlkZSBhIHJlbGF0ZWQgZXhhbXBsZS4gS25vd2luZyB3aGVyZSB0aGUgb3RoZXIgbW9kdWxlcyBhcmUgaW4gdGhlIHN5c3RlbSB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IGltcGFjdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc19xbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvTWFrZWZpbGU9MTMzPXhmcy0kKENPTkZJR19YRlNfUVVPVEEpXHRcdCYjNDM7PSB4ZnNfZHF1b3QubyBcXFxuLS1cbmZzL3hmcy9NYWtlZmlsZS0xMzUtXHRcdFx0XHQgICB4ZnNfdHJhbnNfZHF1b3QubyBcXFxuZnMveGZzL01ha2VmaWxlOjEzNjpcdFx0XHRcdCAgIHhmc19xbV9zeXNjYWxscy5vIFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM3Olx0XHRcdFx0ICAgeGZzX3FtX2Jodi5vIFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM4Olx0XHRcdFx0ICAgeGZzX3FtLm8gXFxcbmZzL3hmcy9NYWtlZmlsZS0xMzktXHRcdFx0XHQgICB4ZnNfcXVvdGFvcHMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlMgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgWEZTIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gWEZTIGl0c2VsZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lLCBhbmQgSSB0aGluayBpdCYjMzk7cyBgWEZTX0ZTYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyBgZnMveGZzL0tjb25maWdgLiBJJiMzOTtsbCBvcGVuIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlIGZvciBYRlMgYW5kIHdoZXJlIGBYRlNfRlNgIGlzIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gYW5kIExvY2tpbmcgTWVjaGFuaXNtcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBzZWVpbmcgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnM6IGBHRlMyX0ZTYCwgYEdGUzJfRlNfTE9DS0lOR19ETE1gLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgYENFUEhfRlNgLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnZXQgbXkgYmVhcmluZ3MuCgpOb3csIEkgbmVlZCB0byBsb29rIGF0IHNwZWNpZmljIGZvY3VzIHN5bWJvbHMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGZpbGVzeXN0ZW1zLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLCBgel9lcm9mc19wdXRfcGNsdXN0ZXJgLCBzdWdnZXN0aW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIEVST0ZTJiMzOTsgcGVyc2lzdGVudCBjbHVzdGVycywgYW5kIGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgY2xlYXJseSBwb2ludHMgdG8gcXVvdGEgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBGb3IgR0ZTMiwgYGdkbG1fYXN0YCwgYGdkbG1fYmFzdGAsIGBnZGxtX3B1dF9sb2NrYCBqdW1wIG91dCBhdCBtZSBhcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkaXN0cmlidXRlZCBsb2NraW5nLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiB0aGVyZSYjMzk7cyBgcWRfcHV0YCwgYHFkX2dyYWJfc3luY2AsIGxpa2VseSBkZWFsaW5nIHdpdGggcXVvdGEtcmVsYXRlZCBkYXRhLiBGaW5hbGx5LCB0aGUgZ2xvY2sgb3BlcmF0aW9ucyBhcmUgcmVwcmVzZW50ZWQgYnkgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGBfX2RlbnRyeV9sZWFzZXNfd2Fsa2AuIEkgcmVjb2duaXplIHRoYXQsIHRoYXQmIzM5O3MgaW4gYGZzL2NlcGgvZGlyLmNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5kZWVkIHN0YXRpYyB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBkZXRhaWwgdGhhdCBkaWN0YXRlcyBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBhY2Nlc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2RlbnRyeV9sZWFzZXNfd2FsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY2VwaC9kaXIuYz0xNjQ1PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5mcy9jZXBoL2Rpci5jOjE2NDY6X19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcbmZzL2NlcGgvZGlyLmMtMTY0Ny1cdFx0ICAgICBzdHJ1Y3QgY2VwaF9sZWFzZV93YWxrX2NvbnRyb2wgKmx3Yylcbi0tXG5mcy9jZXBoL2Rpci5jPTE3NzU9aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuLS1cbmZzL2NlcGgvZGlyLmMtMTc5MC1cdGx3Yy5ucl90b19zY2FuICA9IENFUEhfQ0FQU19QRVJfUkVMRUFTRSAqIDI7XG5mcy9jZXBoL2Rpci5jOjE3OTE6XHRmcmVlZCA9IF9fZGVudHJ5X2xlYXNlc193YWxrKG1kc2MsIFx1MDAyNmx3Yyk7XG5mcy9jZXBoL2Rpci5jLTE3OTItXHRpZiAoIWx3Yy5ucl90b19zY2FuKSAvKiBtb3JlIGludmFsaWQgbGVhc2VzICovXG4tLVxuZnMvY2VwaC9kaXIuYy0xODAwLVx0bHdjLmRpcl9sZWFzZV90dGwgPSBtZHNjLVx1MDAzZWZzYy1cdTAwM2Vtb3VudF9vcHRpb25zLVx1MDAzZWNhcHNfd2FudGVkX2RlbGF5X21heCAqIEhaO1xuZnMvY2VwaC9kaXIuYzoxODAxOlx0ZnJlZWQgJiM0Mzs9X19kZW50cnlfbGVhc2VzX3dhbGsobWRzYywgXHUwMDI2bHdjKTtcbmZzL2NlcGgvZGlyLmMtMTgwMi1cdGlmICghbHdjLm5yX3RvX3NjYW4pIC8qIG1vcmUgdG8gY2hlY2sgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgdG8gYGNlcGhfdHJpbV9kZW50cmllc2AqKgoKQWxyaWdodCwgdGhpcyBzaXR1YXRpb24gZmVlbHMgcHJldHR5IHN0YXRpYy4gSSYjMzk7bSBmb2N1c2luZyBpbiBvbiB0aGUgY2FsbCB0byBgY2VwaF90cmltX2RlbnRyaWVzYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdmVyaWZ5IGl0cyB2aXNpYmlsaXR5LiBJcyB0aGlzIGEgcHVibGljbHkgZXhwb3J0ZWQgZnVuY3Rpb24sIG9yIGlzIGl0IGRlZmluZWQgYXMgYHN0YXRpY2Agd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0PyBLbm93aW5nIHRoYXQgZHJhc3RpY2FsbHkgYWx0ZXJzIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGJlaW5nIGludm9rZWQgYW5kLCBjcnVjaWFsbHksIHdoYXQgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlIGF0IHBsYXkuIFVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoYXQgZnVuY3Rpb24gY2FsbCBpcyB2aXRhbCB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQgaXMgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWxseSB3aWRlbHktdXNlZCwgZXh0ZXJuYWxseSBjYWxsYWJsZSBmdW5jdGlvbiBvciBhIG1vcmUgdGlnaHRseS1zY29wZWQsIGludGVybmFsIHV0aWxpdHkuIFRoYXQgZGlzdGluY3Rpb24mIzM5O3MgZ29pbmcgdG8gZHJpdmUgbXkgbmV4dCBzdGVwcyBmb3IgZGlnZ2luZyBpbnRvIHRoZSByb290IGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZXBoX3RyaW1fZGVudHJpZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jZXBoL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmM9MTc1MD1zdGF0aWMgaW50IF9fZGlyX2xlYXNlX2NoZWNrKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2Rpci5jLTE3NzQtXG5mcy9jZXBoL2Rpci5jOjE3NzU6aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuZnMvY2VwaC9kaXIuYy0xNzc2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0OTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDb25zaWRlcmluZyBUcmltIE9wZXJhdGlvbnMgYW5kIEVST0ZTIENsdXN0ZXIgUmV0cmlldmFsKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBjZXBoX3RyaW1fZGVudHJpZXNgIGZ1bmN0aW9uLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzICpub3QqIHN0YXRpYyBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhhdCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuIFdlIGNhbiBkZWZpbml0ZWx5IGxldmVyYWdlIHRoYXQgbm9uLXN0YXRpYyBuYXR1cmU7IHRoYXQmIzM5O3MgZ29vZCBuZXdzLgoKTm93LCBteSBtaW5kIHNoaWZ0cyB0byBhbm90aGVyIHJlbGF0ZWQgZnVuY3Rpb24sIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAuIEkgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBvbmUgZmFjdG9ycyBpbnRvIHRoZSBlcXVhdGlvbiwgaWYgYXQgYWxsLiBJcyB0aGVyZSBhIGNvbm5lY3Rpb24gaGVyZT8gQ291bGQgYGNlcGhfdHJpbV9kZW50cmllc2AgaGF2ZSBhbiBpbnRlcmFjdGlvbiB3aXRoIG9yIGEgZGVwZW5kZW5jeSBvbiBgel9lcm9mc19nZXRfcGNsdXN0ZXJgIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGF0JiMzOTtzIHdoYXQgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgYmVmb3JlIEkgbW92ZSBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19nZXRfcGNsdXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy96ZGF0YS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmM9Njg5PXN0YXRpYyBpbnQgel9lcm9mc19hdHRhY2hfcGFnZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy03MjEtXG5mcy9lcm9mcy96ZGF0YS5jOjcyMjpzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuZnMvZXJvZnMvemRhdGEuYy03MjMte1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG4tLVxuZnMvZXJvZnMvemRhdGEuYy03NzYtXHRcdFx0XHRcdCAgIE5VTEwsIHBjbCwgR0ZQX0tFUk5FTCk7XG5mcy9lcm9mcy96ZGF0YS5jOjc3NzpcdFx0XHRpZiAoIXByZSB8fCB4YV9pc19lcnIocHJlKSB8fCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihwcmUpKSB7XG5mcy9lcm9mcy96ZGF0YS5jLTc3OC1cdFx0XHRcdHhhX3VubG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9ODAzPXN0YXRpYyBpbnQgel9lcm9mc19wY2x1c3Rlcl9iZWdpbihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG4tLVxuZnMvZXJvZnMvemRhdGEuYy04MzEtXHRcdFx0cGNsID0geGFfbG9hZChcdTAwMjZFUk9GU19TQihzYiktXHUwMDNlbWFuYWdlZF9wc2xvdHMsIG1hcC1cdTAwM2VtX3BhKTtcbmZzL2Vyb2ZzL3pkYXRhLmM6ODMyOlx0XHRcdG5lZWRyZXRyeSA9IHBjbCBcdTAwMjZcdTAwMjYgIXpfZXJvZnNfZ2V0X3BjbHVzdGVyKHBjbCk7XG5mcy9lcm9mcy96ZGF0YS5jLTgzMy1cdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxMzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKlN0YXRpYyBBbmFseXNpcyBhbmQgQ2x1c3RlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGlzIHRoaW5nIGlzICpzdGF0aWMqLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjcnVjaWFsIGNsdWUuIE5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIGNhbGxlcnMuIEkgc2VlIGB6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyYCBhbmQgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gLiBUaGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIG5vdyBpczogKmFyZSB0aG9zZSBmdW5jdGlvbnMgdGhlbXNlbHZlcyBzdGF0aWM/KiBUaGVpciBzdGF0dXMgYXMgc3RhdGljIG9yIG5vbiBzdGF0aWMgaGFzIGNyaXRpY2FsIHJhbWlmaWNhdGlvbnMgb24gdGhlIHNjb3BlIG9mIHRoZWlyIGFjY2Vzc2liaWxpdHkgYW5kIHRoZSBpbXBsaWNhdGlvbnMgaXQgaGFzIG9uIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz03MjI9c3RhdGljIGJvb2wgel9lcm9mc19nZXRfcGNsdXN0ZXIoc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXIgKnBjbClcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTczOC1cbmZzL2Vyb2ZzL3pkYXRhLmM6NzM5OnN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG5mcy9lcm9mcy96ZGF0YS5jLTc0MC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTg0MS1cdH0gZWxzZSB7XG5mcy9lcm9mcy96ZGF0YS5jOjg0MjpcdFx0cmV0ID0gel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihmZSk7XG5mcy9lcm9mcy96ZGF0YS5jLTg0My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgU3RhdGljIEluaXRpYWxpemF0aW9uIGFuZCBDYWxsZXJzKioKCk9rYXksIHNvIGJvdGggb2YgdGhlc2UgY29tcG9uZW50cyBhcmUgaW5oZXJlbnRseSBzdGF0aWMgaW4gdGhlaXIgbmF0dXJlLiBCdXQgdGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbjogd2hhdCYjMzk7cyB0aGUgcm9sZSBhbmQgYmVoYXZpb3Igb2YgYW55IGNvZGUgdGhhdCYjMzk7cyBjYWxsaW5nIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYD8gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGlzIGFsc28gc3RhdGljLCBob3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBjb21wb25lbnRzPyBJdCBpbXBsaWVzIGEgc3RhdGljIGluaXRpYWxpemF0aW9uIHBhdHRlcm4uIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGNhbGxlcnMuIEtub3dpbmcgdGhlaXIgbmF0dXJlIHdpbGwgZ2l2ZSB1cyB0aGUgZnVsbCBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdGF0aWMgY29tcG9uZW50cyBhbmQgdGhlIGNhbGxlcnMgb2YgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBpdCBkZXRlcm1pbmVzIGhvdyBhbmQgd2hlbiB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0IGluIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7el9lcm9mc19wY2x1c3Rlcl9iZWdpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz03Mzk9c3RhdGljIGludCB6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTgwMi1cbmZzL2Vyb2ZzL3pkYXRhLmM6ODAzOnN0YXRpYyBpbnQgel9lcm9mc19wY2x1c3Rlcl9iZWdpbihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXG5mcy9lcm9mcy96ZGF0YS5jLTgwNC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0Ny1cdFx0XHRpZiAoIWYtXHUwMDNlcGNsKSB7XG5mcy9lcm9mcy96ZGF0YS5jOjEwNDg6XHRcdFx0XHRlcnIgPSB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKGYpO1xuZnMvZXJvZnMvemRhdGEuYy0xMDQ5LVx0XHRcdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGB6X2Vyb2ZzX3NjYW5fZm9saW9gKioKCk9rYXksIHNvIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgc29tZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gVGhlIHVzZSBvZiAmIzM5O3N0YXRpYyYjMzk7IHVzdWFsbHkgaW1wbGllcyBhIHNoYXJlZCBzY29wZSBhbmQgbGlmZXRpbWUgd2l0aGluIGEgY29tcGlsYXRpb24gdW5pdC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIG5leHQgY3JpdGljYWwgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBvciBtZXRob2RzLiBUaGlzIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgaXRzIG92ZXJhbGwgcHVycG9zZSB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgcGFydCBvZiBhIGxhcmdlciwgZXN0YWJsaXNoZWQgbW9kdWxlPyBPciBpcyB0aGlzIGEgbW9yZSBpc29sYXRlZCB1dGlsaXR5IGZ1bmN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIGlzIGtleSB0byBxdWlja2x5IGdyYXNwaW5nIGl0cyByb2xlIGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRvIGl0cyBvcmlnaW4gYW5kIHVuZGVyc3RhbmQgaXRzIGludm9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfc2Nhbl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz05ODA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZnJhZ21lbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEwMDQtXG5mcy9lcm9mcy96ZGF0YS5jOjEwMDU6c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG5mcy9lcm9mcy96ZGF0YS5jLTEwMDYtXHRcdFx0ICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCByYSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTE4NTktXHRcdFx0ZWxzZVxuZnMvZXJvZnMvemRhdGEuYzoxODYwOlx0XHRcdFx0el9lcm9mc19zY2FuX2ZvbGlvKGYsIGZvbGlvLCAhIXJhYyk7XG5mcy9lcm9mcy96ZGF0YS5jLTE4NjEtXHRcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE4NzA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODc5LVx0el9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShcdTAwMjZmLCBOVUxMLCB0cnVlKTtcbmZzL2Vyb2ZzL3pkYXRhLmM6MTg4MDpcdGVyciA9IHpfZXJvZnNfc2Nhbl9mb2xpbyhcdTAwMjZmLCBmb2xpbywgZmFsc2UpO1xuZnMvZXJvZnMvemRhdGEuYy0xODgxLVx0el9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShcdTAwMjZmLCBOVUxMLCBmYWxzZSk7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xODk4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcmVhZGFoZWFkKHN0cnVjdCByZWFkYWhlYWRfY29udHJvbCAqcmFjKVxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTkxOS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTkyMDpcdFx0ZXJyID0gel9lcm9mc19zY2FuX2ZvbGlvKFx1MDAyNmYsIGZvbGlvLCB0cnVlKTtcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkyMS1cdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgZXJyICE9IC1FSU5UUilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gRVJPRlMgUmVhZCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IEVST0ZTIGlzIGhhbmRsaW5nIHJlYWRzLCBwYXJ0aWN1bGFybHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnNgLiBJJiMzOTt2ZSBnb3QgYSBodW5jaCB0aGF0IGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgIGFyZSBsaWtlbHkgcGxheWluZyBhIGtleSByb2xlIGhlcmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIGl0IHNlZW1zIGxvZ2ljYWwgdGhleSYjMzk7ZCBiZSBwbHVnZ2VkIGluIHNvbWV3aGVyZSB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUuCgpNeSBmaXJzdCBzdGVwIGlzIHRvIGZvY3VzIG9uIGB6X2Vyb2ZzX3JlYWRfZm9saW9gLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCYjMzk7cyBkb2luZy4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljIHdpbGwgZ2l2ZSBtZSBhIGdyZWF0IGZvb3Rob2xkIG9uIGhvdyB0aGUgRVJPRlMgcmVhZCBtZWNoYW5pc20gd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZvbGlvLCBob3cgaXQgaGFuZGxlcyB0aGUgcGh5c2ljYWwgcmVhZCwgaWYgaXQgdXNlcyBhbnkgY2FjaGluZyBhbmQgZXZlcnl0aGluZyBlbHNlIHRoYXQgaXMgZ29pbmcgb24gd2l0aCB0aGUgZm9saW8gcmVhZHMuIFRoaXMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpZXMsIEkgdGhpbmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfcmVhZF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODY5LVxuZnMvZXJvZnMvemRhdGEuYzoxODcwOnN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvZXJvZnMvemRhdGEuYy0xODcxLXtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTE5MzY9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2FvcHMgPSB7XG5mcy9lcm9mcy96ZGF0YS5jOjE5Mzc6XHQucmVhZF9mb2xpbyA9IHpfZXJvZnNfcmVhZF9mb2xpbyxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkzOC1cdC5yZWFkYWhlYWQgPSB6X2Vyb2ZzX3JlYWRhaGVhZCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNjIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgel9lcm9mc19yZWFkX2ZvbGlvYCBhbmQgUG90ZW50aWFsIEFsdGVybmF0aXZlcyoqCgpPa2F5LCBzbyBgel9lcm9mc19yZWFkX2ZvbGlvYCBpcyBkZWZpbml0ZWx5IGFuIGVudHJ5IHBvaW50LCB0aGF0IG11Y2ggaXMgY2xlYXIsIGFuZCBpdCYjMzk7cyBzdGF0aWNhbGx5IGRlZmluZWQsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aXRoaW4gdGhlIGB6ZGF0YS5jYCBmaWxlIHNwZWNpZmljYWxseSwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMsICphbnkqIGZ1bmN0aW9ucyBhdCBhbGwsIHRoYXQgYXJlbiYjMzk7dCBkZWZpbmVkIGFzIHN0YXRpYz8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBpZGVudGlmeSByaWdodCBub3cuIFRoZSBhbnN3ZXIgd2lsbCBjaGFuZ2UgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3pkYXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYy0xNS1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTY6c3RydWN0IHpfZXJvZnNfYnZlYyB7XG5mcy9lcm9mcy96ZGF0YS5jLTE3LVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0yOT1fX1pfRVJPRlNfQlZTRVQoel9lcm9mc19idnNldF9pbmxpbmUsIFpfRVJPRlNfSU5MSU5FX0JWRUNTKTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTQwLSAqL1xuZnMvZXJvZnMvemRhdGEuYzo0MTpzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciB7XG5mcy9lcm9mcy96ZGF0YS5jLTQyLVx0c3RydWN0IG11dGV4IGxvY2s7XG4tLVxuZnMvZXJvZnMvemRhdGEuYy05Mi1cbmZzL2Vyb2ZzL3pkYXRhLmM6OTM6c3RydWN0IHpfZXJvZnNfZGVjb21wcmVzc3F1ZXVlIHtcbmZzL2Vyb2ZzL3pkYXRhLmMtOTQtXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9MTExPXN0YXRpYyBib29sIGVyb2ZzX2ZvbGlvX2lzX21hbmFnZWQoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmbylcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEyMS0gKi9cbmZzL2Vyb2ZzL3pkYXRhLmM6MTIyOnN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIge1xuZnMvZXJvZnMvemRhdGEuYy0xMjMtXHRzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYjtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTEzMD1zdGF0aWMgc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXJfc2xhYiBwY2x1c3Rlcl9wb29sW10gX19yZWFkX21vc3RseSA9IHtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTEzNC1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTM1OnN0cnVjdCB6X2Vyb2ZzX2J2ZWNfaXRlciB7XG5mcy9lcm9mcy96ZGF0YS5jLTEzNi1cdHN0cnVjdCBwYWdlICpidnBhZ2U7XG4tLVxuZnMvZXJvZnMvemRhdGEuYz00Mzc9c3RhdGljIGlubGluZSB2b2lkIHpfZXJvZnNfZGVzdHJveV9wY3B1X3dvcmtlcnModm9pZCkge31cbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTQzOS1cbmZzL2Vyb2ZzL3pkYXRhLmM6NDQwOnZvaWQgel9lcm9mc19leGl0X3N1YnN5c3RlbSh2b2lkKVxuZnMvZXJvZnMvemRhdGEuYy00NDEte1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmM9NDQ5PWludCBfX2luaXQgel9lcm9mc19pbml0X3N1YnN5c3RlbSh2b2lkKVxuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtNDc2LVxuZnMvZXJvZnMvemRhdGEuYzo0Nzc6ZW51bSB6X2Vyb2ZzX3BjbHVzdGVybW9kZSB7XG5mcy9lcm9mcy96ZGF0YS5jLTQ3OC1cdC8qIEl0IGhhcyBwcmV2aW91c2x5IGJlZW4gbGlua2VkIGludG8gYW5vdGhlciBwcm9jZXNzaW5nIGNoYWluICovXG4tLVxuZnMvZXJvZnMvemRhdGEuYy00OTUtXG5mcy9lcm9mcy96ZGF0YS5jOjQ5NjpzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCB7XG5mcy9lcm9mcy96ZGF0YS5jLTQ5Ny1cdHN0cnVjdCBpbm9kZSAqaW5vZGUsICpzaGFyZWRpbm9kZTtcbi0tXG5mcy9lcm9mcy96ZGF0YS5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2NhY2hlX2FvcHMgPSB7XG4tLVxuZnMvZXJvZnMvemRhdGEuYy02NjYtXG5mcy9lcm9mcy96ZGF0YS5jOjY2NzppbnQgel9lcm9mc19pbml0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9lcm9mcy96ZGF0YS5jLTY2OC17XG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xMDk3PXN0YXRpYyBib29sIHpfZXJvZnNfcGFnZV9pc19pbnZhbGlkYXRlZChzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5mcy9lcm9mcy96ZGF0YS5jLTExMDEtXG5mcy9lcm9mcy96ZGF0YS5jOjExMDI6c3RydWN0IHpfZXJvZnNfYmFja2VuZCB7XG5mcy9lcm9mcy96ZGF0YS5jLTExMDMtXHRzdHJ1Y3QgcGFnZSAqb25zdGFja19wYWdlc1taX0VST0ZTX09OU1RBQ0tfUEFHRVNdO1xuLS1cbmZzL2Vyb2ZzL3pkYXRhLmMtMTExNy1cbmZzL2Vyb2ZzL3pkYXRhLmM6MTExODpzdHJ1Y3Qgel9lcm9mc19idmVjX2l0ZW0ge1xuZnMvZXJvZnMvemRhdGEuYy0xMTE5LVx0c3RydWN0IHpfZXJvZnNfYnZlYyBidmVjO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ4NQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqUmVmbGVjdGluZyBvbiBTeW1ib2wgVmlzaWJpbGl0eSBpbiBYRlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB6X2Vyb2ZzX2luaXRfc3VwZXJgLiBJdCYjMzk7cyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBIb3dldmVyLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0JiMzOTtzIG5vdCBhIHBhcnRpY3VsYXJseSBpbnNpZ2h0ZnVsIG9yIGlsbHVtaW5hdGluZyBzeW1ib2wgdG8gYmUgZm9jdXNpbmcgb24uIFdlIG5lZWQgdG8gZGlnIGEgYml0IGRlZXBlciB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHJlbGV2YW50IGZvciB3aGF0IHdlIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZS4gTGV0JiMzOTtzIHJlZGlyZWN0IG91ciBhdHRlbnRpb24uIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbnN0aW5jdCBpcyB0byBwaXZvdCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGZpbGUgYGZzL3hmcy94ZnNfcW0uY2AuIEhvcGVmdWxseSwgdGhlcmUmIzM5O2xsIGJlIHNvbWV0aGluZyBpbiB0aGVyZSB0aGF0IHByb3ZpZGVzIG1vcmUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogeGZzX3FtXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmM9MzgyPXhmc19xbV9kcWRldGFjaChcbi0tXG5mcy94ZnMveGZzX3FtLmMtNDA2LVxuZnMveGZzL3hmc19xbS5jOjQwNzpzdHJ1Y3QgeGZzX3FtX2lzb2xhdGUge1xuZnMveGZzL3hmc19xbS5jLTQwOC1cdHN0cnVjdCBsaXN0X2hlYWRcdGJ1ZmZlcnM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqWEZTIFF1b3RhIE1hbmFnZW1lbnQ6IEEgUXVpY2sgQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBvbiB0b3Agb2YgYHhmc19xbV9kcXB1cmdlYC4gTmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgdW51c3VhbCBnb2luZyBvbiwgYW55IGxpbmdlcmluZyBpc3N1ZXMsIG9yIHBlcmhhcHMgYSBwZXJmb3JtYW5jZSBoaWNjdXAgSSBuZWVkIHRvIGFkZHJlc3MgcHJvYWN0aXZlbHkuIE5vIG5lZWQgdG8gZ28gdG9vIGRlZXAgYXQgdGhpcyBzdGFnZSwgYnV0IEkgd2FudCB0byBrZWVwIHRoaXMgcHJvY2VzcyBzdHJlYW1saW5lZC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IHBvdGVudGlhbCBpc3N1ZXMgbWF5IGJlIHByZXNlbnQsIGFuZCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIHN0YXkgYWhlYWQgb2YgdGhlIGN1cnZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnNfcW1fZHFwdXJnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmM9MTIzPVNUQVRJQyBpbnRcbmZzL3hmcy94ZnNfcW0uYzoxMjQ6eGZzX3FtX2RxcHVyZ2UoXG5mcy94ZnMveGZzX3FtLmMtMTI1LVx0c3RydWN0IHhmc19kcXVvdFx0KmRxcCxcbi0tXG5mcy94ZnMveGZzX3FtLmM9MjAyPXN0YXRpYyB2b2lkXG5mcy94ZnMveGZzX3FtLmM6MjAzOnhmc19xbV9kcXB1cmdlX2FsbChcbmZzL3hmcy94ZnNfcW0uYy0yMDQtXHRzdHJ1Y3QgeGZzX21vdW50XHQqbXApXG5mcy94ZnMveGZzX3FtLmMtMjA1LXtcbmZzL3hmcy94ZnNfcW0uYzoyMDY6XHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9VU0VSLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XG5mcy94ZnMveGZzX3FtLmM6MjA3Olx0eGZzX3FtX2RxdW90X3dhbGsobXAsIFhGU19EUVRZUEVfR1JPVVAsIHhmc19xbV9kcXB1cmdlLCBOVUxMKTtcbmZzL3hmcy94ZnNfcW0uYzoyMDg6XHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9QUk9KLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XG5mcy94ZnMveGZzX3FtLmMtMjA5LX1cbi0tXG5mcy94ZnMveGZzX3FtLmM9MjE1PXhmc19xbV91bm1vdW50KFxuLS1cbmZzL3hmcy94ZnNfcW0uYy0yMTgtXHRpZiAobXAtXHUwMDNlbV9xdW90YWluZm8pIHtcbmZzL3hmcy94ZnNfcW0uYzoyMTk6XHRcdHhmc19xbV9kcXB1cmdlX2FsbChtcCk7XG5mcy94ZnMveGZzX3FtLmMtMjIwLVx0XHR4ZnNfcW1fZGVzdHJveV9xdW90YWluZm8obXApO1xuLS1cbmZzL3hmcy94ZnNfcW0uYz0xNDU2PXhmc19xbV9xdW90YWNoZWNrKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy0xNTkyLVx0eGZzX2lub2RlZ2NfZmx1c2gobXApO1xuZnMveGZzL3hmc19xbS5jOjE1OTM6XHR4ZnNfcW1fZHFwdXJnZV9hbGwobXApO1xuZnMveGZzL3hmc19xbS5jLTE1OTQtXHRnb3RvIGVycm9yX3JldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDEKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgRGF0YSBTdHJ1Y3R1cmUgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHhmc19xbV9kcXB1cmdlYCBhbmQgYHhmc19xbV91bm1vdW50YC4gVGhlIGtleSBkaWZmZXJlbmNlIGltbWVkaWF0ZWx5IHN0aWNrcyBvdXQ6IG9uZSYjMzk7cyBzdGF0aWMsIHRoZSBvdGhlciBpc24mIzM5O3QuIFRoYXQgYWxvbmUgcmFpc2VzIHNvbWUgZmxhZ3MgZm9yIG1lLiBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIGZvciBob3cgdGhlIHF1b3RhIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB1bm1vdW50aW5nLiBEb2VzIHRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3QgYSBsb2NhbCwgY29udGV4dC1zcGVjaWZpYyBjbGVhbnVwLCB3aGlsZSB0aGUgbm9uLXN0YXRpYyBpbXBsaWVzIGEgbW9yZSBnbG9iYWwsIHBvdGVudGlhbGx5IHNoYXJlZCByZXNvdXJjZSBtYW5hZ2VtZW50PyBJcyB0aGVyZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIG9yIGxpZmVzcGFuIG9mIGB4ZnNfcW1fZHFwdXJnZWAgdGhhdCYjMzk7cyBpbmhlcmVudGx5IGRpZmZlcmVudD8KClRvIGRpZyBkZWVwZXIsIEkgd2FudCB0byBzZWUgaWYgdGhpcyBwYXR0ZXJuIG9yIHNpbWlsYXIgaW50ZXJhY3Rpb25zIGFyZSB1c2VkIGluIGEgcmVsYXRlZCBmaWxlIHN5c3RlbS4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgZnMvZ2ZzMi9nbG9jay5jYC4gVGhlIEdGUzIgZGlzdHJpYnV0ZWQgbG9jayBtYW5hZ2VyIGlzIGxpa2VseSB0byBnaXZlIHVzIGEgZ29vZCB2aWV3IG9mIGhvdyBhIHNpbWlsYXJseSBkZXNpZ25lZCBmaWxlIHN5c3RlbSBoYW5kbGVzIHJlc291cmNlcy4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciBjb21wYXJpc29uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX2dsb2NrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvZ2xvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL2dsb2NrLmMtNTMtXG5mcy9nZnMyL2dsb2NrLmM6NTQ6c3RydWN0IGdmczJfZ2xvY2tfaXRlciB7XG5mcy9nZnMyL2dsb2NrLmMtNTUtXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcDtcdFx0LyogaW5jb3JlIHN1cGVyYmxvY2sgICAgICAgICAgICovXG4tLVxuZnMvZ2ZzMi9nbG9jay5jPTE0MT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE0OC1cbmZzL2dmczIvZ2xvY2suYzoxNDk6dm9pZCBnZnMyX2dsb2NrX2ZyZWUoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XG5mcy9nZnMyL2dsb2NrLmMtMTUwLVx0c3RydWN0IGdmczJfc2JkICpzZHAgPSBnbG9ja19zYmQoZ2wpO1xuLS1cbmZzL2dmczIvZ2xvY2suYy0xNTYtXG5mcy9nZnMyL2dsb2NrLmM6MTU3OnZvaWQgZ2ZzMl9nbG9ja19mcmVlX2xhdGVyKHN0cnVjdCBnZnMyX2dsb2NrICpnbCkge1xuZnMvZ2ZzMi9nbG9jay5jLTE1OC1cdHN0cnVjdCBnZnMyX3NiZCAqc2RwID0gZ2xvY2tfc2JkKGdsKTtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MjU0PXN0YXRpYyBib29sIF9fZ2ZzMl9nbG9ja19wdXRfb3JfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTI3My1cbmZzL2dmczIvZ2xvY2suYzoyNzQ6dm9pZCBnZnMyX2dsb2NrX3B1dChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2dsb2NrLmMtMjc1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjg4LSAqL1xuZnMvZ2ZzMi9nbG9jay5jOjI4OTp2b2lkIGdmczJfZ2xvY2tfcHV0X2FzeW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbmZzL2dmczIvZ2xvY2suYy0yOTAte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0xMDMxPXN0YXRpYyBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZmluZF9pbnNlcnRfZ2xvY2soc3RydWN0IGxtX2xvY2tuYW1lICpuYW1lLFxuLS1cbmZzL2dmczIvZ2xvY2suYy0xMDc5LVxuZnMvZ2ZzMi9nbG9jay5jOjEwODA6aW50IGdmczJfZ2xvY2tfZ2V0KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgbnVtYmVyLFxuZnMvZ2ZzMi9nbG9jay5jLTEwODEtXHRcdCAgIGNvbnN0IHN0cnVjdCBnZnMyX2dsb2NrX29wZXJhdGlvbnMgKmdsb3BzLCBpbnQgY3JlYXRlLFxuLS1cbmZzL2dmczIvZ2xvY2suYz0xMjI2PXN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfdXBkYXRlX2hvbGRfdGltZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTEyNDUtXG5mcy9nZnMyL2dsb2NrLmM6MTI0NjppbnQgZ2ZzMl9nbG9ja19ob2xkZXJfcmVhZHkoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xMjQ3LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTI2Mi1cbmZzL2dmczIvZ2xvY2suYzoxMjYzOmludCBnZnMyX2dsb2NrX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xMjY0LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTI3Mz1zdGF0aWMgaW50IGdsb2Nrc19wZW5kaW5nKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxuLS1cbmZzL2dmczIvZ2xvY2suYy0xMjkzLVxuZnMvZ2ZzMi9nbG9jay5jOjEyOTQ6aW50IGdmczJfZ2xvY2tfYXN5bmNfd2FpdCh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocyxcbmZzL2dmczIvZ2xvY2suYy0xMjk1LVx0XHRcdCAgdW5zaWduZWQgaW50IHJldHJpZXMpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jPTE0MzY9c3RhdGljIGlubGluZSB2b2lkIGFkZF90b19xdWV1ZShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxuLS1cbmZzL2dmczIvZ2xvY2suYy0xNDg5LVxuZnMvZ2ZzMi9nbG9jay5jOjE0OTA6aW50IGdmczJfZ2xvY2tfbnEoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNDkxLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTU0My1cbmZzL2dmczIvZ2xvY2suYzoxNTQ0OmludCBnZnMyX2dsb2NrX3BvbGwoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNTQ1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTU0OT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZHEoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTU5Mi0gKi9cbmZzL2dmczIvZ2xvY2suYzoxNTkzOnZvaWQgZ2ZzMl9nbG9ja19kcShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxuZnMvZ2ZzMi9nbG9jay5jLTE1OTQte1xuLS1cbmZzL2dmczIvZ2xvY2suYy0xNjM5LVxuZnMvZ2ZzMi9nbG9jay5jOjE2NDA6dm9pZCBnZnMyX2dsb2NrX2RxX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNjQxLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTY1My1cbmZzL2dmczIvZ2xvY2suYzoxNjU0OnZvaWQgZ2ZzMl9nbG9ja19kcV91bmluaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcbmZzL2dmczIvZ2xvY2suYy0xNjU1LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTY3MS1cbmZzL2dmczIvZ2xvY2suYzoxNjcyOmludCBnZnMyX2dsb2NrX25xX251bShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdTY0IG51bWJlcixcbmZzL2dmczIvZ2xvY2suYy0xNjczLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9ja19vcGVyYXRpb25zICpnbG9wcyxcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTcyMD1zdGF0aWMgaW50IG5xX21fc3luYyh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocyxcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTc1MS1cbmZzL2dmczIvZ2xvY2suYzoxNzUyOmludCBnZnMyX2dsb2NrX25xX20odW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMpXG5mcy9nZnMyL2dsb2NrLmMtMTc1My17XG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE3ODUtXG5mcy9nZnMyL2dsb2NrLmM6MTc4Njp2b2lkIGdmczJfZ2xvY2tfZHFfbSh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocylcbmZzL2dmczIvZ2xvY2suYy0xNzg3LXtcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMTc5MS1cbmZzL2dmczIvZ2xvY2suYzoxNzkyOnZvaWQgZ2ZzMl9nbG9ja19jYihzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCBzdGF0ZSlcbmZzL2dmczIvZ2xvY2suYy0xNzkzLXtcbi0tXG5mcy9nZnMyL2dsb2NrLmM9MTgyNj1zdGF0aWMgaW50IGdmczJfc2hvdWxkX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTE4NTMtXG5mcy9nZnMyL2dsb2NrLmM6MTg1NDp2b2lkIGdmczJfZ2xvY2tfY29tcGxldGUoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBpbnQgcmV0KVxuZnMvZ2ZzMi9nbG9jay5jLTE4NTUte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjA5Ny1cbmZzL2dmczIvZ2xvY2suYzoyMDk4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9nbG9jay5jLTIwOTkte1xuLS1cbmZzL2dmczIvZ2xvY2suYz0yNDI5PWludCBfX2luaXQgZ2ZzMl9nbG9ja19pbml0KHZvaWQpXG4tLVxuZnMvZ2ZzMi9nbG9jay5jLTI0NTMtXG5mcy9nZnMyL2dsb2NrLmM6MjQ1NDp2b2lkIGdmczJfZ2xvY2tfZXhpdCh2b2lkKVxuZnMvZ2ZzMi9nbG9jay5jLTI0NTUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA0MAoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgR0ZTMiBHbG9jayBUaGF3IEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIGBnZnMyX2dsb2NrX3RoYXdgIGlzbiYjMzk7dCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBOb24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGNvbnRleHQgb2Z0ZW4gaW5kaWNhdGUgZXh0ZXJuYWwgdmlzaWJpbGl0eSBvciBwb3RlbnRpYWwgZm9yIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gR2l2ZW4gdGhhdCB0aGlzIGlzIGluIEdGUzIsIGFuZCBkZWFsaW5nIHdpdGggZ2xvY2tzIChnbG9iYWwgbG9ja3MpLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgd2h5IHRoaXMgdGhhdyBmdW5jdGlvbiBpcyBiZWluZyB1c2VkLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNsdXN0ZXItd2lkZSBjb25zaXN0ZW5jeS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIHF1b3RhIG1hbmFnZW1lbnQgY29kZSwgc3BlY2lmaWNhbGx5IGBmcy9nZnMyL3F1b3RhLmNgLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBnbG9ja3MgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBwb3RlbnRpYWwgdGhhdyBvcGVyYXRpb25zLCB3b3VsZCByZXNpZGUgaW4gR0ZTMi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCByZWxhdGVkIHF1b3RhIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBiZSBjb29yZGluYXRlZCBvciBzeW5jaHJvbml6ZWQgYnkgdGhpcyBgZ2ZzMl9nbG9ja190aGF3YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHF1b3RhLmMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIGdmczJfcXVvdGFfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9xdW90YS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvcXVvdGEuYz01ODY9dm9pZCBnZnMyX3FhX3B1dChzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXG4tLVxuZnMvZ2ZzMi9xdW90YS5jLTU5Ny1cbmZzL2dmczIvcXVvdGEuYzo1OTg6aW50IGdmczJfcXVvdGFfaG9sZChzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXG5mcy9nZnMyL3F1b3RhLmMtNTk5LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtNjU2LVxuZnMvZ2ZzMi9xdW90YS5jOjY1Nzp2b2lkIGdmczJfcXVvdGFfdW5ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcClcbmZzL2dmczIvcXVvdGEuYy02NTgte1xuLS1cbmZzL2dmczIvcXVvdGEuYz0xMDM3PXN0YXRpYyBpbnQgZG9fZ2xvY2soc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQsIGludCBmb3JjZV9yZWZyZXNoLFxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMDg3LVxuZnMvZ2ZzMi9xdW90YS5jOjEwODg6aW50IGdmczJfcXVvdGFfbG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXG5mcy9nZnMyL3F1b3RhLmMtMTA4OS17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jPTExMjM9c3RhdGljIGJvb2wgbmVlZF9zeW5jKHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMTU4LVxuZnMvZ2ZzMi9xdW90YS5jOjExNTk6dm9pZCBnZnMyX3F1b3RhX3VubG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXG5mcy9nZnMyL3F1b3RhLmMtMTE2MC17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jPTEyMTE9c3RhdGljIHZvaWQgcHJpbnRfbWVzc2FnZShzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwgY2hhciAqdHlwZSlcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTIzOS0gKi9cbmZzL2dmczIvcXVvdGEuYzoxMjQwOmludCBnZnMyX3F1b3RhX2NoZWNrKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZCxcbmZzL2dmczIvcXVvdGEuYy0xMjQxLVx0XHQgICAgIHN0cnVjdCBnZnMyX2FsbG9jX3Bhcm1zICphcClcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTI5Ny1cbmZzL2dmczIvcXVvdGEuYzoxMjk4OnZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxuZnMvZ2ZzMi9xdW90YS5jLTEyOTktXHRcdCAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkKVxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcbmZzL2dmczIvcXVvdGEuYy0xMzI1LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTM4NC1cbmZzL2dmczIvcXVvdGEuYzoxMzg1OmludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZClcbmZzL2dmczIvcXVvdGEuYy0xMzg2LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTQwMi1cbmZzL2dmczIvcXVvdGEuYzoxNDAzOmludCBnZnMyX3F1b3RhX2luaXQoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL3F1b3RhLmMtMTQwNC17XG4tLVxuZnMvZ2ZzMi9xdW90YS5jLTE1MjUtXG5mcy9nZnMyL3F1b3RhLmM6MTUyNjp2b2lkIGdmczJfcXVvdGFfY2xlYW51cChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbmZzL2dmczIvcXVvdGEuYy0xNTI3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNjIKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKioKCk9rYXksIGBnZnMyX3F1b3RhX3N5bmNgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBwb2ludCBvZiBmb2N1cy4gVGhhdCBmdW5jdGlvbiBzZWVtcyBsaWtlIGEga2V5IHBpZWNlIGluIHRoZSBxdW90YSBzeW5jaHJvbml6YXRpb24gcHV6emxlIHdpdGhpbiBHRlMyLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMuIEkgdGhpbmsgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2luIHRoaXMgZGVlcCBkaXZlIGlzIHdpdGhpbiB0aGUgYGZzL2dmczIvbG9ja19kbG0uY2AgZmlsZS4gSXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0IGZvciBhbnl0aGluZyBpbnZvbHZpbmcgZGlzdHJpYnV0ZWQgbG9ja2luZyBhbmQgcXVvdGEgb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIGFuZCB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIGdmczJfbG9ja18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQ5NQoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBmcy9nZnMyL2xvY2tfZGxtLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gbGFuZHNjYXBlIHdpdGhpbiB0aGUgR0ZTMiBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgaW1wbGVtZW50YXRpb24uIEEgZ29vZCBmaXJzdCBzdGVwIGhlcmUgaXMgdG8gdGFrZSBhIGxvb2sgYXQgYGZzL2dmczIvbG9ja19kbG0uY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgbG9ja2luZyBwcmltaXRpdmVzIGFuZCBhc3NvY2lhdGVkIG1hbmFnZW1lbnQgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZ1bmN0aW9ucyB3aXRoIGV4dGVybmFsIHZpc2liaWxpdHksIHRoZSBvbmVzIHRoYXQgYXJlIGV4cGxpY2l0bHkgZXhwb3NlZCBvciBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIEdGUzIgY29kZSBvciBwb3RlbnRpYWxseSBmcm9tIHRoZSBnZW5lcmljIFZGUyBsYXllci4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgb3ZlcnZpZXcgb2YgdGhlIERMTSYjMzk7cyBBUEkgYW5kIGludGVyYWN0aW9uIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZGxtXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvbG9ja19kbG0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzUzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlN0YXRpYyBWYXJpYWJsZXMgJmFtcDsgUG90ZW50aWFsIENvbmN1cnJlbmN5IElzc3VlcyoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCBydW4gdGhyb3VnaCB0aGlzIG9uZSBtb3JlIHRpbWUuIFdhaXQuLi4gSG9sZCBvbiBhIHNlY29uZC4gKmBnZGxtX2FzdGAqLCAqYGdkbG1fYmFzdGAqLCBhbmQgKmBnZGxtX3B1dF9sb2NrYCogYXJlICpzdGF0aWMqPyBSaWdodC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGRldGFpbCBJIGFsbW9zdCBtaXNzZWQuIEl0IGNoYW5nZXMgZXZlcnl0aGluZyB3aGVuIHlvdSYjMzk7cmUgbG9va2luZyBhdCB0aGUgYXJjaGl0ZWN0dXJlIG9mIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGxpa2UgdGhpcy4gU3RhdGljIHZhcmlhYmxlcywgaW4gYW55IHNoYXJlZCBtZW1vcnkgY29udGV4dCwgaW1tZWRpYXRlbHkgc2NyZWFtICYjMzQ7cG90ZW50aWFsIGZvciBjb250ZW50aW9uLiYjMzQ7IElmIHRob3NlIGFyZSBhY2Nlc3NlZCBhY3Jvc3MgbXVsdGlwbGUgdGhyZWFkcyBvciwgZXZlbiB3b3JzZSwgZGlmZmVyZW50IHByb2Nlc3Nlcywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmVyeSByZWFsIGNvbmN1cnJlbmN5IGlzc3Vlcy4gVGhpcyByZXF1aXJlcyBpbW1lZGlhdGUgYW5kIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBtdXRleGVzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2RsbV9hc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9sb2NrX2RsbS5jPTEwMT1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZzMl91cGRhdGVfcmVxdWVzdF90aW1lcyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNy0gXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE4OnN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcbmZzL2dmczIvbG9ja19kbG0uYy0xMTkte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYz0yNzc9c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0zMTQtXHRcdGVycm9yID0gZGxtX2xvY2sobHMtXHUwMDNlbHNfZGxtLCByZXEsIFx1MDAyNmdsLVx1MDAzZWdsX2xrc2IsIGxrZiwgc3RybmFtZSxcbmZzL2dmczIvbG9ja19kbG0uYzozMTU6XHRcdFx0XHRHRExNX1NUUk5BTUVfQllURVMgLSAxLCAwLCBnZGxtX2FzdCwgZ2wsIGdkbG1fYmFzdCk7XG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI3NgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCBmb3IgRHluYW1pc20qKgoKQWxyaWdodCwgSSYjMzk7bSBmb2N1c2luZyBpbiBvbiBgZnMvZ2ZzMi9sb2NrX2RsbS5jYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlcmUgYW55ICppbnRlcmVzdGluZyogZnVuY3Rpb25zIGluIGhlcmUgdGhhdCBhcmVuJiMzOTt0IHB1cmVseSBzdGF0aWM/IEkmIzM5O20gbm90IGp1c3QgbG9va2luZyBmb3Igc29tZXRoaW5nIHRoYXQgKmlzbiYjMzk7dCogZGVjbGFyZWQgYHN0YXRpY2AsIGJ1dCByYXRoZXIgZnVuY3Rpb25zIHRoYXQgdHJ1bHkgcHJvdmlkZSBkeW5hbWlzbSwgb3IgYSBsZXZlbCBvZiBvcGVyYXRpb24gdGhhdCBpcyBub3QgY29uZmluZWQgd2l0aGluIGEgc3RhdGljIG1ldGhvZC4gSXMgdGhlcmUgYW55IGZ1bmN0aW9uIGluIHRoaXMgZmlsZSB0aGF0IGFjdHVhbGx5ICpkb2VzKiBzb21ldGhpbmcgaW50ZXJlc3RpbmcsIGJleW9uZCBzaW1wbGUgaGVscGVyIHRhc2tzLCBhbmQgaXNuJiMzOTt0IHNvbGVseSBkZWRpY2F0ZWQgdG8gc29tZSBzcGVjaWZpYyBzdGF0aWNhbGx5LWRlZmluZWQgZnVuY3Rpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciBpbnRlcmFjdHMgd2l0aCB0aGUgbGFyZ2VyIEdGUzIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZmlsZSBpcyB0cnVseSBkeW5hbWljIG9yIGp1c3QgYSBsaWJyYXJ5IG9mIGhlbHBlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvbG9ja19kbG0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9nZnMyL2xvY2tfZGxtLmMtMjgtICovXG5mcy9nZnMyL2xvY2tfZGxtLmM6Mjk6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3N0YXRzKHN0cnVjdCBnZnMyX2xrc3RhdHMgKnMsIHVuc2lnbmVkIGluZGV4LFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMwLVx0XHRcdFx0ICAgICBzNjQgc2FtcGxlKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy03My0gKi9cbmZzL2dmczIvbG9ja19kbG0uYzo3NDpzdGF0aWMgaW5saW5lIHZvaWQgZ2ZzMl91cGRhdGVfcmVwbHlfdGltZXMoc3RydWN0IGdmczJfZ2xvY2sgKmdsLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTc1LVx0XHRcdFx0XHQgICBib29sIGJsb2NraW5nKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMDAtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXF1ZXN0X3RpbWVzKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbmZzL2dmczIvbG9ja19kbG0uYy0xMDIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMTctIFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExODpzdGF0aWMgdm9pZCBnZGxtX2FzdCh2b2lkICphcmcpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE5LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTgwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE4MTpzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbmZzL2dmczIvbG9ja19kbG0uYy0xODIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMDUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjA2OnN0YXRpYyBpbnQgbWFrZV9tb2RlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCB1bnNpZ25lZCBpbnQgbG1zdGF0ZSlcbmZzL2dmczIvbG9ja19kbG0uYy0yMDcte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMjQtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjI1OnN0YXRpYyBib29sIG1pZGRsZV9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjI2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjMwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjIzMTpzdGF0aWMgYm9vbCBkb3duX2NvbnZlcnNpb24oaW50IGN1ciwgaW50IHJlcSlcbmZzL2dmczIvbG9ja19kbG0uYy0yMzIte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yMzUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjM2OnN0YXRpYyB1MzIgbWFrZV9mbGFncyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIGNvbnN0IHVuc2lnbmVkIGludCBnZnNfZmxhZ3MsXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM3LVx0XHQgICAgICBjb25zdCBpbnQgcmVxLCBib29sIGJsb2NraW5nKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0yNjctXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjY4OnN0YXRpYyB2b2lkIGdmczJfcmV2ZXJzZV9oZXgoY2hhciAqYywgdTY0IHZhbHVlKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI2OS17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI3Ni1cbmZzL2dmczIvbG9ja19kbG0uYzoyNzc6c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI3OC1cdFx0ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMyNC1cbmZzL2dmczIvbG9ja19kbG0uYzozMjU6c3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzI2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzgzLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjM4NDpzdGF0aWMgdm9pZCBnZGxtX2NhbmNlbChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzg1LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM2LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjUzNzpzdGF0aWMgdm9pZCBjb250cm9sX2x2Yl9yZWFkKHN0cnVjdCBsbV9sb2Nrc3RydWN0ICpscywgdWludDMyX3QgKmx2Yl9nZW4sXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM4LVx0XHRcdCAgICAgY2hhciAqbHZiX2JpdHMpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU0NS1cbmZzL2dmczIvbG9ja19kbG0uYzo1NDY6c3RhdGljIHZvaWQgY29udHJvbF9sdmJfd3JpdGUoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCBsdmJfZ2VuLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU0Ny1cdFx0XHQgICAgICBjaGFyICpsdmJfYml0cylcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjU1NTpzdGF0aWMgaW50IGFsbF9qaWRfYml0c19jbGVhcihjaGFyICpsdmIpXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTYwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjU2MTpzdGF0aWMgdm9pZCBzeW5jX3dhaXRfY2Iodm9pZCAqYXJnKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Mi17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Ni1cbmZzL2dmczIvbG9ja19kbG0uYzo1Njc6c3RhdGljIGludCBzeW5jX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2OC17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5Mi1cbmZzL2dmczIvbG9ja19kbG0uYzo1OTM6c3RhdGljIGludCBzeW5jX2xvY2soc3RydWN0IGdmczJfc2JkICpzZHAsIGludCBtb2RlLCB1aW50MzJfdCBmbGFncyxcbmZzL2dmczIvbG9ja19kbG0uYy01OTQtXHRcdCAgICAgdW5zaWduZWQgaW50IG51bSwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy02MjgtXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjI5OnN0YXRpYyBpbnQgbW91bnRlZF91bmxvY2soc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjMwLXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjM0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjYzNTpzdGF0aWMgaW50IG1vdW50ZWRfbG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgaW50IG1vZGUsIHVpbnQzMl90IGZsYWdzKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNi17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTY0MS1cbmZzL2dmczIvbG9ja19kbG0uYzo2NDI6c3RhdGljIGludCBjb250cm9sX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbmZzL2dmczIvbG9ja19kbG0uYy02NDMte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy02NDctXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjQ4OnN0YXRpYyBpbnQgY29udHJvbF9sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MpXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQ5LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU0LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjY1NTpzdGF0aWMgdm9pZCBnZnMyX2NvbnRyb2xfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU2LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtODMyLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjgzMzpzdGF0aWMgaW50IGNvbnRyb2xfbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2xvY2tfZGxtLmMtODM0LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMS1cbmZzL2dmczIvbG9ja19kbG0uYzoxMDMyOnN0YXRpYyBpbnQgY29udHJvbF9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwMzMte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMDk3LVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEwOTg6c3RhdGljIGludCBzZXRfcmVjb3Zlcl9zaXplKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZGxtX3Nsb3QgKnNsb3RzLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwOTktXHRcdFx0ICAgIGludCBudW1fc2xvdHMpXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNDUtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE0NjpzdGF0aWMgdm9pZCBmcmVlX3JlY292ZXJfc2l6ZShzdHJ1Y3QgbG1fbG9ja3N0cnVjdCAqbHMpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE0Ny17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNTgtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE1OTpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJfcHJlcCh2b2lkICphcmcpXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE2MC17XG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExODMtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE4NDpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJfc2xvdCh2b2lkICphcmcsIHN0cnVjdCBkbG1fc2xvdCAqc2xvdClcbmZzL2dmczIvbG9ja19kbG0uYy0xMTg1LXtcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTIxMi1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjEzOnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9kb25lKHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90cywgaW50IG51bV9zbG90cyxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjE0LVx0XHRcdCAgICAgIGludCBvdXJfc2xvdCwgdWludDMyX3QgZ2VuZXJhdGlvbilcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0NC1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjQ1OnN0YXRpYyB2b2lkIGdkbG1fcmVjb3ZlcnlfcmVzdWx0KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1bnNpZ25lZCBpbnQgamlkLFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyNDYtXHRcdFx0XHQgdW5zaWduZWQgaW50IHJlc3VsdClcbi0tXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI4OC1cbmZzL2dmczIvbG9ja19kbG0uYzoxMjg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGxtX2xvY2tzcGFjZV9vcHMgZ2RsbV9sb2Nrc3BhY2Vfb3BzID0ge1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTAtXHQucmVjb3Zlcl9wcmVwID0gZ2RsbV9yZWNvdmVyX3ByZXAsXG4tLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTQtXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTI5NTpzdGF0aWMgaW50IGdkbG1fbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKnRhYmxlKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTYte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xMzkzLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEzOTQ6c3RhdGljIHZvaWQgZ2RsbV9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEzOTUte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDE0LSAqL1xuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0MTU6c3RhdGljIHZvaWQgZ2RsbV91bm1vdW50KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBib29sIGNsZWFuKVxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0MTYte1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDQyLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NDM6c3RhdGljIGNvbnN0IG1hdGNoX3RhYmxlX3QgZGxtX3Rva2VucyA9IHtcbmZzL2dmczIvbG9ja19kbG0uYy0xNDQ0LVx0eyBPcHRfamlkLCBcJiMzNDtqaWQ9JWRcJiMzNDt9LFxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy0xNDUwLVxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NTE6Y29uc3Qgc3RydWN0IGxtX2xvY2tvcHMgZ2ZzMl9kbG1fb3BzID0ge1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0NTItXHQubG1fcHJvdG9fbmFtZSA9IFwmIzM0O2xvY2tfZGxtXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjYzMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaW5kaW5nIFN1aXRhYmxlIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMgd2l0aGluIHRoZSBHRlMyIGFuZCBFUk9GUyBmaWxlc3lzdGVtcyBmb3IgYW5hbHlzaXMsIGxpa2VseSBmb3Igc29tZSBzb3J0IG9mIGNvZGUgdW5kZXJzdGFuZGluZyBvciBkZWJ1Z2dpbmcgdGFzay4gVGhlIGZpcnN0IHBsYWNlIEkgbG9va2VkLCBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCwgc2VlbWVkIHByb21pc2luZywgYnV0IHVuZm9ydHVuYXRlbHksIGV2ZXJ5dGhpbmcgd2l0aGluIHRoYXQgZmlsZSBpcyBzdGF0aWMgZXhjZXB0IHRoZSBgZ2ZzMl9kbG1fb3BzYCBzdHJ1Y3QuIE5vdCByZWFsbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZXJlLCBhcyBJIG5lZWQgZnVuY3Rpb25zLCBub3QgZGF0YSBzdHJ1Y3R1cmVzLCB0byBiZSBzdWl0YWJsZSBmb3IgZm9jdXMgc3ltYm9scy4KCkkmIzM5O2xsIG1vdmUgb24gdG8gYGZzL2dmczIvcXVvdGEuY2AuIExldCYjMzk7cyBzZWUuLi4gYGdmczJfcXVvdGFfc3luY2AsIGBnZnMyX3F1b3RhX2NoZWNrYCwgYGdmczJfcXVvdGFfbG9ja2AsIGFuZCBgZ2ZzMl9xdW90YV9yZWZyZXNoYCBhcmUgYWxsIG5vbi1zdGF0aWMsIHNvIHRoZXkgbWlnaHQgYmUgZ29vZCBjYW5kaWRhdGVzLiBJJiMzOTtsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhvc2UgYXMgcG90ZW50aWFsIG9wdGlvbnMuCgpOZXh0LCBJJiMzOTtsbCBjaGVjayBgZnMvZ2ZzMi9nbG9jay5jYC4gT2theSwgaGVyZSBJIHNlZSBgZ2ZzMl9nbG9ja190aGF3YCwgYGdmczJfZ2xvY2tfbnFgLCBgZ2ZzMl9nbG9ja19kcWAsIGFuZCBgZ2ZzMl9nbG9ja19wdXRgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhvc2UgbG9vayBsaWtlIHRoZXkgY291bGQgYmUgaW50ZXJlc3RpbmcuCgpGaW5hbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZnMvZXJvZnMvemRhdGEuY2AuIGB6X2Vyb2ZzX2luaXRfc3VwZXJgLCBgel9lcm9mc19leGl0X3N1YnN5c3RlbWAsIGFuZCBgel9lcm9mc19pbml0X3N1YnN5c3RlbWAgYXJlIG5vbi1zdGF0aWMuIFRob3NlIGFyZW4mIzM5O3QgcmVhbGx5IGp1bXBpbmcgb3V0IGF0IG1lIGFzIHN0cm9uZyBjYW5kaWRhdGVzLiBPaCwgd2FpdCwgd2hhdCBhYm91dCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgPyBUaGF0IG1pZ2h0IGJlIHRoZSBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvemRhdGEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy96ZGF0YS5jPTEwMDU9c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xMDIzLVx0XHRcdG1hcC1cdTAwM2VtX2xsZW4gPSAwO1xuZnMvZXJvZnMvemRhdGEuYzoxMDI0Olx0XHRcdGVyciA9IHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyKGlub2RlLCBtYXAsIDApO1xuZnMvZXJvZnMvemRhdGEuYy0xMDI1LVx0XHRcdGlmIChlcnIpXG4tLVxuZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXG4tLVxuZnMvZXJvZnMvemRhdGEuYy0xODMxLVx0XHRtYXAtXHUwMDNlbV9sYSA9IGVuZDtcbmZzL2Vyb2ZzL3pkYXRhLmM6MTgzMjpcdFx0ZXJyID0gel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoaW5vZGUsIG1hcCxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTgzMy1cdFx0XHRcdFx0ICAgICAgRVJPRlNfR0VUX0JMT0NLU19SRUFETU9SRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NjMwCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEVST0ZTIFptYXAgSW1wbGVtZW50YXRpb24qKgoKUmlnaHQsIHNvIHRoZSB6bWFwIGlzIGRlZmluZWQgaW4gYGZzL2Vyb2ZzL3ptYXAuY2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgZmlsZSBzdHJ1Y3R1cmUsIGFuZCBrbm93IHRvIGZpbmQgdGhlIGltcG9ydGFudCBzdHVmZiwgSSYjMzk7bGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byBgZnMvZXJvZnMvem1hcC5jYC4gTGV0JiMzOTtzIHNraXAgdGhlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIG5vdyBhbmQgZm9jdXMgb24gdGhlIGV4dGVybmFsIGludGVyZmFjZSBhbmQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpbiBvcmRlciB0byBpbnRlcmFjdCB3aXRoIHRoZSB6bWFwLCB3aGljaCBpcyB0aGUga2V5IGRhdGEgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3ptYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy96bWFwLmMtOS1cbmZzL2Vyb2ZzL3ptYXAuYzoxMDpzdHJ1Y3Qgel9lcm9mc19tYXByZWNvcmRlciB7XG5mcy9lcm9mcy96bWFwLmMtMTEtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuLS1cbmZzL2Vyb2ZzL3ptYXAuYz03MTU9c3RhdGljIGludCB6X2Vyb2ZzX21hcF9zYW5pdHlfY2hlY2soc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9lcm9mcy96bWFwLmMtNzU1LVxuZnMvZXJvZnMvem1hcC5jOjc1NjppbnQgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGVyb2ZzX21hcF9ibG9ja3MgKm1hcCxcbmZzL2Vyb2ZzL3ptYXAuYy03NTctXHRcdFx0ICAgIGludCBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3N1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgc2VlIHRoYXQgYHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMuIFRoZSBwYXRjaCB0b3VjaGVzIGB6ZGF0YS5jYCwgd2hpY2ggaGFzIG1lIHdvbmRlcmluZyB3aHkuICBBaCwgaXQgbW9kaWZpZXMgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYCBhbmQgYHpfZXJvZnNfcHV0X3BjbHVzdGVyYCB3aXRoaW4gdGhhdCBmaWxlLiBTaW5jZSB0aGVyZSBhcmVuJiMzOTt0IG1hbnkgb3RoZXIgdXNlZnVsIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB6ZGF0YS5jYCwgSSBjb3VsZCBlaXRoZXIgaWdub3JlIHRoZSBFUk9GUyBmb2N1c2VkIHN5bWJvbHMgZW50aXJlbHkgb3IgdXRpbGl6ZSBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0LiBXYWl0LCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgIGRvZXMgKm5vdCogZGlyZWN0bHkgY2FsbCBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiAgTGV0JiMzOTtzIHNlZS4uLiBgel9lcm9mc19zY2FuX2ZvbGlvYCBjYWxscyBgel9lcm9mc19wY2x1c3Rlcl9iZWdpbmAsIGFuZCAqdGhhdCogaW4gdHVybiBjYWxscyBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiBSaWdodCwgYW5kIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIGNhbGxlZCBieSBib3RoIGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgLiBHaXZlbiB0aGF0IGJvdGggb2YgdGhvc2UgYXJlIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9ucywgdGhleSYjMzk7cmUgY2FsbGVkIGJ5IFZGUy4gIFRoZXJlZm9yZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBqdXN0IG9taXR0aW5nIHRoZSBFUk9GUyBmb2N1cyBzeW1ib2xzIHNpbmNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIHNlZW1zIG1hbmFnZWFibGUgd2l0aG91dCBleHBvc2luZyBhZGRpdGlvbmFsIGludGVybmFsIGRldGFpbHMuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNvbnNpZGVyIGBmcy94ZnMveGZzX3FtLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzYW1lIGxvZ2ljIGFwcGxpZXMgaW4gdGhpcyBmaWxlLiBJIHNlZSB0aGF0IGB4ZnNfcW1fdW5tb3VudGAgaXMgbm9uLXN0YXRpYywgYW5kIHNvIGlzIGB4ZnNfcW1fcXVvdGFjaGVja2AuIEludGVyZXN0aW5nLCBgeGZzX3FtX2RxdW90X2lzb2xhdGVgIGlzIHN0YXRpYy4gV2FpdCwgYHhmc19xbV9kcXVvdF9pc29sYXRlYCBpcyBwYXNzZWQgdG8gYGxpc3RfbHJ1X3dhbGtgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBkZXRhaWwgdG8gY29uc2lkZXIgcmVnYXJkaW5nIHN5bWJvbCBleHBvc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX3FtX2RxdW90X2lzb2xhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMveGZzX3FtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19xbS5jPTQxMj1zdGF0aWMgZW51bSBscnVfc3RhdHVzXG5mcy94ZnMveGZzX3FtLmM6NDEzOnhmc19xbV9kcXVvdF9pc29sYXRlKFxuZnMveGZzL3hmc19xbS5jLTQxNC1cdHN0cnVjdCBsaXN0X2hlYWRcdCppdGVtLFxuLS1cbmZzL3hmcy94ZnNfcW0uYz00OTE9eGZzX3FtX3Nocmlua19zY2FuKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy01MDYtXHRmcmVlZCA9IGxpc3RfbHJ1X3Nocmlua193YWxrKFx1MDAyNnFpLVx1MDAzZXFpX2xydSwgc2MsXG5mcy94ZnMveGZzX3FtLmM6NTA3Olx0XHRcdFx0ICAgICB4ZnNfcW1fZHF1b3RfaXNvbGF0ZSwgXHUwMDI2aXNvbCk7XG5mcy94ZnMveGZzX3FtLmMtNTA4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTA0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGZzX3FtX3Nocmlua19zY2FuYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhmc19xbV9zaHJpbmtfc2NhbmAuLi4gYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgJiMzNDtXaHkgaXNuJiMzOTt0IHRoaXMgZnVuY3Rpb24gZGVjbGFyZWQgYXMgYHN0YXRpY2A/JiMzNDsgSSBtZWFuLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdHMgcHJpbWFyeSBwdXJwb3NlIGlzIGludGVybmFsIHRvIHRoZSBYRlMgcXVvdGEgbWFuYWdlbWVudCBjb2RlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhIGNvbXBvbmVudCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIFRoZXJlJiMzOTtzIHVzdWFsbHkgYSBnb29kIHJlYXNvbiBmb3IgYSBub24tc3RhdGljIGRlY2xhcmF0aW9uLiBJcyBpdCBjYWxsZWQgZnJvbSBlbHNld2hlcmU/IFBlcmhhcHMgYXMgYSBjYWxsYmFjaywgb3IgbWF5YmUgaXQmIzM5O3MgZXhwb3NlZCBmb3Igc29tZSB2ZXJ5IHNwZWNpZmljLCBhbmQgbGlrZWx5IHVudXN1YWwsIGRlYnVnZ2luZyBzY2VuYXJpbz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHZpc2liaWxpdHkgYW5kIGNhbGxpbmcgY29udGV4dHMgb2YgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSB0byBpZGVudGlmeSBhbGwgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGFuIGludGVudGlvbmFsIHJlYXNvbiBmb3IgdGhlIGJyb2FkZXIgc2NvcGUsIG9yIGlmIHRoaXMgZGVjbGFyYXRpb24gaXMganVzdCBsZWdhY3kgY29kZSB0aGF0IGhhc24mIzM5O3QgYmVlbiBwcm9wZXJseSByZWZhY3RvcmVkLiBUaGUgaW1wbGljYXRpb25zIG9mIGl0cyB2aXNpYmlsaXR5IGFyZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGFiaWxpdHkgb2YgdGhlIHF1b3RhIGNvZGUuIElmIGl0IF9pc18gdW5pbnRlbnRpb25hbGx5IG5vbi1zdGF0aWMsIGZpeGluZyB0aGF0IGNvdWxkIGhhdmUgYSBzdWJzdGFudGlhbCBwb3NpdGl2ZSBpbXBhY3QsIHJlZHVjaW5nIHRoZSBjaGFuY2Ugb2YgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgb2Ygc29tZW9uZSBvdXRzaWRlIHRoZSB4ZnMgY29kZWJhc2UgdXNpbmcgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX3FtX3Nocmlua19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19xbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfcW0uYz00OTA9c3RhdGljIHVuc2lnbmVkIGxvbmdcbmZzL3hmcy94ZnNfcW0uYzo0OTE6eGZzX3FtX3Nocmlua19zY2FuKFxuZnMveGZzL3hmc19xbS5jLTQ5Mi1cdHN0cnVjdCBzaHJpbmtlclx0XHQqc2hyaW5rLFxuLS1cbmZzL3hmcy94ZnNfcW0uYz03NjU9eGZzX3FtX2luaXRfcXVvdGFpbmZvKFxuLS1cbmZzL3hmcy94ZnNfcW0uYy04MzQtXHRxaW5mLVx1MDAzZXFpX3Nocmlua2VyLVx1MDAzZWNvdW50X29iamVjdHMgPSB4ZnNfcW1fc2hyaW5rX2NvdW50O1xuZnMveGZzL3hmc19xbS5jOjgzNTpcdHFpbmYtXHUwMDNlcWlfc2hyaW5rZXItXHUwMDNlc2Nhbl9vYmplY3RzID0geGZzX3FtX3Nocmlua19zY2FuO1xuZnMveGZzL3hmc19xbS5jLTgzNi1cdHFpbmYtXHUwMDNlcWlfc2hyaW5rZXItXHUwMDNlcHJpdmF0ZV9kYXRhID0gcWluZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1OTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogVGhlIENvZGUgaXMgU3RhZ25hbnQqKgoKUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IGhpdHMgbWUgaXMgdGhhdCB0aGUgc2l0dWF0aW9uIGlzLi4uIHN0YXRpYy4gTm90IG11Y2ggaGFwcGVuaW5nLCBubyBvYnZpb3VzIGNoYW5nZXMsIG5vIGZyZXNoIGFuZ2xlcy4gVGhlIGNvZGUsIGFzIGl0IHN0YW5kcywgZmVlbHMgc3RhZ25hbnQsIGxpa2UgYSBzbmFwc2hvdCBpbiB0aW1lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYWN0aXZlIGRldmVsb3BtZW50IGlzLCBpZiB0aGVyZSBpcyBhbnkuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgYmFzZWQgb24gdGhlIHZlcnkgc3BhcnNlIGluZm9ybWF0aW9uLCB0aGlzIGlzIGEgY29kZSBiYXNlIHRoYXQgbWF5IG5lZWQgc29tZSBmcmVzaCBleWVzIHRvIHJldmlldyBpdC4KClRoZW4sIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGZzL3hmcy94ZnNfYnVmLmNgLiBNeSB0aG91Z2h0cyBhcmUgZHJhd24gdG8gdGhpcyBzcGVjaWZpYyBmaWxlIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29kZWJhc2UuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuIEl0JiMzOTtzIHRoZSBidWZmZXIgbGF5ZXIuIEkga25vdyB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBwYXJ0aWN1bGFyIGZpbGUsIGl0cyByb2xlIGluIEkvTywgY2FjaGluZywgYW5kIGJsb2NrIG1hbmFnZW1lbnQgd2l0aGluIFhGUy4gQW55IGlzc3VlcyBoZXJlIGNhbiByaXBwbGUgb3V0d2FyZHMgZHJhbWF0aWNhbGx5LiBUaGF0JiMzOTtzIGEga2V5IGFyZWEgdG8gc3RhcnQgZGlnZ2luZyBpbnRvLiBQZXJoYXBzIGl0IGlzIGEgcGxhY2UgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMveGZzX2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy94ZnNfYnVmLmM9Mjc9c3RydWN0IGttZW1fY2FjaGUgKnhmc19idWZfY2FjaGU7XG4tLVxuZnMveGZzL3hmc19idWYuYy0zMS0gKlxuZnMveGZzL3hmc19idWYuYzozMjogKiB4ZnNfYnVmX3N0YWxlOlxuZnMveGZzL3hmc19idWYuYy0zMy0gKlx0Yl9zZW1hIChjYWxsZXIgaG9sZHMpXG4tLVxuZnMveGZzL3hmc19idWYuYz02Nj12b2lkXG5mcy94ZnMveGZzX2J1Zi5jOjY3Onhmc19idWZfc3RhbGUoXG5mcy94ZnMveGZzX2J1Zi5jLTY4LVx0c3RydWN0IHhmc19idWZcdCpicClcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTY2MD14ZnNfYnVmX3JlYWRfbWFwKFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtNzE4LVx0XHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzo3MTk6XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy03MjAtXHRcdHhmc19idWZfcmVsc2UoYnApO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTAyNT14ZnNfYnVmX2lvZW5kX2hhbmRsZV9lcnJvcihcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTEwOTMtb3V0X3N0YWxlOlxuZnMveGZzL3hmc19idWYuYzoxMDk0Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTEwOTUtXHRicC1cdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTE5ND14ZnNfYnVmX2ZhaWwoXG4tLVxuZnMveGZzL3hmc19idWYuYy0xMjAwLVx0YnAtXHUwMDNlYl9mbGFncyBcdTAwMjY9IH5YQkZfRE9ORTtcbmZzL3hmcy94ZnNfYnVmLmM6MTIwMTpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xMjAyLVx0eGZzX2J1Zl9pb2Vycm9yKGJwLCAtRUlPKTtcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTEzNTc9eGZzX2J1Zl9zdWJtaXQoXG4tLVxuZnMveGZzL3hmc19idWYuYy0xNDA3LVx0YnAtXHUwMDNlYl9mbGFncyBcdTAwMjY9IH5YQkZfRE9ORTtcbmZzL3hmcy94ZnNfYnVmLmM6MTQwODpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xNDA5LWVuZF9pbzpcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTE0Mjg9X194ZnNfYnVmX21hcmtfY29ycnVwdChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTE0MzQtXHR4ZnNfYnVmX2NvcnJ1cHRpb25fZXJyb3IoYnAsIGZhKTtcbmZzL3hmcy94ZnNfYnVmLmM6MTQzNTpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19idWYuYy0xNDM2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2MzgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBLZXJuZWwgRnVuY3Rpb24gQ2FuZGlkYXRlcyBmb3IgUGF0Y2ggSW5jbHVzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBsaXN0LCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0aGlzIGtlcm5lbCBwYXRjaC4gSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgYSBmZXcsIGFuZCBJIG5vdGVkIGRvd24gYHhmc19idWZfc3RhbGVgLCBhbmQgdGhlbiBJIHJlbWVtYmVyZWQgYGZzL2NlcGgvZGlyLmNgLi4uIGFoLCBgY2VwaF90cmltX2RlbnRyaWVzYCBpcyBhbHNvIG5vbi1zdGF0aWMsIHNvIHRob3NlIGFyZSB0d28gY2FuZGlkYXRlcyB0byBjb25zaWRlci4gQWRkaW5nIGBnZnMyX2dsb2NrX3RoYXdgIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYCB0byB0aGUgcG90ZW50aWFsIGxpc3QgYXMgd2VsbC4KCknigJltIGFsc28ga2VlcGluZyBhbiBleWUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC4gVGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoZSBwYXRjaCBiZWhhdmVzIHByb3Blcmx5LgoKV2FpdCwgaG9sZCBvbi4uLiBgbG9ja3JlZl9pc19kZWFkYCBpcyBhbHNvIHVzZWQgaW4gYGZzL2RjYWNoZS5jYCEgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQ6IGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBgc2VsZWN0X2NvbGxlY3RgLCBgc2VsZWN0X2NvbGxlY3QyYCwgYHNocmlua19kY2FjaGVfdHJlZWAsIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgLCBhbmQgYGRfYWxsb2NfcGFyYWxsZWxgLiBUaGF0JiMzOTtzIGEgbG90IG9mIGNvcmUgVkZTIGZ1bmN0aW9ucy4gSXQgZG9lcyBtYWtlIG1lIHdvbmRlciBpZiBhbnkgb2YgdGhvc2Ugd291bGQgYmUgd29ydGggaW5jbHVkaW5nLCBidXQgdGhlIHByb21wdCBzYXlzIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG5vbi1zdGF0aWMsIHNvIHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRvIHRoaW5rIGFib3V0LCBhcyBpcyBgZF9hbGxvY19wYXJhbGxlbGAuIEJ1dCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpdCBzb3VuZHMgbGlrZSB0aG9zZSBhcmUgcHJvYmFibHkgb3V0IGJlY2F1c2UgdGhleSBhcmUgaG90LXBhdGggb3IgZ2VuZXJpYy4gU28gbGV0JiMzOTtzIHN0aWNrIHdpdGggdGhlIG1vcmUgc3BlY2lmaWMgY2FzZXMuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gdGhvc2UgZWFybGllciBmdW5jdGlvbnM6IGB4ZnNfYnVmX3N0YWxlYCDigJMgc3RpbGwgbm9uLXN0YXRpYy4gYGdmczJfcXVvdGFfc3luY2Ag4oCTIGFsc28gbm9uLXN0YXRpYy4gYGdmczJfZ2xvY2tfdGhhd2Ag4oCTIG5vbi1zdGF0aWMuIGBjZXBoX3RyaW1fZGVudHJpZXNgIOKAkyB5ZXAsIG5vbi1zdGF0aWMuIE9rYXksIHRob3NlIGFsbCBzdGlsbCBsb29rIGdvb2QgYXMgbW9yZSBzcGVjaWZpYyBjYW5kaWRhdGVzLgoKQWxyaWdodCwgbm93IGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgbG9ja3JlZl9pc19kZWFkYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2xvY2tyZWYuaGAuIFllcywgdGhlIHBhdGNoIGFkZHMgaXQsIHNvIHRoYXQgY2hlY2tzIG91dC4KCkZpbmFsbHksIEnigJlsbCB0YWtlIGEgbG9vayB0byBzZWUgaWYgYW55IGFkZGl0aW9uYWwgY29uZmlnIGRlcGVuZGVuY2llcyBtYXkgYmUgbmVlZGVkLiBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4sIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEdGUzJfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQsIHNvIHRoZXkgc2hvdWxkbiYjMzk7dCBiZSBhbiBpc3N1ZS4gTGV0IG1lIGFsc28gZG91YmxlIGNoZWNrIGBmcy9nZnMyL0tjb25maWdgIGZvciBgR0ZTMl9GU19MT0NLSU5HX0RMTWAuIEFuZCBsb29rcyBsaWtlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG4tLVxuZnMvZ2ZzMi9LY29uZmlnLTI2LVxuZnMvZ2ZzMi9LY29uZmlnOjI3OmNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXG5mcy9nZnMyL0tjb25maWctMjgtXHRib29sIFwmIzM0O0dGUzIgRExNIGxvY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYEdGUzJfRlNfTE9DS0lOR19ETE1gIGNvbmNlcHQuIFJpZ2h0LCBzbyBteSBpbnR1aXRpb24gaXMgc2F5aW5nIHRoYXQgdGhpcyAqYWJzb2x1dGVseSogcmVsaWVzIG9uIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIsIG9yIGBETE1gLiBUaGF0IGZlZWxzIHJpZ2h0LCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSBJJiMzOTt2ZSBzZWVuIGl0IHdpcmVkIHVwIHRoYXQgd2F5IGJlZm9yZS4gQnV0LCBsZXQmIzM5O3Mgbm90IGp1c3QgdHJ1c3QgZ3V0IGZlZWxpbmcgaGVyZSwgZXZlbiBhcyBhIGhpZ2hseSBleHBlcmllbmNlZCBwZXJzb24gaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHNvbGlkIG9uIHRoaXMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIG9yIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGJldHdlZW4gYEdGUzJfRlNfTE9DS0lOR19ETE1gIGFuZCBgRExNYC4gSSYjMzk7bGwgZG8gYSBxdWljayBzY2FuIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9nZnMyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZ2ZzMi9LY29uZmlnPTI3PWNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXG5mcy9nZnMyL0tjb25maWctMjgtXHRib29sIFwmIzM0O0dGUzIgRExNIGxvY2tpbmdcJiMzNDtcbmZzL2dmczIvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gKEdGUzJfRlMhPW4pIFx1MDAyNlx1MDAyNiBORVQgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFxcXG5mcy9nZnMyL0tjb25maWctMzAtXHRcdENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgKERMTT15IHx8IERMTT1HRlMyX0ZTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI4OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gYXMgSSB3b3VsZCBteXNlbGYuCgoqKkVuYWJsaW5nIERlcGVuZGVuY2llcyBmb3IgRVJPRlMgT3B0aW1pemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBidXNpbmVzcy4gRnJvbSB0aGUgbG9va3Mgb2YgaXQsIHdlIG5lZWQgdG8gZW5zdXJlIHNvbWUgZGVwZW5kZW5jaWVzIGFyZSBlbmFibGVkIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gU3BlY2lmaWNhbGx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRExNYCBhbmQgYENPTkZJR0ZTX0ZTYC4gUmlnaHQsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSBhY3RpdmF0ZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBCZXN0IHRvIHRha2UgY2FyZSBvZiB0aGUgZm91bmRhdGlvbiBlYXJseSBvbi4gVGhlbiwgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgZnMvZXJvZnMvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBFUk9GU19GU19aSVBgIHNldHRpbmcuIE5vIHBvaW50IGdvaW5nIGFoZWFkIGJsaW5kLCBiZXN0IHRvIGNvbmZpcm0gdGhlIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnPTM9Y29uZmlnIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6NTpcdGRlcGVuZHMgb24gQkxPQ0tcbmZzL2Vyb2ZzL0tjb25maWctNi1cdHNlbGVjdCBDUkMzMlxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9NTA9Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXG5mcy9lcm9mcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo1MjpcdGRlcGVuZHMgb24gRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz02MD1jb25maWcgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNjEtXHRib29sIFwmIzM0O0VST0ZTIGV4dGVuZGVkIGF0dHJpYnV0ZXNcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6NjI6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTYzLVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz03MT1jb25maWcgRVJPRlNfRlNfUE9TSVhfQUNMXG5mcy9lcm9mcy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtFUk9GUyBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo3MzpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctNzQtXHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcbmZzL2Vyb2ZzL0tjb25maWctODYtXHRib29sIFwmIzM0O0VST0ZTIFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzo4NzpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctODgtXHRkZWZhdWx0IHlcbi0tXG5mcy9lcm9mcy9LY29uZmlnPTk4PWNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxuZnMvZXJvZnMvS2NvbmZpZy05OS1cdGJvb2wgXCYjMzQ7RmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG5mcy9lcm9mcy9LY29uZmlnOjEwMDpcdGRlcGVuZHMgb24gRVJPRlNfRlNcbmZzL2Vyb2ZzL0tjb25maWctMTAxLVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xMTI9Y29uZmlnIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXHRib29sIFwmIzM0O0VST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxMTQ6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTXG5mcy9lcm9mcy9LY29uZmlnLTExNS1cdGRlZmF1bHQgeVxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTIyPWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxuZnMvZXJvZnMvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O0VST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTI1LVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xMzQ9Y29uZmlnIEVST0ZTX0ZTX1pJUF9MWk1BX0RFRkFVTFRfTUFYX1NUUkVBTVNcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVx0aW50IFwmIzM0O0VST0ZTIExaTUEgZGVmYXVsdCBtYXhpbXVtIGRlY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxMzY6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUF9MWk1BXG5mcy9lcm9mcy9LY29uZmlnLTEzNy1cdHJhbmdlIDEgTlJfQ1BVU1xuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTQ4PWNvbmZpZyBFUk9GU19GU19aSVBfREVGTEFURVxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXHRib29sIFwmIzM0O0VST0ZTIERFRkxBVEUgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTUwOlx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTUxLVx0aGVscFxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTU5PWNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxuZnMvZXJvZnMvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O0VST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxNjE6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xNjItXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xNzA9Y29uZmlnIEVST0ZTX0ZTX1pJUF9BQ0NFTFxuZnMvZXJvZnMvS2NvbmZpZy0xNzEtXHRib29sIFwmIzM0O0VST0ZTIGhhcmR3YXJlIGRlY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuZnMvZXJvZnMvS2NvbmZpZzoxNzI6XHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxuZnMvZXJvZnMvS2NvbmZpZy0xNzMtXHRoZWxwXG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0xODQ9Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXHRib29sIFwmIzM0O0VST0ZTIHBlci1jcHUgZGVjb21wcmVzc2lvbiBrdGhyZWFkIHdvcmtlcnNcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MTg2Olx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcbmZzL2Vyb2ZzL0tjb25maWctMTg3LVx0aGVscFxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbmZzL2Vyb2ZzL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXCYjMzQ7XG5mcy9lcm9mcy9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gRVJPRlNfRlNfWklQIFx1MDAyNlx1MDAyNiBFUk9GU19GU19QQ1BVX0tUSFJFQURcbmZzL2Vyb2ZzL0tjb25maWctMTk2LVx0ZGVmYXVsdCB5XG4tLVxuZnMvZXJvZnMvS2NvbmZpZz0yMDM9Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcbmZzL2Vyb2ZzL0tjb25maWctMjA0LVx0Ym9vbCBcJiMzNDtFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcJiMzNDtcbmZzL2Vyb2ZzL0tjb25maWc6MjA1Olx0ZGVwZW5kcyBvbiBFUk9GU19GUyBcdTAwMjZcdTAwMjYgRVJPRlNfRlNfWEFUVFJcbmZzL2Vyb2ZzL0tjb25maWctMjA2LVx0c2VsZWN0IEZTX1NUQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODY2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgU2NvcGUqKgoKQWxyaWdodCwgc28gYEVST0ZTX0ZTX1pJUGAgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgY2xlYXJseSBhIGNoaWxkIG9mIGBFUk9GU19GU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBFUk9GUyBmaWxlc3lzdGVtIGlzIHByZXNlbnQgZmlyc3QsIG9idmlvdXNseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgY29tcGxleGl0eSB0aGVyZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgZWxzZSBxdWlja2x5LiBJIGhhdmUgdG8gbG9vayBpbnRvIGBmcy94ZnMvS2NvbmZpZ2AgdG8gc2VlIGFib3V0IGBYRlNfUVVPVEFgLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIHF1b3RhIGludGVncmF0aW9uIG9yIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gaWYgaW5kaXJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmlsZSBoYXMgdG8gc2F5LiBOZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnPTI9Y29uZmlnIFhGU19GU1xuZnMveGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1hGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIEJMT0NLXG5mcy94ZnMvS2NvbmZpZy01LVx0c2VsZWN0IEVYUE9SVEZTXG4tLVxuZnMveGZzL0tjb25maWc9MjU9Y29uZmlnIFhGU19TVVBQT1JUX1Y0XG5mcy94ZnMvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0yOC1cdGRlZmF1bHQgblxuLS1cbmZzL3hmcy9LY29uZmlnPTUwPWNvbmZpZyBYRlNfU1VQUE9SVF9BU0NJSV9DSVxuZnMveGZzL0tjb25maWctNTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZGVwcmVjYXRlZCBjYXNlLWluc2Vuc2l0aXZlIGFzY2lpIChhc2NpaS1jaT0xKSBmb3JtYXRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjUyOlx0ZGVwZW5kcyBvbiBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTUzLVx0ZGVmYXVsdCBuXG4tLVxuZnMveGZzL0tjb25maWc9Nzc9Y29uZmlnIFhGU19RVU9UQVxuZnMveGZzL0tjb25maWctNzgtXHRib29sIFwmIzM0O1hGUyBRdW90YSBzdXBwb3J0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy04MC1cdHNlbGVjdCBRVU9UQUNUTFxuLS1cbmZzL3hmcy9LY29uZmlnPTk1PWNvbmZpZyBYRlNfUE9TSVhfQUNMXG5mcy94ZnMvS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7WEZTIFBPU0lYIEFDTCBzdXBwb3J0XCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzo5NzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy05OC1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbi0tXG5mcy94ZnMvS2NvbmZpZz0xMDU9Y29uZmlnIFhGU19SVFxuZnMveGZzL0tjb25maWctMTA2LVx0Ym9vbCBcJiMzNDtYRlMgUmVhbHRpbWUgc3Vidm9sdW1lIHN1cHBvcnRcJiMzNDtcbmZzL3hmcy9LY29uZmlnOjEwNzpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0xMDgtXHRkZWZhdWx0IEJMS19ERVZfWk9ORURcbi0tXG5mcy94ZnMvS2NvbmZpZz0xNDc9Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJcbi0tXG5mcy94ZnMvS2NvbmZpZy0xNDktXHRkZWZhdWx0IHlcbmZzL3hmcy9LY29uZmlnOjE1MDpcdGRlcGVuZHMgb24gWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIFRNUEZTIFx1MDAyNlx1MDAyNiBTSE1FTVxuZnMveGZzL0tjb25maWctMTUyLVx0c2VsZWN0IFhGU19MSVZFX0hPT0tTXG4tLVxuZnMveGZzL0tjb25maWc9MTY0PWNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXG4tLVxuZnMveGZzL0tjb25maWctMTY2LVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoxNjc6XHRkZXBlbmRzIG9uIFhGU19PTkxJTkVfU0NSVUJcbmZzL3hmcy9LY29uZmlnOjE2ODpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmZzL3hmcy9LY29uZmlnLTE2OS1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0xNzk9Y29uZmlnIFhGU19PTkxJTkVfUkVQQUlSXG4tLVxuZnMveGZzL0tjb25maWctMTgxLVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX09OTElORV9TQ1JVQlxuZnMveGZzL0tjb25maWctMTgzLVx0c2VsZWN0IFhGU19CVFJFRV9JTl9NRU1cbi0tXG5mcy94ZnMvS2NvbmZpZz0xOTQ9Y29uZmlnIFhGU19XQVJOXG5mcy94ZnMvS2NvbmZpZy0xOTUtXHRib29sIFwmIzM0O1hGUyBWZXJib3NlIFdhcm5pbmdzXCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgIVhGU19ERUJVR1xuZnMveGZzL0tjb25maWctMTk3LVx0aGVscFxuLS1cbmZzL3hmcy9LY29uZmlnPTIwNz1jb25maWcgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1hGUyBEZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuZnMveGZzL0tjb25maWc6MjA5Olx0ZGVwZW5kcyBvbiBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTIxMC1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0yMjA9Y29uZmlnIFhGU19ERUJVR19FWFBFTlNJVkVcbmZzL3hmcy9LY29uZmlnLTIyMS1cdGJvb2wgXCYjMzQ7WEZTIGV4cGVuc2l2ZSBkZWJ1Z2dpbmcgY2hlY2tzXCYjMzQ7XG5mcy94ZnMvS2NvbmZpZzoyMjI6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMjMtXHRoZWxwXG4tLVxuZnMveGZzL0tjb25maWc9MjMyPWNvbmZpZyBYRlNfQVNTRVJUX0ZBVEFMXG4tLVxuZnMveGZzL0tjb25maWctMjM0LVx0ZGVmYXVsdCB5XG5mcy94ZnMvS2NvbmZpZzoyMzU6XHRkZXBlbmRzIG9uIFhGU19GUyBcdTAwMjZcdTAwMjYgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMzYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjE5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIENlcGggRlMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYFhGU19RVU9UQWAuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0JiMzOTtzIGp1c3QgYSBkZXBlbmRlbmN5IG9mIHRoZSBjb3JlIGBYRlNfRlNgIGZ1bmN0aW9uYWxpdHksIGFzIGV4cGVjdGVkLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHF1b3RhIGluZm9ybWF0aW9uIGZpdHMgaW4gcmVsYXRpb24gdG8gb3RoZXIgZmlsZSBzeXN0ZW1zLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGBLY29uZmlnYCBmb3IgdGhlIENlcGggZmlsZSBzeXN0ZW0uIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBzZWUgaG93IHRoZXkmIzM5O3ZlIGludGVncmF0ZWQgcXVvdGEgc3VwcG9ydC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQsIG9yIG1vcmUgbG9vc2VseSBoYW5kbGVkLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jZXBoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcbmZzL2NlcGgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVwmIzM0O1xuZnMvY2VwaC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIElORVRcbmZzL2NlcGgvS2NvbmZpZy01LVx0c2VsZWN0IENFUEhfTElCXG4tLVxuZnMvY2VwaC9LY29uZmlnPTIwPWNvbmZpZyBDRVBIX0ZTQ0FDSEVcbmZzL2NlcGgvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIENlcGggY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuZnMvY2VwaC9LY29uZmlnOjIyOlx0ZGVwZW5kcyBvbiBDRVBIX0ZTPW0gXHUwMDI2XHUwMDI2IEZTQ0FDSEUgfHwgQ0VQSF9GUz15IFx1MDAyNlx1MDAyNiBGU0NBQ0hFPXlcbmZzL2NlcGgvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5mcy9jZXBoL0tjb25maWc9Mjk9Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXG5mcy9jZXBoL0tjb25maWctMzAtXHRib29sIFwmIzM0O0NlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbmZzL2NlcGgvS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gQ0VQSF9GU1xuZnMvY2VwaC9LY29uZmlnLTMyLVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuLS1cbmZzL2NlcGgvS2NvbmZpZz0zOT1jb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxuZnMvY2VwaC9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG5mcy9jZXBoL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIENFUEhfRlMgXHUwMDI2XHUwMDI2IFNFQ1VSSVRZXG5mcy9jZXBoL0tjb25maWctNDItXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIHN5bWJvbHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgZmlsZSBzeXN0ZW1zLiBGaXJzdCwgYENFUEhfRlNgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBJTkVUYCwgdGhhdCYjMzk7cyBrZXkuIE5vdywgdGhlIG1haW4gY29uZmlndXJhdGlvbiBzeW1ib2xzIEkgd2FudCB0byBjb25maXJtIGFyZTogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBETE1gLCBgQ09ORklHRlNfRlNgLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgb2YgY291cnNlIGBDRVBIX0ZTYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgZmlsZSBzeXN0ZW0gY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHZlcmlmeSBhcmUgY29ycmVjdC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290IGBjZXBoX3RyaW1fZGVudHJpZXNgLCBgeGZzX2J1Zl9zdGFsZWAsIGBnZnMyX2dsb2NrX3RoYXdgLCBhbmQgYGdmczJfcXVvdGFfc3luY2AuIFRpbWUgdG8gcXVpY2tseSB2ZXJpZnkgdGhlaXIgbG9jYXRpb25zIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZS4gQWgsIHllcywgYHhmc19idWZfc3RhbGVgIGlzIGluIGBmcy94ZnMveGZzX2J1Zi5jYCwganVzdCBhcyBJIGV4cGVjdGVkLiBgZ2ZzMl9nbG9ja190aGF3YCBpcyBpbiBgZnMvZ2ZzMi9nbG9jay5jYC4gYGdmczJfcXVvdGFfc3luY2AgbGl2ZXMgaW4gYGZzL2dmczIvcXVvdGEuY2AsIGFuZCBmaW5hbGx5LCBgY2VwaF90cmltX2RlbnRyaWVzYCBpcyB0dWNrZWQgYXdheSBpbiBgZnMvY2VwaC9kaXIuY2AuCgpPa2F5LCBuZXh0IHN0ZXAsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVycyBvZiBgeGZzX2J1Zl9zdGFsZWAuIEtub3dpbmcgd2hhdCBjYWxscyB0aGF0IGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIGhlbHBmdWwuIFRoaXMgd2lsbCBoZWxwIHdpdGggZGVidWdnaW5nIGxhdGVyIGFuZCB1bmRlcnN0YW5kaW5nIHdoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZzX2J1Zl9zdGFsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3hmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYz01NjI9eGZzX2F0dHJfcm10dmFsX3N0YWxlKFxuLS1cbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTg4LVxuZnMveGZzL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYzo1ODk6XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTkwLVx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM9NTY3PXhyZXBfeGF0dHJfcmVjb3Zlcl9ibG9jayhcbi0tXG5mcy94ZnMvc2NydWIvYXR0cl9yZXBhaXIuYy02MDItXHRpZiAoYnAtXHUwMDNlYl9vcHMgPT0gTlVMTClcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jOjYwMzpcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMvc2NydWIvYXR0cl9yZXBhaXIuYy02MDQtXG4tLVxuZnMveGZzL3NjcnViL3JlYXAuYz0xMzE0PXhyZWFwX2JtYXBpX2JpbnZhbChcbi0tXG5mcy94ZnMvc2NydWIvcmVhcC5jLTEzOTEtXHRcdFx0fSBlbHNlIHtcbmZzL3hmcy9zY3J1Yi9yZWFwLmM6MTM5MjpcdFx0XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3NjcnViL3JlYXAuYy0xMzkzLVx0XHRcdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc19idWYuYz0yNz1zdHJ1Y3Qga21lbV9jYWNoZSAqeGZzX2J1Zl9jYWNoZTtcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTMxLSAqXG5mcy94ZnMveGZzX2J1Zi5jOjMyOiAqIHhmc19idWZfc3RhbGU6XG5mcy94ZnMveGZzX2J1Zi5jLTMzLSAqXHRiX3NlbWEgKGNhbGxlciBob2xkcylcbi0tXG5mcy94ZnMveGZzX2J1Zi5jPTY2PXZvaWRcbmZzL3hmcy94ZnNfYnVmLmM6Njc6eGZzX2J1Zl9zdGFsZShcbmZzL3hmcy94ZnNfYnVmLmMtNjgtXHRzdHJ1Y3QgeGZzX2J1Zlx0KmJwKVxuLS1cbmZzL3hmcy94ZnNfYnVmLmM9NjYwPXhmc19idWZfcmVhZF9tYXAoXG4tLVxuZnMveGZzL3hmc19idWYuYy03MTgtXHRcdGJwLVx1MDAzZWJfZmxhZ3MgXHUwMDI2PSB+WEJGX0RPTkU7XG5mcy94ZnMveGZzX2J1Zi5jOjcxOTpcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTcyMC1cdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc19idWYuYz0xMDI1PXhmc19idWZfaW9lbmRfaGFuZGxlX2Vycm9yKFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtMTA5My1vdXRfc3RhbGU6XG5mcy94ZnMveGZzX2J1Zi5jOjEwOTQ6XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy94ZnNfYnVmLmMtMTA5NS1cdGJwLVx1MDAzZWJfZmxhZ3MgfD0gWEJGX0RPTkU7XG4tLVxuZnMveGZzL3hmc19idWYuYz0xMTk0PXhmc19idWZfZmFpbChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDAtXHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzoxMjAxOlx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTEyMDItXHR4ZnNfYnVmX2lvZXJyb3IoYnAsIC1FSU8pO1xuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTM1Nz14ZnNfYnVmX3N1Ym1pdChcbi0tXG5mcy94ZnMveGZzX2J1Zi5jLTE0MDctXHRicC1cdTAwM2ViX2ZsYWdzIFx1MDAyNj0gflhCRl9ET05FO1xuZnMveGZzL3hmc19idWYuYzoxNDA4Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTE0MDktZW5kX2lvOlxuLS1cbmZzL3hmcy94ZnNfYnVmLmM9MTQyOD1fX3hmc19idWZfbWFya19jb3JydXB0KFxuLS1cbmZzL3hmcy94ZnNfYnVmLmMtMTQzNC1cdHhmc19idWZfY29ycnVwdGlvbl9lcnJvcihicCwgZmEpO1xuZnMveGZzL3hmc19idWYuYzoxNDM1Olx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX2J1Zi5jLTE0MzYtfVxuLS1cbmZzL3hmcy94ZnNfYnVmLmg9MzAzPXN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfYnVmX3plcm8oc3RydWN0IHhmc19idWYgKmJwLCBzaXplX3QgYm9mZiwgc2l6ZV90IGJzaXplKVxuLS1cbmZzL3hmcy94ZnNfYnVmLmgtMzA3LVxuZnMveGZzL3hmc19idWYuaDozMDg6ZXh0ZXJuIHZvaWQgeGZzX2J1Zl9zdGFsZShzdHJ1Y3QgeGZzX2J1ZiAqYnApO1xuZnMveGZzL3hmc19idWYuaC0zMDktXG4tLVxuZnMveGZzL3hmc19idWZfaXRlbV9yZWNvdmVyLmM9MTAzMT14bG9nX3JlY292ZXJfYnVmX2NvbW1pdF9wYXNzMihcbi0tXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYy0xMTYyLVx0ICAgIChCQlRPQihicC1cdTAwM2ViX2xlbmd0aCkgIT0gTV9JR0VPKGxvZy1cdTAwM2VsX21wKS1cdTAwM2Vpbm9kZV9jbHVzdGVyX3NpemUpKSB7XG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYzoxMTYzOlx0XHR4ZnNfYnVmX3N0YWxlKGJwKTtcbmZzL3hmcy94ZnNfYnVmX2l0ZW1fcmVjb3Zlci5jLTExNjQtXHRcdGVycm9yID0geGZzX2J3cml0ZShicCk7XG4tLVxuZnMveGZzL3hmc19pbm9kZS5jPTExMDc9eGZzX2luYWN0aXZlX2Rpcihcbi0tXG5mcy94ZnMveGZzX2lub2RlLmMtMTEzOC1cbmZzL3hmcy94ZnNfaW5vZGUuYzoxMTM5Olx0XHRcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc19pbm9kZS5jLTExNDAtXHRcdFx0eGZzX2J1Zl9yZWxzZShicCk7XG4tLVxuZnMveGZzL3hmc190cmFuc19idWYuYz0xMTY9eGZzX3RyYW5zX2dldF9idWZfbWFwKFxuLS1cbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQxLVx0XHRpZiAoeGZzX2lzX3NodXRkb3duKHRwLVx1MDAzZXRfbW91bnRwKSkge1xuZnMveGZzL3hmc190cmFuc19idWYuYzoxNDI6XHRcdFx0eGZzX2J1Zl9zdGFsZShicCk7XG5mcy94ZnMveGZzX3RyYW5zX2J1Zi5jLTE0My1cdFx0XHRicC1cdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xuLS1cbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM9NTY1PXhmc190cmFuc19iaW52YWwoXG4tLVxuZnMveGZzL3hmc190cmFuc19idWYuYy01OTItXG5mcy94ZnMveGZzX3RyYW5zX2J1Zi5jOjU5MzpcdHhmc19idWZfc3RhbGUoYnApO1xuZnMveGZzL3hmc190cmFuc19idWYuYy01OTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTExCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqWEZTIEJ1ZiBTdGFsZSBJbnZlc3RpZ2F0aW9uIEZvY3VzKioKCk9rYXksIHNvIGB4ZnNfYnVmX3N0YWxlYCBpcyBjYWxsZWQgYWxsIG92ZXIgdGhlIHBsYWNlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyAmIzM0O3NtZWxseSYjMzQ7IGZ1bmN0aW9uLCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuIEl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBpc3N1ZSB0aGF0JiMzOTtzIG1hbmlmZXN0aW5nIGluIHZhcmlvdXMgbG9jYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyBjb250ZXh0IHRvIHNlZSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSB0aGluayBhIGdvb2QgcG9pbnQgb2YgYXR0YWNrIGlzIGBnZnMyX3F1b3RhX3N5bmNgLCBiZWNhdXNlIEkgaGF2ZSBhbiBpbnR1aXRpb24gdGhhdCBpdCByZWxhdGVzIHRvIHN0YWxlIGJ1ZmZlciBpc3N1ZXMgaW4gcXVvdGFzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaHVuY2ggcGFucyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvcXVvdGEuYz0xMjk4PXZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxuLS1cbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcbmZzL2dmczIvcXVvdGEuYy0xMzI1LXtcbi0tXG5mcy9nZnMyL3F1b3RhLmM9MTU4OD1pbnQgZ2ZzMl9xdW90YWQodm9pZCAqZGF0YSlcbi0tXG5mcy9nZnMyL3F1b3RhLmMtMTYxOS1cdFx0XHQvKiBVcGRhdGUgdGhlIHF1b3RhIGZpbGUgKi9cbmZzL2dmczIvcXVvdGEuYzoxNjIwOlx0XHRcdGVycm9yID0gZ2ZzMl9xdW90YV9zeW5jKHNkcC1cdTAwM2VzZF92ZnMsIDApO1xuZnMvZ2ZzMi9xdW90YS5jLTE2MjEtXHRcdFx0cXVvdGFkX2Vycm9yKHNkcCwgXCYjMzQ7c3luY1wmIzM0OywgZXJyb3IpO1xuLS1cbmZzL2dmczIvcXVvdGEuYz0xODE2PWNvbnN0IHN0cnVjdCBxdW90YWN0bF9vcHMgZ2ZzMl9xdW90YWN0bF9vcHMgPSB7XG5mcy9nZnMyL3F1b3RhLmM6MTgxNzpcdC5xdW90YV9zeW5jICAgICA9IGdmczJfcXVvdGFfc3luYyxcbmZzL2dmczIvcXVvdGEuYy0xODE4LVx0LmdldF9zdGF0ZVx0PSBnZnMyX3F1b3RhX2dldF9zdGF0ZSxcbi0tXG5mcy9nZnMyL3F1b3RhLmg9Mjg9dm9pZCBnZnMyX3F1b3RhX2NoYW5nZShzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIHM2NCBjaGFuZ2UsXG4tLVxuZnMvZ2ZzMi9xdW90YS5oLTMwLVxuZnMvZ2ZzMi9xdW90YS5oOjMxOmludCBnZnMyX3F1b3RhX3N5bmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpO1xuZnMvZ2ZzMi9xdW90YS5oLTMyLWludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZCk7XG4tLVxuZnMvZ2ZzMi9zdXBlci5jPTUzOT12b2lkIGdmczJfbWFrZV9mc19ybyhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcbi0tXG5mcy9nZnMyL3N1cGVyLmMtNTQ4LVx0aWYgKGxvZ193cml0ZV9hbGxvd2VkKSB7XG5mcy9nZnMyL3N1cGVyLmM6NTQ5Olx0XHRnZnMyX3F1b3RhX3N5bmMoc2RwLVx1MDAzZXNkX3ZmcywgMCk7XG5mcy9nZnMyL3N1cGVyLmMtNTUwLVx0XHRnZnMyX3N0YXRmc19zeW5jKHNkcC1cdTAwM2VzZF92ZnMsIDApO1xuLS1cbmZzL2dmczIvc3VwZXIuYz02NTg9c3RhdGljIGludCBnZnMyX3N5bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpXG4tLVxuZnMvZ2ZzMi9zdXBlci5jLTY2MS1cbmZzL2dmczIvc3VwZXIuYzo2NjI6XHRnZnMyX3F1b3RhX3N5bmMoc2IsIC0xKTtcbmZzL2dmczIvc3VwZXIuYy02NjMtXHRpZiAod2FpdClcbi0tXG5mcy9nZnMyL3N5cy5jPTIzMT1zdGF0aWMgc3NpemVfdCBxdW90YV9zeW5jX3N0b3JlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCBjaGFyICpidWYsXG4tLVxuZnMvZ2ZzMi9zeXMuYy0yNDUtXG5mcy9nZnMyL3N5cy5jOjI0NjpcdGdmczJfcXVvdGFfc3luYyhzZHAtXHUwMDNlc2RfdmZzLCAwKTtcbmZzL2dmczIvc3lzLmMtMjQ3LVx0cmV0dXJuIGxlbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNDMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKioKClJpZ2h0LCBzbyBgZ2ZzMl9xdW90YV9zeW5jYCDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHdlJiMzOTtyZSB1c2luZyBhcyB0aGUgYHF1b3RhX3N5bmNgIGluIGBxdW90YWN0bF9vcHNgLiBHb29kLCB0aGF0IG1ha2VzIGl0IGEgY2xlYXIgZm9jYWwgcG9pbnQuIFNlZW1zIGxpa2UgYSBzb2xpZCBjaG9pY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHF1b3RhcyBhcmUgYmVpbmcgc3luY2hyb25pemVkIHdpdGhpbiB0aGUgR0ZTMiBmaWxlIHN5c3RlbS4gSXTigJlzIGEgZ29vZCBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24uCgpOb3csIHdoZXJlIGRvIHdlIGdvIGZyb20gaGVyZT8gVGltZSB0byBkaWcgaW50byBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBzaG91bGQgZ2l2ZSB1cyBzb21lIGluc2lnaHQgaW50byBob3cgdGhpbmdzIGFyZSB1bmJsb2NrZWQuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBpdCBzaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dmczJfZ2xvY2tfdGhhdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2dmczIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcbi0tXG5mcy9nZnMyL2dsb2NrLmMtMjA5Mi0vKipcbmZzL2dmczIvZ2xvY2suYzoyMDkzOiAqIGdmczJfZ2xvY2tfdGhhdyAtIFRoYXcgYW55IGZyb3plbiBnbG9ja3NcbmZzL2dmczIvZ2xvY2suYy0yMDk0LSAqIEBzZHA6IFRoZSBzdXBlciBibG9ja1xuLS1cbmZzL2dmczIvZ2xvY2suYy0yMDk3LVxuZnMvZ2ZzMi9nbG9jay5jOjIwOTg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApXG5mcy9nZnMyL2dsb2NrLmMtMjA5OS17XG4tLVxuZnMvZ2ZzMi9nbG9jay5oPTI2Nz12b2lkIGdmczJfd2l0aGRyYXdfZ2xvY2tzKHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcbmZzL2dmczIvZ2xvY2suaDoyNjg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApO1xuZnMvZ2ZzMi9nbG9jay5oLTI2OS12b2lkIGdmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpO1xuLS1cbmZzL2dmczIvbG9ja19kbG0uYz02NTU9c3RhdGljIHZvaWQgZ2ZzMl9jb250cm9sX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmZzL2dmczIvbG9ja19kbG0uYy04MjQtXHRcdGZzX2luZm8oc2RwLCBcJiMzNDtyZWNvdmVyIGdlbmVyYXRpb24gJXUgZG9uZVxcblwmIzM0Oywgc3RhcnRfZ2VuKTtcbmZzL2dmczIvbG9ja19kbG0uYzo4MjU6XHRcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xuZnMvZ2ZzMi9sb2NrX2RsbS5jLTgyNi1cdH0gZWxzZSB7XG4tLVxuZnMvZ2ZzMi9zeXMuYz00MDc9c3RhdGljIHNzaXplX3QgYmxvY2tfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5mcy9nZnMyL3N5cy5jLTQyMC1cdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbmZzL2dmczIvc3lzLmM6NDIxOlx0XHRnZnMyX2dsb2NrX3RoYXcoc2RwKTtcbmZzL2dmczIvc3lzLmMtNDIyLVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5NTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIEFyZWFzKioKClJpZ2h0LCBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBib3RoIHN5c2ZzIGFuZCB0aGUgRExNIGNvbnRyb2wgZnVuY3Rpb25zLCBzbyBpdCBzZWVtcyBsaWtlIGEgcHJldHR5IGltcG9ydGFudCBzeW1ib2wgdG8gZm9jdXMgb24uIEl0JiMzOTtzIGEga2V5IHBvaW50IG9mIGludGVyYWN0aW9uIGZvciB0aGUgZmlsZXN5c3RlbSB3aXRoIHRoZSB1bmRlcmx5aW5nIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciwgYW5kIHN5c2ZzIGFjY2VzcyBpcyBhbHdheXMgaW50ZXJlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgd29uZGVyIGlmIGBjZXBoX3RyaW1fZGVudHJpZXNgIG1pZ2h0IGJlIGFuIGludGVyZXN0aW5nIGxpbmUgb2YgaW5xdWlyeSB0byBmb2xsb3cgbmV4dCwgcHJvYmFibHkgaGFzIHNvbWUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zLiBJIHRoaW5rIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyB0aGVyZSwgYW5kIGl0IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NlcGhfdHJpbV9kZW50cmllcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NlcGgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NlcGgvZGlyLmM9MTc1MD1zdGF0aWMgaW50IF9fZGlyX2xlYXNlX2NoZWNrKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9jZXBoL2Rpci5jLTE3NzQtXG5mcy9jZXBoL2Rpci5jOjE3NzU6aW50IGNlcGhfdHJpbV9kZW50cmllcyhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjKVxuZnMvY2VwaC9kaXIuYy0xNzc2LXtcbi0tXG5mcy9jZXBoL21kc19jbGllbnQuYz0yNTg2PXN0YXRpYyB2b2lkIGNlcGhfY2FwX3JlY2xhaW1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmMtMjU4OS1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBjZXBoX21kc19jbGllbnQsIGNhcF9yZWNsYWltX3dvcmspO1xuZnMvY2VwaC9tZHNfY2xpZW50LmM6MjU5MDpcdGludCByZXQgPSBjZXBoX3RyaW1fZGVudHJpZXMobWRzYyk7XG5mcy9jZXBoL21kc19jbGllbnQuYy0yNTkxLVx0aWYgKHJldCA9PSAtRUFHQUlOKVxuLS1cbmZzL2NlcGgvc3VwZXIuaD0xMzgwPWV4dGVybiB2b2lkIGNlcGhfaW52YWxpZGF0ZV9kZW50cnlfbGVhc2Uoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTtcbmZzL2NlcGgvc3VwZXIuaDoxMzgxOmV4dGVybiBpbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpO1xuZnMvY2VwaC9zdXBlci5oLTEzODItZXh0ZXJuIHVuc2lnbmVkIGNlcGhfZGVudHJ5X2hhc2goc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MjUKCQkJCQkJCW91dHB1dDogMjc4CgkJCQkJCQl0aG91Z2h0czogNzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEZpbGVzeXN0ZW0gRGVwZW5kZW5jaWVzIGFuZCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBzZWUuIGBjZXBoX3RyaW1fZGVudHJpZXNgIGxvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbCDigJMgaXQmIzM5O3MgY2FsbGVkIGZyb20gYSB3b3JrcXVldWUuIE5vdywgc2hvdWxkIEkgaW5jbHVkZSBgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50YD8gVGhhdCYjMzk7cyBhIGNvcmUgVkZTIGZ1bmN0aW9uLCBidXQgdGhlIHByb21wdCBzYWlkIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBBbmQsIHNpbmNlIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG9ubHkgY2FsbGVkIGR1cmluZyB1bW91bnQsIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBvbiB0aGUgaG90IHBhdGguIEJ1dCwgaXQgaXMgZ2VuZXJpYy4gTWF5YmUgZm91ciBmdW5jdGlvbnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoZSBmb2N1cy4KCkFscmlnaHQsIGxldCBtZSByZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbGlzdCB0aGVtOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuCgpBcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkga25vdyBgRExNYCBkZXBlbmRzIG9uIGBJTkVUYCwgYENPTkZJR0ZTX0ZTYCBkZXBlbmRzIG9uIGBTWVNGU2AsIGFuZCBgU1lTRlNgLCBgSU5FVGAsIGFuZCBgQkxPQ0tgIGFyZSBhbHdheXMgZW5hYmxlZC4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBgZnMvZXJvZnMvS2NvbmZpZ2AuIGBFUk9GU19GU19aSVBgIGRlcGVuZHMgb24gYEVST0ZTX0ZTYCwgYW5kIGBFUk9GU19GU2AgZGVwZW5kcyBvbiBgQkxPQ0tgLiBOb3cgZm9yIGBmcy94ZnMvS2NvbmZpZ2AuIEkgc2VlIHRoYXQgYFhGU19RVU9UQWAgZGVwZW5kcyBvbiBgWEZTX0ZTYCwgYW5kIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gQW5kIGZpbmFsbHksIGluIGBmcy9jZXBoL0tjb25maWdgLCBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4gSSBzaG91bGQgY2hlY2sgYGZzL2dmczIvS2NvbmZpZ2AuIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCBkZXBlbmRzIG9uIGAoR0ZTMl9GUyE9bikgJmFtcDsmYW1wOyBORVQgJmFtcDsmYW1wOyBJTkVUICZhbXA7JmFtcDsgQ09ORklHRlNfRlMgJmFtcDsmYW1wOyBTWVNGUyAmYW1wOyZhbXA7IChETE09eSB8fCBETE09R0ZTMl9GUylgLiBUaGlzIG1lYW5zIGBETE1gIG11c3QgYmUgYHlgIG9yIGBtYC4gV2UgY2FuIGp1c3QgbGlzdCBgRExNYC4KClNvLCB0aGUgY29uZmlnIGxpc3QgaXMgY29uZmlybWVkOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuCgpBbmQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOiBgY2VwaF90cmltX2RlbnRyaWVzYCwgYHhmc19idWZfc3RhbGVgLCBgZ2ZzMl9nbG9ja190aGF3YCwgYW5kIGBnZnMyX3F1b3RhX3N5bmNgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbG9ja3JlZmAgbWVjaGFuaXNtIGFuZCBpbnRyb2R1Y2VzIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gIHRvIGhhbmRsZSBsb2NrcmVmIGNvdW50cyB0aGF0IGFyZSBuZWdhdGl2ZSwgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhpcyBpcyBhbiBlZGdlLWNhc2UgY2hhbmdlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHNwZWNpZmljIGVudHJ5IHBvaW50cyBpbiBjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCBhbmQgeGZzIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbG9ja3JlZiBsb2dpYy4gSSYjMzk7bSBhdm9pZGluZyB0aGUgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R0ZTMl9GUyYjMzQ7LAogICAgJiMzNDtHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgICAmIzM0O0RMTSYjMzQ7LAogICAgJiMzNDtDT05GSUdGU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19aSVAmIzM0OywKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19RVU9UQSYjMzQ7LAogICAgJiMzNDtDRVBIX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF90cmltX2RlbnRyaWVzJiMzNDssCiAgICAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAgICYjMzQ7Z2ZzMl9nbG9ja190aGF3JiMzNDssCiAgICAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBrZXJuZWwgbG9ja3JlZiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZGVhZCBsb2NrcmVmcyBhcmUgZGV0ZWN0ZWQgYnkgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoaXMgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdyBpbiBlZGdlIGNhc2VzIHdoZXJlIHRoZSBsb2NrcmVmIGNvdW50IG1pZ2h0IGJlIG5lZ2F0aXZlIGJ1dCBub3QgZXhhY3RseSBgLTEyOGAuIFRoZSBjaGFuZ2VzIGFmZmVjdCBzZXZlcmFsIGZpbGVzeXN0ZW1zIChjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCB4ZnMpIHRoYXQgcmVseSBvbiBsb2NrcmVmLiBXZSBmb2N1cyBmdXp6aW5nIG9uIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGluIHRoZXNlIGZpbGVzeXN0ZW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9kaWZpZWQgbG9ja3JlZiBsb2dpYywgd2hpbGUgYXZvaWRpbmcgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R0ZTMl9GUyYjMzQ7LAogICAgJiMzNDtHRlMyX0ZTX0xPQ0tJTkdfRExNJiMzNDssCiAgICAmIzM0O0RMTSYjMzQ7LAogICAgJiMzNDtDT05GSUdGU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19aSVAmIzM0OywKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19RVU9UQSYjMzQ7LAogICAgJiMzNDtDRVBIX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2VwaF90cmltX2RlbnRyaWVzJiMzNDssCiAgICAmIzM0O3hmc19idWZfc3RhbGUmIzM0OywKICAgICYjMzQ7Z2ZzMl9nbG9ja190aGF3JiMzNDssCiAgICAmIzM0O2dmczJfcXVvdGFfc3luYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBrZXJuZWwgbG9ja3JlZiBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZGVhZCBsb2NrcmVmcyBhcmUgZGV0ZWN0ZWQgYnkgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZGAgYW5kIGBsb2NrcmVmX2lzX2RlYWRfb3JfemVyb2AuIFRoaXMgZnVuY3Rpb25hbGx5IGFsdGVycyBleGVjdXRpb24gZmxvdyBpbiBlZGdlIGNhc2VzIHdoZXJlIHRoZSBsb2NrcmVmIGNvdW50IG1pZ2h0IGJlIG5lZ2F0aXZlIGJ1dCBub3QgZXhhY3RseSBgLTEyOGAuIFRoZSBjaGFuZ2VzIGFmZmVjdCBzZXZlcmFsIGZpbGVzeXN0ZW1zIChjZXBoLCBkY2FjaGUsIGVyb2ZzLCBnZnMyLCB4ZnMpIHRoYXQgcmVseSBvbiBsb2NrcmVmLiBXZSBmb2N1cyBmdXp6aW5nIG9uIHNwZWNpZmljIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGluIHRoZXNlIGZpbGVzeXN0ZW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgbW9kaWZpZWQgbG9ja3JlZiBsb2dpYywgd2hpbGUgYXZvaWRpbmcgZ2VuZXJpYyBWRlMgaG90LXBhdGhzIGxpa2UgYGRwdXRgIG9yIGBkX2FsbG9jX3BhcmFsbGVsYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjA1Ljk1NDcwMzMyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDA0NDgzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdGUzJfRlNcIixcbiAgICBcIkdGUzJfRlNfTE9DS0lOR19ETE1cIixcbiAgICBcIkRMTVwiLFxuICAgIFwiQ09ORklHRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19aSVBcIixcbiAgICBcIlhGU19GU1wiLFxuICAgIFwiWEZTX1FVT1RBXCIsXG4gICAgXCJDRVBIX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF90cmltX2RlbnRyaWVzXCIsXG4gICAgXCJ4ZnNfYnVmX3N0YWxlXCIsXG4gICAgXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgICBcImdmczJfcXVvdGFfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDowNS45NTQ3MDk1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyMjYwNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTIwMDc0OGY3N2ZmZTYwMzFjMjQ0MzVmNWRiOTc3ZGQzZjA4N2EzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAwNjowMDowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9jZXBoL2Rpci5jIGIvZnMvY2VwaC9kaXIuY1xcbmluZGV4IGI5NTcxNDlhYmU1YTBhLi5mMzk4NTZmZjNlYTE1OCAxMDA2NDRcXG4tLS0gYS9mcy9jZXBoL2Rpci5jXFxuKysrIGIvZnMvY2VwaC9kaXIuY1xcbkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBfX2RlbnRyeV9sZWFzZXNfd2FsayhzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLFxcbiBcXHRcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpKSB7XFxuK1xcdFxcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkaS1cXHUwMDNlbGVhc2VfbGlzdCk7XFxuIFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9mcy9kY2FjaGUuYyBiL2ZzL2RjYWNoZS5jXFxuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxcbi0tLSBhL2ZzL2RjYWNoZS5jXFxuKysrIGIvZnMvZGNhY2hlLmNcXG5AQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiBzdGF0aWMgdm9pZCBkZW50cnlfZnJlZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXFxuIHtcXG4gXFx0REVOVFJZX1dBUk5fT05DRShkX3JlYWxseV9pc19wb3NpdGl2ZShkZW50cnkpLCBkZW50cnkpO1xcbi1cXHRERU5UUllfV0FSTl9PTkNFKGRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2U9IDAsIGRlbnRyeSk7XFxuK1xcdERFTlRSWV9XQVJOX09OQ0UoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpLCBkZW50cnkpO1xcbiBcXHREX0ZMQUdfVkVSSUZZKGRlbnRyeSwgMCk7XFxuIFxcdGlmICh1bmxpa2VseShkbmFtZV9leHRlcm5hbChkZW50cnkpKSkge1xcbiBcXHRcXHRzdHJ1Y3QgZXh0ZXJuYWxfbmFtZSAqcCA9IGV4dGVybmFsX25hbWUoZGVudHJ5KTtcXG5AQCAtNzgyLDcgKzc4Miw3IEBAIHN0YXRpYyBib29sIGxvY2tfZm9yX2tpbGwoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbiAgKlxcbiAgKiBJZiBAZGVudHJ5IGlzIGlkbGUgYW5kIHJlbWFpbnMgc3VjaCBhZnRlciB3ZSBhc3NlbWJsZSB0aGUgZnVsbFxcbiAgKiBsb2NraW5nIGVudmlyb25tZW50IGZvciBldmljdGlvbiAoc2VlIGxvY2tfZm9yX2tpbGwoKSBmb3IgZGV0YWlscylcXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2MgMCkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXFxuKyAqIHdlIG1hcmsgaXQgZG9vbWVkIChzZWUgbG9ja3JlZl9tYXJrX2RlYWQoKSkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXFxuICAqIGl0IGZyb20gYW55IGZpbGVzeXN0ZW0gb2JqZWN0cy4gIE90aGVyd2lzZSB3ZSBkcm9wIC1cXHUwMDNlZF9sb2NrIGFuZFxcbiAgKiByZXR1cm4gJU5VTEwuXFxuICAqXFxuQEAgLTk0Niw3ICs5NDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFzdF9kcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKHVubGlrZWx5KHJldCBcXHUwMDNjIDApKSB7XFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0XFx0aWYgKFdBUk5fT05fT05DRShkZW50cnktXFx1MDAzZWRfbG9ja3JlZi5jb3VudCBcXHUwMDNjPSAwKSkge1xcbitcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9ja3JlZikpKSB7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRcXHR9XFxuQEAgLTE2NDQsNyArMTY0NCw3IEBAIHN0YXRpYyBlbnVtIGRfd2Fsa19yZXQgc2VsZWN0X2NvbGxlY3Qodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKGRhdGEtXFx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYz0gMCkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRfX21vdmVfdG9fc2hyaW5rX2xpc3QoZGVudHJ5LCBcXHUwMDI2ZGF0YS1cXHUwMDNlZGlzcG9zZSk7XFxuIFxcdFxcdGRhdGEtXFx1MDAzZWZvdW5kKys7XFxuIFxcdH1cXG5AQCAtMTY3Niw3ICsxNjc2LDcgQEAgc3RhdGljIGVudW0gZF93YWxrX3JldCBzZWxlY3RfY29sbGVjdDIodm9pZCAqX2RhdGEsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4gXFx0aWYgKGRhdGEtXFx1MDAzZXN0YXJ0ID09IGRlbnRyeSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYz0gMCkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkX29yX3plcm8oXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmKSkge1xcbiBcXHRcXHRpZiAoIV9fbW92ZV90b19zaHJpbmtfbGlzdChkZW50cnksIFxcdTAwMjZkYXRhLVxcdTAwM2VkaXNwb3NlKSkge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBXZSBuZWVkIGFuIGVudGVyIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgYXJlYSB0aGF0XFxuQEAgLTE3NDcsNyArMTc0Nyw3IEBAIHN0YXRpYyB2b2lkIHNocmlua19kY2FjaGVfdHJlZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJvb2wgZm9yX3Vtb3VudClcXG4gXFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ2LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFxuLVxcdFxcdFxcdGlmICh1bmxpa2VseSh2LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYyAwKSkge1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZ2LVxcdTAwM2VkX2xvY2tyZWYpKSkge1xcbiBcXHRcXHRcXHRcXHQvLyBJdCdzIGRvb21lZDsgaWYgaXQgaXNuJ3QgZGVhZCB5ZXQsIG5vdGlmeSB1c1xcbiBcXHRcXHRcXHRcXHQvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLlxcbiBcXHRcXHRcXHRcXHRuZWVkX3dhaXQgPSBkX2FkZF93YWl0ZXIodiwgXFx1MDAyNndhaXQpO1xcbkBAIC0xODIzLDcgKzE4MjMsNyBAQCB2b2lkIHNocmlua19kY2FjaGVfZm9yX3Vtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2c2ItXFx1MDAzZXNfcm9vdHNfbG9jayk7XFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0XFx0aWYgKHVubGlrZWx5KGRlbnRyeS1cXHUwMDNlZF9sb2NrcmVmLmNvdW50IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYpKSkge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbl9saXN0IHdhaXQ7XFxuIFxcdFxcdFxcdGJvb2wgbmVlZF93YWl0ID0gZF9hZGRfd2FpdGVyKGRlbnRyeSwgXFx1MDAyNndhaXQpO1xcbiBcXG5AQCAtMjgyMiw3ICsyODIyLDcgQEAgc3RydWN0IGRlbnRyeSAqZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX2xvY2spO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0Lyogbm93IHdlIGNhbiB0cnkgdG8gZ3JhYiBhIHJlZmVyZW5jZSAqL1xcbi1cXHRcXHRpZiAodW5saWtlbHkoZGVudHJ5LVxcdTAwM2VkX2xvY2tyZWYuY291bnQgXFx1MDAzYyAwKSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9ja3JlZikpKSB7XFxuIFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbG9jayk7XFxuIFxcdFxcdFxcdGdvdG8gcmV0cnk7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZnMvZXJvZnMvemRhdGEuYyBiL2ZzL2Vyb2ZzL3pkYXRhLmNcXG5pbmRleCA3NDUyMGU5MTAyNTk2Ni4uZDAyMmQxZGZmNWExY2UgMTAwNjQ0XFxuLS0tIGEvZnMvZXJvZnMvemRhdGEuY1xcbisrKyBiL2ZzL2Vyb2ZzL3pkYXRhLmNcXG5AQCAtNzI1LDcgKzcyNSw3IEBAIHN0YXRpYyBib29sIHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyICpwY2wpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYubG9jayk7XFxuLVxcdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2cGNsLVxcdTAwM2Vsb2NrcmVmKSkge1xcbitcXHRpZiAobG9ja3JlZl9pc19kZWFkKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYpKSB7XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwY2wtXFx1MDAzZWxvY2tyZWYubG9jayk7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbkBAIC05NDUsNyArOTQ1LDcgQEAgc3RhdGljIHZvaWQgel9lcm9mc19wdXRfcGNsdXN0ZXIoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSxcXG4gXFx0aWYgKGxvY2tyZWZfcHV0X29yX2xvY2soXFx1MDAyNnBjbC1cXHUwMDNlbG9ja3JlZikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdERCR19CVUdPTihfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2cGNsLVxcdTAwM2Vsb2NrcmVmKSk7XFxuK1xcdERCR19CVUdPTihsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnBjbC1cXHUwMDNlbG9ja3JlZikpO1xcbiBcXHRpZiAoIS0tcGNsLVxcdTAwM2Vsb2NrcmVmLmNvdW50KSB7XFxuIFxcdFxcdGlmICh0cnlfZnJlZSBcXHUwMDI2XFx1MDAyNiB4YV90cnlsb2NrKFxcdTAwMjZzYmktXFx1MDAzZW1hbmFnZWRfcHNsb3RzKSkge1xcbiBcXHRcXHRcXHRmcmVlID0gX19lcm9mc190cnlfdG9fcmVsZWFzZV9wY2x1c3RlcihzYmksIHBjbCk7XFxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xcbmluZGV4IGI4YTE0NGQzYTczYjg3Li5lYWEyOTgwMDUxZWQ1ZiAxMDA2NDRcXG4tLS0gYS9mcy9nZnMyL2dsb2NrLmNcXG4rKysgYi9mcy9nZnMyL2dsb2NrLmNcXG5AQCAtMjA4MCw3ICsyMDgwLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbiBcXHRnZnMyX2dsb2NrX3JlbW92ZV9mcm9tX2xydShnbCk7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmLmxvY2spO1xcbi1cXHRpZiAoIV9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpIHtcXG4rXFx0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSkge1xcbiBcXHRcXHRnbC1cXHUwMDNlZ2xfbG9ja3JlZi5jb3VudCsrO1xcbiBcXHRcXHRpZiAoZ2wtXFx1MDAzZWdsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKVxcbiBcXHRcXHRcXHRyZXF1ZXN0X2RlbW90ZShnbCwgTE1fU1RfVU5MT0NLRUQsIDAsIGZhbHNlKTtcXG5AQCAtMjExNSw3ICsyMTE1LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9nbG9ja19mdW5jKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4gc3RhdGljIHZvaWQgd2l0aGRyYXdfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbiB7XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYubG9jayk7XFxuLVxcdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSkge1xcbitcXHRpZiAoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFdlIGRvbid0IHdhbnQgdG8gd3JpdGUgYmFjayBhbnkgbW9yZSBkaXJ0eSBkYXRhLiAgVW5sb2NrIHRoZVxcbiBcXHRcXHQgKiByZW1haW5pbmcgaW5vZGUgYW5kIHJlc291cmNlIGdyb3VwIGdsb2NrczsgdGhpcyB3aWxsIGNhdXNlXFxuQEAgLTI0ODMsNyArMjQ4Myw3IEBAIHN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfaXRlcl9uZXh0KHN0cnVjdCBnZnMyX2dsb2NrX2l0ZXIgKmdpLCBsb2ZmX3QgbilcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSlcXG4rXFx0XFx0XFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0bi0tO1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xcbmluZGV4IDc4MjhhZDBiNmY1YTZmLi5jYzkwMWZiOTdkYTBjYSAxMDA2NDRcXG4tLS0gYS9mcy9nZnMyL2xvY2tfZGxtLmNcXG4rKysgYi9mcy9nZnMyL2xvY2tfZGxtLmNcXG5AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyB2b2lkIGdkbG1fYXN0KHZvaWQgKmFyZylcXG4gXFx0Y2xlYXJfYml0KEdMRl9CTE9DS0lORywgXFx1MDAyNmdsLVxcdTAwM2VnbF9mbGFncyk7XFxuIFxcbiBcXHQvKiBJZiB0aGUgZ2xvY2sgaXMgZGVhZCwgd2Ugb25seSByZWFjdCB0byBhIGRsbV91bmxvY2soKSByZXBseS4gKi9cXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBnbC1cXHUwMDNlZ2xfbGtzYi5zYl9zdGF0dXMgIT0gLURMTV9FVU5MT0NLKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpXFxuIHtcXG4gXFx0c3RydWN0IGdmczJfZ2xvY2sgKmdsID0gYXJnO1xcbiBcXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpXFxuK1xcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmdsLVxcdTAwM2VnbF9sb2NrcmVmKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0c3dpdGNoIChtb2RlKSB7XFxuQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgdm9pZCBnZGxtX3B1dF9sb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4gXFx0dWludDMyX3QgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgZXJyb3I7XFxuIFxcbi1cXHRCVUdfT04oIV9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZnbC1cXHUwMDNlZ2xfbG9ja3JlZikpO1xcbitcXHRCVUdfT04oIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2Z2wtXFx1MDAzZWdsX2xvY2tyZWYpKTtcXG4gXFxuIFxcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXFx1MDAyNmdsLVxcdTAwM2VnbF9mbGFncykpIHtcXG4gXFx0XFx0Z2ZzMl9nbG9ja19mcmVlKGdsKTtcXG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXFxuaW5kZXggOTFlOTk3NWQyNWU4OTAuLjAwMWM4YjM5Y2E1NTczIDEwMDY0NFxcbi0tLSBhL2ZzL2dmczIvcXVvdGEuY1xcbisrKyBiL2ZzL2dmczIvcXVvdGEuY1xcbkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIHZvaWQgcWRfcHV0KHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxcbiBcXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRCVUdfT04oX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSk7XFxuK1xcdEJVR19PTihsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSk7XFxuIFxcdHNkcCA9IHFkLVxcdTAwM2VxZF9zYmQ7XFxuIFxcdGlmICh1bmxpa2VseSghdGVzdF9iaXQoU0RGX0pPVVJOQUxfTElWRSwgXFx1MDAyNnNkcC1cXHUwMDNlc2RfZmxhZ3MpKSkge1xcbiBcXHRcXHRsb2NrcmVmX21hcmtfZGVhZChcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpO1xcbkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcXG4gXFx0ICAgIHFkLVxcdTAwM2VxZF9zeW5jX2dlbiBcXHUwMDNlPSBzeW5jX2dlbilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbi1cXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNnFkLVxcdTAwM2VxZF9sb2NrcmVmKSlcXG4rXFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcXHUwMDI2cWQtXFx1MDAzZXFkX2xvY2tyZWYpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0cWQtXFx1MDAzZXFkX2xvY2tyZWYuY291bnQrKztcXG4gXFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXFxuaW5kZXggMjFkNjdhZjc4MWRhM2QuLjE3YjlkNjQzZTFhODc3IDEwMDY0NFxcbi0tLSBhL2ZzL3hmcy94ZnNfYnVmLmNcXG4rKysgYi9mcy94ZnMveGZzX2J1Zi5jXFxuQEAgLTgwLDcgKzgwLDcgQEAgeGZzX2J1Zl9zdGFsZShcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2YnAtXFx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcXG4gXFx0YXRvbWljX3NldChcXHUwMDI2YnAtXFx1MDAzZWJfbHJ1X3JlZiwgMCk7XFxuLVxcdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYpKVxcbitcXHRpZiAoIWxvY2tyZWZfaXNfZGVhZChcXHUwMDI2YnAtXFx1MDAzZWJfbG9ja3JlZikpXFxuIFxcdFxcdGxpc3RfbHJ1X2RlbF9vYmooXFx1MDAyNmJwLVxcdTAwM2ViX3RhcmdldC1cXHUwMDNlYnRfbHJ1LCBcXHUwMDI2YnAtXFx1MDAzZWJfbHJ1KTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYubG9jayk7XFxuIH1cXG5AQCAtODQxLDcgKzg0MSw3IEBAIHN0YXRpYyB2b2lkXFxuIHhmc19idWZfZGVzdHJveShcXG4gXFx0c3RydWN0IHhmc19idWZcXHRcXHQqYnApXFxuIHtcXG4tXFx0QVNTRVJUKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZicC1cXHUwMDNlYl9sb2NrcmVmKSk7XFxuK1xcdEFTU0VSVChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmJwLVxcdTAwM2ViX2xvY2tyZWYpKTtcXG4gXFx0QVNTRVJUKCEoYnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNiBfWEJGX0RFTFdSSV9RKSk7XFxuIFxcbiBcXHRpZiAoYnAtXFx1MDAzZWJfcGFnKVxcbmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3FtLmMgYi9mcy94ZnMveGZzX3FtLmNcXG5pbmRleCA4OTZiMjRmODdhYzlkNS4uOTlhODIxMDdiOGU2ZjIgMTAwNjQ0XFxuLS0tIGEvZnMveGZzL3hmc19xbS5jXFxuKysrIGIvZnMveGZzL3hmc19xbS5jXFxuQEAgLTEyOCw3ICsxMjgsNyBAQCB4ZnNfcW1fZHFwdXJnZShcXG4gXFx0c3RydWN0IHhmc19xdW90YWluZm9cXHQqcWkgPSBkcXAtXFx1MDAzZXFfbW91bnQtXFx1MDAzZW1fcXVvdGFpbmZvO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcXG4tXFx0aWYgKGRxcC1cXHUwMDNlcV9sb2NrcmVmLmNvdW50IFxcdTAwM2UgMCB8fCBfX2xvY2tyZWZfaXNfZGVhZChcXHUwMDI2ZHFwLVxcdTAwM2VxX2xvY2tyZWYpKSB7XFxuK1xcdGlmIChkcXAtXFx1MDAzZXFfbG9ja3JlZi5jb3VudCBcXHUwMDNlIDAgfHwgbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZikpIHtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmRxcC1cXHUwMDNlcV9sb2NrcmVmLmxvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFx0fVxcbkBAIC00MjksNyArNDI5LDcgQEAgeGZzX3FtX2RxdW90X2lzb2xhdGUoXFxuIFxcdCAqIGZyb20gdGhlIExSVSwgbGVhdmUgaXQgZm9yIHRoZSBmcmVlaW5nIHRhc2sgdG8gY29tcGxldGUgdGhlIGZyZWVpbmdcXG4gXFx0ICogcHJvY2VzcyByYXRoZXIgdGhhbiByaXNrIGl0IGJlaW5nIGZyZWUgZnJvbSB1bmRlciB1cyBoZXJlLlxcbiBcXHQgKi9cXG4tXFx0aWYgKF9fbG9ja3JlZl9pc19kZWFkKFxcdTAwMjZkcXAtXFx1MDAzZXFfbG9ja3JlZikpXFxuK1xcdGlmIChsb2NrcmVmX2lzX2RlYWQoXFx1MDAyNmRxcC1cXHUwMDNlcV9sb2NrcmVmKSlcXG4gXFx0XFx0Z290byBvdXRfbWlzc191bmxvY2s7XFxuIFxcbiBcXHQvKlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaCBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXFxuaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcXG5AQCAtMzQsNiArMzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XFxuIFxcdH07XFxuIH07XFxuIFxcbisjZGVmaW5lIF9fTE9DS1JFRl9ERUFEX1ZBTFxcdC0xMjhcXG4rXFxuIC8qKlxcbiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZlxcbiAgKiBAbG9ja3JlZjogcG9pbnRlciB0byBsb2NrcmVmIHN0cnVjdHVyZVxcbkBAIC01NSw5ICs1NywxNSBAQCB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICpsb2NrcmVmKTtcXG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XFxuIFxcbiAvKiBNdXN0IGJlIGNhbGxlZCB1bmRlciBzcGlubG9jayBmb3IgcmVsaWFibGUgcmVzdWx0cyAqL1xcbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXFxuK3tcXG4rXFx0cmV0dXJuIChSRUFEX09OQ0UobC1cXHUwMDNlY291bnQpID09IF9fTE9DS1JFRl9ERUFEX1ZBTCk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsb2NrcmVmX2lzX2RlYWRfb3JfemVybyhjb25zdCBzdHJ1Y3QgbG9ja3JlZiAqbClcXG4ge1xcbi1cXHRyZXR1cm4gKChpbnQpbC1cXHUwMDNlY291bnQgXFx1MDAzYyAwKTtcXG4rXFx0aW50IGNvdW50ID0gUkVBRF9PTkNFKGwtXFx1MDAzZWNvdW50KTtcXG4rXFx0cmV0dXJuIChjb3VudCA9PSBfX0xPQ0tSRUZfREVBRF9WQUwgfHwgY291bnQgPT0gMCk7XFxuIH1cXG4gXFxuICNlbmRpZiAvKiBfX0xJTlVYX0xPQ0tSRUZfSCAqL1xcbmRpZmYgLS1naXQgYS9saWIvbG9ja3JlZi5jIGIvbGliL2xvY2tyZWYuY1xcbmluZGV4IDVkOGUzZWYzODYwZWUxLi45YjNkZDY4OGQ4Y2RhMSAxMDA2NDRcXG4tLS0gYS9saWIvbG9ja3JlZi5jXFxuKysrIGIvbGliL2xvY2tyZWYuY1xcbkBAIC0xMzEsNyArMTMxLDcgQEAgRVhQT1JUX1NZTUJPTChsb2NrcmVmX3B1dF9vcl9sb2NrKTtcXG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcXG4ge1xcbiBcXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXFx1MDAyNmxvY2tyZWYtXFx1MDAzZWxvY2spO1xcbi1cXHRsb2NrcmVmLVxcdTAwM2Vjb3VudCA9IC0xMjg7XFxuK1xcdGxvY2tyZWYtXFx1MDAzZWNvdW50ID0gX19MT0NLUkVGX0RFQURfVkFMO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9tYXJrX2RlYWQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MDYuODA3NzI2MzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY1MTUxNDUxMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdGUzJfRlNcIixcbiAgICBcIkdGUzJfRlNfTE9DS0lOR19ETE1cIixcbiAgICBcIkRMTVwiLFxuICAgIFwiQ09ORklHRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19aSVBcIixcbiAgICBcIlhGU19GU1wiLFxuICAgIFwiWEZTX1FVT1RBXCIsXG4gICAgXCJDRVBIX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2VwaF90cmltX2RlbnRyaWVzXCIsXG4gICAgXCJ4ZnNfYnVmX3N0YWxlXCIsXG4gICAgXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgICBcImdmczJfcXVvdGFfc3luY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGtlcm5lbCBsb2NrcmVmIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkZWFkIGxvY2tyZWZzIGFyZSBkZXRlY3RlZCBieSBpbnRyb2R1Y2luZyBgbG9ja3JlZl9pc19kZWFkYCBhbmQgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhpcyBmdW5jdGlvbmFsbHkgYWx0ZXJzIGV4ZWN1dGlvbiBmbG93IGluIGVkZ2UgY2FzZXMgd2hlcmUgdGhlIGxvY2tyZWYgY291bnQgbWlnaHQgYmUgbmVnYXRpdmUgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhlIGNoYW5nZXMgYWZmZWN0IHNldmVyYWwgZmlsZXN5c3RlbXMgKGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIHhmcykgdGhhdCByZWx5IG9uIGxvY2tyZWYuIFdlIGZvY3VzIGZ1enppbmcgb24gc3BlY2lmaWMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW4gdGhlc2UgZmlsZXN5c3RlbXMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBtb2RpZmllZCBsb2NrcmVmIGxvZ2ljLCB3aGlsZSBhdm9pZGluZyBnZW5lcmljIFZGUyBob3QtcGF0aHMgbGlrZSBgZHB1dGAgb3IgYGRfYWxsb2NfcGFyYWxsZWxgLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjAwNzQ4Zjc3ZmZlNjAzMWMyNDQzNWY1ZGI5NzdkZDNmMDg3YTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDY6MDA6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9jZXBoL2Rpci5jIGIvZnMvY2VwaC9kaXIuY1xuaW5kZXggYjk1NzE0OWFiZTVhMGEuLmYzOTg1NmZmM2VhMTU4IDEwMDY0NFxuLS0tIGEvZnMvY2VwaC9kaXIuY1xuKysrIGIvZnMvY2VwaC9kaXIuY1xuQEAgLTE2NjcsNyArMTY2Nyw3IEBAIF9fZGVudHJ5X2xlYXNlc193YWxrKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MsXG4gXHRcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9ja3JlZikpIHtcbitcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrcmVmKSkge1xuIFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGktXHUwMDNlbGVhc2VfbGlzdCk7XG4gXHRcdFx0Z290byBuZXh0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuY1xuaW5kZXggM2U5YWY5ZGU3MDc0NjQuLjJhZWU4NWYzZmJhYTc4IDEwMDY0NFxuLS0tIGEvZnMvZGNhY2hlLmNcbisrKyBiL2ZzL2RjYWNoZS5jXG5AQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RfY2xlYXJfdHlwZV9hbmRfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIHN0YXRpYyB2b2lkIGRlbnRyeV9mcmVlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiB7XG4gXHRERU5UUllfV0FSTl9PTkNFKGRfcmVhbGx5X2lzX3Bvc2l0aXZlKGRlbnRyeSksIGRlbnRyeSk7XG4tXHRERU5UUllfV0FSTl9PTkNFKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNlPSAwLCBkZW50cnkpO1xuK1x0REVOVFJZX1dBUk5fT05DRSghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpLCBkZW50cnkpO1xuIFx0RF9GTEFHX1ZFUklGWShkZW50cnksIDApO1xuIFx0aWYgKHVubGlrZWx5KGRuYW1lX2V4dGVybmFsKGRlbnRyeSkpKSB7XG4gXHRcdHN0cnVjdCBleHRlcm5hbF9uYW1lICpwID0gZXh0ZXJuYWxfbmFtZShkZW50cnkpO1xuQEAgLTc4Miw3ICs3ODIsNyBAQCBzdGF0aWMgYm9vbCBsb2NrX2Zvcl9raWxsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbiAgKlxuICAqIElmIEBkZW50cnkgaXMgaWRsZSBhbmQgcmVtYWlucyBzdWNoIGFmdGVyIHdlIGFzc2VtYmxlIHRoZSBmdWxsXG4gICogbG9ja2luZyBlbnZpcm9ubWVudCBmb3IgZXZpY3Rpb24gKHNlZSBsb2NrX2Zvcl9raWxsKCkgZm9yIGRldGFpbHMpXG4tICogd2UgbWFyayBpdCBkb29tZWQgKC1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjIDApIGFuZCBwcm9jZWVkIHRvIGRldGFjaGluZ1xuKyAqIHdlIG1hcmsgaXQgZG9vbWVkIChzZWUgbG9ja3JlZl9tYXJrX2RlYWQoKSkgYW5kIHByb2NlZWQgdG8gZGV0YWNoaW5nXG4gICogaXQgZnJvbSBhbnkgZmlsZXN5c3RlbSBvYmplY3RzLiAgT3RoZXJ3aXNlIHdlIGRyb3AgLVx1MDAzZWRfbG9jayBhbmRcbiAgKiByZXR1cm4gJU5VTEwuXG4gICpcbkBAIC05NDYsNyArOTQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGZhc3RfZHB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpXG4gXHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSkge1xuIFx0XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0XHRpZiAoV0FSTl9PTl9PTkNFKGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnQgXHUwMDNjPSAwKSkge1xuK1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG5AQCAtMTY0NCw3ICsxNjQ0LDcgQEAgc3RhdGljIGVudW0gZF93YWxrX3JldCBzZWxlY3RfY29sbGVjdCh2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0aWYgKGRhdGEtXHUwMDNlc3RhcnQgPT0gZGVudHJ5KVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYz0gMCkge1xuK1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdF9fbW92ZV90b19zaHJpbmtfbGlzdChkZW50cnksIFx1MDAyNmRhdGEtXHUwMDNlZGlzcG9zZSk7XG4gXHRcdGRhdGEtXHUwMDNlZm91bmQrKztcbiBcdH1cbkBAIC0xNjc2LDcgKzE2NzYsNyBAQCBzdGF0aWMgZW51bSBkX3dhbGtfcmV0IHNlbGVjdF9jb2xsZWN0Mih2b2lkICpfZGF0YSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuIFx0aWYgKGRhdGEtXHUwMDNlc3RhcnQgPT0gZGVudHJ5KVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYz0gMCkge1xuK1x0aWYgKGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSB7XG4gXHRcdGlmICghX19tb3ZlX3RvX3Nocmlua19saXN0KGRlbnRyeSwgXHUwMDI2ZGF0YS1cdTAwM2VkaXNwb3NlKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2UgbmVlZCBhbiBlbnRlciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIGFyZWEgdGhhdFxuQEAgLTE3NDcsNyArMTc0Nyw3IEBAIHN0YXRpYyB2b2lkIHNocmlua19kY2FjaGVfdHJlZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJvb2wgZm9yX3Vtb3VudClcbiBcdFx0XHRzcGluX2xvY2soXHUwMDI2di1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuLVx0XHRcdGlmICh1bmxpa2VseSh2LVx1MDAzZWRfbG9ja3JlZi5jb3VudCBcdTAwM2MgMCkpIHtcbitcdFx0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNnYtXHUwMDNlZF9sb2NrcmVmKSkpIHtcbiBcdFx0XHRcdC8vIEl0J3MgZG9vbWVkOyBpZiBpdCBpc24ndCBkZWFkIHlldCwgbm90aWZ5IHVzXG4gXHRcdFx0XHQvLyBvbmNlIGl0IGJlY29tZXMgaW52aXNpYmxlIHRvIGRfd2FsaygpLlxuIFx0XHRcdFx0bmVlZF93YWl0ID0gZF9hZGRfd2FpdGVyKHYsIFx1MDAyNndhaXQpO1xuQEAgLTE4MjMsNyArMTgyMyw3IEBAIHZvaWQgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnNiLVx1MDAzZXNfcm9vdHNfbG9jayk7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZkZW50cnktXHUwMDNlZF9sb2NrKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRcdGlmICh1bmxpa2VseShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYyAwKSkge1xuK1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHN0cnVjdCBjb21wbGV0aW9uX2xpc3Qgd2FpdDtcbiBcdFx0XHRib29sIG5lZWRfd2FpdCA9IGRfYWRkX3dhaXRlcihkZW50cnksIFx1MDAyNndhaXQpO1xuIFxuQEAgLTI4MjIsNyArMjgyMiw3IEBAIHN0cnVjdCBkZW50cnkgKmRfYWxsb2NfcGFyYWxsZWwoc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRzcGluX2xvY2soXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbG9jayk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHQvKiBub3cgd2UgY2FuIHRyeSB0byBncmFiIGEgcmVmZXJlbmNlICovXG4tXHRcdGlmICh1bmxpa2VseShkZW50cnktXHUwMDNlZF9sb2NrcmVmLmNvdW50IFx1MDAzYyAwKSkge1xuK1x0XHRpZiAodW5saWtlbHkobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2tyZWYpKSkge1xuIFx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmRlbnRyeS1cdTAwM2VkX2xvY2spO1xuIFx0XHRcdGdvdG8gcmV0cnk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9mcy9lcm9mcy96ZGF0YS5jIGIvZnMvZXJvZnMvemRhdGEuY1xuaW5kZXggNzQ1MjBlOTEwMjU5NjYuLmQwMjJkMWRmZjVhMWNlIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvemRhdGEuY1xuKysrIGIvZnMvZXJvZnMvemRhdGEuY1xuQEAgLTcyNSw3ICs3MjUsNyBAQCBzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpIHtcbitcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cGNsLVx1MDAzZWxvY2tyZWYpKSB7XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnBjbC1cdTAwM2Vsb2NrcmVmLmxvY2spO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG5AQCAtOTQ1LDcgKzk0NSw3IEBAIHN0YXRpYyB2b2lkIHpfZXJvZnNfcHV0X3BjbHVzdGVyKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksXG4gXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpXG4gXHRcdHJldHVybjtcbiBcbi1cdERCR19CVUdPTihfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuK1x0REJHX0JVR09OKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZwY2wtXHUwMDNlbG9ja3JlZikpO1xuIFx0aWYgKCEtLXBjbC1cdTAwM2Vsb2NrcmVmLmNvdW50KSB7XG4gXHRcdGlmICh0cnlfZnJlZSBcdTAwMjZcdTAwMjYgeGFfdHJ5bG9jayhcdTAwMjZzYmktXHUwMDNlbWFuYWdlZF9wc2xvdHMpKSB7XG4gXHRcdFx0ZnJlZSA9IF9fZXJvZnNfdHJ5X3RvX3JlbGVhc2VfcGNsdXN0ZXIoc2JpLCBwY2wpO1xuZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suY1xuaW5kZXggYjhhMTQ0ZDNhNzNiODcuLmVhYTI5ODAwNTFlZDVmIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9nbG9jay5jXG4rKysgYi9mcy9nZnMyL2dsb2NrLmNcbkBAIC0yMDgwLDcgKzIwODAsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9nbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gXHRnZnMyX2dsb2NrX3JlbW92ZV9mcm9tX2xydShnbCk7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZi5sb2NrKTtcbi1cdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbitcdGlmICghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKSB7XG4gXHRcdGdsLVx1MDAzZWdsX2xvY2tyZWYuY291bnQrKztcbiBcdFx0aWYgKGdsLVx1MDAzZWdsX3N0YXRlICE9IExNX1NUX1VOTE9DS0VEKVxuIFx0XHRcdHJlcXVlc3RfZGVtb3RlKGdsLCBMTV9TVF9VTkxPQ0tFRCwgMCwgZmFsc2UpO1xuQEAgLTIxMTUsNyArMjExNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZ2xvY2tfZnVuYyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gc3RhdGljIHZvaWQgd2l0aGRyYXdfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxuIHtcbiBcdHNwaW5fbG9jayhcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmLmxvY2spO1xuLVx0aWYgKCFfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSkge1xuK1x0aWYgKCFsb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpIHtcbiBcdFx0LypcbiBcdFx0ICogV2UgZG9uJ3Qgd2FudCB0byB3cml0ZSBiYWNrIGFueSBtb3JlIGRpcnR5IGRhdGEuICBVbmxvY2sgdGhlXG4gXHRcdCAqIHJlbWFpbmluZyBpbm9kZSBhbmQgcmVzb3VyY2UgZ3JvdXAgZ2xvY2tzOyB0aGlzIHdpbGwgY2F1c2VcbkBAIC0yNDgzLDcgKzI0ODMsNyBAQCBzdGF0aWMgdm9pZCBnZnMyX2dsb2NrX2l0ZXJfbmV4dChzdHJ1Y3QgZ2ZzMl9nbG9ja19pdGVyICpnaSwgbG9mZl90IG4pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4rXHRcdFx0aWYgKGxvY2tyZWZfaXNfZGVhZChcdTAwMjZnbC1cdTAwM2VnbF9sb2NrcmVmKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdG4tLTtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9ja19kbG0uYyBiL2ZzL2dmczIvbG9ja19kbG0uY1xuaW5kZXggNzgyOGFkMGI2ZjVhNmYuLmNjOTAxZmI5N2RhMGNhIDEwMDY0NFxuLS0tIGEvZnMvZ2ZzMi9sb2NrX2RsbS5jXG4rKysgYi9mcy9nZnMyL2xvY2tfZGxtLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKVxuIFx0Y2xlYXJfYml0KEdMRl9CTE9DS0lORywgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpO1xuIFxuIFx0LyogSWYgdGhlIGdsb2NrIGlzIGRlYWQsIHdlIG9ubHkgcmVhY3QgdG8gYSBkbG1fdW5sb2NrKCkgcmVwbHkuICovXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikgXHUwMDI2XHUwMDI2XG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGdsLVx1MDAzZWdsX2xrc2Iuc2Jfc3RhdHVzICE9IC1ETE1fRVVOTE9DSylcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBnZGxtX2Jhc3Qodm9pZCAqYXJnLCBpbnQgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wgPSBhcmc7XG4gXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2Z2wtXHUwMDNlZ2xfbG9ja3JlZikpXG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRzd2l0Y2ggKG1vZGUpIHtcbkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXG4gXHR1aW50MzJfdCBmbGFncyA9IDA7XG4gXHRpbnQgZXJyb3I7XG4gXG4tXHRCVUdfT04oIV9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbitcdEJVR19PTighbG9ja3JlZl9pc19kZWFkKFx1MDAyNmdsLVx1MDAzZWdsX2xvY2tyZWYpKTtcbiBcbiBcdGlmICh0ZXN0X2JpdChHTEZfSU5JVElBTCwgXHUwMDI2Z2wtXHUwMDNlZ2xfZmxhZ3MpKSB7XG4gXHRcdGdmczJfZ2xvY2tfZnJlZShnbCk7XG5kaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jXG5pbmRleCA5MWU5OTc1ZDI1ZTg5MC4uMDAxYzhiMzljYTU1NzMgMTAwNjQ0XG4tLS0gYS9mcy9nZnMyL3F1b3RhLmNcbisrKyBiL2ZzL2dmczIvcXVvdGEuY1xuQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgdm9pZCBxZF9wdXQoc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQpXG4gXHRpZiAobG9ja3JlZl9wdXRfb3JfbG9jayhcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0QlVHX09OKF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNnFkLVx1MDAzZXFkX2xvY2tyZWYpKTtcbitcdEJVR19PTihsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpO1xuIFx0c2RwID0gcWQtXHUwMDNlcWRfc2JkO1xuIFx0aWYgKHVubGlrZWx5KCF0ZXN0X2JpdChTREZfSk9VUk5BTF9MSVZFLCBcdTAwMjZzZHAtXHUwMDNlc2RfZmxhZ3MpKSkge1xuIFx0XHRsb2NrcmVmX21hcmtfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKTtcbkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIGJvb2wgcWRfZ3JhYl9zeW5jKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCxcbiBcdCAgICBxZC1cdTAwM2VxZF9zeW5jX2dlbiBcdTAwM2U9IHN5bmNfZ2VuKVxuIFx0XHRnb3RvIG91dDtcbiBcbi1cdGlmIChfX2xvY2tyZWZfaXNfZGVhZChcdTAwMjZxZC1cdTAwM2VxZF9sb2NrcmVmKSlcbitcdGlmIChsb2NrcmVmX2lzX2RlYWQoXHUwMDI2cWQtXHUwMDNlcWRfbG9ja3JlZikpXG4gXHRcdGdvdG8gb3V0O1xuIFx0cWQtXHUwMDNlcWRfbG9ja3JlZi5jb3VudCsrO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5jXG5pbmRleCAyMWQ2N2FmNzgxZGEzZC4uMTdiOWQ2NDNlMWE4NzcgMTAwNjQ0XG4tLS0gYS9mcy94ZnMveGZzX2J1Zi5jXG4rKysgYi9mcy94ZnMveGZzX2J1Zi5jXG5AQCAtODAsNyArODAsNyBAQCB4ZnNfYnVmX3N0YWxlKFxuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZi5sb2NrKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2YnAtXHUwMDNlYl9scnVfcmVmLCAwKTtcbi1cdGlmICghX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSlcbitcdGlmICghbG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpXG4gXHRcdGxpc3RfbHJ1X2RlbF9vYmooXHUwMDI2YnAtXHUwMDNlYl90YXJnZXQtXHUwMDNlYnRfbHJ1LCBcdTAwMjZicC1cdTAwM2ViX2xydSk7XG4gXHRzcGluX3VubG9jayhcdTAwMjZicC1cdTAwM2ViX2xvY2tyZWYubG9jayk7XG4gfVxuQEAgLTg0MSw3ICs4NDEsNyBAQCBzdGF0aWMgdm9pZFxuIHhmc19idWZfZGVzdHJveShcbiBcdHN0cnVjdCB4ZnNfYnVmXHRcdCpicClcbiB7XG4tXHRBU1NFUlQoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2YnAtXHUwMDNlYl9sb2NrcmVmKSk7XG4rXHRBU1NFUlQobG9ja3JlZl9pc19kZWFkKFx1MDAyNmJwLVx1MDAzZWJfbG9ja3JlZikpO1xuIFx0QVNTRVJUKCEoYnAtXHUwMDNlYl9mbGFncyBcdTAwMjYgX1hCRl9ERUxXUklfUSkpO1xuIFxuIFx0aWYgKGJwLVx1MDAzZWJfcGFnKVxuZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcW0uYyBiL2ZzL3hmcy94ZnNfcW0uY1xuaW5kZXggODk2YjI0Zjg3YWM5ZDUuLjk5YTgyMTA3YjhlNmYyIDEwMDY0NFxuLS0tIGEvZnMveGZzL3hmc19xbS5jXG4rKysgYi9mcy94ZnMveGZzX3FtLmNcbkBAIC0xMjgsNyArMTI4LDcgQEAgeGZzX3FtX2RxcHVyZ2UoXG4gXHRzdHJ1Y3QgeGZzX3F1b3RhaW5mb1x0KnFpID0gZHFwLVx1MDAzZXFfbW91bnQtXHUwMDNlbV9xdW90YWluZm87XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbi1cdGlmIChkcXAtXHUwMDNlcV9sb2NrcmVmLmNvdW50IFx1MDAzZSAwIHx8IF9fbG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKSB7XG4rXHRpZiAoZHFwLVx1MDAzZXFfbG9ja3JlZi5jb3VudCBcdTAwM2UgMCB8fCBsb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpIHtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZi5sb2NrKTtcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXHR9XG5AQCAtNDI5LDcgKzQyOSw3IEBAIHhmc19xbV9kcXVvdF9pc29sYXRlKFxuIFx0ICogZnJvbSB0aGUgTFJVLCBsZWF2ZSBpdCBmb3IgdGhlIGZyZWVpbmcgdGFzayB0byBjb21wbGV0ZSB0aGUgZnJlZWluZ1xuIFx0ICogcHJvY2VzcyByYXRoZXIgdGhhbiByaXNrIGl0IGJlaW5nIGZyZWUgZnJvbSB1bmRlciB1cyBoZXJlLlxuIFx0ICovXG4tXHRpZiAoX19sb2NrcmVmX2lzX2RlYWQoXHUwMDI2ZHFwLVx1MDAzZXFfbG9ja3JlZikpXG4rXHRpZiAobG9ja3JlZl9pc19kZWFkKFx1MDAyNmRxcC1cdTAwM2VxX2xvY2tyZWYpKVxuIFx0XHRnb3RvIG91dF9taXNzX3VubG9jaztcbiBcbiBcdC8qXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9sb2NrcmVmLmggYi9pbmNsdWRlL2xpbnV4L2xvY2tyZWYuaFxuaW5kZXggNmRlZDI0Y2RiNGE4MmMuLmRkZmI3ZDNiOGNlYzJlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9sb2NrcmVmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oXG5AQCAtMzQsNiArMzQsOCBAQCBzdHJ1Y3QgbG9ja3JlZiB7XG4gXHR9O1xuIH07XG4gXG4rI2RlZmluZSBfX0xPQ0tSRUZfREVBRF9WQUxcdC0xMjhcbitcbiAvKipcbiAgKiBsb2NrcmVmX2luaXQgLSBJbml0aWFsaXplIGEgbG9ja3JlZlxuICAqIEBsb2NrcmVmOiBwb2ludGVyIHRvIGxvY2tyZWYgc3RydWN0dXJlXG5AQCAtNTUsOSArNTcsMTUgQEAgdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gYm9vbCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZik7XG4gXG4gLyogTXVzdCBiZSBjYWxsZWQgdW5kZXIgc3BpbmxvY2sgZm9yIHJlbGlhYmxlIHJlc3VsdHMgKi9cbi1zdGF0aWMgaW5saW5lIGJvb2wgX19sb2NrcmVmX2lzX2RlYWQoY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4rc3RhdGljIGlubGluZSBib29sIGxvY2tyZWZfaXNfZGVhZChjb25zdCBzdHJ1Y3QgbG9ja3JlZiAqbClcbit7XG4rXHRyZXR1cm4gKFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUwpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGJvb2wgbG9ja3JlZl9pc19kZWFkX29yX3plcm8oY29uc3Qgc3RydWN0IGxvY2tyZWYgKmwpXG4ge1xuLVx0cmV0dXJuICgoaW50KWwtXHUwMDNlY291bnQgXHUwMDNjIDApO1xuK1x0aW50IGNvdW50ID0gUkVBRF9PTkNFKGwtXHUwMDNlY291bnQpO1xuK1x0cmV0dXJuIChjb3VudCA9PSBfX0xPQ0tSRUZfREVBRF9WQUwgfHwgY291bnQgPT0gMCk7XG4gfVxuIFxuICNlbmRpZiAvKiBfX0xJTlVYX0xPQ0tSRUZfSCAqL1xuZGlmZiAtLWdpdCBhL2xpYi9sb2NrcmVmLmMgYi9saWIvbG9ja3JlZi5jXG5pbmRleCA1ZDhlM2VmMzg2MGVlMS4uOWIzZGQ2ODhkOGNkYTEgMTAwNjQ0XG4tLS0gYS9saWIvbG9ja3JlZi5jXG4rKysgYi9saWIvbG9ja3JlZi5jXG5AQCAtMTMxLDcgKzEzMSw3IEBAIEVYUE9SVF9TWU1CT0wobG9ja3JlZl9wdXRfb3JfbG9jayk7XG4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1Y3QgbG9ja3JlZiAqbG9ja3JlZilcbiB7XG4gXHRhc3NlcnRfc3Bpbl9sb2NrZWQoXHUwMDI2bG9ja3JlZi1cdTAwM2Vsb2NrKTtcbi1cdGxvY2tyZWYtXHUwMDNlY291bnQgPSAtMTI4O1xuK1x0bG9ja3JlZi1cdTAwM2Vjb3VudCA9IF9fTE9DS1JFRl9ERUFEX1ZBTDtcbiB9XG4gRVhQT1JUX1NZTUJPTChsb2NrcmVmX21hcmtfZGVhZCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDowNi44MDc3Mjk0MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDMzNzM5NTkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBMb2NrcmVmIENoYW5nZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3Mgc3dhcHBpbmcgb3V0IGBfX2xvY2tyZWZfaXNfZGVhZGAgd2l0aCBgbG9ja3JlZl9pc19kZWFkYCBhbmQgaW50cm9kdWNpbmcgYGxvY2tyZWZfaXNfZGVhZF9vcl96ZXJvYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IHdlIGRldGVybWluZSBpZiBhIGBkZW50cnlgJ3MgbG9jayByZWZlcmVuY2UgaXMgXCJkZWFkLlwiICBQcmV2aW91c2x5LCBhbnkgbmVnYXRpdmUgdmFsdWUgb2YgYGRlbnRyeS1cdTAwM2VkX2xvY2tyZWYuY291bnRgIGluZGljYXRlZCBhIGRlYWQgbG9ja3JlZi4gTm93LCBpdCdzIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAtMTI4YCAoZGVmaW5lZCBhcyBgX19MT0NLUkVGX0RFQURfVkFMYCkuICBXZSdyZSBnb2luZyBmcm9tIGNoZWNraW5nIGBjb3VudCBcdTAwM2MgMGAgdG8gY2hlY2tpbmcgYFJFQURfT05DRShsLVx1MDAzZWNvdW50KSA9PSBfX0xPQ0tSRUZfREVBRF9WQUxgIG9yIHplcm8sIHJpZ2h0P1xuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBubyBsb25nZXIgYSBjYXRjaC1hbGwgZm9yIGFueSBuZWdhdGl2ZSB2YWx1ZTsgaXQncyBub3cgc3BlY2lmaWMgdG8gdGhhdCBgLTEyOGAgdmFsdWUuICBJcyB0aGlzIGEgYnVnIGZpeC9yZWZhY3RvcmluZyBvciBhbiBhY3R1YWwgZnVuY3Rpb25hbCBjaGFuZ2U/IExldCBtZSB0aGluaywgYW0gSSBpbnRyb2R1Y2luZyBuZXcgZmVhdHVyZXM/IE5vLiBJdCdzIHB1cmVseSBmaXhpbmcgYSBsb2NrcmVmIGNoZWNrLlxuXG5UaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdOKAmXMganVzdCBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIGNvbnN0YW50cyB3aXRob3V0IGltcGFjdGluZyBleGVjdXRpb24sIHVucmVhY2hhYmxlIGNvZGUsIG9yIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycy4gSXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgKGRjYWNoZSBhbmQgbG9ja3JlZiksIHNvIGluaXRpYWxseSwgSSdkIHNheSBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgXCJudW1lcmljIGNvbnN0YW50c1wiIGV4Y2VwdGlvbi4gRG9lcyB0aGlzIG5ldyBiZWhhdmlvciBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/IFllcyEgIFByZXZpb3VzbHksIGFuIHVuZGVyZmxvdyBjb3VsZCBiZSB0cmVhdGVkIGFzIGRlYWQsIGJ1dCBub3cgaXQgd2lsbCBub3QgYmUuIFRoZSBgbG9ja3JlZmAgY291bnQgaXMgb25seSBzZXQgdG8gYC0xMjhgIHdoZW4gbWFya2VkIGRlYWQuIFNvIGFueSBvdGhlciBuZWdhdGl2ZSB2YWx1ZSBzaG91bGRuJ3QgcmVhbGx5ICpiZSogcG9zc2libGUgdW5sZXNzIHRoZXJlJ3MgYW4gdW5kZXJmbG93LiBUaGF0IGNvdWxkIHRyaWdnZXIgb3RoZXIgYnVncyBvciB3YXJuaW5ncy4gRWRnZSBjYXNlcyBhcmUgbXkgZm9jdXMuXG5cblNvLCB3aGVyZSBhcmUgdGhlc2UgY2hhbmdlcz8gSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyB2YXJpb3VzIGRjYWNoZSBmdW5jdGlvbnMgKGBkZW50cnlfZnJlZWAsIGBmYXN0X2RwdXRgLCBldGMuKSwgY2VwaCwgZXJvZnMsIGdmczIsIGFuZCB4ZnMuICBJIHdhbnQgdG8gYXZvaWQgZnV6emluZyB0aGUgaG90IHBhdGggZGNhY2hlIHJvdXRpbmVzLCB0aG9zZSBhcmUgaGl0IHRvbyBvZnRlbiB0byBiZSB1c2VmdWwgZm9yIGZvY3VzZWQgZnV6emluZy4gQnV0IGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAsIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAsIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAsIGBnZGxtX2FzdGAsIGBnZGxtX2Jhc3RgLCBgZ2RsbV9wdXRfbG9ja2AsIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgYGNsZWFyX2dsb2NrYCwgYHdpdGhkcmF3X2dsb2NrYCwgYGdmczJfZ2xvY2tfaXRlcl9uZXh0YCwgYF9fZGVudHJ5X2xlYXNlc193YWxrYD8gTGV0IG1lIHNlZS4gSSBjYW4gZm9jdXMgb24gdGhvc2Ugcm91dGluZXMgaW4gbXkgZnV6emluZy5cblxuTXkgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEFuZCBJIG5lZWQgdG8gdGVzdCB0aG9zZSBmdW5jdGlvbnMuIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYXMgd2VsbCAtIGlzIGBDT05GSUdfWEZTX1FVT1RBYCBuZWVkZWQgZm9yIFhGUyB0ZXN0cz8gSSBuZWVkIHRvIGNoZWNrIGBmcy94ZnMvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDM3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjEuMTQ1MTI3NTczWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODQwMTYxMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19RVU9UQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZz01MD1jb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTc2LVxcbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjIuNDI5MTQ5Nzg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNTE0MjY5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBHRlMyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzcywgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZnMvZ2ZzMi9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCdzIHRoZSBjYW5vbmljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHRlMyIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSByZWNlbnQgY2hhbmdlcywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGludHJvZHVjZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQgYWxsb3dzIG1lIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBhdmFpbGFibGUgR0ZTMiBmZWF0dXJlcywgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBhbmQgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB0YXNrLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGZvciBHRlMyLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGRlcGVuZGVuY2llcyBvbiBmZWF0dXJlcyBsaWtlIGBDT05GSUdfQkxPQ0tgLCBgQ09ORklHX0ZTYCwgYENPTkZJR19YRlNgIGFuZCBgQ09ORklHX0pCRDJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjIwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6MjUuMzU0Mjk0MDkxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTkwNDQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR0ZTMl9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZ2ZzMi9LY29uZmlnOjI6Y29uZmlnIEdGUzJfRlNcXG5mcy9nZnMyL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR0ZTMiBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZ2ZzMi9LY29uZmlnLTI2LVxcbmZzL2dmczIvS2NvbmZpZzoyNzpjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVxcbmZzL2dmczIvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJHRlMyIERMTSBsb2NraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDoyNS42MzYyMDQ0NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzcyNzcxOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkNoZWNraW5nIHRoZSBFUk9GUyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBmcy9lcm9mcy9LY29uZmlnYC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGlzIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBFUk9GUyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucywgbmV3IGZlYXR1cmVzLCBvciBwZXJoYXBzIGV2ZW4gYW55IGRlcHJlY2F0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGJ1aWxkIHN5c3RlbSBoYW5kbGVzIGl0IGFsbC5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgcHJvbXB0IHN0cmluZ3MuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb250cm9sbGFibGUgYXQgY29tcGlsZSB0aW1lIHZlcnN1cyBwb3RlbnRpYWxseSBydW50aW1lLiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHRoZSBvdmVyYWxsIGZlYXR1cmUgc2V0LCBvciBhcmVhcyBJIG1pZ2h0IGhhdmUgb3Zlcmxvb2tlZCBpbiB0aGUgcGFzdD8gTXkgbWVudGFsIGNoZWNrbGlzdCBpbmNsdWRlcyBjb25zaWRlcmluZzogY29tcHJlc3Npb24gb3B0aW9ucywgc3VwZXJibG9jayBzdXBwb3J0LCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvb3QtdGltZSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhlc2Ugb3B0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWwncyBvdmVyYWxsIG1vZHVsZSBzeXN0ZW0gdG9vLiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGNvdWxkIGNvbmZsaWN0IHdpdGggZXhpc3RpbmcgY29uZmlndXJhdGlvbnM/IEFuZCBvZiBjb3Vyc2UsIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgb2J2aW91cyBidWdzIG9yIHVudXN1YWwgaWRpb21zLiBBZnRlciB0aGF0LCBJIHdpbGwgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb25maWd1cmF0aW9ucyBJIG1heSBoYXZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjI5LjAwODk3ODUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzcxNTQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVJPRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXJvZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9LY29uZmlnLTItXFxuZnMvZXJvZnMvS2NvbmZpZzozOmNvbmZpZyBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy00OS1cXG5mcy9lcm9mcy9LY29uZmlnOjUwOmNvbmZpZyBFUk9GU19GU19ERUJVR1xcbmZzL2Vyb2ZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiRVJPRlMgZGVidWdnaW5nIGZlYXR1cmVcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTU5LVxcbmZzL2Vyb2ZzL0tjb25maWc6NjA6Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy03MC1cXG5mcy9lcm9mcy9LY29uZmlnOjcxOmNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy04NC1cXG5mcy9lcm9mcy9LY29uZmlnOjg1OmNvbmZpZyBFUk9GU19GU19TRUNVUklUWVxcbmZzL2Vyb2ZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiRVJPRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cXG5mcy9lcm9mcy9LY29uZmlnOjk4OmNvbmZpZyBFUk9GU19GU19CQUNLRURfQllfRklMRVxcbmZzL2Vyb2ZzL0tjb25maWctOTktXFx0Ym9vbCBcXFwiRmlsZS1iYWNrZWQgRVJPRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTEtXFxuZnMvZXJvZnMvS2NvbmZpZzoxMTI6Y29uZmlnIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTEzLVxcdGJvb2wgXFxcIkVST0ZTIERhdGEgQ29tcHJlc3Npb24gU3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTIxLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTIyOmNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTEzMy1cXG5mcy9lcm9mcy9LY29uZmlnOjEzNDpjb25maWcgRVJPRlNfRlNfWklQX0xaTUFfREVGQVVMVF9NQVhfU1RSRUFNU1xcbmZzL2Vyb2ZzL0tjb25maWctMTM1LVxcdGludCBcXFwiRVJPRlMgTFpNQSBkZWZhdWx0IG1heGltdW0gZGVjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDctXFxuZnMvZXJvZnMvS2NvbmZpZzoxNDg6Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTU4LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTU5OmNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTY5LVxcbmZzL2Vyb2ZzL0tjb25maWc6MTcwOmNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnLTE4My1cXG5mcy9lcm9mcy9LY29uZmlnOjE4NDpjb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctMTkyLVxcbmZzL2Vyb2ZzL0tjb25maWc6MTkzOmNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjI5LjEzNjY5OTMxN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzI1MTY3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBFUk9GUyBCdWlsZCBTeXN0ZW0gZm9yIFpJUCBTdXBwb3J0KipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgYHpkYXRhLmNgLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkFoLCByaWdodCwgdGhpcyBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGVuIHRoYXQgYENPTkZJR19FUk9GU19GU19aSVBgIG9wdGlvbiBpcyBlbmFibGVkLlwiIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgd2hlcmUgd291bGQgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIGxpdmUgZm9yIHRoYXQ/IExldCBtZSBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIHJlbGV2YW50IGJ1aWxkIHJ1bGVzIGluIGBmcy9lcm9mcy9NYWtlZmlsZWAuIEknbSBndWVzc2luZyB0aGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgY29udHJvbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIGluY2x1c2lvbi4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBob3cgWklQIGNvbXByZXNzaW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgRVJPRlMgZmlsZXN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDozMy4zMDkyMTgyNjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTI2NzU1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy9NYWtlZmlsZT01PWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1hBVFRSKSArPSB4YXR0ci5vXFxuZnMvZXJvZnMvTWFrZWZpbGU6Njplcm9mcy0kKENPTkZJR19FUk9GU19GU19aSVApICs9IGRlY29tcHJlc3Nvci5vIHptYXAubyB6ZGF0YS5vIHp1dGlsLm9cXG5mcy9lcm9mcy9NYWtlZmlsZS03LWVyb2ZzLSQoQ09ORklHX0VST0ZTX0ZTX1pJUF9MWk1BKSArPSBkZWNvbXByZXNzb3JfbHptYS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjMzLjYyNDQ5MTI4N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM3NjE0NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24gZm9yIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBPYmplY3QqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgbG9ja19kbG0ub2Agb2JqZWN0IGlzIGJlaW5nIGJ1aWx0LiBHaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBsb2NraW5nLCBhbmQga25vd2luZyB0aGUgR0ZTMiBmaWxlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBidWlsZCBjb25maWd1cmF0aW9ucy4gU28sIGxldCdzIHN0YXJ0IHdpdGggdGhlIGBmcy9nZnMyL01ha2VmaWxlYC4gVGhhdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gbG9va2luZyBmb3IgYnVpbGQgcnVsZXMsIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBmbGFncyByZWxhdGVkIHRvIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBHRlMyIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1OTIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDozNy43NjIxMDg1MjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDczMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvY2tfZGxtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9NYWtlZmlsZT00PWdmczIteSA6PSBhY2wubyBibWFwLm8gZGlyLm8geGF0dHIubyBnbG9jay5vIFxcXFxcXG4tLVxcbmZzL2dmczIvTWFrZWZpbGUtOS1cXG5mcy9nZnMyL01ha2VmaWxlOjEwOmdmczItJChDT05GSUdfR0ZTMl9GU19MT0NLSU5HX0RMTSkgKz0gbG9ja19kbG0ub1xcbmZzL2dmczIvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjM3Ljg0MDU4NzIwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk5NDcwMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpbGVzeXN0ZW0gRmVhdHVyZSBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBidWlsZGluZyB1cCBhIHBpY3R1cmUgaGVyZSBvZiB0aGUgZmlsZXN5c3RlbXMgd2UgbmVlZCB0byBjb25zaWRlci4gVGhlIGltbWVkaWF0ZSByZXF1aXJlbWVudHMgYXJlIGBHRlMyX0ZTYCwgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIHN0b3JhZ2UgbmVlZHMsIGFuZCB3ZSdsbCBwcm9iYWJseSBhbHNvIG5lZWQgYEdGUzJfRlNfTE9DS0lOR19ETE1gIHRvIG1ha2UgdGhhdCBmdW5jdGlvbmFsLiBUaGVuIHdlIGhhdmUgYEVST0ZTX0ZTYCBhbmQgYEVST0ZTX0ZTX1pJUGAsIHdoaWNoIHNvdW5kcyBsaWtlIGl0IG1pZ2h0IGJlIGZvciBhIHBhcnRpY3VsYXIgcmVhZC1vbmx5IGltYWdlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBOZXh0LCBgWEZTX0ZTYCBpcyBhbHdheXMgYSBnb29kIG9wdGlvbiB3aGVuIGhpZ2gtcGVyZm9ybWFuY2UgaXMgYSBmYWN0b3IgYW5kIHdlJ2xsIG5lZWQgYFhGU19RVU9UQWAgZW5hYmxlZCBhbG9uZyB3aXRoIFhGUy4gRmluYWxseSwgYENFUEhfRlNgIGlzIGFub3RoZXIgZGlzdHJpYnV0ZWQgZmlsZXN5c3RlbSB0aGF0IHdlIG1heSBuZWVkIHRvIHVzZS4gSSB0aGluayB0aGUgbmV4dCB0aGluZyB0byBkbyBpcyBkaXZlIGludG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBmcy9jZXBoL0tjb25maWdgIGZpbGUsIHRvIHJldmlldyBhbmQgY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzcGVjaWZpYyBvcHRpb25zIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg5OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjQxLjE0MDA2MTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMzMzU5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENFUEhfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NlcGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2NlcGgvS2NvbmZpZzoyOmNvbmZpZyBDRVBIX0ZTXFxuZnMvY2VwaC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNlcGggZGlzdHJpYnV0ZWQgZmlsZSBzeXN0ZW1cXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9MTk9aWYgQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZzoyMDpjb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjc9ZW5kaWZcXG5mcy9jZXBoL0tjb25maWctMjgtXFxuZnMvY2VwaC9LY29uZmlnOjI5OmNvbmZpZyBDRVBIX0ZTX1BPU0lYX0FDTFxcbmZzL2NlcGgvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJDZXBoIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTM4LVxcbmZzL2NlcGgvS2NvbmZpZzozOTpjb25maWcgQ0VQSF9GU19TRUNVUklUWV9MQUJFTFxcbmZzL2NlcGgvS2NvbmZpZy00MC1cXHRib29sIFxcXCJDZXBoRlMgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0MS4yNTM0MDI2NDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0OTE4NTI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEZpbGUgU3lzdGVtIENvZGUqKlxuXG5SaWdodCwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZnMvY2VwaC9kaXIuY2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBkaXJlY3Rvcnkgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIENlcGggZmlsZSBzeXN0ZW0sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIHBhdGguIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBpbiB0aGUgYENFUEhfRlNgIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCBjb250ZXh0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHNlZSBob3cgdGhpcyBtaWdodCBhZmZlY3Qgb3RoZXIgZmlsZSBzeXN0ZW1zIG9yIHJlbGF0ZWQgY29tcG9uZW50cy4gU2luY2UgdGhpcyBpcyBsaWtlbHkgYSBmaWxlIHN5c3RlbSBwYXRjaCwgSSdsbCBxdWlja2x5IGNoZWNrIGBmcy94ZnMvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1lbnRpb25zIG9mIG1vZHVsZXMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaWYgb3RoZXIgZmlsZSBzeXN0ZW1zLCBhbmQgcGFydGljdWxhcmx5IHRob3NlIHRoYXQgbWlnaHQgYmUgdXNpbmcgYSBzaW1pbGFyIGFwcHJvYWNoIHRvIHF1b3RhIG1hbmFnZW1lbnQsIGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBgeGZzX3FtLm9gIChxdW90YSBtb2R1bGUpLiBJJ20gYXNzdW1pbmcgdGhhdCBtaWdodCBwcm92aWRlIGEgcmVsYXRlZCBleGFtcGxlLiBLbm93aW5nIHdoZXJlIHRoZSBvdGhlciBtb2R1bGVzIGFyZSBpbiB0aGUgc3lzdGVtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgaW1wYWN0IHRoZSByZXN0IG9mIHRoZSBmaWxlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0NC44MDI1OTAyODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNDU5Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmc19xbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL01ha2VmaWxlPTEzMz14ZnMtJChDT05GSUdfWEZTX1FVT1RBKVxcdFxcdCs9IHhmc19kcXVvdC5vIFxcXFxcXG4tLVxcbmZzL3hmcy9NYWtlZmlsZS0xMzUtXFx0XFx0XFx0XFx0ICAgeGZzX3RyYW5zX2RxdW90Lm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxMzY6XFx0XFx0XFx0XFx0ICAgeGZzX3FtX3N5c2NhbGxzLm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxMzc6XFx0XFx0XFx0XFx0ICAgeGZzX3FtX2Jodi5vIFxcXFxcXG5mcy94ZnMvTWFrZWZpbGU6MTM4OlxcdFxcdFxcdFxcdCAgIHhmc19xbS5vIFxcXFxcXG5mcy94ZnMvTWFrZWZpbGUtMTM5LVxcdFxcdFxcdFxcdCAgIHhmc19xdW90YW9wcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjQ0Ljg2MzA1NDcwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg1NTI1NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZTIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgWEZTIGZpbGVzeXN0ZW0gaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gWEZTIGl0c2VsZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHN5bWJvbCBuYW1lLCBhbmQgSSB0aGluayBpdCdzIGBYRlNfRlNgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgYGZzL3hmcy9LY29uZmlnYC4gSSdsbCBvcGVuIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlIGZvciBYRlMgYW5kIHdoZXJlIGBYRlNfRlNgIGlzIGRlZmluZWQuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo0Ny43NDg1ODE5OTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODk3NzY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMveGZzL0tjb25maWc6Mjpjb25maWcgWEZTX0ZTXFxuZnMveGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiWEZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NDguMDE3NTY2NjQ3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTEzNzczNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBhbmQgTG9ja2luZyBNZWNoYW5pc21zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIHNlZWluZyBhIGxpc3Qgb2YgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uczogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBgQ0VQSF9GU2AuIFRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdldCBteSBiZWFyaW5ncy5cblxuTm93LCBJIG5lZWQgdG8gbG9vayBhdCBzcGVjaWZpYyBmb2N1cyBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBmaWxlc3lzdGVtcy4gSSBzZWUgZnVuY3Rpb25zIGxpa2UgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYCwgYHpfZXJvZnNfcHV0X3BjbHVzdGVyYCwgc3VnZ2VzdGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBFUk9GUycgcGVyc2lzdGVudCBjbHVzdGVycywgYW5kIGB4ZnNfcW1fZHFwdXJnZWAsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgY2xlYXJseSBwb2ludHMgdG8gcXVvdGEgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBGb3IgR0ZTMiwgYGdkbG1fYXN0YCwgYGdkbG1fYmFzdGAsIGBnZGxtX3B1dF9sb2NrYCBqdW1wIG91dCBhdCBtZSBhcyBmdW5jdGlvbnMgcmVsYXRlZCB0byBkaXN0cmlidXRlZCBsb2NraW5nLCB3aGljaCBpcyBleHBlY3RlZC4gVGhlbiB0aGVyZSdzIGBxZF9wdXRgLCBgcWRfZ3JhYl9zeW5jYCwgbGlrZWx5IGRlYWxpbmcgd2l0aCBxdW90YS1yZWxhdGVkIGRhdGEuIEZpbmFsbHksIHRoZSBnbG9jayBvcGVyYXRpb25zIGFyZSByZXByZXNlbnRlZCBieSBgY2xlYXJfZ2xvY2tgLCBgd2l0aGRyYXdfZ2xvY2tgLCBgZ2ZzMl9nbG9ja19pdGVyX25leHRgLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBgX19kZW50cnlfbGVhc2VzX3dhbGtgLiBJIHJlY29nbml6ZSB0aGF0LCB0aGF0J3MgaW4gYGZzL2NlcGgvZGlyLmNgLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5kZWVkIHN0YXRpYyB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgYSBjcnVjaWFsIGRldGFpbCB0aGF0IGRpY3RhdGVzIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGFjY2Vzc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAwOjUyLjY2ODk0NjEzNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyOTA0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19kZW50cnlfbGVhc2VzX3dhbGtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9kaXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE2NDU9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5mcy9jZXBoL2Rpci5jOjE2NDY6X19kZW50cnlfbGVhc2VzX3dhbGsoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYyxcXG5mcy9jZXBoL2Rpci5jLTE2NDctXFx0XFx0ICAgICBzdHJ1Y3QgY2VwaF9sZWFzZV93YWxrX2NvbnRyb2wgKmx3YylcXG4tLVxcbmZzL2NlcGgvZGlyLmM9MTc3NT1pbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3OTAtXFx0bHdjLm5yX3RvX3NjYW4gID0gQ0VQSF9DQVBTX1BFUl9SRUxFQVNFICogMjtcXG5mcy9jZXBoL2Rpci5jOjE3OTE6XFx0ZnJlZWQgPSBfX2RlbnRyeV9sZWFzZXNfd2FsayhtZHNjLCBcXHUwMDI2bHdjKTtcXG5mcy9jZXBoL2Rpci5jLTE3OTItXFx0aWYgKCFsd2MubnJfdG9fc2NhbikgLyogbW9yZSBpbnZhbGlkIGxlYXNlcyAqL1xcbi0tXFxuZnMvY2VwaC9kaXIuYy0xODAwLVxcdGx3Yy5kaXJfbGVhc2VfdHRsID0gbWRzYy1cXHUwMDNlZnNjLVxcdTAwM2Vtb3VudF9vcHRpb25zLVxcdTAwM2VjYXBzX3dhbnRlZF9kZWxheV9tYXggKiBIWjtcXG5mcy9jZXBoL2Rpci5jOjE4MDE6XFx0ZnJlZWQgKz1fX2RlbnRyeV9sZWFzZXNfd2FsayhtZHNjLCBcXHUwMDI2bHdjKTtcXG5mcy9jZXBoL2Rpci5jLTE4MDItXFx0aWYgKCFsd2MubnJfdG9fc2NhbikgLyogbW9yZSB0byBjaGVjayAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1Mi43NDQyNDIwNjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MzQzMjc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIHRvIGBjZXBoX3RyaW1fZGVudHJpZXNgKipcblxuQWxyaWdodCwgdGhpcyBzaXR1YXRpb24gZmVlbHMgcHJldHR5IHN0YXRpYy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBjYWxsIHRvIGBjZXBoX3RyaW1fZGVudHJpZXNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgaXRzIHZpc2liaWxpdHkuIElzIHRoaXMgYSBwdWJsaWNseSBleHBvcnRlZCBmdW5jdGlvbiwgb3IgaXMgaXQgZGVmaW5lZCBhcyBgc3RhdGljYCB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQ/IEtub3dpbmcgdGhhdCBkcmFzdGljYWxseSBhbHRlcnMgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBiZWluZyBpbnZva2VkIGFuZCwgY3J1Y2lhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwgaXMgdml0YWwgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIEknbSBkZWFsaW5nIHdpdGggYSBwb3RlbnRpYWxseSB3aWRlbHktdXNlZCwgZXh0ZXJuYWxseSBjYWxsYWJsZSBmdW5jdGlvbiBvciBhIG1vcmUgdGlnaHRseS1zY29wZWQsIGludGVybmFsIHV0aWxpdHkuIFRoYXQgZGlzdGluY3Rpb24ncyBnb2luZyB0byBkcml2ZSBteSBuZXh0IHN0ZXBzIGZvciBkaWdnaW5nIGludG8gdGhlIHJvb3QgY2F1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMTM3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NTUuODI3Njc4MTQ0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDg2NzM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvY2VwaC9kaXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE3NTA9c3RhdGljIGludCBfX2Rpcl9sZWFzZV9jaGVjayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3NzQtXFxuZnMvY2VwaC9kaXIuYzoxNzc1OmludCBjZXBoX3RyaW1fZGVudHJpZXMoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYylcXG5mcy9jZXBoL2Rpci5jLTE3NzYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1NS44ODg1NTIwMDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MTkxMDU0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgVHJpbSBPcGVyYXRpb25zIGFuZCBFUk9GUyBDbHVzdGVyIFJldHJpZXZhbCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGNlcGhfdHJpbV9kZW50cmllc2AgZnVuY3Rpb24uIFRoZSBmYWN0IHRoYXQgaXQncyAqbm90KiBzdGF0aWMgaXMgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFRoYXQgb3BlbnMgdXAgc29tZSBwb3NzaWJpbGl0aWVzLiBXZSBjYW4gZGVmaW5pdGVseSBsZXZlcmFnZSB0aGF0IG5vbi1zdGF0aWMgbmF0dXJlOyB0aGF0J3MgZ29vZCBuZXdzLlxuXG5Ob3csIG15IG1pbmQgc2hpZnRzIHRvIGFub3RoZXIgcmVsYXRlZCBmdW5jdGlvbiwgYHpfZXJvZnNfZ2V0X3BjbHVzdGVyYC4gSSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIG9uZSBmYWN0b3JzIGludG8gdGhlIGVxdWF0aW9uLCBpZiBhdCBhbGwuIElzIHRoZXJlIGEgY29ubmVjdGlvbiBoZXJlPyBDb3VsZCBgY2VwaF90cmltX2RlbnRyaWVzYCBoYXZlIGFuIGludGVyYWN0aW9uIHdpdGggb3IgYSBkZXBlbmRlbmN5IG9uIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoYXQncyB3aGF0IEkgaGF2ZSB0byBmaWd1cmUgb3V0IGJlZm9yZSBJIG1vdmUgYW55IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDkwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDA6NTguODYwNDY1MjU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjM2Mzk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6X2Vyb2ZzX2dldF9wY2x1c3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmM9Njg5PXN0YXRpYyBpbnQgel9lcm9mc19hdHRhY2hfcGFnZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTcyMS1cXG5mcy9lcm9mcy96ZGF0YS5jOjcyMjpzdGF0aWMgYm9vbCB6X2Vyb2ZzX2dldF9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciAqcGNsKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNzIzLXtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTc3Ni1cXHRcXHRcXHRcXHRcXHQgICBOVUxMLCBwY2wsIEdGUF9LRVJORUwpO1xcbmZzL2Vyb2ZzL3pkYXRhLmM6Nzc3OlxcdFxcdFxcdGlmICghcHJlIHx8IHhhX2lzX2VycihwcmUpIHx8IHpfZXJvZnNfZ2V0X3BjbHVzdGVyKHByZSkpIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTc3OC1cXHRcXHRcXHRcXHR4YV91bmxvY2soXFx1MDAyNnNiaS1cXHUwMDNlbWFuYWdlZF9wc2xvdHMpO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODMxLVxcdFxcdFxcdHBjbCA9IHhhX2xvYWQoXFx1MDAyNkVST0ZTX1NCKHNiKS1cXHUwMDNlbWFuYWdlZF9wc2xvdHMsIG1hcC1cXHUwMDNlbV9wYSk7XFxuZnMvZXJvZnMvemRhdGEuYzo4MzI6XFx0XFx0XFx0bmVlZHJldHJ5ID0gcGNsIFxcdTAwMjZcXHUwMDI2ICF6X2Vyb2ZzX2dldF9wY2x1c3RlcihwY2wpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtODMzLVxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMDo1OC45NDI4MzQ2MTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjU3OTQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipTdGF0aWMgQW5hbHlzaXMgYW5kIENsdXN0ZXIgUmVnaXN0cmF0aW9uKipcblxuUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGlzIHRoaW5nIGlzICpzdGF0aWMqLiBUaGF0J3MgdGhlIGZpcnN0IGNydWNpYWwgY2x1ZS4gTm93LCBsZXQncyB6b29tIGluIG9uIHRoZSBjYWxsZXJzLiBJIHNlZSBgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcmAgYW5kIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYC4gVGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBub3cgaXM6ICphcmUgdGhvc2UgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgc3RhdGljPyogVGhlaXIgc3RhdHVzIGFzIHN0YXRpYyBvciBub24gc3RhdGljIGhhcyBjcml0aWNhbCByYW1pZmljYXRpb25zIG9uIHRoZSBzY29wZSBvZiB0aGVpciBhY2Nlc3NpYmlsaXR5IGFuZCB0aGUgaW1wbGljYXRpb25zIGl0IGhhcyBvbiBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTMzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MDIuNjg1NDE2NzQxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYzNzgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6X2Vyb2ZzX3JlZ2lzdGVyX3BjbHVzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz03MjI9c3RhdGljIGJvb2wgel9lcm9mc19nZXRfcGNsdXN0ZXIoc3RydWN0IHpfZXJvZnNfcGNsdXN0ZXIgKnBjbClcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNzM4LVxcbmZzL2Vyb2ZzL3pkYXRhLmM6NzM5OnN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuZnMvZXJvZnMvemRhdGEuYy03NDAte1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz04MDM9c3RhdGljIGludCB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmZSlcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODQxLVxcdH0gZWxzZSB7XFxuZnMvZXJvZnMvemRhdGEuYzo4NDI6XFx0XFx0cmV0ID0gel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihmZSk7XFxuZnMvZXJvZnMvemRhdGEuYy04NDMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTowMi43NTQwNjAwNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA5NDY2NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgU3RhdGljIEluaXRpYWxpemF0aW9uIGFuZCBDYWxsZXJzKipcblxuT2theSwgc28gYm90aCBvZiB0aGVzZSBjb21wb25lbnRzIGFyZSBpbmhlcmVudGx5IHN0YXRpYyBpbiB0aGVpciBuYXR1cmUuIEJ1dCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uOiB3aGF0J3MgdGhlIHJvbGUgYW5kIGJlaGF2aW9yIG9mIGFueSBjb2RlIHRoYXQncyBjYWxsaW5nIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYD8gU3BlY2lmaWNhbGx5LCBpZiB0aGlzIGlzIGFsc28gc3RhdGljLCBob3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBjb21wb25lbnRzPyBJdCBpbXBsaWVzIGEgc3RhdGljIGluaXRpYWxpemF0aW9uIHBhdHRlcm4uIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIGNhbGxlcnMuIEtub3dpbmcgdGhlaXIgbmF0dXJlIHdpbGwgZ2l2ZSB1cyB0aGUgZnVsbCBwaWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdGF0aWMgY29tcG9uZW50cyBhbmQgdGhlIGNhbGxlcnMgb2YgYHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW5gIGlzIGNyaXRpY2FsLiBJdCdzIGxpa2VseSB0aGF0IGl0IGRldGVybWluZXMgaG93IGFuZCB3aGVuIHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgaW4gdGhlIG92ZXJhbGwgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjA2LjM2MzUyODc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM2NDQ1MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19wY2x1c3Rlcl9iZWdpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmM9NzM5PXN0YXRpYyBpbnQgel9lcm9mc19yZWdpc3Rlcl9wY2x1c3RlcihzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZmUpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTgwMi1cXG5mcy9lcm9mcy96ZGF0YS5jOjgwMzpzdGF0aWMgaW50IHpfZXJvZnNfcGNsdXN0ZXJfYmVnaW4oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmZlKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtODA0LXtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTAwNT1zdGF0aWMgaW50IHpfZXJvZnNfc2Nhbl9mb2xpbyhzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0Ny1cXHRcXHRcXHRpZiAoIWYtXFx1MDAzZXBjbCkge1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTA0ODpcXHRcXHRcXHRcXHRlcnIgPSB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luKGYpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTA0OS1cXHRcXHRcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTowNi40NzcxODAxNDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NzIwMTcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgel9lcm9mc19zY2FuX2ZvbGlvYCoqXG5cbk9rYXksIHNvIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgc29tZSBxdWVzdGlvbnMgaW4gbXkgbWluZC4gVGhlIHVzZSBvZiAnc3RhdGljJyB1c3VhbGx5IGltcGxpZXMgYSBzaGFyZWQgc2NvcGUgYW5kIGxpZmV0aW1lIHdpdGhpbiBhIGNvbXBpbGF0aW9uIHVuaXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgb3IgbWV0aG9kcy4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIGVzdGFibGlzaGVkIG1vZHVsZT8gT3IgaXMgdGhpcyBhIG1vcmUgaXNvbGF0ZWQgdXRpbGl0eSBmdW5jdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBpcyBrZXkgdG8gcXVpY2tseSBncmFzcGluZyBpdHMgcm9sZSBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3Igc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0byBpdHMgb3JpZ2luIGFuZCB1bmRlcnN0YW5kIGl0cyBpbnZvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAyNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjA5LjQyNDM4NDQ4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NDQ1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19zY2FuX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz05ODA9c3RhdGljIGludCB6X2Vyb2ZzX3JlYWRfZnJhZ21lbnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTAwNC1cXG5mcy9lcm9mcy96ZGF0YS5jOjEwMDU6c3RhdGljIGludCB6X2Vyb2ZzX3NjYW5fZm9saW8oc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuZnMvZXJvZnMvemRhdGEuYy0xMDA2LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmEpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg1OS1cXHRcXHRcXHRlbHNlXFxuZnMvZXJvZnMvemRhdGEuYzoxODYwOlxcdFxcdFxcdFxcdHpfZXJvZnNfc2Nhbl9mb2xpbyhmLCBmb2xpbywgISFyYWMpO1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg2MS1cXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0xODcwPXN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xODc5LVxcdHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoXFx1MDAyNmYsIE5VTEwsIHRydWUpO1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTg4MDpcXHRlcnIgPSB6X2Vyb2ZzX3NjYW5fZm9saW8oXFx1MDAyNmYsIGZvbGlvLCBmYWxzZSk7XFxuZnMvZXJvZnMvemRhdGEuYy0xODgxLVxcdHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoXFx1MDAyNmYsIE5VTEwsIGZhbHNlKTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTg5OD1zdGF0aWMgdm9pZCB6X2Vyb2ZzX3JlYWRhaGVhZChzdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2wgKnJhYylcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkxOS1cXG5mcy9lcm9mcy96ZGF0YS5jOjE5MjA6XFx0XFx0ZXJyID0gel9lcm9mc19zY2FuX2ZvbGlvKFxcdTAwMjZmLCBmb2xpbywgdHJ1ZSk7XFxuZnMvZXJvZnMvemRhdGEuYy0xOTIxLVxcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgZXJyICE9IC1FSU5UUilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MDkuNDg0MjMzNTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1OTIyNzQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gRVJPRlMgUmVhZCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBFUk9GUyBpcyBoYW5kbGluZyByZWFkcywgcGFydGljdWxhcmx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zYC4gSSd2ZSBnb3QgYSBodW5jaCB0aGF0IGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGFuZCBgel9lcm9mc19yZWFkYWhlYWRgIGFyZSBsaWtlbHkgcGxheWluZyBhIGtleSByb2xlIGhlcmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIGl0IHNlZW1zIGxvZ2ljYWwgdGhleSdkIGJlIHBsdWdnZWQgaW4gc29tZXdoZXJlIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS5cblxuTXkgZmlyc3Qgc3RlcCBpcyB0byBmb2N1cyBvbiBgel9lcm9mc19yZWFkX2ZvbGlvYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyBsb2dpYyB3aWxsIGdpdmUgbWUgYSBncmVhdCBmb290aG9sZCBvbiBob3cgdGhlIEVST0ZTIHJlYWQgbWVjaGFuaXNtIHdvcmtzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZvbGlvLCBob3cgaXQgaGFuZGxlcyB0aGUgcGh5c2ljYWwgcmVhZCwgaWYgaXQgdXNlcyBhbnkgY2FjaGluZyBhbmQgZXZlcnl0aGluZyBlbHNlIHRoYXQgaXMgZ29pbmcgb24gd2l0aCB0aGUgZm9saW8gcmVhZHMuIFRoaXMgaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpZXMsIEkgdGhpbmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MTIuOTQzNDYzMjM0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQ5NjUwNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiel9lcm9mc19yZWFkX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz0xODE4PXN0YXRpYyB2b2lkIHpfZXJvZnNfcGNsdXN0ZXJfcmVhZG1vcmUoc3RydWN0IHpfZXJvZnNfZnJvbnRlbmQgKmYsXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTE4NjktXFxuZnMvZXJvZnMvemRhdGEuYzoxODcwOnN0YXRpYyBpbnQgel9lcm9mc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTg3MS17XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE5MzY9Y29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB6X2Vyb2ZzX2FvcHMgPSB7XFxuZnMvZXJvZnMvemRhdGEuYzoxOTM3OlxcdC5yZWFkX2ZvbGlvID0gel9lcm9mc19yZWFkX2ZvbGlvLFxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTkzOC1cXHQucmVhZGFoZWFkID0gel9lcm9mc19yZWFkYWhlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjEzLjIwODQzNDg1OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg2ODc0NDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgel9lcm9mc19yZWFkX2ZvbGlvYCBhbmQgUG90ZW50aWFsIEFsdGVybmF0aXZlcyoqXG5cbk9rYXksIHNvIGB6X2Vyb2ZzX3JlYWRfZm9saW9gIGlzIGRlZmluaXRlbHkgYW4gZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBpcyBjbGVhciwgYW5kIGl0J3Mgc3RhdGljYWxseSBkZWZpbmVkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIE5vdyB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2l0aGluIHRoZSBgemRhdGEuY2AgZmlsZSBzcGVjaWZpY2FsbHksIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zLCAqYW55KiBmdW5jdGlvbnMgYXQgYWxsLCB0aGF0IGFyZW4ndCBkZWZpbmVkIGFzIHN0YXRpYz8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGlkZW50aWZ5IHJpZ2h0IG5vdy4gVGhlIGFuc3dlciB3aWxsIGNoYW5nZSBteSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjYyLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MTYuMjk1MzExOTM5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDU0Njk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB6X2Vyb2ZzX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy96ZGF0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmMtMTUtXFxuZnMvZXJvZnMvemRhdGEuYzoxNjpzdHJ1Y3Qgel9lcm9mc19idmVjIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTE3LVxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0yOT1fX1pfRVJPRlNfQlZTRVQoel9lcm9mc19idnNldF9pbmxpbmUsIFpfRVJPRlNfSU5MSU5FX0JWRUNTKTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNDAtICovXFxuZnMvZXJvZnMvemRhdGEuYzo0MTpzdHJ1Y3Qgel9lcm9mc19wY2x1c3RlciB7XFxuZnMvZXJvZnMvemRhdGEuYy00Mi1cXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtOTItXFxuZnMvZXJvZnMvemRhdGEuYzo5MzpzdHJ1Y3Qgel9lcm9mc19kZWNvbXByZXNzcXVldWUge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtOTQtXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9MTExPXN0YXRpYyBib29sIGVyb2ZzX2ZvbGlvX2lzX21hbmFnZWQoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmbylcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTIxLSAqL1xcbmZzL2Vyb2ZzL3pkYXRhLmM6MTIyOnN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTIzLVxcdHN0cnVjdCBrbWVtX2NhY2hlICpzbGFiO1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz0xMzA9c3RhdGljIHN0cnVjdCB6X2Vyb2ZzX3BjbHVzdGVyX3NsYWIgcGNsdXN0ZXJfcG9vbFtdIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTEzNC1cXG5mcy9lcm9mcy96ZGF0YS5jOjEzNTpzdHJ1Y3Qgel9lcm9mc19idmVjX2l0ZXIge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtMTM2LVxcdHN0cnVjdCBwYWdlICpidnBhZ2U7XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTQzNz1zdGF0aWMgaW5saW5lIHZvaWQgel9lcm9mc19kZXN0cm95X3BjcHVfd29ya2Vycyh2b2lkKSB7fVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy00MzktXFxuZnMvZXJvZnMvemRhdGEuYzo0NDA6dm9pZCB6X2Vyb2ZzX2V4aXRfc3Vic3lzdGVtKHZvaWQpXFxuZnMvZXJvZnMvemRhdGEuYy00NDEte1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYz00NDk9aW50IF9faW5pdCB6X2Vyb2ZzX2luaXRfc3Vic3lzdGVtKHZvaWQpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jLTQ3Ni1cXG5mcy9lcm9mcy96ZGF0YS5jOjQ3NzplbnVtIHpfZXJvZnNfcGNsdXN0ZXJtb2RlIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTQ3OC1cXHQvKiBJdCBoYXMgcHJldmlvdXNseSBiZWVuIGxpbmtlZCBpbnRvIGFub3RoZXIgcHJvY2Vzc2luZyBjaGFpbiAqL1xcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy00OTUtXFxuZnMvZXJvZnMvemRhdGEuYzo0OTY6c3RydWN0IHpfZXJvZnNfZnJvbnRlbmQge1xcbmZzL2Vyb2ZzL3pkYXRhLmMtNDk3LVxcdHN0cnVjdCBpbm9kZSAqaW5vZGUsICpzaGFyZWRpbm9kZTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHpfZXJvZnNfY2FjaGVfYW9wcyA9IHtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtNjY2LVxcbmZzL2Vyb2ZzL3pkYXRhLmM6NjY3OmludCB6X2Vyb2ZzX2luaXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9lcm9mcy96ZGF0YS5jLTY2OC17XFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTEwOTc9c3RhdGljIGJvb2wgel9lcm9mc19wYWdlX2lzX2ludmFsaWRhdGVkKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xMTAxLVxcbmZzL2Vyb2ZzL3pkYXRhLmM6MTEwMjpzdHJ1Y3Qgel9lcm9mc19iYWNrZW5kIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTExMDMtXFx0c3RydWN0IHBhZ2UgKm9uc3RhY2tfcGFnZXNbWl9FUk9GU19PTlNUQUNLX1BBR0VTXTtcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTExNy1cXG5mcy9lcm9mcy96ZGF0YS5jOjExMTg6c3RydWN0IHpfZXJvZnNfYnZlY19pdGVtIHtcXG5mcy9lcm9mcy96ZGF0YS5jLTExMTktXFx0c3RydWN0IHpfZXJvZnNfYnZlYyBidmVjO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMToxNi4zNTk4NjU0NzhaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NDk5NTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipSZWZsZWN0aW5nIG9uIFN5bWJvbCBWaXNpYmlsaXR5IGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB6X2Vyb2ZzX2luaXRfc3VwZXJgLiBJdCdzIGRlZmluZWQgYXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEhvd2V2ZXIsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCBpdCdzIG5vdCBhIHBhcnRpY3VsYXJseSBpbnNpZ2h0ZnVsIG9yIGlsbHVtaW5hdGluZyBzeW1ib2wgdG8gYmUgZm9jdXNpbmcgb24uIFdlIG5lZWQgdG8gZGlnIGEgYml0IGRlZXBlciB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHJlbGV2YW50IGZvciB3aGF0IHdlIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZS4gTGV0J3MgcmVkaXJlY3Qgb3VyIGF0dGVudGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluc3RpbmN0IGlzIHRvIHBpdm90IGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgZmlsZSBgZnMveGZzL3hmc19xbS5jYC4gSG9wZWZ1bGx5LCB0aGVyZSdsbCBiZSBzb21ldGhpbmcgaW4gdGhlcmUgdGhhdCBwcm92aWRlcyBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDg1LCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjAuNjE0ODYzMzgzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzUyNTY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiB4ZnNfcW1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy94ZnNfcW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMveGZzX3FtLmM9MzgyPXhmc19xbV9kcWRldGFjaChcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYy00MDYtXFxuZnMveGZzL3hmc19xbS5jOjQwNzpzdHJ1Y3QgeGZzX3FtX2lzb2xhdGUge1xcbmZzL3hmcy94ZnNfcW0uYy00MDgtXFx0c3RydWN0IGxpc3RfaGVhZFxcdGJ1ZmZlcnM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjIwLjcwMjM5NTU0MVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODkyNDk1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipYRlMgUXVvdGEgTWFuYWdlbWVudDogQSBRdWljayBDaGVjayoqXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlJ3JlIG9uIHRvcCBvZiBgeGZzX3FtX2RxcHVyZ2VgLiBOZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIHVudXN1YWwgZ29pbmcgb24sIGFueSBsaW5nZXJpbmcgaXNzdWVzLCBvciBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgaGljY3VwIEkgbmVlZCB0byBhZGRyZXNzIHByb2FjdGl2ZWx5LiBObyBuZWVkIHRvIGdvIHRvbyBkZWVwIGF0IHRoaXMgc3RhZ2UsIGJ1dCBJIHdhbnQgdG8ga2VlcCB0aGlzIHByb2Nlc3Mgc3RyZWFtbGluZWQuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgYW55IHBvdGVudGlhbCBpc3N1ZXMgbWF5IGJlIHByZXNlbnQsIGFuZCBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gc3RheSBhaGVhZCBvZiB0aGUgY3VydmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODM3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjMuNTk0ODk0NzU3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzc4MzQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnNfcW1fZHFwdXJnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMveGZzX3FtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL3hmc19xbS5jPTEyMz1TVEFUSUMgaW50XFxuZnMveGZzL3hmc19xbS5jOjEyNDp4ZnNfcW1fZHFwdXJnZShcXG5mcy94ZnMveGZzX3FtLmMtMTI1LVxcdHN0cnVjdCB4ZnNfZHF1b3RcXHQqZHFwLFxcbi0tXFxuZnMveGZzL3hmc19xbS5jPTIwMj1zdGF0aWMgdm9pZFxcbmZzL3hmcy94ZnNfcW0uYzoyMDM6eGZzX3FtX2RxcHVyZ2VfYWxsKFxcbmZzL3hmcy94ZnNfcW0uYy0yMDQtXFx0c3RydWN0IHhmc19tb3VudFxcdCptcClcXG5mcy94ZnMveGZzX3FtLmMtMjA1LXtcXG5mcy94ZnMveGZzX3FtLmM6MjA2OlxcdHhmc19xbV9kcXVvdF93YWxrKG1wLCBYRlNfRFFUWVBFX1VTRVIsIHhmc19xbV9kcXB1cmdlLCBOVUxMKTtcXG5mcy94ZnMveGZzX3FtLmM6MjA3OlxcdHhmc19xbV9kcXVvdF93YWxrKG1wLCBYRlNfRFFUWVBFX0dST1VQLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XFxuZnMveGZzL3hmc19xbS5jOjIwODpcXHR4ZnNfcW1fZHF1b3Rfd2FsayhtcCwgWEZTX0RRVFlQRV9QUk9KLCB4ZnNfcW1fZHFwdXJnZSwgTlVMTCk7XFxuZnMveGZzL3hmc19xbS5jLTIwOS19XFxuLS1cXG5mcy94ZnMveGZzX3FtLmM9MjE1PXhmc19xbV91bm1vdW50KFxcbi0tXFxuZnMveGZzL3hmc19xbS5jLTIxOC1cXHRpZiAobXAtXFx1MDAzZW1fcXVvdGFpbmZvKSB7XFxuZnMveGZzL3hmc19xbS5jOjIxOTpcXHRcXHR4ZnNfcW1fZHFwdXJnZV9hbGwobXApO1xcbmZzL3hmcy94ZnNfcW0uYy0yMjAtXFx0XFx0eGZzX3FtX2Rlc3Ryb3lfcXVvdGFpbmZvKG1wKTtcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYz0xNDU2PXhmc19xbV9xdW90YWNoZWNrKFxcbi0tXFxuZnMveGZzL3hmc19xbS5jLTE1OTItXFx0eGZzX2lub2RlZ2NfZmx1c2gobXApO1xcbmZzL3hmcy94ZnNfcW0uYzoxNTkzOlxcdHhmc19xbV9kcXB1cmdlX2FsbChtcCk7XFxuZnMveGZzL3hmc19xbS5jLTE1OTQtXFx0Z290byBlcnJvcl9yZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjIzLjY1ODY4ODYyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0ODEyOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFN0cnVjdHVyZSBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYHhmc19xbV9kcXB1cmdlYCBhbmQgYHhmc19xbV91bm1vdW50YC4gVGhlIGtleSBkaWZmZXJlbmNlIGltbWVkaWF0ZWx5IHN0aWNrcyBvdXQ6IG9uZSdzIHN0YXRpYywgdGhlIG90aGVyIGlzbid0LiBUaGF0IGFsb25lIHJhaXNlcyBzb21lIGZsYWdzIGZvciBtZS4gSSdtIHdvbmRlcmluZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIGZvciBob3cgdGhlIHF1b3RhIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB1bm1vdW50aW5nLiBEb2VzIHRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3QgYSBsb2NhbCwgY29udGV4dC1zcGVjaWZpYyBjbGVhbnVwLCB3aGlsZSB0aGUgbm9uLXN0YXRpYyBpbXBsaWVzIGEgbW9yZSBnbG9iYWwsIHBvdGVudGlhbGx5IHNoYXJlZCByZXNvdXJjZSBtYW5hZ2VtZW50PyBJcyB0aGVyZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIG9yIGxpZmVzcGFuIG9mIGB4ZnNfcW1fZHFwdXJnZWAgdGhhdCdzIGluaGVyZW50bHkgZGlmZmVyZW50P1xuXG5UbyBkaWcgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgcGF0dGVybiBvciBzaW1pbGFyIGludGVyYWN0aW9ucyBhcmUgdXNlZCBpbiBhIHJlbGF0ZWQgZmlsZSBzeXN0ZW0uIExldCdzIHNoaWZ0IG91ciBmb2N1cyB0byBgZnMvZ2ZzMi9nbG9jay5jYC4gVGhlIEdGUzIgZGlzdHJpYnV0ZWQgbG9jayBtYW5hZ2VyIGlzIGxpa2VseSB0byBnaXZlIHVzIGEgZ29vZCB2aWV3IG9mIGhvdyBhIHNpbWlsYXJseSBkZXNpZ25lZCBmaWxlIHN5c3RlbSBoYW5kbGVzIHJlc291cmNlcy4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcG9pbnQgb2YgcmVmZXJlbmNlIGZvciBjb21wYXJpc29uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYwMSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjI3LjQwMzUwMzc2M1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2NjY2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogZ2ZzMl9nbG9ja19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9nbG9jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2dmczIvZ2xvY2suYy01My1cXG5mcy9nZnMyL2dsb2NrLmM6NTQ6c3RydWN0IGdmczJfZ2xvY2tfaXRlciB7XFxuZnMvZ2ZzMi9nbG9jay5jLTU1LVxcdHN0cnVjdCBnZnMyX3NiZCAqc2RwO1xcdFxcdC8qIGluY29yZSBzdXBlcmJsb2NrICAgICAgICAgICAqL1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTE0MT1zdGF0aWMgdm9pZCBfX2dmczJfZ2xvY2tfZnJlZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTQ4LVxcbmZzL2dmczIvZ2xvY2suYzoxNDk6dm9pZCBnZnMyX2dsb2NrX2ZyZWUoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XFxuZnMvZ2ZzMi9nbG9jay5jLTE1MC1cXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9IGdsb2NrX3NiZChnbCk7XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTU2LVxcbmZzL2dmczIvZ2xvY2suYzoxNTc6dm9pZCBnZnMyX2dsb2NrX2ZyZWVfbGF0ZXIoc3RydWN0IGdmczJfZ2xvY2sgKmdsKSB7XFxuZnMvZ2ZzMi9nbG9jay5jLTE1OC1cXHRzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCA9IGdsb2NrX3NiZChnbCk7XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MjU0PXN0YXRpYyBib29sIF9fZ2ZzMl9nbG9ja19wdXRfb3JfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjczLVxcbmZzL2dmczIvZ2xvY2suYzoyNzQ6dm9pZCBnZnMyX2dsb2NrX3B1dChzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9nbG9jay5jLTI3NS17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjg4LSAqL1xcbmZzL2dmczIvZ2xvY2suYzoyODk6dm9pZCBnZnMyX2dsb2NrX3B1dF9hc3luYyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9nbG9jay5jLTI5MC17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MTAzMT1zdGF0aWMgc3RydWN0IGdmczJfZ2xvY2sgKmZpbmRfaW5zZXJ0X2dsb2NrKHN0cnVjdCBsbV9sb2NrbmFtZSAqbmFtZSxcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xMDc5LVxcbmZzL2dmczIvZ2xvY2suYzoxMDgwOmludCBnZnMyX2dsb2NrX2dldChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdTY0IG51bWJlcixcXG5mcy9nZnMyL2dsb2NrLmMtMTA4MS1cXHRcXHQgICBjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9ja19vcGVyYXRpb25zICpnbG9wcywgaW50IGNyZWF0ZSxcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xMjI2PXN0YXRpYyB2b2lkIGdmczJfZ2xvY2tfdXBkYXRlX2hvbGRfdGltZShzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTI0NS1cXG5mcy9nZnMyL2dsb2NrLmM6MTI0NjppbnQgZ2ZzMl9nbG9ja19ob2xkZXJfcmVhZHkoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG5mcy9nZnMyL2dsb2NrLmMtMTI0Ny17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTI2Mi1cXG5mcy9nZnMyL2dsb2NrLmM6MTI2MzppbnQgZ2ZzMl9nbG9ja193YWl0KHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTEyNjQte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTEyNzM9c3RhdGljIGludCBnbG9ja3NfcGVuZGluZyh1bnNpZ25lZCBpbnQgbnVtX2doLCBzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdocylcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xMjkzLVxcbmZzL2dmczIvZ2xvY2suYzoxMjk0OmludCBnZnMyX2dsb2NrX2FzeW5jX3dhaXQodW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMsXFxuZnMvZ2ZzMi9nbG9jay5jLTEyOTUtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgcmV0cmllcylcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xNDM2PXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfdG9fcXVldWUoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNDg5LVxcbmZzL2dmczIvZ2xvY2suYzoxNDkwOmludCBnZnMyX2dsb2NrX25xKHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE0OTEte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE1NDMtXFxuZnMvZ2ZzMi9nbG9jay5jOjE1NDQ6aW50IGdmczJfZ2xvY2tfcG9sbChzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxcbmZzL2dmczIvZ2xvY2suYy0xNTQ1LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0xNTQ5PXN0YXRpYyB2b2lkIF9fZ2ZzMl9nbG9ja19kcShzdHJ1Y3QgZ2ZzMl9ob2xkZXIgKmdoKVxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE1OTItICovXFxuZnMvZ2ZzMi9nbG9jay5jOjE1OTM6dm9pZCBnZnMyX2dsb2NrX2RxKHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE1OTQte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE2MzktXFxuZnMvZ2ZzMi9nbG9jay5jOjE2NDA6dm9pZCBnZnMyX2dsb2NrX2RxX3dhaXQoc3RydWN0IGdmczJfaG9sZGVyICpnaClcXG5mcy9nZnMyL2dsb2NrLmMtMTY0MS17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTY1My1cXG5mcy9nZnMyL2dsb2NrLmM6MTY1NDp2b2lkIGdmczJfZ2xvY2tfZHFfdW5pbml0KHN0cnVjdCBnZnMyX2hvbGRlciAqZ2gpXFxuZnMvZ2ZzMi9nbG9jay5jLTE2NTUte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTE2NzEtXFxuZnMvZ2ZzMi9nbG9jay5jOjE2NzI6aW50IGdmczJfZ2xvY2tfbnFfbnVtKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgbnVtYmVyLFxcbmZzL2dmczIvZ2xvY2suYy0xNjczLVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBnZnMyX2dsb2NrX29wZXJhdGlvbnMgKmdsb3BzLFxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jPTE3MjA9c3RhdGljIGludCBucV9tX3N5bmModW5zaWduZWQgaW50IG51bV9naCwgc3RydWN0IGdmczJfaG9sZGVyICpnaHMsXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTc1MS1cXG5mcy9nZnMyL2dsb2NrLmM6MTc1MjppbnQgZ2ZzMl9nbG9ja19ucV9tKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxcbmZzL2dmczIvZ2xvY2suYy0xNzUzLXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNzg1LVxcbmZzL2dmczIvZ2xvY2suYzoxNzg2OnZvaWQgZ2ZzMl9nbG9ja19kcV9tKHVuc2lnbmVkIGludCBudW1fZ2gsIHN0cnVjdCBnZnMyX2hvbGRlciAqZ2hzKVxcbmZzL2dmczIvZ2xvY2suYy0xNzg3LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0xNzkxLVxcbmZzL2dmczIvZ2xvY2suYzoxNzkyOnZvaWQgZ2ZzMl9nbG9ja19jYihzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCBzdGF0ZSlcXG5mcy9nZnMyL2dsb2NrLmMtMTc5My17XFxuLS1cXG5mcy9nZnMyL2dsb2NrLmM9MTgyNj1zdGF0aWMgaW50IGdmczJfc2hvdWxkX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMTg1My1cXG5mcy9nZnMyL2dsb2NrLmM6MTg1NDp2b2lkIGdmczJfZ2xvY2tfY29tcGxldGUoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCBpbnQgcmV0KVxcbmZzL2dmczIvZ2xvY2suYy0xODU1LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0yMDc4PXN0YXRpYyB2b2lkIGNsZWFyX2dsb2NrKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4tLVxcbmZzL2dmczIvZ2xvY2suYy0yMDk3LVxcbmZzL2dmczIvZ2xvY2suYzoyMDk4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvZ2xvY2suYy0yMDk5LXtcXG4tLVxcbmZzL2dmczIvZ2xvY2suYz0yNDI5PWludCBfX2luaXQgZ2ZzMl9nbG9ja19pbml0KHZvaWQpXFxuLS1cXG5mcy9nZnMyL2dsb2NrLmMtMjQ1My1cXG5mcy9nZnMyL2dsb2NrLmM6MjQ1NDp2b2lkIGdmczJfZ2xvY2tfZXhpdCh2b2lkKVxcbmZzL2dmczIvZ2xvY2suYy0yNDU1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MjcuNDcxMTc4MDAxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTAwMzY3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBhIE5vbi1TdGF0aWMgR0ZTMiBHbG9jayBUaGF3IEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gYGdmczJfZ2xvY2tfdGhhd2AgaXNuJ3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gTm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0IG9mdGVuIGluZGljYXRlIGV4dGVybmFsIHZpc2liaWxpdHkgb3IgcG90ZW50aWFsIGZvciBiZWluZyBjYWxsZWQgZnJvbSBlbHNld2hlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBpbiBHRlMyLCBhbmQgZGVhbGluZyB3aXRoIGdsb2NrcyAoZ2xvYmFsIGxvY2tzKSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIHdoeSB0aGlzIHRoYXcgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaW1wbGljYXRpb25zIGZvciBjbHVzdGVyLXdpZGUgY29uc2lzdGVuY3kuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBxdW90YSBtYW5hZ2VtZW50IGNvZGUsIHNwZWNpZmljYWxseSBgZnMvZ2ZzMi9xdW90YS5jYC4gVGhhdCdzIGxpa2VseSB3aGVyZSBpbnRlcmFjdGlvbnMgd2l0aCBnbG9ja3MgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBwb3RlbnRpYWwgdGhhdyBvcGVyYXRpb25zLCB3b3VsZCByZXNpZGUgaW4gR0ZTMi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHJlbGF0ZWQgcXVvdGEgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNvb3JkaW5hdGVkIG9yIHN5bmNocm9uaXplZCBieSB0aGlzIGBnZnMyX2dsb2NrX3RoYXdgIGZ1bmN0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIHF1b3RhLmMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDQwLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MzEuMzgxMjE3MTU0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE0NDY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX3F1b3RhX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL3F1b3RhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9xdW90YS5jPTU4Nj12b2lkIGdmczJfcWFfcHV0KHN0cnVjdCBnZnMyX2lub2RlICppcClcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy01OTctXFxuZnMvZ2ZzMi9xdW90YS5jOjU5ODppbnQgZ2ZzMl9xdW90YV9ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZClcXG5mcy9nZnMyL3F1b3RhLmMtNTk5LXtcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy02NTYtXFxuZnMvZ2ZzMi9xdW90YS5jOjY1Nzp2b2lkIGdmczJfcXVvdGFfdW5ob2xkKHN0cnVjdCBnZnMyX2lub2RlICppcClcXG5mcy9nZnMyL3F1b3RhLmMtNjU4LXtcXG4tLVxcbmZzL2dmczIvcXVvdGEuYz0xMDM3PXN0YXRpYyBpbnQgZG9fZ2xvY2soc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQsIGludCBmb3JjZV9yZWZyZXNoLFxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTEwODctXFxuZnMvZ2ZzMi9xdW90YS5jOjEwODg6aW50IGdmczJfcXVvdGFfbG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXAsIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQpXFxuZnMvZ2ZzMi9xdW90YS5jLTEwODkte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTExMjM9c3RhdGljIGJvb2wgbmVlZF9zeW5jKHN0cnVjdCBnZnMyX3F1b3RhX2RhdGEgKnFkKVxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTExNTgtXFxuZnMvZ2ZzMi9xdW90YS5jOjExNTk6dm9pZCBnZnMyX3F1b3RhX3VubG9jayhzdHJ1Y3QgZ2ZzMl9pbm9kZSAqaXApXFxuZnMvZ2ZzMi9xdW90YS5jLTExNjAte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTEyMTE9c3RhdGljIHZvaWQgcHJpbnRfbWVzc2FnZShzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZCwgY2hhciAqdHlwZSlcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMjM5LSAqL1xcbmZzL2dmczIvcXVvdGEuYzoxMjQwOmludCBnZnMyX3F1b3RhX2NoZWNrKHN0cnVjdCBnZnMyX2lub2RlICppcCwga3VpZF90IHVpZCwga2dpZF90IGdpZCxcXG5mcy9nZnMyL3F1b3RhLmMtMTI0MS1cXHRcXHQgICAgIHN0cnVjdCBnZnMyX2FsbG9jX3Bhcm1zICphcClcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMjk3LVxcbmZzL2dmczIvcXVvdGEuYzoxMjk4OnZvaWQgZ2ZzMl9xdW90YV9jaGFuZ2Uoc3RydWN0IGdmczJfaW5vZGUgKmlwLCBzNjQgY2hhbmdlLFxcbmZzL2dmczIvcXVvdGEuYy0xMjk5LVxcdFxcdCAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkKVxcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTEzMjMtXFxuZnMvZ2ZzMi9xdW90YS5jOjEzMjQ6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSlcXG5mcy9nZnMyL3F1b3RhLmMtMTMyNS17XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTM4NC1cXG5mcy9nZnMyL3F1b3RhLmM6MTM4NTppbnQgZ2ZzMl9xdW90YV9yZWZyZXNoKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3Qga3FpZCBxaWQpXFxuZnMvZ2ZzMi9xdW90YS5jLTEzODYte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jLTE0MDItXFxuZnMvZ2ZzMi9xdW90YS5jOjE0MDM6aW50IGdmczJfcXVvdGFfaW5pdChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL3F1b3RhLmMtMTQwNC17XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTUyNS1cXG5mcy9nZnMyL3F1b3RhLmM6MTUyNjp2b2lkIGdmczJfcXVvdGFfY2xlYW51cChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL3F1b3RhLmMtMTUyNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjMxLjQ0NDM3MDk1M1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUwMTIxMTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIEdGUzIgUXVvdGEgU3luY2hyb25pemF0aW9uKipcblxuT2theSwgYGdmczJfcXVvdGFfc3luY2AgZmVlbHMgbGlrZSBhIGdvb2QsIHNvbGlkIHBvaW50IG9mIGZvY3VzLiBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBrZXkgcGllY2UgaW4gdGhlIHF1b3RhIHN5bmNocm9uaXphdGlvbiBwdXp6bGUgd2l0aGluIEdGUzIuIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzLiBJIHRoaW5rIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB0aGlzIGRlZXAgZGl2ZSBpcyB3aXRoaW4gdGhlIGBmcy9nZnMyL2xvY2tfZGxtLmNgIGZpbGUuIEl0J3MgYSBwcmltZSBzdXNwZWN0IGZvciBhbnl0aGluZyBpbnZvbHZpbmcgZGlzdHJpYnV0ZWQgbG9ja2luZyBhbmQgcXVvdGEgb3BlcmF0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSBhbmQgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyNjIsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTozNC40OTQ0OTQ1MTVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDUzMjQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZnMyX2xvY2tfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvbG9ja19kbG0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6MzQuNTU2OTU2NDczWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDYxNTA3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgcHJvdmlkZWQgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBmcy9nZnMyL2xvY2tfZGxtLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBsYW5kc2NhcGUgd2l0aGluIHRoZSBHRlMyIERpc3RyaWJ1dGVkIExvY2sgTWFuYWdlciBpbXBsZW1lbnRhdGlvbi4gQSBnb29kIGZpcnN0IHN0ZXAgaGVyZSBpcyB0byB0YWtlIGEgbG9vayBhdCBgZnMvZ2ZzMi9sb2NrX2RsbS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2NraW5nIHByaW1pdGl2ZXMgYW5kIGFzc29jaWF0ZWQgbWFuYWdlbWVudCBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gSSdtIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHRoZSBmdW5jdGlvbnMgd2l0aCBleHRlcm5hbCB2aXNpYmlsaXR5LCB0aGUgb25lcyB0aGF0IGFyZSBleHBsaWNpdGx5IGV4cG9zZWQgb3IgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBHRlMyIGNvZGUgb3IgcG90ZW50aWFsbHkgZnJvbSB0aGUgZ2VuZXJpYyBWRlMgbGF5ZXIuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHRoZSBETE0ncyBBUEkgYW5kIGludGVyYWN0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0OTUsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTozNy43MDMxMTAwMTRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTg0MzU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBnZGxtX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL2xvY2tfZGxtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAxOjM3Ljc2NTMwMTM5MloiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTIzNjEzNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipTdGF0aWMgVmFyaWFibGVzIFx1MDAyNiBQb3RlbnRpYWwgQ29uY3VycmVuY3kgSXNzdWVzKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgcnVuIHRocm91Z2ggdGhpcyBvbmUgbW9yZSB0aW1lLiBXYWl0Li4uIEhvbGQgb24gYSBzZWNvbmQuICpgZ2RsbV9hc3RgKiwgKmBnZGxtX2Jhc3RgKiwgYW5kICpgZ2RsbV9wdXRfbG9ja2AqIGFyZSAqc3RhdGljKj8gUmlnaHQuIFRoYXQncyBhIGNyaXRpY2FsIGRldGFpbCBJIGFsbW9zdCBtaXNzZWQuIEl0IGNoYW5nZXMgZXZlcnl0aGluZyB3aGVuIHlvdSdyZSBsb29raW5nIGF0IHRoZSBhcmNoaXRlY3R1cmUgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0gbGlrZSB0aGlzLiBTdGF0aWMgdmFyaWFibGVzLCBpbiBhbnkgc2hhcmVkIG1lbW9yeSBjb250ZXh0LCBpbW1lZGlhdGVseSBzY3JlYW0gXCJwb3RlbnRpYWwgZm9yIGNvbnRlbnRpb24uXCIgSWYgdGhvc2UgYXJlIGFjY2Vzc2VkIGFjcm9zcyBtdWx0aXBsZSB0aHJlYWRzIG9yLCBldmVuIHdvcnNlLCBkaWZmZXJlbnQgcHJvY2Vzc2VzLCB3ZSdyZSB0YWxraW5nIGFib3V0IHZlcnkgcmVhbCBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoaXMgcmVxdWlyZXMgaW1tZWRpYXRlIGFuZCBjYXJlZnVsIGNvbnNpZGVyYXRpb24sIEknbSB0aGlua2luZyBhYm91dCBtdXRleGVzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo0MS4yODg5MTc5NDRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTIxNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdkbG1fYXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2dmczIvbG9ja19kbG0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9nZnMyL2xvY2tfZGxtLmM9MTAxPXN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXF1ZXN0X3RpbWVzKHN0cnVjdCBnZnMyX2dsb2NrICpnbClcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTctIFxcbmZzL2dmczIvbG9ja19kbG0uYzoxMTg6c3RhdGljIHZvaWQgZ2RsbV9hc3Qodm9pZCAqYXJnKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTkte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jPTI3Nz1zdGF0aWMgaW50IGdkbG1fbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsIHVuc2lnbmVkIGludCByZXFfc3RhdGUsXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE0LVxcdFxcdGVycm9yID0gZGxtX2xvY2sobHMtXFx1MDAzZWxzX2RsbSwgcmVxLCBcXHUwMDI2Z2wtXFx1MDAzZWdsX2xrc2IsIGxrZiwgc3RybmFtZSxcXG5mcy9nZnMyL2xvY2tfZGxtLmM6MzE1OlxcdFxcdFxcdFxcdEdETE1fU1RSTkFNRV9CWVRFUyAtIDEsIDAsIGdkbG1fYXN0LCBnbCwgZ2RsbV9iYXN0KTtcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzE2LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDEuMzQ5MDQ0NTEzWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUwMTcwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZnMvZ2ZzMi9sb2NrX2RsbS5jYCBmb3IgRHluYW1pc20qKlxuXG5BbHJpZ2h0LCBJJ20gZm9jdXNpbmcgaW4gb24gYGZzL2dmczIvbG9ja19kbG0uY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYXJlIHRoZXJlIGFueSAqaW50ZXJlc3RpbmcqIGZ1bmN0aW9ucyBpbiBoZXJlIHRoYXQgYXJlbid0IHB1cmVseSBzdGF0aWM/IEknbSBub3QganVzdCBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCAqaXNuJ3QqIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgcmF0aGVyIGZ1bmN0aW9ucyB0aGF0IHRydWx5IHByb3ZpZGUgZHluYW1pc20sIG9yIGEgbGV2ZWwgb2Ygb3BlcmF0aW9uIHRoYXQgaXMgbm90IGNvbmZpbmVkIHdpdGhpbiBhIHN0YXRpYyBtZXRob2QuIElzIHRoZXJlIGFueSBmdW5jdGlvbiBpbiB0aGlzIGZpbGUgdGhhdCBhY3R1YWxseSAqZG9lcyogc29tZXRoaW5nIGludGVyZXN0aW5nLCBiZXlvbmQgc2ltcGxlIGhlbHBlciB0YXNrcywgYW5kIGlzbid0IHNvbGVseSBkZWRpY2F0ZWQgdG8gc29tZSBzcGVjaWZpYyBzdGF0aWNhbGx5LWRlZmluZWQgZnVuY3Rpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpc3RyaWJ1dGVkIGxvY2sgbWFuYWdlciBpbnRlcmFjdHMgd2l0aCB0aGUgbGFyZ2VyIEdGUzIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZmlsZSBpcyB0cnVseSBkeW5hbWljIG9yIGp1c3QgYSBsaWJyYXJ5IG9mIGhlbHBlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjc2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDQuNTA0MDY0MTMyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc4NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9sb2NrX2RsbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2dmczIvbG9ja19kbG0uYy0yOC0gKi9cXG5mcy9nZnMyL2xvY2tfZGxtLmM6Mjk6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3N0YXRzKHN0cnVjdCBnZnMyX2xrc3RhdHMgKnMsIHVuc2lnbmVkIGluZGV4LFxcbmZzL2dmczIvbG9ja19kbG0uYy0zMC1cXHRcXHRcXHRcXHQgICAgIHM2NCBzYW1wbGUpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNzMtICovXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjc0OnN0YXRpYyBpbmxpbmUgdm9pZCBnZnMyX3VwZGF0ZV9yZXBseV90aW1lcyhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTc1LVxcdFxcdFxcdFxcdFxcdCAgIGJvb2wgYmxvY2tpbmcpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMDE6c3RhdGljIGlubGluZSB2b2lkIGdmczJfdXBkYXRlX3JlcXVlc3RfdGltZXMoc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMDIte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNy0gXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExODpzdGF0aWMgdm9pZCBnZGxtX2FzdCh2b2lkICphcmcpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExOS17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTgwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxODE6c3RhdGljIHZvaWQgZ2RsbV9iYXN0KHZvaWQgKmFyZywgaW50IG1vZGUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE4Mi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjA1LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMDY6c3RhdGljIGludCBtYWtlX21vZGUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IHVuc2lnbmVkIGludCBsbXN0YXRlKVxcbmZzL2dmczIvbG9ja19kbG0uYy0yMDcte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIyNC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MjI1OnN0YXRpYyBib29sIG1pZGRsZV9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIyNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjMwLVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMzE6c3RhdGljIGJvb2wgZG93bl9jb252ZXJzaW9uKGludCBjdXIsIGludCByZXEpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTIzMi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM1LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyMzY6c3RhdGljIHUzMiBtYWtlX2ZsYWdzKHN0cnVjdCBnZnMyX2dsb2NrICpnbCwgY29uc3QgdW5zaWduZWQgaW50IGdmc19mbGFncyxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjM3LVxcdFxcdCAgICAgIGNvbnN0IGludCByZXEsIGJvb2wgYmxvY2tpbmcpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjY3LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyNjg6c3RhdGljIHZvaWQgZ2ZzMl9yZXZlcnNlX2hleChjaGFyICpjLCB1NjQgdmFsdWUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTI2OS17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMjc2LVxcbmZzL2dmczIvbG9ja19kbG0uYzoyNzc6c3RhdGljIGludCBnZGxtX2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1bnNpZ25lZCBpbnQgcmVxX3N0YXRlLFxcbmZzL2dmczIvbG9ja19kbG0uYy0yNzgtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzI0LVxcbmZzL2dmczIvbG9ja19kbG0uYzozMjU6c3RhdGljIHZvaWQgZ2RsbV9wdXRfbG9jayhzdHJ1Y3QgZ2ZzMl9nbG9jayAqZ2wpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTMyNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMzgzLVxcbmZzL2dmczIvbG9ja19kbG0uYzozODQ6c3RhdGljIHZvaWQgZ2RsbV9jYW5jZWwoc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbmZzL2dmczIvbG9ja19kbG0uYy0zODUte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTUzNi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTM3OnN0YXRpYyB2b2lkIGNvbnRyb2xfbHZiX3JlYWQoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCAqbHZiX2dlbixcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTM4LVxcdFxcdFxcdCAgICAgY2hhciAqbHZiX2JpdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTQ1LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1NDY6c3RhdGljIHZvaWQgY29udHJvbF9sdmJfd3JpdGUoc3RydWN0IGxtX2xvY2tzdHJ1Y3QgKmxzLCB1aW50MzJfdCBsdmJfZ2VuLFxcbmZzL2dmczIvbG9ja19kbG0uYy01NDctXFx0XFx0XFx0ICAgICAgY2hhciAqbHZiX2JpdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTU0LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1NTU6c3RhdGljIGludCBhbGxfamlkX2JpdHNfY2xlYXIoY2hhciAqbHZiKVxcbmZzL2dmczIvbG9ja19kbG0uYy01NTYte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2MC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTYxOnN0YXRpYyB2b2lkIHN5bmNfd2FpdF9jYih2b2lkICphcmcpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU2Mi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNTY2LVxcbmZzL2dmczIvbG9ja19kbG0uYzo1Njc6c3RhdGljIGludCBzeW5jX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc3RydWN0IGRsbV9sa3NiICpsa3NiLCBjaGFyICpuYW1lKVxcbmZzL2dmczIvbG9ja19kbG0uYy01Njgte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5Mi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NTkzOnN0YXRpYyBpbnQgc3luY19sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTU5NC1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBudW0sIHN0cnVjdCBkbG1fbGtzYiAqbGtzYiwgY2hhciAqbmFtZSlcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy02MjgtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjYyOTpzdGF0aWMgaW50IG1vdW50ZWRfdW5sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvbG9ja19kbG0uYy02MzAte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjM1OnN0YXRpYyBpbnQgbW91bnRlZF9sb2NrKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgbW9kZSwgdWludDMyX3QgZmxhZ3MpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTYzNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQxLVxcbmZzL2dmczIvbG9ja19kbG0uYzo2NDI6c3RhdGljIGludCBjb250cm9sX3VubG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjQzLXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy02NDctXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjY0ODpzdGF0aWMgaW50IGNvbnRyb2xfbG9jayhzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgaW50IG1vZGUsIHVpbnQzMl90IGZsYWdzKVxcbmZzL2dmczIvbG9ja19kbG0uYy02NDkte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTY1NC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6NjU1OnN0YXRpYyB2b2lkIGdmczJfY29udHJvbF9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5mcy9nZnMyL2xvY2tfZGxtLmMtNjU2LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy04MzItXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjgzMzpzdGF0aWMgaW50IGNvbnRyb2xfbW91bnQoc3RydWN0IGdmczJfc2JkICpzZHApXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTgzNC17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTAzMjpzdGF0aWMgaW50IGNvbnRyb2xfZmlyc3RfZG9uZShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcClcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTAzMy17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTA5Ny1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTA5ODpzdGF0aWMgaW50IHNldF9yZWNvdmVyX3NpemUoc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBkbG1fc2xvdCAqc2xvdHMsXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEwOTktXFx0XFx0XFx0ICAgIGludCBudW1fc2xvdHMpXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTE0NS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTE0NjpzdGF0aWMgdm9pZCBmcmVlX3JlY292ZXJfc2l6ZShzdHJ1Y3QgbG1fbG9ja3N0cnVjdCAqbHMpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNDcte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTExNTgtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjExNTk6c3RhdGljIHZvaWQgZ2RsbV9yZWNvdmVyX3ByZXAodm9pZCAqYXJnKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTYwLXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTgzLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMTg0OnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9zbG90KHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90KVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMTg1LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjEyLVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjEzOnN0YXRpYyB2b2lkIGdkbG1fcmVjb3Zlcl9kb25lKHZvaWQgKmFyZywgc3RydWN0IGRsbV9zbG90ICpzbG90cywgaW50IG51bV9zbG90cyxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTIxNC1cXHRcXHRcXHQgICAgICBpbnQgb3VyX3Nsb3QsIHVpbnQzMl90IGdlbmVyYXRpb24pXFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0NC1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTI0NTpzdGF0aWMgdm9pZCBnZGxtX3JlY292ZXJ5X3Jlc3VsdChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdW5zaWduZWQgaW50IGppZCxcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTI0Ni1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IHJlc3VsdClcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjg4LVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGxtX2xvY2tzcGFjZV9vcHMgZ2RsbV9sb2Nrc3BhY2Vfb3BzID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xMjkwLVxcdC5yZWNvdmVyX3ByZXAgPSBnZGxtX3JlY292ZXJfcHJlcCxcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMjk0LVxcbmZzL2dmczIvbG9ja19kbG0uYzoxMjk1OnN0YXRpYyBpbnQgZ2RsbV9tb3VudChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgY29uc3QgY2hhciAqdGFibGUpXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEyOTYte1xcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTEzOTMtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjEzOTQ6c3RhdGljIHZvaWQgZ2RsbV9maXJzdF9kb25lKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbmZzL2dmczIvbG9ja19kbG0uYy0xMzk1LXtcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy0xNDE0LSAqL1xcbmZzL2dmczIvbG9ja19kbG0uYzoxNDE1OnN0YXRpYyB2b2lkIGdkbG1fdW5tb3VudChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgYm9vbCBjbGVhbilcXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTQxNi17XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmMtMTQ0Mi1cXG5mcy9nZnMyL2xvY2tfZGxtLmM6MTQ0MzpzdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCBkbG1fdG9rZW5zID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xNDQ0LVxcdHsgT3B0X2ppZCwgXFxcImppZD0lZFxcXCJ9LFxcbi0tXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jLTE0NTAtXFxuZnMvZ2ZzMi9sb2NrX2RsbS5jOjE0NTE6Y29uc3Qgc3RydWN0IGxtX2xvY2tvcHMgZ2ZzMl9kbG1fb3BzID0ge1xcbmZzL2dmczIvbG9ja19kbG0uYy0xNDUyLVxcdC5sbV9wcm90b19uYW1lID0gXFxcImxvY2tfZGxtXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NDQuNTY1ODU3NTUxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTMxNTk5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRmluZGluZyBTdWl0YWJsZSBGb2N1cyBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBpZGVudGlmeSBzb21lIGdvb2QgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIEdGUzIgYW5kIEVST0ZTIGZpbGVzeXN0ZW1zIGZvciBhbmFseXNpcywgbGlrZWx5IGZvciBzb21lIHNvcnQgb2YgY29kZSB1bmRlcnN0YW5kaW5nIG9yIGRlYnVnZ2luZyB0YXNrLiBUaGUgZmlyc3QgcGxhY2UgSSBsb29rZWQsIGBmcy9nZnMyL2xvY2tfZGxtLmNgLCBzZWVtZWQgcHJvbWlzaW5nLCBidXQgdW5mb3J0dW5hdGVseSwgZXZlcnl0aGluZyB3aXRoaW4gdGhhdCBmaWxlIGlzIHN0YXRpYyBleGNlcHQgdGhlIGBnZnMyX2RsbV9vcHNgIHN0cnVjdC4gTm90IHJlYWxseSB3aGF0IEknbSBsb29raW5nIGZvciB0aGVyZSwgYXMgSSBuZWVkIGZ1bmN0aW9ucywgbm90IGRhdGEgc3RydWN0dXJlcywgdG8gYmUgc3VpdGFibGUgZm9yIGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgbW92ZSBvbiB0byBgZnMvZ2ZzMi9xdW90YS5jYC4gTGV0J3Mgc2VlLi4uIGBnZnMyX3F1b3RhX3N5bmNgLCBgZ2ZzMl9xdW90YV9jaGVja2AsIGBnZnMyX3F1b3RhX2xvY2tgLCBhbmQgYGdmczJfcXVvdGFfcmVmcmVzaGAgYXJlIGFsbCBub24tc3RhdGljLCBzbyB0aGV5IG1pZ2h0IGJlIGdvb2QgY2FuZGlkYXRlcy4gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhvc2UgYXMgcG90ZW50aWFsIG9wdGlvbnMuXG5cbk5leHQsIEknbGwgY2hlY2sgYGZzL2dmczIvZ2xvY2suY2AuIE9rYXksIGhlcmUgSSBzZWUgYGdmczJfZ2xvY2tfdGhhd2AsIGBnZnMyX2dsb2NrX25xYCwgYGdmczJfZ2xvY2tfZHFgLCBhbmQgYGdmczJfZ2xvY2tfcHV0YCBhcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRob3NlIGxvb2sgbGlrZSB0aGV5IGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5GaW5hbGx5LCBsZXQncyBsb29rIGF0IGBmcy9lcm9mcy96ZGF0YS5jYC4gYHpfZXJvZnNfaW5pdF9zdXBlcmAsIGB6X2Vyb2ZzX2V4aXRfc3Vic3lzdGVtYCwgYW5kIGB6X2Vyb2ZzX2luaXRfc3Vic3lzdGVtYCBhcmUgbm9uLXN0YXRpYy4gVGhvc2UgYXJlbid0IHJlYWxseSBqdW1waW5nIG91dCBhdCBtZSBhcyBzdHJvbmcgY2FuZGlkYXRlcy4gT2gsIHdhaXQsIHdoYXQgYWJvdXQgYHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyYD8gVGhhdCBtaWdodCBiZSB0aGUgb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjYzMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1MC4wNzkwMjE5OTlaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMTU3MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3pkYXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvemRhdGEuYz0xMDA1PXN0YXRpYyBpbnQgel9lcm9mc19zY2FuX2ZvbGlvKHN0cnVjdCB6X2Vyb2ZzX2Zyb250ZW5kICpmLFxcbi0tXFxuZnMvZXJvZnMvemRhdGEuYy0xMDIzLVxcdFxcdFxcdG1hcC1cXHUwMDNlbV9sbGVuID0gMDtcXG5mcy9lcm9mcy96ZGF0YS5jOjEwMjQ6XFx0XFx0XFx0ZXJyID0gel9lcm9mc19tYXBfYmxvY2tzX2l0ZXIoaW5vZGUsIG1hcCwgMCk7XFxuZnMvZXJvZnMvemRhdGEuYy0xMDI1LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5mcy9lcm9mcy96ZGF0YS5jPTE4MTg9c3RhdGljIHZvaWQgel9lcm9mc19wY2x1c3Rlcl9yZWFkbW9yZShzdHJ1Y3Qgel9lcm9mc19mcm9udGVuZCAqZixcXG4tLVxcbmZzL2Vyb2ZzL3pkYXRhLmMtMTgzMS1cXHRcXHRtYXAtXFx1MDAzZW1fbGEgPSBlbmQ7XFxuZnMvZXJvZnMvemRhdGEuYzoxODMyOlxcdFxcdGVyciA9IHpfZXJvZnNfbWFwX2Jsb2Nrc19pdGVyKGlub2RlLCBtYXAsXFxuZnMvZXJvZnMvemRhdGEuYy0xODMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIEVST0ZTX0dFVF9CTE9DS1NfUkVBRE1PUkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1MC4xNjAxODUwNTdaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjkwNTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRVJPRlMgWm1hcCBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBzbyB0aGUgem1hcCBpcyBkZWZpbmVkIGluIGBmcy9lcm9mcy96bWFwLmNgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgaXQncyB1c2VkLiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGZpbGUgc3RydWN0dXJlLCBhbmQga25vdyB0byBmaW5kIHRoZSBpbXBvcnRhbnQgc3R1ZmYsIEknbGwgbmVlZCB0byBnbyBkaXJlY3RseSB0byBgZnMvZXJvZnMvem1hcC5jYC4gTGV0J3Mgc2tpcCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBmb3Igbm93IGFuZCBmb2N1cyBvbiB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGFuZCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaW4gb3JkZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgem1hcCwgd2hpY2ggaXMgdGhlIGtleSBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc2MzAsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMTo1My4yOTMwOTMwOTdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTQyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHpfZXJvZnNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3ptYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9lcm9mcy96bWFwLmMtOS1cXG5mcy9lcm9mcy96bWFwLmM6MTA6c3RydWN0IHpfZXJvZnNfbWFwcmVjb3JkZXIge1xcbmZzL2Vyb2ZzL3ptYXAuYy0xMS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbi0tXFxuZnMvZXJvZnMvem1hcC5jPTcxNT1zdGF0aWMgaW50IHpfZXJvZnNfbWFwX3Nhbml0eV9jaGVjayhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXJvZnMvem1hcC5jLTc1NS1cXG5mcy9lcm9mcy96bWFwLmM6NzU2OmludCB6X2Vyb2ZzX21hcF9ibG9ja3NfaXRlcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXJvZnNfbWFwX2Jsb2NrcyAqbWFwLFxcbmZzL2Vyb2ZzL3ptYXAuYy03NTctXFx0XFx0XFx0ICAgIGludCBmbGFncylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTMuMzYwMDQyNDc2WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTU4OTEyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3N1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBJIHNlZSB0aGF0IGB6X2Vyb2ZzX21hcF9ibG9ja3NfaXRlcmAgaXMgZGVmaW5lZCBhcyBub24tc3RhdGljLiBUaGUgcGF0Y2ggdG91Y2hlcyBgemRhdGEuY2AsIHdoaWNoIGhhcyBtZSB3b25kZXJpbmcgd2h5LiAgQWgsIGl0IG1vZGlmaWVzIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAgYW5kIGB6X2Vyb2ZzX3B1dF9wY2x1c3RlcmAgd2l0aGluIHRoYXQgZmlsZS4gU2luY2UgdGhlcmUgYXJlbid0IG1hbnkgb3RoZXIgdXNlZnVsIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGB6ZGF0YS5jYCwgSSBjb3VsZCBlaXRoZXIgaWdub3JlIHRoZSBFUk9GUyBmb2N1c2VkIHN5bWJvbHMgZW50aXJlbHkgb3IgdXRpbGl6ZSBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgaW1wYWN0LiBXYWl0LCBgel9lcm9mc19tYXBfYmxvY2tzX2l0ZXJgIGRvZXMgKm5vdCogZGlyZWN0bHkgY2FsbCBgel9lcm9mc19nZXRfcGNsdXN0ZXJgLiAgTGV0J3Mgc2VlLi4uIGB6X2Vyb2ZzX3NjYW5fZm9saW9gIGNhbGxzIGB6X2Vyb2ZzX3BjbHVzdGVyX2JlZ2luYCwgYW5kICp0aGF0KiBpbiB0dXJuIGNhbGxzIGB6X2Vyb2ZzX2dldF9wY2x1c3RlcmAuIFJpZ2h0LCBhbmQgYHpfZXJvZnNfc2Nhbl9mb2xpb2AgaXMgY2FsbGVkIGJ5IGJvdGggYHpfZXJvZnNfcmVhZF9mb2xpb2AgYW5kIGB6X2Vyb2ZzX3JlYWRhaGVhZGAuIEdpdmVuIHRoYXQgYm90aCBvZiB0aG9zZSBhcmUgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb25zLCB0aGV5J3JlIGNhbGxlZCBieSBWRlMuICBUaGVyZWZvcmUsIEknbSBsZWFuaW5nIHRvd2FyZCBqdXN0IG9taXR0aW5nIHRoZSBFUk9GUyBmb2N1cyBzeW1ib2xzIHNpbmNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIHNlZW1zIG1hbmFnZWFibGUgd2l0aG91dCBleHBvc2luZyBhZGRpdGlvbmFsIGludGVybmFsIGRldGFpbHMuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjb25zaWRlciBgZnMveGZzL3hmc19xbS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIGluIHRoaXMgZmlsZS4gSSBzZWUgdGhhdCBgeGZzX3FtX3VubW91bnRgIGlzIG5vbi1zdGF0aWMsIGFuZCBzbyBpcyBgeGZzX3FtX3F1b3RhY2hlY2tgLiBJbnRlcmVzdGluZywgYHhmc19xbV9kcXVvdF9pc29sYXRlYCBpcyBzdGF0aWMuIFdhaXQsIGB4ZnNfcW1fZHF1b3RfaXNvbGF0ZWAgaXMgcGFzc2VkIHRvIGBsaXN0X2xydV93YWxrYC4gVGhhdCdzIGFuIGltcG9ydGFudCBkZXRhaWwgdG8gY29uc2lkZXIgcmVnYXJkaW5nIHN5bWJvbCBleHBvc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNjQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTkuMTE1OTM1OTE4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc0MjIxNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3FtX2RxdW90X2lzb2xhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzL3hmc19xbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfcW0uYz00MTI9c3RhdGljIGVudW0gbHJ1X3N0YXR1c1xcbmZzL3hmcy94ZnNfcW0uYzo0MTM6eGZzX3FtX2RxdW90X2lzb2xhdGUoXFxuZnMveGZzL3hmc19xbS5jLTQxNC1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0Kml0ZW0sXFxuLS1cXG5mcy94ZnMveGZzX3FtLmM9NDkxPXhmc19xbV9zaHJpbmtfc2NhbihcXG4tLVxcbmZzL3hmcy94ZnNfcW0uYy01MDYtXFx0ZnJlZWQgPSBsaXN0X2xydV9zaHJpbmtfd2FsayhcXHUwMDI2cWktXFx1MDAzZXFpX2xydSwgc2MsXFxuZnMveGZzL3hmc19xbS5jOjUwNzpcXHRcXHRcXHRcXHQgICAgIHhmc19xbV9kcXVvdF9pc29sYXRlLCBcXHUwMDI2aXNvbCk7XFxuZnMveGZzL3hmc19xbS5jLTUwOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDE6NTkuMjIzMzYzMDk2WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODAwMjk2NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB4ZnNfcW1fc2hyaW5rX3NjYW5gIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHhmc19xbV9zaHJpbmtfc2NhbmAuLi4gYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgXCJXaHkgaXNuJ3QgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZCBhcyBgc3RhdGljYD9cIiBJIG1lYW4sIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXRzIHByaW1hcnkgcHVycG9zZSBpcyBpbnRlcm5hbCB0byB0aGUgWEZTIHF1b3RhIG1hbmFnZW1lbnQgY29kZS4gSXQncyBkZXNpZ25lZCB0byBiZSBhIGNvbXBvbmVudCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIFRoZXJlJ3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBhIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24uIElzIGl0IGNhbGxlZCBmcm9tIGVsc2V3aGVyZT8gUGVyaGFwcyBhcyBhIGNhbGxiYWNrLCBvciBtYXliZSBpdCdzIGV4cG9zZWQgZm9yIHNvbWUgdmVyeSBzcGVjaWZpYywgYW5kIGxpa2VseSB1bnVzdWFsLCBkZWJ1Z2dpbmcgc2NlbmFyaW8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB2aXNpYmlsaXR5IGFuZCBjYWxsaW5nIGNvbnRleHRzIG9mIHRoaXMgZnVuY3Rpb24uIEknbSBnb2luZyB0byBoYXZlIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgY29kZSB0byBpZGVudGlmeSBhbGwgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYW4gaW50ZW50aW9uYWwgcmVhc29uIGZvciB0aGUgYnJvYWRlciBzY29wZSwgb3IgaWYgdGhpcyBkZWNsYXJhdGlvbiBpcyBqdXN0IGxlZ2FjeSBjb2RlIHRoYXQgaGFzbid0IGJlZW4gcHJvcGVybHkgcmVmYWN0b3JlZC4gVGhlIGltcGxpY2F0aW9ucyBvZiBpdHMgdmlzaWJpbGl0eSBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhYmlsaXR5IG9mIHRoZSBxdW90YSBjb2RlLiBJZiBpdCBfaXNfIHVuaW50ZW50aW9uYWxseSBub24tc3RhdGljLCBmaXhpbmcgdGhhdCBjb3VsZCBoYXZlIGEgc3Vic3RhbnRpYWwgcG9zaXRpdmUgaW1wYWN0LCByZWR1Y2luZyB0aGUgY2hhbmNlIG9mIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIG9mIHNvbWVvbmUgb3V0c2lkZSB0aGUgeGZzIGNvZGViYXNlIHVzaW5nIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDIuNzAzMzk1MTM4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzg4MTkxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3FtX3Nocmlua19zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3hmcy94ZnNfcW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMveGZzX3FtLmM9NDkwPXN0YXRpYyB1bnNpZ25lZCBsb25nXFxuZnMveGZzL3hmc19xbS5jOjQ5MTp4ZnNfcW1fc2hyaW5rX3NjYW4oXFxuZnMveGZzL3hmc19xbS5jLTQ5Mi1cXHRzdHJ1Y3Qgc2hyaW5rZXJcXHRcXHQqc2hyaW5rLFxcbi0tXFxuZnMveGZzL3hmc19xbS5jPTc2NT14ZnNfcW1faW5pdF9xdW90YWluZm8oXFxuLS1cXG5mcy94ZnMveGZzX3FtLmMtODM0LVxcdHFpbmYtXFx1MDAzZXFpX3Nocmlua2VyLVxcdTAwM2Vjb3VudF9vYmplY3RzID0geGZzX3FtX3Nocmlua19jb3VudDtcXG5mcy94ZnMveGZzX3FtLmM6ODM1OlxcdHFpbmYtXFx1MDAzZXFpX3Nocmlua2VyLVxcdTAwM2VzY2FuX29iamVjdHMgPSB4ZnNfcW1fc2hyaW5rX3NjYW47XFxuZnMveGZzL3hmc19xbS5jLTgzNi1cXHRxaW5mLVxcdTAwM2VxaV9zaHJpbmtlci1cXHUwMDNlcHJpdmF0ZV9kYXRhID0gcWluZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDIuOTQyMjIwOTYzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDgyMDYxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBUaGUgQ29kZSBpcyBTdGFnbmFudCoqXG5cblJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBoaXRzIG1lIGlzIHRoYXQgdGhlIHNpdHVhdGlvbiBpcy4uLiBzdGF0aWMuIE5vdCBtdWNoIGhhcHBlbmluZywgbm8gb2J2aW91cyBjaGFuZ2VzLCBubyBmcmVzaCBhbmdsZXMuIFRoZSBjb2RlLCBhcyBpdCBzdGFuZHMsIGZlZWxzIHN0YWduYW50LCBsaWtlIGEgc25hcHNob3QgaW4gdGltZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGFjdGl2ZSBkZXZlbG9wbWVudCBpcywgaWYgdGhlcmUgaXMgYW55LiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMsIGJhc2VkIG9uIHRoZSB2ZXJ5IHNwYXJzZSBpbmZvcm1hdGlvbiwgdGhpcyBpcyBhIGNvZGUgYmFzZSB0aGF0IG1heSBuZWVkIHNvbWUgZnJlc2ggZXllcyB0byByZXZpZXcgaXQuXG5cblRoZW4sIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGZzL3hmcy94ZnNfYnVmLmNgLiBNeSB0aG91Z2h0cyBhcmUgZHJhd24gdG8gdGhpcyBzcGVjaWZpYyBmaWxlIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29kZWJhc2UuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuIEl0J3MgdGhlIGJ1ZmZlciBsYXllci4gSSBrbm93IHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHBhcnRpY3VsYXIgZmlsZSwgaXRzIHJvbGUgaW4gSS9PLCBjYWNoaW5nLCBhbmQgYmxvY2sgbWFuYWdlbWVudCB3aXRoaW4gWEZTLiBBbnkgaXNzdWVzIGhlcmUgY2FuIHJpcHBsZSBvdXR3YXJkcyBkcmFtYXRpY2FsbHkuIFRoYXQncyBhIGtleSBhcmVhIHRvIHN0YXJ0IGRpZ2dpbmcgaW50by4gUGVyaGFwcyBpdCBpcyBhIHBsYWNlIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjA2LjM1MDQzMDU2N1oiLCJTZXEiOjYwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0MzM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX2J1Zl9zdGFsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMveGZzX2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfYnVmLmM9Mjc9c3RydWN0IGttZW1fY2FjaGUgKnhmc19idWZfY2FjaGU7XFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jLTMxLSAqXFxuZnMveGZzL3hmc19idWYuYzozMjogKiB4ZnNfYnVmX3N0YWxlOlxcbmZzL3hmcy94ZnNfYnVmLmMtMzMtICpcXHRiX3NlbWEgKGNhbGxlciBob2xkcylcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9NjY9dm9pZFxcbmZzL3hmcy94ZnNfYnVmLmM6Njc6eGZzX2J1Zl9zdGFsZShcXG5mcy94ZnMveGZzX2J1Zi5jLTY4LVxcdHN0cnVjdCB4ZnNfYnVmXFx0KmJwKVxcbi0tXFxuZnMveGZzL3hmc19idWYuYz02NjA9eGZzX2J1Zl9yZWFkX21hcChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtNzE4LVxcdFxcdGJwLVxcdTAwM2ViX2ZsYWdzIFxcdTAwMjY9IH5YQkZfRE9ORTtcXG5mcy94ZnMveGZzX2J1Zi5jOjcxOTpcXHRcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTcyMC1cXHRcXHR4ZnNfYnVmX3JlbHNlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTAyNT14ZnNfYnVmX2lvZW5kX2hhbmRsZV9lcnJvcihcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTA5My1vdXRfc3RhbGU6XFxuZnMveGZzL3hmc19idWYuYzoxMDk0OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTA5NS1cXHRicC1cXHUwMDNlYl9mbGFncyB8PSBYQkZfRE9ORTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTE5ND14ZnNfYnVmX2ZhaWwoXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDAtXFx0YnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNj0gflhCRl9ET05FO1xcbmZzL3hmcy94ZnNfYnVmLmM6MTIwMTpcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTEyMDItXFx0eGZzX2J1Zl9pb2Vycm9yKGJwLCAtRUlPKTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTM1Nz14ZnNfYnVmX3N1Ym1pdChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTQwNy1cXHRicC1cXHUwMDNlYl9mbGFncyBcXHUwMDI2PSB+WEJGX0RPTkU7XFxuZnMveGZzL3hmc19idWYuYzoxNDA4OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTQwOS1lbmRfaW86XFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jPTE0Mjg9X194ZnNfYnVmX21hcmtfY29ycnVwdChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTQzNC1cXHR4ZnNfYnVmX2NvcnJ1cHRpb25fZXJyb3IoYnAsIGZhKTtcXG5mcy94ZnMveGZzX2J1Zi5jOjE0MzU6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xNDM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MDYuNDEyODcxMzQ2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjI2NTEyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBLZXJuZWwgRnVuY3Rpb24gQ2FuZGlkYXRlcyBmb3IgUGF0Y2ggSW5jbHVzaW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbGlzdCwgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGdvb2QgY2FuZGlkYXRlcyBmb3IgdGhpcyBrZXJuZWwgcGF0Y2guIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGEgZmV3LCBhbmQgSSBub3RlZCBkb3duIGB4ZnNfYnVmX3N0YWxlYCwgYW5kIHRoZW4gSSByZW1lbWJlcmVkIGBmcy9jZXBoL2Rpci5jYC4uLiBhaCwgYGNlcGhfdHJpbV9kZW50cmllc2AgaXMgYWxzbyBub24tc3RhdGljLCBzbyB0aG9zZSBhcmUgdHdvIGNhbmRpZGF0ZXMgdG8gY29uc2lkZXIuIEFkZGluZyBgZ2ZzMl9nbG9ja190aGF3YCBhbmQgYGdmczJfcXVvdGFfc3luY2AgdG8gdGhlIHBvdGVudGlhbCBsaXN0IGFzIHdlbGwuXG5cbknigJltIGFsc28ga2VlcGluZyBhbiBleWUgb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC4gVGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoZSBwYXRjaCBiZWhhdmVzIHByb3Blcmx5LlxuXG5XYWl0LCBob2xkIG9uLi4uIGBsb2NrcmVmX2lzX2RlYWRgIGlzIGFsc28gdXNlZCBpbiBgZnMvZGNhY2hlLmNgISBJIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdDogYGRlbnRyeV9mcmVlYCwgYGZhc3RfZHB1dGAsIGBzZWxlY3RfY29sbGVjdGAsIGBzZWxlY3RfY29sbGVjdDJgLCBgc2hyaW5rX2RjYWNoZV90cmVlYCwgYHNocmlua19kY2FjaGVfZm9yX3Vtb3VudGAsIGFuZCBgZF9hbGxvY19wYXJhbGxlbGAuIFRoYXQncyBhIGxvdCBvZiBjb3JlIFZGUyBmdW5jdGlvbnMuIEl0IGRvZXMgbWFrZSBtZSB3b25kZXIgaWYgYW55IG9mIHRob3NlIHdvdWxkIGJlIHdvcnRoIGluY2x1ZGluZywgYnV0IHRoZSBwcm9tcHQgc2F5cyB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBhdm9pZCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBgc2hyaW5rX2RjYWNoZV9mb3JfdW1vdW50YCBpcyBub24tc3RhdGljLCBzbyB0aGF0J3Mgc29tZXRoaW5nIHRvIHRoaW5rIGFib3V0LCBhcyBpcyBgZF9hbGxvY19wYXJhbGxlbGAuIEJ1dCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBpdCBzb3VuZHMgbGlrZSB0aG9zZSBhcmUgcHJvYmFibHkgb3V0IGJlY2F1c2UgdGhleSBhcmUgaG90LXBhdGggb3IgZ2VuZXJpYy4gU28gbGV0J3Mgc3RpY2sgd2l0aCB0aGUgbW9yZSBzcGVjaWZpYyBjYXNlcy5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gdGhvc2UgZWFybGllciBmdW5jdGlvbnM6IGB4ZnNfYnVmX3N0YWxlYCDigJMgc3RpbGwgbm9uLXN0YXRpYy4gYGdmczJfcXVvdGFfc3luY2Ag4oCTIGFsc28gbm9uLXN0YXRpYy4gYGdmczJfZ2xvY2tfdGhhd2Ag4oCTIG5vbi1zdGF0aWMuIGBjZXBoX3RyaW1fZGVudHJpZXNgIOKAkyB5ZXAsIG5vbi1zdGF0aWMuIE9rYXksIHRob3NlIGFsbCBzdGlsbCBsb29rIGdvb2QgYXMgbW9yZSBzcGVjaWZpYyBjYW5kaWRhdGVzLlxuXG5BbHJpZ2h0LCBub3cgbGV0J3MgbWFrZSBzdXJlIHRoYXQgYGxvY2tyZWZfaXNfZGVhZGAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9sb2NrcmVmLmhgLiBZZXMsIHRoZSBwYXRjaCBhZGRzIGl0LCBzbyB0aGF0IGNoZWNrcyBvdXQuXG5cbkZpbmFsbHksIEnigJlsbCB0YWtlIGEgbG9vayB0byBzZWUgaWYgYW55IGFkZGl0aW9uYWwgY29uZmlnIGRlcGVuZGVuY2llcyBtYXkgYmUgbmVlZGVkLiBgQ0VQSF9GU2AgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZW4sIGBYRlNfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEdGUzJfRlNgIGRlcGVuZHMgb24gYEJMT0NLYC4gYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQsIHNvIHRoZXkgc2hvdWxkbid0IGJlIGFuIGlzc3VlLiBMZXQgbWUgYWxzbyBkb3VibGUgY2hlY2sgYGZzL2dmczIvS2NvbmZpZ2AgZm9yIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYC4gQW5kIGxvb2tzIGxpa2UgZXZlcnl0aGluZyBpcyBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MTQuMjc1NTI1MTkxWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTk1ODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnPTI9Y29uZmlnIEdGUzJfRlNcXG4tLVxcbmZzL2dmczIvS2NvbmZpZy0yNi1cXG5mcy9nZnMyL0tjb25maWc6Mjc6Y29uZmlnIEdGUzJfRlNfTE9DS0lOR19ETE1cXG5mcy9nZnMyL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiR0ZTMiBETE0gbG9ja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MTQuMzY1NDg4OTM5WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMyNjk2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYEdGUzJfRlNfTE9DS0lOR19ETE1gIGNvbmNlcHQuIFJpZ2h0LCBzbyBteSBpbnR1aXRpb24gaXMgc2F5aW5nIHRoYXQgdGhpcyAqYWJzb2x1dGVseSogcmVsaWVzIG9uIHRoZSBEaXN0cmlidXRlZCBMb2NrIE1hbmFnZXIsIG9yIGBETE1gLiBUaGF0IGZlZWxzIHJpZ2h0LCBhbmQgSSdtIHByZXR0eSBzdXJlIEkndmUgc2VlbiBpdCB3aXJlZCB1cCB0aGF0IHdheSBiZWZvcmUuIEJ1dCwgbGV0J3Mgbm90IGp1c3QgdHJ1c3QgZ3V0IGZlZWxpbmcgaGVyZSwgZXZlbiBhcyBhIGhpZ2hseSBleHBlcmllbmNlZCBwZXJzb24gaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gc29saWQgb24gdGhpcy4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIGNvZGUgb3IgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgYmV0d2VlbiBgR0ZTMl9GU19MT0NLSU5HX0RMTWAgYW5kIGBETE1gLiBJJ2xsIGRvIGEgcXVpY2sgc2NhbiB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTkzOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjE3LjUzODc2MDU0OVoiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1MTc4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9LY29uZmlnPTI3PWNvbmZpZyBHRlMyX0ZTX0xPQ0tJTkdfRExNXFxuZnMvZ2ZzMi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkdGUzIgRExNIGxvY2tpbmdcXFwiXFxuZnMvZ2ZzMi9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gKEdGUzJfRlMhPW4pIFxcdTAwMjZcXHUwMDI2IE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5mcy9nZnMyL0tjb25maWctMzAtXFx0XFx0Q09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgU1lTRlMgXFx1MDAyNlxcdTAwMjYgKERMTT15IHx8IERMTT1HRlMyX0ZTKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoxNy42MDYyODU3NDdaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTQ4ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCB0aGlua2luZyB0aHJvdWdoIHRoZW0gYXMgSSB3b3VsZCBteXNlbGYuXG5cbioqRW5hYmxpbmcgRGVwZW5kZW5jaWVzIGZvciBFUk9GUyBPcHRpbWl6YXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBidXNpbmVzcy4gRnJvbSB0aGUgbG9va3Mgb2YgaXQsIHdlIG5lZWQgdG8gZW5zdXJlIHNvbWUgZGVwZW5kZW5jaWVzIGFyZSBlbmFibGVkIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gU3BlY2lmaWNhbGx5LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRExNYCBhbmQgYENPTkZJR0ZTX0ZTYC4gUmlnaHQsIHNvIEknbGwgZ28gYWhlYWQgYW5kIGFkZCB0aG9zZSB0byBgRW5hYmxlQ29uZmlnc2AgdG8gbWFrZSBzdXJlIHRoZXkncmUgYWN0aXZhdGVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gQmVzdCB0byB0YWtlIGNhcmUgb2YgdGhlIGZvdW5kYXRpb24gZWFybHkgb24uIFRoZW4sIHRvIGJlIHRob3JvdWdoLCBJJ2xsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgZnMvZXJvZnMvS2NvbmZpZ2AsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBFUk9GU19GU19aSVBgIHNldHRpbmcuIE5vIHBvaW50IGdvaW5nIGFoZWFkIGJsaW5kLCBiZXN0IHRvIGNvbmZpcm0gdGhlIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI4OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjIwLjc5MTc3NjAxN1oiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1OTk2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9lcm9mcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL2Vyb2ZzL0tjb25maWctNi1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9NTA9Y29uZmlnIEVST0ZTX0ZTX0RFQlVHXFxuZnMvZXJvZnMvS2NvbmZpZy01MS1cXHRib29sIFxcXCJFUk9GUyBkZWJ1Z2dpbmcgZmVhdHVyZVxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjUyOlxcdGRlcGVuZHMgb24gRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTUzLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9NjA9Y29uZmlnIEVST0ZTX0ZTX1hBVFRSXFxuZnMvZXJvZnMvS2NvbmZpZy02MS1cXHRib29sIFxcXCJFUk9GUyBleHRlbmRlZCBhdHRyaWJ1dGVzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU1xcbmZzL2Vyb2ZzL0tjb25maWctNjMtXFx0ZGVmYXVsdCB5XFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTcxPWNvbmZpZyBFUk9GU19GU19QT1NJWF9BQ0xcXG5mcy9lcm9mcy9LY29uZmlnLTcyLVxcdGJvb2wgXFxcIkVST0ZTIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6NzM6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19YQVRUUlxcbmZzL2Vyb2ZzL0tjb25maWctNzQtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcXG5mcy9lcm9mcy9LY29uZmlnLTg2LVxcdGJvb2wgXFxcIkVST0ZTIFNlY3VyaXR5IExhYmVsc1xcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjg3OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNfWEFUVFJcXG5mcy9lcm9mcy9LY29uZmlnLTg4LVxcdGRlZmF1bHQgeVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz05OD1jb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcXG5mcy9lcm9mcy9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjEwMDpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTXFxuZnMvZXJvZnMvS2NvbmZpZy0xMDEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTExMj1jb25maWcgRVJPRlNfRlNfWklQXFxuZnMvZXJvZnMvS2NvbmZpZy0xMTMtXFx0Ym9vbCBcXFwiRVJPRlMgRGF0YSBDb21wcmVzc2lvbiBTdXBwb3J0XFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNcXG5mcy9lcm9mcy9LY29uZmlnLTExNS1cXHRkZWZhdWx0IHlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTIyPWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIkVST0ZTIExaTUEgY29tcHJlc3NlZCBkYXRhIHN1cHBvcnRcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcXG5mcy9lcm9mcy9LY29uZmlnLTEyNS1cXHRkZWZhdWx0IHlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTM0PWNvbmZpZyBFUk9GU19GU19aSVBfTFpNQV9ERUZBVUxUX01BWF9TVFJFQU1TXFxuZnMvZXJvZnMvS2NvbmZpZy0xMzUtXFx0aW50IFxcXCJFUk9GUyBMWk1BIGRlZmF1bHQgbWF4aW11bSBkZWNvbXByZXNzaW9uIHN0cmVhbXNcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxMzY6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBfTFpNQVxcbmZzL2Vyb2ZzL0tjb25maWctMTM3LVxcdHJhbmdlIDEgTlJfQ1BVU1xcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz0xNDg9Y29uZmlnIEVST0ZTX0ZTX1pJUF9ERUZMQVRFXFxuZnMvZXJvZnMvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiRVJPRlMgREVGTEFURSBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE1MDpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTU5PWNvbmZpZyBFUk9GU19GU19aSVBfWlNURFxcbmZzL2Vyb2ZzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcIkVST0ZTIFpzdGFuZGFyZCBjb21wcmVzc2VkIGRhdGEgc3VwcG9ydFxcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE2MTpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTYyLVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTcwPWNvbmZpZyBFUk9GU19GU19aSVBfQUNDRUxcXG5mcy9lcm9mcy9LY29uZmlnLTE3MS1cXHRib29sIFxcXCJFUk9GUyBoYXJkd2FyZSBkZWNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoxNzI6XFx0ZGVwZW5kcyBvbiBFUk9GU19GU19aSVBcXG5mcy9lcm9mcy9LY29uZmlnLTE3My1cXHRoZWxwXFxuLS1cXG5mcy9lcm9mcy9LY29uZmlnPTE4ND1jb25maWcgRVJPRlNfRlNfUENQVV9LVEhSRUFEXFxuZnMvZXJvZnMvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiRVJPRlMgcGVyLWNwdSBkZWNvbXByZXNzaW9uIGt0aHJlYWQgd29ya2Vyc1xcXCJcXG5mcy9lcm9mcy9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTX1pJUFxcbmZzL2Vyb2ZzL0tjb25maWctMTg3LVxcdGhlbHBcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcXG5mcy9lcm9mcy9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJFUk9GUyBoaWdoIHByaW9yaXR5IHBlci1DUFUga3RocmVhZCB3b3JrZXJzXFxcIlxcbmZzL2Vyb2ZzL0tjb25maWc6MTk1OlxcdGRlcGVuZHMgb24gRVJPRlNfRlNfWklQIFxcdTAwMjZcXHUwMDI2IEVST0ZTX0ZTX1BDUFVfS1RIUkVBRFxcbmZzL2Vyb2ZzL0tjb25maWctMTk2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZz0yMDM9Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDU6XFx0ZGVwZW5kcyBvbiBFUk9GU19GUyBcXHUwMDI2XFx1MDAyNiBFUk9GU19GU19YQVRUUlxcbmZzL2Vyb2ZzL0tjb25maWctMjA2LVxcdHNlbGVjdCBGU19TVEFDS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoyMC44NjAzODA4NzVaIiwiU2VxIjo2NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NTYwOTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBTY29wZSoqXG5cbkFscmlnaHQsIHNvIGBFUk9GU19GU19aSVBgIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0J3MgY2xlYXJseSBhIGNoaWxkIG9mIGBFUk9GU19GU2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29yZSBFUk9GUyBmaWxlc3lzdGVtIGlzIHByZXNlbnQgZmlyc3QsIG9idmlvdXNseS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24ndCBzZWUgYW55IGNvbXBsZXhpdHkgdGhlcmUuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgZWxzZSBxdWlja2x5LiBJIGhhdmUgdG8gbG9vayBpbnRvIGBmcy94ZnMvS2NvbmZpZ2AgdG8gc2VlIGFib3V0IGBYRlNfUVVPVEFgLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBraW5kIG9mIHF1b3RhIGludGVncmF0aW9uIG9yIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gaWYgaW5kaXJlY3RseS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmaWxlIGhhcyB0byBzYXkuIE5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg2NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjIzLjcyNTk5MjcyMVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIyNDY3NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL3hmcy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmZzL3hmcy9LY29uZmlnLTUtXFx0c2VsZWN0IEVYUE9SVEZTXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0yNT1jb25maWcgWEZTX1NVUFBPUlRfVjRcXG5mcy94ZnMvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJTdXBwb3J0IGRlcHJlY2F0ZWQgVjQgKGNyYz0wKSBmb3JtYXRcXFwiXFxuZnMveGZzL0tjb25maWc6Mjc6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IG5cXG4tLVxcbmZzL3hmcy9LY29uZmlnPTUwPWNvbmZpZyBYRlNfU1VQUE9SVF9BU0NJSV9DSVxcbmZzL3hmcy9LY29uZmlnLTUxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZGVwcmVjYXRlZCBjYXNlLWluc2Vuc2l0aXZlIGFzY2lpIChhc2NpaS1jaT0xKSBmb3JtYXRcXFwiXFxuZnMveGZzL0tjb25maWc6NTI6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy01My1cXHRkZWZhdWx0IG5cXG4tLVxcbmZzL3hmcy9LY29uZmlnPTc3PWNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG5mcy94ZnMvS2NvbmZpZzo3OTpcXHRkZXBlbmRzIG9uIFhGU19GU1xcbmZzL3hmcy9LY29uZmlnLTgwLVxcdHNlbGVjdCBRVU9UQUNUTFxcbi0tXFxuZnMveGZzL0tjb25maWc9OTU9Y29uZmlnIFhGU19QT1NJWF9BQ0xcXG5mcy94ZnMvS2NvbmZpZy05Ni1cXHRib29sIFxcXCJYRlMgUE9TSVggQUNMIHN1cHBvcnRcXFwiXFxuZnMveGZzL0tjb25maWc6OTc6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy05OC1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xMDU9Y29uZmlnIFhGU19SVFxcbmZzL3hmcy9LY29uZmlnLTEwNi1cXHRib29sIFxcXCJYRlMgUmVhbHRpbWUgc3Vidm9sdW1lIHN1cHBvcnRcXFwiXFxuZnMveGZzL0tjb25maWc6MTA3OlxcdGRlcGVuZHMgb24gWEZTX0ZTXFxuZnMveGZzL0tjb25maWctMTA4LVxcdGRlZmF1bHQgQkxLX0RFVl9aT05FRFxcbi0tXFxuZnMveGZzL0tjb25maWc9MTQ3PWNvbmZpZyBYRlNfT05MSU5FX1NDUlVCXFxuLS1cXG5mcy94ZnMvS2NvbmZpZy0xNDktXFx0ZGVmYXVsdCB5XFxuZnMveGZzL0tjb25maWc6MTUwOlxcdGRlcGVuZHMgb24gWEZTX0ZTXFxuZnMveGZzL0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gVE1QRlMgXFx1MDAyNlxcdTAwMjYgU0hNRU1cXG5mcy94ZnMvS2NvbmZpZy0xNTItXFx0c2VsZWN0IFhGU19MSVZFX0hPT0tTXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xNjQ9Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJfU1RBVFNcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE2Ni1cXHRkZWZhdWx0IHlcXG5mcy94ZnMvS2NvbmZpZzoxNjc6XFx0ZGVwZW5kcyBvbiBYRlNfT05MSU5FX1NDUlVCXFxuZnMveGZzL0tjb25maWc6MTY4OlxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG5mcy94ZnMvS2NvbmZpZy0xNjktXFx0aGVscFxcbi0tXFxuZnMveGZzL0tjb25maWc9MTc5PWNvbmZpZyBYRlNfT05MSU5FX1JFUEFJUlxcbi0tXFxuZnMveGZzL0tjb25maWctMTgxLVxcdGRlZmF1bHQgeVxcbmZzL3hmcy9LY29uZmlnOjE4MjpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiBYRlNfT05MSU5FX1NDUlVCXFxuZnMveGZzL0tjb25maWctMTgzLVxcdHNlbGVjdCBYRlNfQlRSRUVfSU5fTUVNXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0xOTQ9Y29uZmlnIFhGU19XQVJOXFxuZnMveGZzL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlhGUyBWZXJib3NlIFdhcm5pbmdzXFxcIlxcbmZzL3hmcy9LY29uZmlnOjE5NjpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiAhWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMTk3LVxcdGhlbHBcXG4tLVxcbmZzL3hmcy9LY29uZmlnPTIwNz1jb25maWcgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlhGUyBEZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG5mcy94ZnMvS2NvbmZpZzoyMDk6XFx0ZGVwZW5kcyBvbiBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0yMTAtXFx0aGVscFxcbi0tXFxuZnMveGZzL0tjb25maWc9MjIwPWNvbmZpZyBYRlNfREVCVUdfRVhQRU5TSVZFXFxuZnMveGZzL0tjb25maWctMjIxLVxcdGJvb2wgXFxcIlhGUyBleHBlbnNpdmUgZGVidWdnaW5nIGNoZWNrc1xcXCJcXG5mcy94ZnMvS2NvbmZpZzoyMjI6XFx0ZGVwZW5kcyBvbiBYRlNfRlMgXFx1MDAyNlxcdTAwMjYgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjIzLVxcdGhlbHBcXG4tLVxcbmZzL3hmcy9LY29uZmlnPTIzMj1jb25maWcgWEZTX0FTU0VSVF9GQVRBTFxcbi0tXFxuZnMveGZzL0tjb25maWctMjM0LVxcdGRlZmF1bHQgeVxcbmZzL3hmcy9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIFhGU19GUyBcXHUwMDI2XFx1MDAyNiBYRlNfREVCVUdcXG5mcy94ZnMvS2NvbmZpZy0yMzYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjoyMy43ODgyNDg4M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUwMDg0Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBDZXBoIEZTKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgWEZTX1FVT1RBYC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQncyBqdXN0IGEgZGVwZW5kZW5jeSBvZiB0aGUgY29yZSBgWEZTX0ZTYCBmdW5jdGlvbmFsaXR5LCBhcyBleHBlY3RlZC4gTm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHF1b3RhIGluZm9ybWF0aW9uIGZpdHMgaW4gcmVsYXRpb24gdG8gb3RoZXIgZmlsZSBzeXN0ZW1zLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIGBLY29uZmlnYCBmb3IgdGhlIENlcGggZmlsZSBzeXN0ZW0uIExldCdzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSBob3cgdGhleSd2ZSBpbnRlZ3JhdGVkIHF1b3RhIHN1cHBvcnQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIHRpZ2h0bHkgY291cGxlZCwgb3IgbW9yZSBsb29zZWx5IGhhbmRsZWQuIEknbGwgbmVlZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjI2LjYzODMzNjEyN1oiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzOTQ1MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcXG5mcy9jZXBoL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQ2VwaCBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbVxcXCJcXG5mcy9jZXBoL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVRcXG5mcy9jZXBoL0tjb25maWctNS1cXHRzZWxlY3QgQ0VQSF9MSUJcXG4tLVxcbmZzL2NlcGgvS2NvbmZpZz0yMD1jb25maWcgQ0VQSF9GU0NBQ0hFXFxuZnMvY2VwaC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkVuYWJsZSBDZXBoIGNsaWVudCBjYWNoaW5nIHN1cHBvcnRcXFwiXFxuZnMvY2VwaC9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gQ0VQSF9GUz1tIFxcdTAwMjZcXHUwMDI2IEZTQ0FDSEUgfHwgQ0VQSF9GUz15IFxcdTAwMjZcXHUwMDI2IEZTQ0FDSEU9eVxcbmZzL2NlcGgvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mjk9Y29uZmlnIENFUEhfRlNfUE9TSVhfQUNMXFxuZnMvY2VwaC9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIkNlcGggUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuZnMvY2VwaC9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gQ0VQSF9GU1xcbmZzL2NlcGgvS2NvbmZpZy0zMi1cXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mzk9Y29uZmlnIENFUEhfRlNfU0VDVVJJVFlfTEFCRUxcXG5mcy9jZXBoL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQ2VwaEZTIFNlY3VyaXR5IExhYmVsc1xcXCJcXG5mcy9jZXBoL0tjb25maWc6NDE6XFx0ZGVwZW5kcyBvbiBDRVBIX0ZTIFxcdTAwMjZcXHUwMDI2IFNFQ1VSSVRZXFxuZnMvY2VwaC9LY29uZmlnLTQyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MjYuNzAxNzQwOTk1WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzY5NjI3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2VybmVsIENvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIHN5bWJvbHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgZmlsZSBzeXN0ZW1zLiBGaXJzdCwgYENFUEhfRlNgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBJTkVUYCwgdGhhdCdzIGtleS4gTm93LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIHN5bWJvbHMgSSB3YW50IHRvIGNvbmZpcm0gYXJlOiBgR0ZTMl9GU2AsIGBHRlMyX0ZTX0xPQ0tJTkdfRExNYCwgYERMTWAsIGBDT05GSUdGU19GU2AsIGBFUk9GU19GU2AsIGBFUk9GU19GU19aSVBgLCBgWEZTX0ZTYCwgYFhGU19RVU9UQWAsIGFuZCBvZiBjb3Vyc2UgYENFUEhfRlNgLiBUaGVzZSBhcmUgdGhlIGZvdW5kYXRpb25hbCBmaWxlIHN5c3RlbSBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdmVyaWZ5IGFyZSBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3QgYGNlcGhfdHJpbV9kZW50cmllc2AsIGB4ZnNfYnVmX3N0YWxlYCwgYGdmczJfZ2xvY2tfdGhhd2AsIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGVpciBsb2NhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCwgeWVzLCBgeGZzX2J1Zl9zdGFsZWAgaXMgaW4gYGZzL3hmcy94ZnNfYnVmLmNgLCBqdXN0IGFzIEkgZXhwZWN0ZWQuIGBnZnMyX2dsb2NrX3RoYXdgIGlzIGluIGBmcy9nZnMyL2dsb2NrLmNgLiBgZ2ZzMl9xdW90YV9zeW5jYCBsaXZlcyBpbiBgZnMvZ2ZzMi9xdW90YS5jYCwgYW5kIGZpbmFsbHksIGBjZXBoX3RyaW1fZGVudHJpZXNgIGlzIHR1Y2tlZCBhd2F5IGluIGBmcy9jZXBoL2Rpci5jYC5cblxuT2theSwgbmV4dCBzdGVwLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYHhmc19idWZfc3RhbGVgLiBLbm93aW5nIHdoYXQgY2FsbHMgdGhhdCBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBoZWxwZnVsLiBUaGlzIHdpbGwgaGVscCB3aXRoIGRlYnVnZ2luZyBsYXRlciBhbmQgdW5kZXJzdGFuZGluZyB3aGF0IG1pZ2h0IGJlIGltcGFjdGVkIGJ5IG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjMxLjU3ODcwNjMxN1oiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAzMzYwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX2J1Zl9zdGFsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmM9NTYyPXhmc19hdHRyX3JtdHZhbF9zdGFsZShcXG4tLVxcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTg4LVxcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmM6NTg5OlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMtNTkwLVxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM9NTY3PXhyZXBfeGF0dHJfcmVjb3Zlcl9ibG9jayhcXG4tLVxcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jLTYwMi1cXHRpZiAoYnAtXFx1MDAzZWJfb3BzID09IE5VTEwpXFxuZnMveGZzL3NjcnViL2F0dHJfcmVwYWlyLmM6NjAzOlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy9zY3J1Yi9hdHRyX3JlcGFpci5jLTYwNC1cXG4tLVxcbmZzL3hmcy9zY3J1Yi9yZWFwLmM9MTMxND14cmVhcF9ibWFwaV9iaW52YWwoXFxuLS1cXG5mcy94ZnMvc2NydWIvcmVhcC5jLTEzOTEtXFx0XFx0XFx0fSBlbHNlIHtcXG5mcy94ZnMvc2NydWIvcmVhcC5jOjEzOTI6XFx0XFx0XFx0XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3NjcnViL3JlYXAuYy0xMzkzLVxcdFxcdFxcdFxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0yNz1zdHJ1Y3Qga21lbV9jYWNoZSAqeGZzX2J1Zl9jYWNoZTtcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMzEtICpcXG5mcy94ZnMveGZzX2J1Zi5jOjMyOiAqIHhmc19idWZfc3RhbGU6XFxuZnMveGZzL3hmc19idWYuYy0zMy0gKlxcdGJfc2VtYSAoY2FsbGVyIGhvbGRzKVxcbi0tXFxuZnMveGZzL3hmc19idWYuYz02Nj12b2lkXFxuZnMveGZzL3hmc19idWYuYzo2Nzp4ZnNfYnVmX3N0YWxlKFxcbmZzL3hmcy94ZnNfYnVmLmMtNjgtXFx0c3RydWN0IHhmc19idWZcXHQqYnApXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5jPTY2MD14ZnNfYnVmX3JlYWRfbWFwKFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy03MTgtXFx0XFx0YnAtXFx1MDAzZWJfZmxhZ3MgXFx1MDAyNj0gflhCRl9ET05FO1xcbmZzL3hmcy94ZnNfYnVmLmM6NzE5OlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtNzIwLVxcdFxcdHhmc19idWZfcmVsc2UoYnApO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMDI1PXhmc19idWZfaW9lbmRfaGFuZGxlX2Vycm9yKFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xMDkzLW91dF9zdGFsZTpcXG5mcy94ZnMveGZzX2J1Zi5jOjEwOTQ6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xMDk1LVxcdGJwLVxcdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMTk0PXhmc19idWZfZmFpbChcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmMtMTIwMC1cXHRicC1cXHUwMDNlYl9mbGFncyBcXHUwMDI2PSB+WEJGX0RPTkU7XFxuZnMveGZzL3hmc19idWYuYzoxMjAxOlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmLmMtMTIwMi1cXHR4ZnNfYnVmX2lvZXJyb3IoYnAsIC1FSU8pO1xcbi0tXFxuZnMveGZzL3hmc19idWYuYz0xMzU3PXhmc19idWZfc3VibWl0KFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xNDA3LVxcdGJwLVxcdTAwM2ViX2ZsYWdzIFxcdTAwMjY9IH5YQkZfRE9ORTtcXG5mcy94ZnMveGZzX2J1Zi5jOjE0MDg6XFx0eGZzX2J1Zl9zdGFsZShicCk7XFxuZnMveGZzL3hmc19idWYuYy0xNDA5LWVuZF9pbzpcXG4tLVxcbmZzL3hmcy94ZnNfYnVmLmM9MTQyOD1fX3hmc19idWZfbWFya19jb3JydXB0KFxcbi0tXFxuZnMveGZzL3hmc19idWYuYy0xNDM0LVxcdHhmc19idWZfY29ycnVwdGlvbl9lcnJvcihicCwgZmEpO1xcbmZzL3hmcy94ZnNfYnVmLmM6MTQzNTpcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2J1Zi5jLTE0MzYtfVxcbi0tXFxuZnMveGZzL3hmc19idWYuaD0zMDM9c3RhdGljIGlubGluZSB2b2lkIHhmc19idWZfemVybyhzdHJ1Y3QgeGZzX2J1ZiAqYnAsIHNpemVfdCBib2ZmLCBzaXplX3QgYnNpemUpXFxuLS1cXG5mcy94ZnMveGZzX2J1Zi5oLTMwNy1cXG5mcy94ZnMveGZzX2J1Zi5oOjMwODpleHRlcm4gdm9pZCB4ZnNfYnVmX3N0YWxlKHN0cnVjdCB4ZnNfYnVmICpicCk7XFxuZnMveGZzL3hmc19idWYuaC0zMDktXFxuLS1cXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYz0xMDMxPXhsb2dfcmVjb3Zlcl9idWZfY29tbWl0X3Bhc3MyKFxcbi0tXFxuZnMveGZzL3hmc19idWZfaXRlbV9yZWNvdmVyLmMtMTE2Mi1cXHQgICAgKEJCVE9CKGJwLVxcdTAwM2ViX2xlbmd0aCkgIT0gTV9JR0VPKGxvZy1cXHUwMDNlbF9tcCktXFx1MDAzZWlub2RlX2NsdXN0ZXJfc2l6ZSkpIHtcXG5mcy94ZnMveGZzX2J1Zl9pdGVtX3JlY292ZXIuYzoxMTYzOlxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfYnVmX2l0ZW1fcmVjb3Zlci5jLTExNjQtXFx0XFx0ZXJyb3IgPSB4ZnNfYndyaXRlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfaW5vZGUuYz0xMTA3PXhmc19pbmFjdGl2ZV9kaXIoXFxuLS1cXG5mcy94ZnMveGZzX2lub2RlLmMtMTEzOC1cXG5mcy94ZnMveGZzX2lub2RlLmM6MTEzOTpcXHRcXHRcXHR4ZnNfYnVmX3N0YWxlKGJwKTtcXG5mcy94ZnMveGZzX2lub2RlLmMtMTE0MC1cXHRcXHRcXHR4ZnNfYnVmX3JlbHNlKGJwKTtcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM9MTE2PXhmc190cmFuc19nZXRfYnVmX21hcChcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQxLVxcdFxcdGlmICh4ZnNfaXNfc2h1dGRvd24odHAtXFx1MDAzZXRfbW91bnRwKSkge1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM6MTQyOlxcdFxcdFxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtMTQzLVxcdFxcdFxcdGJwLVxcdTAwM2ViX2ZsYWdzIHw9IFhCRl9ET05FO1xcbi0tXFxuZnMveGZzL3hmc190cmFuc19idWYuYz01NjU9eGZzX3RyYW5zX2JpbnZhbChcXG4tLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtNTkyLVxcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmM6NTkzOlxcdHhmc19idWZfc3RhbGUoYnApO1xcbmZzL3hmcy94ZnNfdHJhbnNfYnVmLmMtNTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjozMS42NDkwNDc1NzVaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNjg1MjE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqWEZTIEJ1ZiBTdGFsZSBJbnZlc3RpZ2F0aW9uIEZvY3VzKipcblxuT2theSwgc28gYHhmc19idWZfc3RhbGVgIGlzIGNhbGxlZCBhbGwgb3ZlciB0aGUgcGxhY2UuIFRoYXQncyBhIGNsYXNzaWMgXCJzbWVsbHlcIiBmdW5jdGlvbiwgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLiBJdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBpc3N1ZSB0aGF0J3MgbWFuaWZlc3RpbmcgaW4gdmFyaW91cyBsb2NhdGlvbnMuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgc3BlY2lmaWMgY29udGV4dCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSB0aGluayBhIGdvb2QgcG9pbnQgb2YgYXR0YWNrIGlzIGBnZnMyX3F1b3RhX3N5bmNgLCBiZWNhdXNlIEkgaGF2ZSBhbiBpbnR1aXRpb24gdGhhdCBpdCByZWxhdGVzIHRvIHN0YWxlIGJ1ZmZlciBpc3N1ZXMgaW4gcXVvdGFzLiBMZXQncyBzZWUgaWYgdGhpcyBodW5jaCBwYW5zIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjozNC45NzU5MDM4MjFaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTM0OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdmczJfcXVvdGFfc3luY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9nZnMyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9nZnMyL3F1b3RhLmM9MTI5OD12b2lkIGdmczJfcXVvdGFfY2hhbmdlKHN0cnVjdCBnZnMyX2lub2RlICppcCwgczY0IGNoYW5nZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuYy0xMzIzLVxcbmZzL2dmczIvcXVvdGEuYzoxMzI0OmludCBnZnMyX3F1b3RhX3N5bmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUpXFxuZnMvZ2ZzMi9xdW90YS5jLTEzMjUte1xcbi0tXFxuZnMvZ2ZzMi9xdW90YS5jPTE1ODg9aW50IGdmczJfcXVvdGFkKHZvaWQgKmRhdGEpXFxuLS1cXG5mcy9nZnMyL3F1b3RhLmMtMTYxOS1cXHRcXHRcXHQvKiBVcGRhdGUgdGhlIHF1b3RhIGZpbGUgKi9cXG5mcy9nZnMyL3F1b3RhLmM6MTYyMDpcXHRcXHRcXHRlcnJvciA9IGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9xdW90YS5jLTE2MjEtXFx0XFx0XFx0cXVvdGFkX2Vycm9yKHNkcCwgXFxcInN5bmNcXFwiLCBlcnJvcik7XFxuLS1cXG5mcy9nZnMyL3F1b3RhLmM9MTgxNj1jb25zdCBzdHJ1Y3QgcXVvdGFjdGxfb3BzIGdmczJfcXVvdGFjdGxfb3BzID0ge1xcbmZzL2dmczIvcXVvdGEuYzoxODE3OlxcdC5xdW90YV9zeW5jICAgICA9IGdmczJfcXVvdGFfc3luYyxcXG5mcy9nZnMyL3F1b3RhLmMtMTgxOC1cXHQuZ2V0X3N0YXRlXFx0PSBnZnMyX3F1b3RhX2dldF9zdGF0ZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuaD0yOD12b2lkIGdmczJfcXVvdGFfY2hhbmdlKHN0cnVjdCBnZnMyX2lub2RlICppcCwgczY0IGNoYW5nZSxcXG4tLVxcbmZzL2dmczIvcXVvdGEuaC0zMC1cXG5mcy9nZnMyL3F1b3RhLmg6MzE6aW50IGdmczJfcXVvdGFfc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7XFxuZnMvZ2ZzMi9xdW90YS5oLTMyLWludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAsIHN0cnVjdCBrcWlkIHFpZCk7XFxuLS1cXG5mcy9nZnMyL3N1cGVyLmM9NTM5PXZvaWQgZ2ZzMl9tYWtlX2ZzX3JvKHN0cnVjdCBnZnMyX3NiZCAqc2RwKVxcbi0tXFxuZnMvZ2ZzMi9zdXBlci5jLTU0OC1cXHRpZiAobG9nX3dyaXRlX2FsbG93ZWQpIHtcXG5mcy9nZnMyL3N1cGVyLmM6NTQ5OlxcdFxcdGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9zdXBlci5jLTU1MC1cXHRcXHRnZnMyX3N0YXRmc19zeW5jKHNkcC1cXHUwMDNlc2RfdmZzLCAwKTtcXG4tLVxcbmZzL2dmczIvc3VwZXIuYz02NTg9c3RhdGljIGludCBnZnMyX3N5bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpXFxuLS1cXG5mcy9nZnMyL3N1cGVyLmMtNjYxLVxcbmZzL2dmczIvc3VwZXIuYzo2NjI6XFx0Z2ZzMl9xdW90YV9zeW5jKHNiLCAtMSk7XFxuZnMvZ2ZzMi9zdXBlci5jLTY2My1cXHRpZiAod2FpdClcXG4tLVxcbmZzL2dmczIvc3lzLmM9MjMxPXN0YXRpYyBzc2l6ZV90IHF1b3RhX3N5bmNfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1ZixcXG4tLVxcbmZzL2dmczIvc3lzLmMtMjQ1LVxcbmZzL2dmczIvc3lzLmM6MjQ2OlxcdGdmczJfcXVvdGFfc3luYyhzZHAtXFx1MDAzZXNkX3ZmcywgMCk7XFxuZnMvZ2ZzMi9zeXMuYy0yNDctXFx0cmV0dXJuIGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MzUuMDQ2MDQ0MTdaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1Njk1NDgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBHRlMyIFF1b3RhIFN5bmNocm9uaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgZ2ZzMl9xdW90YV9zeW5jYCDigJMgdGhhdCdzIHRoZSBvbmUgd2UncmUgdXNpbmcgYXMgdGhlIGBxdW90YV9zeW5jYCBpbiBgcXVvdGFjdGxfb3BzYC4gR29vZCwgdGhhdCBtYWtlcyBpdCBhIGNsZWFyIGZvY2FsIHBvaW50LiBTZWVtcyBsaWtlIGEgc29saWQgY2hvaWNlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBxdW90YXMgYXJlIGJlaW5nIHN5bmNocm9uaXplZCB3aXRoaW4gdGhlIEdGUzIgZmlsZSBzeXN0ZW0uIEl04oCZcyBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLlxuXG5Ob3csIHdoZXJlIGRvIHdlIGdvIGZyb20gaGVyZT8gVGltZSB0byBkaWcgaW50byBgZ2ZzMl9nbG9ja190aGF3YC4gVGhhdCBmdW5jdGlvbiBzaG91bGQgZ2l2ZSB1cyBzb21lIGluc2lnaHQgaW50byBob3cgdGhpbmdzIGFyZSB1bmJsb2NrZWQuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBpdCBzaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcG9pbnQgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDY6MDI6MzguMDAzMDAxNzk0WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2NDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnZnMyX2dsb2NrX3RoYXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZ2ZzMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZ2ZzMi9nbG9jay5jPTIwNzg9c3RhdGljIHZvaWQgY2xlYXJfZ2xvY2soc3RydWN0IGdmczJfZ2xvY2sgKmdsKVxcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTItLyoqXFxuZnMvZ2ZzMi9nbG9jay5jOjIwOTM6ICogZ2ZzMl9nbG9ja190aGF3IC0gVGhhdyBhbnkgZnJvemVuIGdsb2Nrc1xcbmZzL2dmczIvZ2xvY2suYy0yMDk0LSAqIEBzZHA6IFRoZSBzdXBlciBibG9ja1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTctXFxuZnMvZ2ZzMi9nbG9jay5jOjIwOTg6dm9pZCBnZnMyX2dsb2NrX3RoYXcoc3RydWN0IGdmczJfc2JkICpzZHApXFxuZnMvZ2ZzMi9nbG9jay5jLTIwOTkte1xcbi0tXFxuZnMvZ2ZzMi9nbG9jay5oPTI2Nz12b2lkIGdmczJfd2l0aGRyYXdfZ2xvY2tzKHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcXG5mcy9nZnMyL2dsb2NrLmg6MjY4OnZvaWQgZ2ZzMl9nbG9ja190aGF3KHN0cnVjdCBnZnMyX3NiZCAqc2RwKTtcXG5mcy9nZnMyL2dsb2NrLmgtMjY5LXZvaWQgZ2ZzMl9nbG9ja19mcmVlKHN0cnVjdCBnZnMyX2dsb2NrICpnbCk7XFxuLS1cXG5mcy9nZnMyL2xvY2tfZGxtLmM9NjU1PXN0YXRpYyB2b2lkIGdmczJfY29udHJvbF9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmZzL2dmczIvbG9ja19kbG0uYy04MjQtXFx0XFx0ZnNfaW5mbyhzZHAsIFxcXCJyZWNvdmVyIGdlbmVyYXRpb24gJXUgZG9uZVxcXFxuXFxcIiwgc3RhcnRfZ2VuKTtcXG5mcy9nZnMyL2xvY2tfZGxtLmM6ODI1OlxcdFxcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xcbmZzL2dmczIvbG9ja19kbG0uYy04MjYtXFx0fSBlbHNlIHtcXG4tLVxcbmZzL2dmczIvc3lzLmM9NDA3PXN0YXRpYyBzc2l6ZV90IGJsb2NrX3N0b3JlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5mcy9nZnMyL3N5cy5jLTQyMC1cXHRcXHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xcbmZzL2dmczIvc3lzLmM6NDIxOlxcdFxcdGdmczJfZ2xvY2tfdGhhdyhzZHApO1xcbmZzL2dmczIvc3lzLmMtNDIyLVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjM4LjA2NTQ3NTc1M1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUzNDc3MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIEFyZWFzKipcblxuUmlnaHQsIGBnZnMyX2dsb2NrX3RoYXdgLiBUaGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGJvdGggc3lzZnMgYW5kIHRoZSBETE0gY29udHJvbCBmdW5jdGlvbnMsIHNvIGl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgaW1wb3J0YW50IHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBhIGtleSBwb2ludCBvZiBpbnRlcmFjdGlvbiBmb3IgdGhlIGZpbGVzeXN0ZW0gd2l0aCB0aGUgdW5kZXJseWluZyBkaXN0cmlidXRlZCBsb2NrIG1hbmFnZXIsIGFuZCBzeXNmcyBhY2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIHN3aXRjaCBnZWFycyBhIGJpdC4gSSB3b25kZXIgaWYgYGNlcGhfdHJpbV9kZW50cmllc2AgbWlnaHQgYmUgYW4gaW50ZXJlc3RpbmcgbGluZSBvZiBpbnF1aXJ5IHRvIGZvbGxvdyBuZXh0LCBwcm9iYWJseSBoYXMgc29tZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbnMuIEkgdGhpbmsgdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHRoZXJlLCBhbmQgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NTQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjo0MS4wMTg5NTU2ODdaIiwiU2VxIjo3OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjA5Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNlcGhfdHJpbV9kZW50cmllc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jZXBoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9jZXBoL2Rpci5jPTE3NTA9c3RhdGljIGludCBfX2Rpcl9sZWFzZV9jaGVjayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9jZXBoL2Rpci5jLTE3NzQtXFxuZnMvY2VwaC9kaXIuYzoxNzc1OmludCBjZXBoX3RyaW1fZGVudHJpZXMoc3RydWN0IGNlcGhfbWRzX2NsaWVudCAqbWRzYylcXG5mcy9jZXBoL2Rpci5jLTE3NzYte1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmM9MjU4Nj1zdGF0aWMgdm9pZCBjZXBoX2NhcF9yZWNsYWltX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtMjU4OS1cXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGNlcGhfbWRzX2NsaWVudCwgY2FwX3JlY2xhaW1fd29yayk7XFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6MjU5MDpcXHRpbnQgcmV0ID0gY2VwaF90cmltX2RlbnRyaWVzKG1kc2MpO1xcbmZzL2NlcGgvbWRzX2NsaWVudC5jLTI1OTEtXFx0aWYgKHJldCA9PSAtRUFHQUlOKVxcbi0tXFxuZnMvY2VwaC9zdXBlci5oPTEzODA9ZXh0ZXJuIHZvaWQgY2VwaF9pbnZhbGlkYXRlX2RlbnRyeV9sZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpO1xcbmZzL2NlcGgvc3VwZXIuaDoxMzgxOmV4dGVybiBpbnQgY2VwaF90cmltX2RlbnRyaWVzKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MpO1xcbmZzL2NlcGgvc3VwZXIuaC0xMzgyLWV4dGVybiB1bnNpZ25lZCBjZXBoX2RlbnRyeV9oYXNoKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA2OjAyOjQxLjA4MjU3MTYxNVoiLCJTZXEiOjc5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc5MzY0MzQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGaWxlc3lzdGVtIERlcGVuZGVuY2llcyBhbmQgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIHNlZS4gYGNlcGhfdHJpbV9kZW50cmllc2AgbG9va3MgbGlrZSBhIGdvb2QgZm9jdXMgc3ltYm9sIOKAkyBpdCdzIGNhbGxlZCBmcm9tIGEgd29ya3F1ZXVlLiBOb3csIHNob3VsZCBJIGluY2x1ZGUgYHNocmlua19kY2FjaGVfZm9yX3Vtb3VudGA/IFRoYXQncyBhIGNvcmUgVkZTIGZ1bmN0aW9uLCBidXQgdGhlIHByb21wdCBzYWlkIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGtlZXAgdGhlIHRlc3RzIGZyb20gYmVpbmcgc2tld2VkLiBBbmQsIHNpbmNlIGBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnRgIGlzIG9ubHkgY2FsbGVkIGR1cmluZyB1bW91bnQsIGl0J3Mgbm90IGFjdHVhbGx5IG9uIHRoZSBob3QgcGF0aC4gQnV0LCBpdCBpcyBnZW5lcmljLiBNYXliZSBmb3VyIGZ1bmN0aW9ucyBhcmUgc3VmZmljaWVudCBmb3IgdGhlIGZvY3VzLlxuXG5BbHJpZ2h0LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGxpc3QgdGhlbTogYEdGUzJfRlNgLCBgR0ZTMl9GU19MT0NLSU5HX0RMTWAsIGBETE1gLCBgQ09ORklHRlNfRlNgLCBgRVJPRlNfRlNgLCBgRVJPRlNfRlNfWklQYCwgYFhGU19GU2AsIGBYRlNfUVVPVEFgLCBhbmQgYENFUEhfRlNgLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkga25vdyBgRExNYCBkZXBlbmRzIG9uIGBJTkVUYCwgYENPTkZJR0ZTX0ZTYCBkZXBlbmRzIG9uIGBTWVNGU2AsIGFuZCBgU1lTRlNgLCBgSU5FVGAsIGFuZCBgQkxPQ0tgIGFyZSBhbHdheXMgZW5hYmxlZC4gTGV0J3MgZG91YmxlLWNoZWNrIGBmcy9lcm9mcy9LY29uZmlnYC4gYEVST0ZTX0ZTX1pJUGAgZGVwZW5kcyBvbiBgRVJPRlNfRlNgLCBhbmQgYEVST0ZTX0ZTYCBkZXBlbmRzIG9uIGBCTE9DS2AuIE5vdyBmb3IgYGZzL3hmcy9LY29uZmlnYC4gSSBzZWUgdGhhdCBgWEZTX1FVT1RBYCBkZXBlbmRzIG9uIGBYRlNfRlNgLCBhbmQgYFhGU19GU2AgZGVwZW5kcyBvbiBgQkxPQ0tgLiBBbmQgZmluYWxseSwgaW4gYGZzL2NlcGgvS2NvbmZpZ2AsIGBDRVBIX0ZTYCBkZXBlbmRzIG9uIGBJTkVUYC4gVGhlbiBJIHNob3VsZCBjaGVjayBgZnMvZ2ZzMi9LY29uZmlnYC4gYEdGUzJfRlNfTE9DS0lOR19ETE1gIGRlcGVuZHMgb24gYChHRlMyX0ZTIT1uKSBcdTAwMjZcdTAwMjYgTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBDT05GSUdGU19GUyBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IChETE09eSB8fCBETE09R0ZTMl9GUylgLiBUaGlzIG1lYW5zIGBETE1gIG11c3QgYmUgYHlgIG9yIGBtYC4gV2UgY2FuIGp1c3QgbGlzdCBgRExNYC5cblxuU28sIHRoZSBjb25maWcgbGlzdCBpcyBjb25maXJtZWQ6IGBHRlMyX0ZTYCwgYEdGUzJfRlNfTE9DS0lOR19ETE1gLCBgRExNYCwgYENPTkZJR0ZTX0ZTYCwgYEVST0ZTX0ZTYCwgYEVST0ZTX0ZTX1pJUGAsIGBYRlNfRlNgLCBgWEZTX1FVT1RBYCwgYW5kIGBDRVBIX0ZTYC5cblxuQW5kIHRoZSBmb2N1cyBzeW1ib2xzIGFyZTogYGNlcGhfdHJpbV9kZW50cmllc2AsIGB4ZnNfYnVmX3N0YWxlYCwgYGdmczJfZ2xvY2tfdGhhd2AsIGFuZCBgZ2ZzMl9xdW90YV9zeW5jYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbG9ja3JlZmAgbWVjaGFuaXNtIGFuZCBpbnRyb2R1Y2VzIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gIHRvIGhhbmRsZSBsb2NrcmVmIGNvdW50cyB0aGF0IGFyZSBuZWdhdGl2ZSwgYnV0IG5vdCBleGFjdGx5IGAtMTI4YC4gVGhpcyBpcyBhbiBlZGdlLWNhc2UgY2hhbmdlLiBJJ20gZm9jdXNpbmcgb24gc3BlY2lmaWMgZW50cnkgcG9pbnRzIGluIGNlcGgsIGRjYWNoZSwgZXJvZnMsIGdmczIsIGFuZCB4ZnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBsb2NrcmVmIGxvZ2ljLiBJJ20gYXZvaWRpbmcgdGhlIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXG5cbk9rYXksIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTI1LCJPdXRwdXRUb2tlbnMiOjI3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNjowMjo1MS44NzYyMTgwMzZaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjk0OTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR0ZTMl9GU1wiLFxuICAgIFwiR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICAgIFwiRExNXCIsXG4gICAgXCJDT05GSUdGU19GU1wiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1pJUFwiLFxuICAgIFwiWEZTX0ZTXCIsXG4gICAgXCJYRlNfUVVPVEFcIixcbiAgICBcIkNFUEhfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgICBcInhmc19idWZfc3RhbGVcIixcbiAgICBcImdmczJfZ2xvY2tfdGhhd1wiLFxuICAgIFwiZ2ZzMl9xdW90YV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR0ZTMl9GU1wiLFxuICAgIFwiR0ZTMl9GU19MT0NLSU5HX0RMTVwiLFxuICAgIFwiRExNXCIsXG4gICAgXCJDT05GSUdGU19GU1wiLFxuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX1pJUFwiLFxuICAgIFwiWEZTX0ZTXCIsXG4gICAgXCJYRlNfUVVPVEFcIixcbiAgICBcIkNFUEhfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZXBoX3RyaW1fZGVudHJpZXNcIixcbiAgICBcInhmc19idWZfc3RhbGVcIixcbiAgICBcImdmczJfZ2xvY2tfdGhhd1wiLFxuICAgIFwiZ2ZzMl9xdW90YV9zeW5jXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUga2VybmVsIGxvY2tyZWYgbWVjaGFuaXNtLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRlYWQgbG9ja3JlZnMgYXJlIGRldGVjdGVkIGJ5IGludHJvZHVjaW5nIGBsb2NrcmVmX2lzX2RlYWRgIGFuZCBgbG9ja3JlZl9pc19kZWFkX29yX3plcm9gLiBUaGlzIGZ1bmN0aW9uYWxseSBhbHRlcnMgZXhlY3V0aW9uIGZsb3cgaW4gZWRnZSBjYXNlcyB3aGVyZSB0aGUgbG9ja3JlZiBjb3VudCBtaWdodCBiZSBuZWdhdGl2ZSBidXQgbm90IGV4YWN0bHkgYC0xMjhgLiBUaGUgY2hhbmdlcyBhZmZlY3Qgc2V2ZXJhbCBmaWxlc3lzdGVtcyAoY2VwaCwgZGNhY2hlLCBlcm9mcywgZ2ZzMiwgeGZzKSB0aGF0IHJlbHkgb24gbG9ja3JlZi4gV2UgZm9jdXMgZnV6emluZyBvbiBzcGVjaWZpYyBub24tc3RhdGljIGVudHJ5IHBvaW50cyBpbiB0aGVzZSBmaWxlc3lzdGVtcyB0aGF0IGludGVyYWN0IHdpdGggdGhlIG1vZGlmaWVkIGxvY2tyZWYgbG9naWMsIHdoaWxlIGF2b2lkaW5nIGdlbmVyaWMgVkZTIGhvdC1wYXRocyBsaWtlIGBkcHV0YCBvciBgZF9hbGxvY19wYXJhbGxlbGAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[1] Phase: Succeeded StartedAt: 2026-07-26 06:03:03 +0000 UTC FinishedAt: 2026-07-26 06:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 06:03:03 +0000 UTC FinishedAt: 2026-07-26 06:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2] Phase: Succeeded StartedAt: 2026-07-26 06:03:03 +0000 UTC FinishedAt: 2026-07-26 07:23:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-26 06:03:04 +0000 UTC FinishedAt: 2026-07-26 07:23:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 06:03:04 +0000 UTC FinishedAt: 2026-07-26 06:03:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 06:03:04 +0000 UTC FinishedAt: 2026-07-26 06:03:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9hlch/series-workflow9hlch-convert-artifact-2227574160/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 06:03:14 +0000 UTC FinishedAt: 2026-07-26 06:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 06:03:14 +0000 UTC FinishedAt: 2026-07-26 06:51:38 +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:*d021a0a0-cc0d-4b61-bd0b-e5d3d839a10a,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-workflow9hlch/series-workflow9hlch-convert-artifact-2227574160/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": "40bdd556-108e-4868-80f0-b607229bb3c9", "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-workflow9hlch/series-workflow9hlch-build-action-2070884886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 06:03:14 +0000 UTC FinishedAt: 2026-07-26 06:51:28 +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:*d021a0a0-cc0d-4b61-bd0b-e5d3d839a10a,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-workflow9hlch/series-workflow9hlch-convert-artifact-2227574160/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": "40bdd556-108e-4868-80f0-b607229bb3c9", "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-workflow9hlch/series-workflow9hlch-build-action-2070884886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 06:51:38 +0000 UTC FinishedAt: 2026-07-26 06:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 06:51:38 +0000 UTC FinishedAt: 2026-07-26 06:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 06:51:38 +0000 UTC FinishedAt: 2026-07-26 06:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 06:51:38 +0000 UTC FinishedAt: 2026-07-26 06:51:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9hlch/series-workflow9hlch-convert-artifact-447445239/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 06:51:49 +0000 UTC FinishedAt: 2026-07-26 07:22:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 06:51:49 +0000 UTC FinishedAt: 2026-07-26 07:22:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*40bdd556-108e-4868-80f0-b607229bb3c9,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-workflow9hlch/series-workflow9hlch-build-action-2070884886/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": false },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-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-26 07:22:59 +0000 UTC FinishedAt: 2026-07-26 07:23:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hlch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ceph_trim_dentries","xfs_buf_stale","gfs2_glock_thaw","gfs2_quota_sync"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eebf259d5352b87080d67758f483583d9e763d7","config_name":"upstream-apparmor-kasan.config","enable_configs":["GFS2_FS","GFS2_FS_LOCKING_DLM","DLM","CONFIGFS_FS","EROFS_FS","EROFS_FS_ZIP","XFS_FS","XFS_QUOTA","CEPH_FS"],"series_id":"5d8e7047-7e42-47ea-a239-d79b9aa95506","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-07-26 07:22:59 +0000 UTC FinishedAt: 2026-07-26 07:23:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}