Name: series-workflowtgp8h Phase: Succeeded StartedAt: 2026-07-29 01:47:25 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[0] Phase: Succeeded StartedAt: 2026-07-29 01:47:25 +0000 UTC FinishedAt: 2026-07-29 02:18:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 01:47:25 +0000 UTC FinishedAt: 2026-07-29 02:18:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "62bea7115fff400b1c41d591888535bf42f973da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSMALLOC", "ZRAM", "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "62bea7115fff400b1c41d591888535bf42f973da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSMALLOC", "ZRAM", "COMPACTION" ], "series_id": "8b99e938-e1b4-4d6a-a6ff-e21277938651" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "zs_page_migrate", "zs_malloc", "zs_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY2YWUyN2NlMTY3NzI1ZTMyNGNmYTc5YWFiOWZiNDdlZjNlNDVlMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXG5pbmRleCA4M2Y1ODIwYzQ1ZjkzLi5iMDkyOTkxMTU4ODY3IDEwMDY0NFxuLS0tIGEvbW0venNtYWxsb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0venNtYWxsb2MuY1xuQEAgLTE3NzIsOSAmIzQzOzE3NzIsOSBAQCBzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHQgKiBTaW5jZSB3ZSBjb21wbGV0ZSB0aGUgZGF0YSBjb3B5IGFuZCBzZXQgdXAgbmV3IHpzcGFnZSBzdHJ1Y3R1cmUsXG4gXHQgKiBpdCYjMzk7cyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suXG4gXHQgKi9cbi1cdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuLVx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4gXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4mIzQzO1x0d3JpdGVfdW5sb2NrKFx1MDAyNnBvb2wtXHUwMDNlbG9jayk7XG4gXG4gXHR6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7XG4gXHRpZiAoenBkZXNjX3pvbmUobmV3enBkZXNjKSAhPSB6cGRlc2Nfem9uZSh6cGRlc2MpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWY2YWUyN2NlMTY3NzI1ZTMyNGNmYTc5YWFiOWZiNDdlZjNlNDVlMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0venNtYWxsb2MuYyBiL21tL3pzbWFsbG9jLmMKaW5kZXggODNmNTgyMGM0NWY5My4uYjA5Mjk5MTE1ODg2NyAxMDA2NDQKLS0tIGEvbW0venNtYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS96c21hbGxvYy5jCkBAIC0xNzcyLDkgJiM0MzsxNzcyLDkgQEAgc3RhdGljIGludCB6c19wYWdlX21pZ3JhdGUoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlLAogCSAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSwKIAkgKiBpdCYjMzk7cyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suCiAJICovCi0Jd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jayk7Ci0Jc3Bpbl91bmxvY2soJmFtcDtjbGFzcy0mZ3Q7bG9jayk7CiAJenNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKTsKJiM0MzsJd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jayk7CiAKIAl6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7CiAJaWYgKHpwZGVzY196b25lKG5ld3pwZGVzYykgIT0genBkZXNjX3pvbmUoenBkZXNjKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFpzbWFsbG9jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgbW0venNtYWxsb2MuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gYHpzX3BhZ2VfbWlncmF0ZWAsIGFuZCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGEgcmVvcmRlcmluZyBvZiB1bmxvY2sgb3BlcmF0aW9ucy4gSG1tLCBpbnRlcmVzdGluZy4gVGhlIGNvZGUgYmVmb3JlIHRoZSBwYXRjaCBzaG93cyBgd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jaylgLCB0aGVuIGBzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKWAsIGFuZCBmaW5hbGx5IGB6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSlgLiBOb3csIHRoZSBwYXRjaCBwcm9wb3NlcyBmbGlwcGluZyB0aGUgb3JkZXIgdG8gYHpzcGFnZV93cml0ZV91bmxvY2soenNwYWdlKWAsIHRoZW4gYHNwaW5fdW5sb2NrKCZhbXA7Y2xhc3MtJmd0O2xvY2spYCwgZm9sbG93ZWQgYnkgYHdyaXRlX3VubG9jaygmYW1wO3Bvb2wtJmd0O2xvY2spYC4KClRoaXMgc2NyZWFtcyBsb2NrIG9yZGVyaW5nIGlzc3VlIGZpeCB0byBtZSwgb3IgcG90ZW50aWFsbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gcHJldmVudGluZyBhIGRlYWRsb2NrLiBUaGUgZnVuY3Rpb24gb2J2aW91c2x5IGludm9sdmVzIG1pZ3JhdGluZyBwYWdlcyB3aXRoaW4gdGhlIHpzbWFsbG9jIHBvb2wsIHNvIGNvbnRlbnRpb24gaXMgcHJvYmFibHkgZXhwZWN0ZWQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscyBvZiBgenNfcGFnZV9taWdyYXRlYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcmVvcmRlcmluZy4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBpcyBwcm90ZWN0ZWQgYnkgdGhlc2UgbG9ja3M/IEkmIzM5O2xsIGNoZWNrIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQgcGVyaGFwcyByZWxhdGVkIGNvZGUsIHRvIGV2YWx1YXRlIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0IGFuZCBpZiBpdCYjMzk7cyBhZGRyZXNzaW5nIGFuIGFjdHVhbCBjb25jdXJyZW5jeSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTY3NT1zdGF0aWMgYm9vbCB6c19wYWdlX2lzb2xhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGlzb2xhdGVfbW9kZV90IG1vZGUpXG4tLVxubW0venNtYWxsb2MuYy0xNjg0LVxubW0venNtYWxsb2MuYzoxNjg1OnN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL3pzbWFsbG9jLmMtMTY4Ni1cdFx0ZW51bSBtaWdyYXRlX21vZGUgbW9kZSlcbi0tXG5tbS96c21hbGxvYy5jPTE3OTU9Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xubW0venNtYWxsb2MuYy0xNzk2LVx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcbm1tL3pzbWFsbG9jLmM6MTc5NzpcdC5taWdyYXRlX3BhZ2UgPSB6c19wYWdlX21pZ3JhdGUsXG5tbS96c21hbGxvYy5jLTE3OTgtXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkRpdmluZyBpbnRvIHRoZSBac21hbGxvYyBQYWdlIE1pZ3JhdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBgenNfcGFnZV9taWdyYXRlYC4gUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgenNtYWxsb2NfbW9wc2Agc3RydWN0dXJlLCB0aGUgbWVtb3J5IG9wZXJhdGlvbnMgZm9yIHpzbWFsbG9jLiBNeSBmb2N1cyBoZXJlIGlzIHBhZ2UgbWlncmF0aW9uLCBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxpbmcgdGhpcyBzcGVjaWZpYyBmZWF0dXJlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHpzbWFsbG9jIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbnZvbHZlZCB3aXRoIGB6c21hbGxvY2AgaW4gdGhlIGZpcnN0IHBsYWNlPyBXaGF0IHRyaWdnZXJzIHRoZSBhbGxvY2F0aW9uIGFuZCB1c2FnZSBvZiBtZW1vcnk/IExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaU01BTExPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMTQ9Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxuLS1cbm1tL0tjb25maWctMTI0LVxubW0vS2NvbmZpZzoxMjU6Y29uZmlnIFpTTUFMTE9DXG5tbS9LY29uZmlnLTEyNi1cdHRyaXN0YXRlXG4tLVxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcJiMzNDtac21hbGxvYyBpcyBhIGNvbW1vbiBiYWNrZW5kIGFsbG9jYXRvciBmb3IgenN3YXAgXHUwMDI2IHpyYW1cJiMzNDtcbm1tL0tjb25maWctMTM0LVxubW0vS2NvbmZpZzoxMzU6Y29uZmlnIFpTTUFMTE9DX1NUQVRcbm1tL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtFeHBvcnQgenNtYWxsb2Mgc3RhdGlzdGljc1wmIzM0O1xuLS1cbm1tL0tjb25maWctMTQzLVxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcbm1tL0tjb25maWctMTQ1LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBaU01BTExPQyYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYFpTTUFMTE9DYCDigJMgaXQmIzM5O3MgYSB0cmlzdGF0ZSBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBidWlsdCBhcyBhIGJ1aWx0LWluIG1vZHVsZSwgYSBsb2FkYWJsZSBtb2R1bGUsIG9yIG5vdCBhdCBhbGwuIE15IGZvY3VzIGhlcmUgaXMgaG93IGl0JiMzOTtzIGFjdGl2YXRlZDsgaXQmIzM5O3Mgc2VsZWN0ZWQsIGRpcmVjdGx5LCBieSBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAuCgpUbyB0cmFjZSBiYWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCB3aGVyZSBpdCYjMzk7cyBpbnN0YW50aWF0ZWQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCB3aXRoIGBtbS9LY29uZmlnYCDigJMgbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvbnRleHQg4oCTIGFuZCBhbHNvIGxvb2sgaW4gYGRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnYCBpbiBjYXNlIGl0JiMzOTtzIGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoZSB6cmFtIGRyaXZlciBpdHNlbGYuIFRoYXQgd2lsbCBwaW5wb2ludCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9kdWxlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBjb21wcmVzc2VkIFJBTSAoenJhbSkgYW5kIHN3YXAgKHpzd2FwKS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Olx0c2VsZWN0IFpTTUFMTE9DXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02LVx0aGVscFxuLS1cbm1tL0tjb25maWc9MjI9Y29uZmlnIFpTV0FQXG4tLVxubW0vS2NvbmZpZy0yNS1cdHNlbGVjdCBDUllQVE9cbm1tL0tjb25maWc6MjY6XHRzZWxlY3QgWlNNQUxMT0Ncbm1tL0tjb25maWctMjctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipaU01BTExPQyBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgWlNNQUxMT0NgIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuZXZlciBgWlJBTWAgb3IgYFpTV0FQYCBhcmUgdHVybmVkIG9uLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2Ugc2hvdWxkICpwcm9iYWJseSoganVzdCBlbmFibGUgYFpTTUFMTE9DYCBkaXJlY3RseSwgYnV0IHRoZW4gSSByZW1lbWJlciBpdCYjMzk7cyBhIHRyaXN0YXRlIG9wdGlvbiwgc2VsZWN0ZWQgYnkgYFpSQU1gIGFuZCBgWlNXQVBgLiBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBlbmFibGluZyBlaXRoZXIgYFpTTUFMTE9DYCBvciBgWlJBTWAgd291bGQgYWNoaWV2ZSB0aGUgc2FtZSBvdXRjb21lLgoKV2FpdCBhIHNlY29uZC4gU2luY2UgYFpTTUFMTE9DYCAqaXMqIGEgdHJpc3RhdGUgb3B0aW9uLCB3ZSAqY2FuKiBqdXN0IGVuYWJsZSBpdCBkaXJlY3RseS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYW5kIGl0IG1ha2VzIHRoZSBkZXBlbmRlbmN5IGNsZWFyZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBtb3JlIGZ1bGx5LiBJcyBpdCBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkPyBUaW1lIHRvIHZlcmlmeSB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UsIGxpa2VseSBgbW0venNtYWxsb2MuY2AsIHRvIGJlIGNlcnRhaW4uIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enNfcGFnZV9taWdyYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS96c21hbGxvYy5jPTE2NzU9c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTY4NC1cbm1tL3pzbWFsbG9jLmM6MTY4NTpzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG5tbS96c21hbGxvYy5jLTE2ODYtXHRcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXG4tLVxubW0venNtYWxsb2MuYz0xNzk1PWNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG5tbS96c21hbGxvYy5jOjE3OTc6XHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxubW0venNtYWxsb2MuYy0xNzk4LVx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuCgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIG9mIGB6c19wYWdlX21pZ3JhdGVgKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBpcyB3cmFwcGVkIHdpdGhpbiBhIHByZXByb2Nlc3NvciBgI2lmZGVmYCBibG9jay4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHBsYXRmb3JtLXNwZWNpZmljIG9yIGZlYXR1cmUtZmxhZ2dlZCBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdHMgaW5jbHVzaW9uIGluIHRoZSBidWlsZCBpcyBjb25kaXRpb25hbCBvbiBzb21lIG90aGVyIG1hY3JvIGRlZmluaXRpb24uIERlcGVuZGluZyBvbiB0aGUgYW5zd2VyLCBpdCYjMzk7bGwgaW5kaWNhdGUgYSBncmVhdCBkZWFsIGFib3V0IHRoZSBvdmVyYWxsIHByb2plY3Qgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZmRlZiBDT05GSUdfQ09NUEFDVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYz0xOTk9c3RydWN0IHpzX3Bvb2wge1xuLS1cbm1tL3pzbWFsbG9jLmMtMjEzLSNlbmRpZlxubW0venNtYWxsb2MuYzoyMTQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIxNS1cdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XG4tLVxubW0venNtYWxsb2MuYz0zNjA9c3RhdGljIGJvb2wgWnNIdWdlUGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0zNjQtXG5tbS96c21hbGxvYy5jOjM2NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3pzbWFsbG9jLmMtMzY2LXN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCk7XG4tLVxubW0venNtYWxsb2MuYz0xNTk0PXN0YXRpYyBpbnQgcHV0YmFja196c3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNjAzLVxubW0venNtYWxsb2MuYzoxNjA0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjA1LS8qXG4tLVxubW0venNtYWxsb2MuYz0xNjA5PXN0YXRpYyB2b2lkIGxvY2tfenNwYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcbi0tXG5tbS96c21hbGxvYy5jLTE2NDctXG5tbS96c21hbGxvYy5jOjE2NDg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTE2NDktXG4tLVxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcbi0tXG5tbS96c21hbGxvYy5jLTIyNDQtXG5tbS96c21hbGxvYy5jOjIyNDU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIyNDYtXHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcdTAwMjZ6c21hbGxvY19tb3BzLCBQR1RZX3pzbWFsbG9jKTtcbi0tXG5tbS96c21hbGxvYy5jPTIyNTY9c3RhdGljIHZvaWQgX19leGl0IHpzX2V4aXQodm9pZClcbm1tL3pzbWFsbG9jLmMtMjI1Ny17XG5tbS96c21hbGxvYy5jOjIyNTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIyNTktXHRzZXRfbW92YWJsZV9vcHMoTlVMTCwgUEdUWV96c21hbGxvYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIENvbXBhY3Rpb24gRGVwZW5kZW5jeSBpbiB6c21hbGxvYyoqCgpSaWdodCwgYENPTkZJR19DT01QQUNUSU9OYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFdlIGNhbiYjMzk7dCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgb2YgenNtYWxsb2MgYW5kIGV4YW1pbmUgdGhlIHBhZ2UgbWlncmF0aW9uIGxvZ2ljLiBMZXQmIzM5O3Mgc2VlIGhvdyBgenNfcGFnZV9taWdyYXRlYCBpcyBpbXBsZW1lbnRlZC4gSSYjMzk7bGwgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHpvbmUgYWxsb2NhdG9yIGFuZCBob3cgdGhleSBoYW5kbGUgdGhlIG1vdmVtZW50IG9mIHBhZ2VzIHdpdGhpbiB0aGUgenNtYWxsb2MgcG9vbC4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgY29tcGFjdGlvbiBzdWJzeXN0ZW0gdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZXkgY2FuIG1vdmUgYSBwYXJ0aWN1bGFyIHBhZ2UuIFRoaXMgaGFzIHRvIGJlIGluIGBtbS96c21hbGxvYy5jYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY0ODpcdCNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuMTY0OTpcdFxuMTY1MDpcdHN0YXRpYyB2b2lkIHJlcGxhY2Vfc3ViX3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsXG4xNjUxOlx0XHRcdFx0XHRzdHJ1Y3QgenBkZXNjICpuZXd6cGRlc2MsIHN0cnVjdCB6cGRlc2MgKm9sZHpwZGVzYylcbjE2NTI6XHR7XG4xNjUzOlx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2M7XG4xNjU0Olx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2NzW1pTX01BWF9QQUdFU19QRVJfWlNQQUdFXSA9IHtOVUxMLCB9O1xuMTY1NTpcdFx0dW5zaWduZWQgaW50IGZpcnN0X29ial9vZmZzZXQ7XG4xNjU2Olx0XHRpbnQgaWR4ID0gMDtcbjE2NTc6XHRcbjE2NTg6XHRcdHpwZGVzYyA9IGdldF9maXJzdF96cGRlc2MoenNwYWdlKTtcbjE2NTk6XHRcdGRvIHtcbjE2NjA6XHRcdFx0aWYgKHpwZGVzYyA9PSBvbGR6cGRlc2MpXG4xNjYxOlx0XHRcdFx0enBkZXNjc1tpZHhdID0gbmV3enBkZXNjO1xuMTY2MjpcdFx0XHRlbHNlXG4xNjYzOlx0XHRcdFx0enBkZXNjc1tpZHhdID0genBkZXNjO1xuMTY2NDpcdFx0XHRpZHgmIzQzOyYjNDM7O1xuMTY2NTpcdFx0fSB3aGlsZSAoKHpwZGVzYyA9IGdldF9uZXh0X3pwZGVzYyh6cGRlc2MpKSAhPSBOVUxMKTtcbjE2NjY6XHRcbjE2Njc6XHRcdGNyZWF0ZV9wYWdlX2NoYWluKGNsYXNzLCB6c3BhZ2UsIHpwZGVzY3MpO1xuMTY2ODpcdFx0Zmlyc3Rfb2JqX29mZnNldCA9IGdldF9maXJzdF9vYmpfb2Zmc2V0KG9sZHpwZGVzYyk7XG4xNjY5Olx0XHRzZXRfZmlyc3Rfb2JqX29mZnNldChuZXd6cGRlc2MsIGZpcnN0X29ial9vZmZzZXQpO1xuMTY3MDpcdFx0aWYgKHVubGlrZWx5KFpzSHVnZVBhZ2UoenNwYWdlKSkpXG4xNjcxOlx0XHRcdG5ld3pwZGVzYy1cdTAwM2VoYW5kbGUgPSBvbGR6cGRlc2MtXHUwMDNlaGFuZGxlO1xuMTY3MjpcdFx0X196cGRlc2Nfc2V0X21vdmFibGUobmV3enBkZXNjKTtcbjE2NzM6XHR9XG4xNjc0Olx0XG4xNjc1Olx0c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxuMTY3NjpcdHtcbjE2Nzc6XHRcdC8qXG4xNjc4Olx0XHQgKiBQYWdlIGlzIGxvY2tlZCBzbyB6c3BhZ2UgY2FuJiMzOTt0IGJlIGRlc3Ryb3llZCBjb25jdXJyZW50bHlcbjE2Nzk6XHRcdCAqIChzZWUgZnJlZV96c3BhZ2UoKSkuIEJ1dCBpZiB0aGUgcGFnZSB3YXMgYWxyZWFkeSBkZXN0cm95ZWRcbjE2ODA6XHRcdCAqIChzZWUgcmVzZXRfenBkZXNjKCkpLCByZWZ1c2UgaXNvbGF0aW9uIGhlcmUuXG4xNjgxOlx0XHQgKi9cbjE2ODI6XHRcdHJldHVybiBwYWdlX3pwZGVzYyhwYWdlKS1cdTAwM2V6c3BhZ2U7XG4xNjgzOlx0fVxuMTY4NDpcdFxuMTY4NTpcdHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbjE2ODY6XHRcdFx0ZW51bSBtaWdyYXRlX21vZGUgbW9kZSlcbjE2ODc6XHR7XG4xNjg4Olx0XHRzdHJ1Y3QgenNfcG9vbCAqcG9vbDtcbjE2ODk6XHRcdHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcztcbjE2OTA6XHRcdHN0cnVjdCB6c3BhZ2UgKnpzcGFnZTtcbjE2OTE6XHRcdHN0cnVjdCB6cGRlc2MgKmR1bW15O1xuMTY5MjpcdFx0c3RydWN0IHpwZGVzYyAqbmV3enBkZXNjID0gcGFnZV96cGRlc2MobmV3cGFnZSk7XG4xNjkzOlx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2MgPSBwYWdlX3pwZGVzYyhwYWdlKTtcbjE2OTQ6XHRcdHZvaWQgKnNfYWRkciwgKmRfYWRkciwgKmFkZHI7XG4xNjk1Olx0XHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xuMTY5NjpcdFx0dW5zaWduZWQgbG9uZyBoYW5kbGU7XG4xNjk3Olx0XHR1bnNpZ25lZCBsb25nIG9sZF9vYmosIG5ld19vYmo7XG4xNjk4Olx0XHR1bnNpZ25lZCBpbnQgb2JqX2lkeDtcbjE2OTk6XHRcbjE3MDA6XHRcdC8qXG4xNzAxOlx0XHQgKiBUT0RPOiBub3RoaW5nIHByZXZlbnRzIGEgenNwYWdlIGZyb20gZ2V0dGluZyBkZXN0cm95ZWQgd2hpbGVcbjE3MDI6XHRcdCAqIGl0IGlzIGlzb2xhdGVkIGZvciBtaWdyYXRpb24sIGFzIHRoZSBwYWdlIGxvY2sgaXMgdGVtcG9yYXJpbHlcbjE3MDM6XHRcdCAqIGRyb3BwZWQgYWZ0ZXIgenNfcGFnZV9pc29sYXRlKCkgc3VjY2VlZGVkOiB3ZSBzaG91bGQgcmV3b3JrIHRoYXRcbjE3MDQ6XHRcdCAqIGFuZCBkZWZlciBkZXN0cm95aW5nIHN1Y2ggcGFnZXMgb25jZSB0aGV5IGFyZSB1bi1pc29sYXRlZCAocHV0YmFjaylcbjE3MDU6XHRcdCAqIGluc3RlYWQuXG4xNzA2Olx0XHQgKi9cbjE3MDc6XHRcdGlmICghenBkZXNjLVx1MDAzZXpzcGFnZSlcbjE3MDg6XHRcdFx0cmV0dXJuIDA7XG4xNzA5Olx0XG4xNzEwOlx0XHQvKiBUaGUgcGFnZSBpcyBsb2NrZWQsIHNvIHRoaXMgcG9pbnRlciBtdXN0IHJlbWFpbiB2YWxpZCAqL1xuMTcxMTpcdFx0enNwYWdlID0gZ2V0X3pzcGFnZSh6cGRlc2MpO1xuMTcxMjpcdFx0cG9vbCA9IHpzcGFnZS1cdTAwM2Vwb29sO1xuMTcxMzpcdFxuMTcxNDpcdFx0LypcbjE3MTU6XHRcdCAqIFRoZSBwb29sIG1pZ3JhdGVfbG9jayBwcm90ZWN0cyB0aGUgcmFjZSBiZXR3ZWVuIHpwYWdlIG1pZ3JhdGlvblxuMTcxNjpcdFx0ICogYW5kIHpzX2ZyZWUuXG4xNzE3Olx0XHQgKi9cbjE3MTg6XHRcdHdyaXRlX2xvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbjE3MTk6XHRcdGNsYXNzID0genNwYWdlX2NsYXNzKHBvb2wsIHpzcGFnZSk7XG4xNzIwOlx0XG4xNzIxOlx0XHQvKlxuMTcyMjpcdFx0ICogdGhlIGNsYXNzIGxvY2sgcHJvdGVjdHMgenBhZ2UgYWxsb2MvZnJlZSBpbiB0aGUgenNwYWdlLlxuMTcyMzpcdFx0ICovXG4xNzI0Olx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzI1Olx0XHQvKiB0aGUgenNwYWdlIHdyaXRlX2xvY2sgcHJvdGVjdHMgenBhZ2UgYWNjZXNzIHZpYSB6c19vYmpfcmVhZC93cml0ZSgpICovXG4xNzI2Olx0XHRpZiAoIXpzcGFnZV93cml0ZV90cnlsb2NrKHpzcGFnZSkpIHtcbjE3Mjc6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzI4Olx0XHRcdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuMTcyOTpcdFx0XHQvKlxuMTczMDpcdFx0XHQgKiBSZXR1cm4gLUVCVVNZIGJ1dCBub3QgLUVBR0FJTjogdGhlIHpzcGFnZSYjMzk7cyByZWFkZXItbG9ja1xuMTczMTpcdFx0XHQgKiBvd25lciBtYXkgaG9sZCB0aGUgbG9jayBmb3IgYW4gdW5ib3VuZGVkIGR1cmF0aW9uIGR1ZSB0byBhXG4xNzMyOlx0XHRcdCAqIHNsb3cgZGVjb21wcmVzc2lvbiBvciByZWFkZXItbG9jayBvd25lciBwcmVlbXB0aW9uLlxuMTczMzpcdFx0XHQgKiBTaW5jZSBtaWdyYXRpb24gcmV0cmllcyBhcmUgYm91bmRlZCBieVxuMTczNDpcdFx0XHQgKiBOUl9NQVhfTUlHUkFURV9QQUdFU19SRVRSWSBhbmQgcGVyZm9ybWVkIHdpdGggdmlydHVhbGx5IG5vXG4xNzM1Olx0XHRcdCAqIGRlbGF5IGJldHdlZW4gYXR0ZW1wdHMsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgbG9jayB3aWxsXG4xNzM2Olx0XHRcdCAqIGJlIHJlbGVhc2VkIGluIHRpbWUgZm9yIGEgcmV0cnkgdG8gc3VjY2VlZC5cbjE3Mzc6XHRcdFx0ICogLUVBR0FJTiBpbXBsaWVzIFwmIzM0O3RyeSBhZ2FpbiBzb29uXCYjMzQ7LCB3aGljaCBkb2VzIG5vdCBob2xkIGhlcmUuXG4xNzM4Olx0XHRcdCAqIC1FQlVTWSBtb3JlIGFjY3VyYXRlbHkgY29udmV5cyBcJiMzNDtyZXNvdXJjZSBpcyBvY2N1cGllZCxcbjE3Mzk6XHRcdFx0ICogbWlncmF0aW9uIGNhbm5vdCBwcm9jZWVkXCYjMzQ7LlxuMTc0MDpcdFx0XHQgKi9cbjE3NDE6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbjE3NDI6XHRcdH1cbjE3NDM6XHRcbjE3NDQ6XHRcdC8qIFdlJiMzOTtyZSBjb21taXR0ZWQsIHRlbGwgdGhlIHdvcmxkIHRoYXQgdGhpcyBpcyBhIFpzbWFsbG9jIHBhZ2UuICovXG4xNzQ1Olx0XHRfX3pwZGVzY19zZXRfenNtYWxsb2MobmV3enBkZXNjKTtcbjE3NDY6XHRcbjE3NDc6XHRcdG9mZnNldCA9IGdldF9maXJzdF9vYmpfb2Zmc2V0KHpwZGVzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIGZvciBgenNfcGFnZV9taWdyYXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGluc3RydWN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgJiMzNDtMZXQmIzM5O3MgcmVhZCB0aGUgcmVzdCBvZiBgenNfcGFnZV9taWdyYXRlYC4mIzM0OyBUaGF0IGltcGxpZXMgYSBzcGVjaWZpYyBmdW5jdGlvbiBvciBjb2RlIHNlZ21lbnQsIGxpa2VseSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgd2UmIzM5O3JlIGdvaW5nIGluIHdpdGggYSB0YXJnZXRlZCBwdXJwb3NlLCBwcm9iYWJseSByZWxhdGVkIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHksIGRlYnVnZ2luZyBhbiBpc3N1ZSwgb3IgcG90ZW50aWFsbHkgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBhbSBJIGxvb2tpbmcgZm9yPyYjMzQ7IEFyZSB3ZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBpZGVudGlmeSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGZpbmQgYSBzcGVjaWZpYyBhbGdvcml0aG0gaW1wbGVtZW50YXRpb24sIG9yIGNoZWNrIGZvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXM/IFRoZSBjb250ZXh0IGlzIGNydWNpYWw7IHdpdGhvdXQgaXQsIHRoaXMgaXMganVzdCBhIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBnZXQgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgY29kZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NDg6XHRcdHNfYWRkciA9IGttYXBfbG9jYWxfenBkZXNjKHpwZGVzYyk7XG4xNzQ5Olx0XG4xNzUwOlx0XHQvKlxuMTc1MTpcdFx0ICogSGVyZSwgYW55IHVzZXIgY2Fubm90IGFjY2VzcyBhbGwgb2JqZWN0cyBpbiB0aGUgenNwYWdlIHNvIGxldCYjMzk7cyBtb3ZlLlxuMTc1MjpcdFx0ICovXG4xNzUzOlx0XHRkX2FkZHIgPSBrbWFwX2xvY2FsX3pwZGVzYyhuZXd6cGRlc2MpO1xuMTc1NDpcdFx0Y29weV9wYWdlKGRfYWRkciwgc19hZGRyKTtcbjE3NTU6XHRcdGttc2FuX2NvcHlfcGFnZV9tZXRhKHpwZGVzY19wYWdlKG5ld3pwZGVzYyksIHpwZGVzY19wYWdlKHpwZGVzYykpO1xuMTc1NjpcdFx0a3VubWFwX2xvY2FsKGRfYWRkcik7XG4xNzU3Olx0XG4xNzU4Olx0XHRmb3IgKGFkZHIgPSBzX2FkZHIgJiM0Mzsgb2Zmc2V0OyBhZGRyIFx1MDAzYyBzX2FkZHIgJiM0MzsgUEFHRV9TSVpFO1xuMTc1OTpcdFx0XHRcdFx0XHRhZGRyICYjNDM7PSBjbGFzcy1cdTAwM2VzaXplKSB7XG4xNzYwOlx0XHRcdGlmIChvYmpfYWxsb2NhdGVkKHpwZGVzYywgYWRkciwgXHUwMDI2aGFuZGxlKSkge1xuMTc2MTpcdFxuMTc2MjpcdFx0XHRcdG9sZF9vYmogPSBoYW5kbGVfdG9fb2JqKGhhbmRsZSk7XG4xNzYzOlx0XHRcdFx0b2JqX3RvX2xvY2F0aW9uKG9sZF9vYmosIFx1MDAyNmR1bW15LCBcdTAwMjZvYmpfaWR4KTtcbjE3NjQ6XHRcdFx0XHRuZXdfb2JqID0gKHVuc2lnbmVkIGxvbmcpbG9jYXRpb25fdG9fb2JqKG5ld3pwZGVzYywgb2JqX2lkeCk7XG4xNzY1Olx0XHRcdFx0cmVjb3JkX29iaihoYW5kbGUsIG5ld19vYmopO1xuMTc2NjpcdFx0XHR9XG4xNzY3Olx0XHR9XG4xNzY4Olx0XHRrdW5tYXBfbG9jYWwoc19hZGRyKTtcbjE3Njk6XHRcbjE3NzA6XHRcdHJlcGxhY2Vfc3ViX3BhZ2UoY2xhc3MsIHpzcGFnZSwgbmV3enBkZXNjLCB6cGRlc2MpO1xuMTc3MTpcdFx0LypcbjE3NzI6XHRcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcbjE3NzM6XHRcdCAqIGl0JiMzOTtzIG9rYXkgdG8gcmVsZWFzZSBtaWdyYXRpb25fbG9jay5cbjE3NzQ6XHRcdCAqL1xuMTc3NTpcdFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xuMTc3NjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzc3Olx0XHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbjE3Nzg6XHRcbjE3Nzk6XHRcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcbjE3ODA6XHRcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcbjE3ODE6XHRcdFx0enBkZXNjX2RlY196b25lX3BhZ2Vfc3RhdGUoenBkZXNjKTtcbjE3ODI6XHRcdFx0enBkZXNjX2luY196b25lX3BhZ2Vfc3RhdGUobmV3enBkZXNjKTtcbjE3ODM6XHRcdH1cbjE3ODQ6XHRcbjE3ODU6XHRcdHJlc2V0X3pwZGVzYyh6cGRlc2MpO1xuMTc4NjpcdFx0enBkZXNjX3B1dCh6cGRlc2MpO1xuMTc4NzpcdFxuMTc4ODpcdFx0cmV0dXJuIDA7XG4xNzg5Olx0fVxuMTc5MDpcdFxuMTc5MTpcdHN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcbjE3OTI6XHR7XG4xNzkzOlx0fVxuMTc5NDpcdFxuMTc5NTpcdGNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbjE3OTY6XHRcdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG4xNzk3Olx0XHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxuMTc5ODpcdFx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcbjE3OTk6XHR9O1xuMTgwMDpcdFxuMTgwMTpcdC8qXG4xODAyOlx0ICogQ2FsbGVyIHNob3VsZCBob2xkIHBhZ2VfbG9jayBvZiBhbGwgcGFnZXMgaW4gdGhlIHpzcGFnZVxuMTgwMzpcdCAqIEluIGhlcmUsIHdlIGNhbm5vdCB1c2UgenNwYWdlIG1ldGEgZGF0YS5cbjE4MDQ6XHQgKi9cbjE4MDU6XHRzdGF0aWMgdm9pZCBhc3luY19mcmVlX3pzcGFnZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4xODA2Olx0e1xuMTgwNzpcdFx0aW50IGk7XG4xODA4Olx0XHRzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3M7XG4xODA5Olx0XHRzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsICp0bXA7XG4xODEwOlx0XHRMSVNUX0hFQUQoZnJlZV9wYWdlcyk7XG4xODExOlx0XHRzdHJ1Y3QgenNfcG9vbCAqcG9vbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgenNfcG9vbCxcbjE4MTI6XHRcdFx0XHRcdFx0ZnJlZV93b3JrKTtcbjE4MTM6XHRcbjE4MTQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFpTX1NJWkVfQ0xBU1NFUzsgaSYjNDM7JiM0MzspIHtcbjE4MTU6XHRcdFx0Y2xhc3MgPSBwb29sLVx1MDAzZXNpemVfY2xhc3NbaV07XG4xODE2Olx0XHRcdGlmIChjbGFzcy1cdTAwM2VpbmRleCAhPSBpKVxuMTgxNzpcdFx0XHRcdGNvbnRpbnVlO1xuMTgxODpcdFxuMTgxOTpcdFx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODIwOlx0XHRcdGxpc3Rfc3BsaWNlX2luaXQoXHUwMDI2Y2xhc3MtXHUwMDNlZnVsbG5lc3NfbGlzdFtaU19JTlVTRV9SQVRJT18wXSxcbjE4MjE6XHRcdFx0XHRcdCBcdTAwMjZmcmVlX3BhZ2VzKTtcbjE4MjI6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODIzOlx0XHR9XG4xODI0Olx0XG4xODI1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoenNwYWdlLCB0bXAsIFx1MDAyNmZyZWVfcGFnZXMsIGxpc3QpIHtcbjE4MjY6XHRcdFx0bGlzdF9kZWwoXHUwMDI2enNwYWdlLVx1MDAzZWxpc3QpO1xuMTgyNzpcdFx0XHRsb2NrX3pzcGFnZSh6c3BhZ2UpO1xuMTgyODpcdFxuMTgyOTpcdFx0XHRjbGFzcyA9IHpzcGFnZV9jbGFzcyhwb29sLCB6c3BhZ2UpO1xuMTgzMDpcdFx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODMxOlx0XHRcdGNsYXNzX3N0YXRfc3ViKGNsYXNzLCBaU19JTlVTRV9SQVRJT18wLCAxKTtcbjE4MzI6XHRcdFx0X19mcmVlX3pzcGFnZShwb29sLCBjbGFzcywgenNwYWdlKTtcbjE4MzM6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODM0Olx0XHR9XG4xODM1Olx0fTtcbjE4MzY6XHRcbjE4Mzc6XHRzdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXG4xODM4Olx0e1xuMTgzOTpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwb29sLVx1MDAzZWZyZWVfd29yayk7XG4xODQwOlx0fVxuMTg0MTpcdFxuMTg0MjpcdHN0YXRpYyB2b2lkIHpzX2ZsdXNoX21pZ3JhdGlvbihzdHJ1Y3QgenNfcG9vbCAqcG9vbClcbjE4NDM6XHR7XG4xODQ0Olx0XHRmbHVzaF93b3JrKFx1MDAyNnBvb2wtXHUwMDNlZnJlZV93b3JrKTtcbjE4NDU6XHR9XG4xODQ2Olx0XG4xODQ3Olx0c3RhdGljIHZvaWQgaW5pdF9kZWZlcnJlZF9mcmVlKHN0cnVjdCB6c19wb29sICpwb29sKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvY2sgT3JkZXJpbmcgQnVnIEZpeCBpbiB6c19wYWdlX21pZ3JhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9jayByZWxlYXNlIG9yZGVyIHdpdGhpbiBgenNfcGFnZV9taWdyYXRlYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUuIFRoZSBjb2RlIGFjcXVpcmVzIHRocmVlIGxvY2tzOiBmaXJzdCBgcG9vbC0mZ3Q7bG9ja2AgYXMgYSB3cml0ZSBsb2NrLCB0aGVuIGBjbGFzcy0mZ3Q7bG9ja2AgYXMgYSBzcGlubG9jaywgYW5kIGZpbmFsbHksIGl0IHRyaWVzIHRvIGFjcXVpcmUgYHpzcGFnZWAgdXNpbmcgYHpzcGFnZV93cml0ZV90cnlsb2NrYC4gU28sIHRoZSBhY3F1aXNpdGlvbiBvcmRlciBpcyBzdHJhaWdodGZvcndhcmQ6IGBwb29sLSZndDtsb2NrYCwgdGhlbiBgY2xhc3MtJmd0O2xvY2tgLCB0aGVuIGB6c3BhZ2VgLgoKVGhlIHByb2JsZW0gaXMgdGhlICpvcmlnaW5hbCogcmVsZWFzZSBvcmRlciBtaXJyb3JlZCB0aGUgYWNxdWlzaXRpb24gb3JkZXIuICBUaGF0JiMzOTtzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBkZWFkbG9ja3MhICBUaGUgcGF0Y2ggY29ycmVjdHMgdGhpcy4gIEl0IG5vdyByZWxlYXNlcyB0aGUgbG9ja3MgaW4gdGhlICpyZXZlcnNlKiBvcmRlcjogYHpzcGFnZWAsIHRoZW4gYGNsYXNzLSZndDtsb2NrYCwgdGhlbiBgcG9vbC0mZ3Q7bG9ja2AuICBUaGlzIGlzIHRoZSBjb3JyZWN0IHBhdHRlcm4gdG8gYXZvaWQgcG90ZW50aWFsIGxvY2stb3JkZXJpbmcgdmlvbGF0aW9ucyBhbmQgc3Vic2VxdWVudCBkZWFkbG9ja3Mgb3IsIGV2ZW4gd29yc2UsIHRyaWdnZXJpbmcgbG9ja2RlcCB3YXJuaW5ncyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVwcm9kdWNlIGFuZCBkZWJ1Zy4gIFNvLCBmdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4KCkdpdmVuIHRoYXQgdGhpcyBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUsIGl0JiMzOTtzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiAgV2UgbmVlZCB0byB0cmlnZ2VyIGB6c19wYWdlX21pZ3JhdGVgIHJlcGVhdGVkbHkgdW5kZXIgdmFyaW91cyBjb25jdXJyZW50IGNvbmRpdGlvbnMuICBUbyBkbyB0aGF0LCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB6c19wYWdlX21pZ3JhdGVgIGdldHMgY2FsbGVkLiAgSXQmIzM5O3MgaW52b2tlZCBieSB0aGUgcGFnZSBtaWdyYXRpb24gY29kZSwgc28gY29tcGFjdGlvbiwgTlVNQSBiYWxhbmNpbmcsIG9yIGFuIGV4cGxpY2l0IG1pZ3JhdGlvbiByZXF1ZXN0IHdvdWxkIGFsbCBiZSBwb3RlbnRpYWwgdHJpZ2dlcnMuICBUbyBhY3R1YWxseSAqZW5hYmxlKiBgenNtYWxsb2NgIGFuZCBpdHMgY29tcGFjdGlvbiBzdXBwb3J0ICh3aGljaCB3ZSBuZWVkIGZvciB0aGlzIGZ1enppbmcpLCB3ZSBuZWVkIHRoZSBmb2xsb3dpbmcgS2NvbmZpZyBvcHRpb25zOiBgQ09ORklHX1pTTUFMTE9DPXlgLCBgQ09ORklHX0NPTVBBQ1RJT049eWAsIGFuZCBgQ09ORklHX01JR1JBVElPTj15YC4gIGBDT05GSUdfTUlHUkFUSU9OYCBpcyB1c3VhbGx5IHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgYENPTkZJR19DT01QQUNUSU9OYCwgYnV0IHdlIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCwgb2YgY291cnNlLgoKVGltZSB0byBsb29rIGludG8gYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMgYW5kIHRoZW4gZGV2aXNlIGEgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTVBBQ1RJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipSZXZpc2l0aW5nIGBaU01BTExPQ2AqKgoKUmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgWlNNQUxMT0NgLiBJJiMzOTt2ZSBiZWVuIG11bGxpbmcgb3ZlciB0aGUgaW1wbGljYXRpb25zIG9mIGl0cyBjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBhIHdoaWxlIG5vdy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGF0ZXN0IGNoYW5nZXMgaW4gdGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kuIEFyZSB0aGVyZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIG9yIHVuZm9yZXNlZW4gb3B0aW1pemF0aW9ucyB0aGF0IGhhdmUgY3JlcHQgaW4/IEkmIzM5O20gc3BlY2lmaWNhbGx5IGN1cmlvdXMgYWJvdXQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG5ld2VyIE5VTUEtYXdhcmUgYWxsb2NhdGlvbiBwYXR0ZXJucy4gSGF2ZSB0aGUgcmVjZW50IHR3ZWFrcyB0byB0aGUgcGVyLW5vZGUgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGhhZCBhbnkgaW1wYWN0IG9uIGBaU01BTExPQ2AmIzM5O3MgYWJpbGl0eSB0byBlZmZpY2llbnRseSBtYW5hZ2Ugc21hbGwgb2JqZWN0IGFsbG9jYXRpb25zIGFjcm9zcyB0aGUgbWVtb3J5IGhpZXJhcmNoeT8gSSB3YW50IHRvIHZlcmlmeSBpZiB0aGUgZXhwZWN0ZWQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGFyZSBob2xkaW5nIHVwIHVuZGVyIHZhcmlvdXMgd29ya2xvYWRzLCBlc3BlY2lhbGx5IHRob3NlIGNoYXJhY3Rlcml6ZWQgYnkgaGlnaCBvYmplY3QgY2h1cm4uIEEgcXVpY2sgcmV2aWV3IG9mIGl0cyBjb3JlIG1lY2hhbmljcyBpcyBpbiBvcmRlciB0byBiZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBiZW5jaG1hcmtzIGFnYWluIGFuZCBtYXliZSBldmVuIHNpbXVsYXRlIGEgZmV3IHNwZWNpZmljIGVkZ2UgY2FzZXMgdGhhdCBJIGhhdmUgYmVlbiBjb25zaWRlcmluZy4gSXQmIzM5O3MgdGltZSB0byB0YWtlIGEgZnJlc2ggbG9vayBhdCBgWlNNQUxMT0NgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbi0tXG5tbS9LY29uZmlnLTEyNC1cbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xubW0vS2NvbmZpZy0xMjYtXHR0cmlzdGF0ZVxuLS1cbm1tL0tjb25maWc9MTMzPWNvbW1lbnQgXCYjMzQ7WnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFx1MDAyNiB6cmFtXCYjMzQ7XG5tbS9LY29uZmlnLTEzNC1cbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXG5tbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7RXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0My1cbm1tL0tjb25maWc6MTQ0OmNvbmZpZyBaU01BTExPQ19DSEFJTl9TSVpFXG5tbS9LY29uZmlnLTE0NS1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBwYWdlcyBwZXItenNwYWdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBaU01BTExPQyBNdXNpbmdzKioKCk9rYXksIHNvIGBaU01BTExPQ2AgaXMgYSB0cmlzdGF0ZSwgaW50ZXJlc3RpbmcuIEkgY2FuIGVuYWJsZSBpdCwgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMganVzdCBzZXQgYFpTTUFMTE9DPXlgLiBCdXQgd2FpdCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIHBvaW50IGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHpzbWFsbG9jYCBpcyAqYWN0dWFsbHkqIHV0aWxpemVkLiBUaGF0IG1lYW5zIEkgbmVlZCBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAgZW5hYmxlZC4gSXQmIzM5O3MgYSBjbGFzc2ljIHBhaXJpbmcgc3RyYXRlZ3kg4oCTIG9uZSBoZWxwcyB0aGUgb3RoZXIgYWNoaWV2ZSBpdHMgcG90ZW50aWFsLiBSaWdodCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgWlJBTWAgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIGJlY2F1c2UgdGhhdCYjMzk7cyB1c3VhbGx5IG15IGdvLXRvIGZvciB0aGlzIGtpbmQgb2Ygc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7bHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXHRib29sIFwmIzM0O2RlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBaUkFNXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtsem8tcmxlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtsem9cJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXHRib29sIFwmIzM0O2x6NFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtsejRoY1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtkZWZsYXRlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVx0c3RyaW5nXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFwmIzM0O1dyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVx0Ym9vbCBcJiMzNDtUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MDIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpTTUFMTE9DIE1pZ3JhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiB3ZSBuZWVkIHRvIGVuYWJsZSBgWlNNQUxMT0NgLCBgWlJBTWAsIGFuZCBgQ09NUEFDVElPTmAuIFRoZSBjcnVjaWFsIGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24gaXMgYHpzX3BhZ2VfbWlncmF0ZWAuIExldCYjMzk7cyBzZWUuLi4gZmlyc3QsIGlzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyAqWWVzKiwgaXQgaXMuIE5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGd1aWRhbmNlLi4uICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4uLiYjMzQ7IFJpZ2h0LCByaWdodC4gSW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIOKAkyBidXQgdGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFdlIHRha2UgdGhlIGFkZHJlc3Mgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGFzc2lnbiBpdCB0byBgenNtYWxsb2NfbW9wcy5taWdyYXRlX3BhZ2VgLiBTaW5jZSB0aGUgYWRkcmVzcyBpcyB0YWtlbiwgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuIFNvLCBgenNfcGFnZV9taWdyYXRlYCBzaG91bGQgYmUgcGVyZmVjdGx5IGFjY2VwdGFibGUgZXZlbiBpZiBpdCBpcyBzdGF0aWMuIFdlIGFyZW4mIzM5O3QgbG9zaW5nIGFueXRoaW5nIGJ5IHVzaW5nIGl0LgoKQnV0LCBqdXN0IGZvciB0aG9yb3VnaG5lc3MsIGNvdWxkIHdlIHByb3ZpZGUgYSBub24tc3RhdGljIGVudHJ5IHBvaW50PyBJIHN1cHBvc2Ugd2UgY291bGQgcHJvdmlkZSBzb21lIGFsdGVybmF0aXZlIGB6c21hbGxvY2AgQVBJIGZ1bmN0aW9ucyBvciBwYWdlIG1pZ3JhdGlvbiBmdW5jdGlvbnMuIEJ1dCByZWFsbHksIG5vLCBgenNfcGFnZV9taWdyYXRlYCBpcyBmaW5lOyBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgYW5kIHRoYXQmIzM5O3MgdGhlIGltcG9ydGFudCBwYXJ0LiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbnNpZGVyPyBMZXQmIzM5O3MgcXVpY2tseSBzY2FuIGBtbS96c21hbGxvYy5jYCB0byBiZSBjb21wbGV0ZWx5IHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGEgYmV0dGVyIG5vbi1zdGF0aWMgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2Etel9BLVowLTldJiM0MzsgenNfW2Etel9BLVowLTldJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTA4ND1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9iZWdpbik7XG5tbS96c21hbGxvYy5jLTEwODUtXG5tbS96c21hbGxvYy5jOjEwODY6dm9pZCB6c19vYmpfcmVhZF9lbmQoc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxubW0venNtYWxsb2MuYy0xMDg3LVx0XHQgICAgIHNpemVfdCBtZW1fbGVuLCB2b2lkICpoYW5kbGVfbWVtKVxuLS1cbm1tL3pzbWFsbG9jLmM9MTExMT1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9lbmQpO1xubW0venNtYWxsb2MuYy0xMTEyLVxubW0venNtYWxsb2MuYzoxMTEzOnZvaWQgenNfb2JqX3JlYWRfc2dfYmVnaW4oc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxubW0venNtYWxsb2MuYy0xMTE0LVx0XHRcdCAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgc2l6ZV90IG1lbV9sZW4pXG4tLVxubW0venNtYWxsb2MuYz0xMTU4PUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2JlZ2luKTtcbm1tL3pzbWFsbG9jLmMtMTE1OS1cbm1tL3pzbWFsbG9jLmM6MTE2MDp2b2lkIHpzX29ial9yZWFkX3NnX2VuZChzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUpXG5tbS96c21hbGxvYy5jLTExNjEte1xuLS1cbm1tL3pzbWFsbG9jLmM9MTE3Mz1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9zZ19lbmQpO1xubW0venNtYWxsb2MuYy0xMTc0LVxubW0venNtYWxsb2MuYzoxMTc1OnZvaWQgenNfb2JqX3dyaXRlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSxcbm1tL3pzbWFsbG9jLmMtMTE3Ni1cdFx0ICB2b2lkICpoYW5kbGVfbWVtLCBzaXplX3QgbWVtX2xlbilcbi0tXG5tbS96c21hbGxvYy5jPTEyMjI9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3dyaXRlKTtcbi0tXG5tbS96c21hbGxvYy5jLTEyMzYtICovXG5tbS96c21hbGxvYy5jOjEyMzc6c2l6ZV90IHpzX2h1Z2VfY2xhc3Nfc2l6ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcbm1tL3pzbWFsbG9jLmMtMTIzOC17XG4tLVxubW0venNtYWxsb2MuYz0xMzU1PXN0YXRpYyB2b2lkIG9ial9mcmVlKGludCBjbGFzc19zaXplLCB1bnNpZ25lZCBsb25nIG9iailcbi0tXG5tbS96c21hbGxvYy5jLTEzODItXG5tbS96c21hbGxvYy5jOjEzODM6dm9pZCB6c19mcmVlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcbm1tL3pzbWFsbG9jLmMtMTM4NC17XG4tLVxubW0venNtYWxsb2MuYz0xOTc2PUVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xubW0venNtYWxsb2MuYy0xOTc3LVxubW0venNtYWxsb2MuYzoxOTc4OnZvaWQgenNfcG9vbF9zdGF0cyhzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgc3RydWN0IHpzX3Bvb2xfc3RhdHMgKnN0YXRzKVxubW0venNtYWxsb2MuYy0xOTc5LXtcbi0tXG5tbS96c21hbGxvYy5jPTIxODA9RVhQT1JUX1NZTUJPTF9HUEwoenNfY3JlYXRlX3Bvb2wpO1xubW0venNtYWxsb2MuYy0yMTgxLVxubW0venNtYWxsb2MuYzoyMTgyOnZvaWQgenNfZGVzdHJveV9wb29sKHN0cnVjdCB6c19wb29sICpwb29sKVxubW0venNtYWxsb2MuYy0yMTgzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIGEgU3RhdGljIFZhcmlhYmxlIGluIGEgU3RydWN0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gc2VlaW5nIGB6c19wYWdlX21pZ3JhdGVgIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBzdGF0aWNgLCBidXQgaXQgc2VlbXMgdG8gYmUgYXNzaWduZWQgb3IgdXNlZCBpbiBjb250ZXh0IG9mIGEgc3RydWN0LiBUaGF0IHJhaXNlcyBhIHJlZCBmbGFnLiBUeXBpY2FsbHkgc3RhdGljIHZhcmlhYmxlcyBoYXZlIGEgc3BlY2lmaWMsIG9mdGVuIGZpbGUtbGV2ZWwsIHNjb3BlLiAgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgaGVyZSDigJMgaXMgaXQgc2ltcGx5IGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhhdCBzdHJ1Y3QsIGEgbWV0aG9kLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbnRlcmFjdGlvbiB3b3Jrcy4KClRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBkaXZlIGludG8gYHpzbWFsbG9jX21vcHNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhhdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgaG93IGB6c19wYWdlX21pZ3JhdGVgIGlzIGJlaW5nIHVzZWQgd2l0aGluIGl0LCBhbmQgaG93IGl0IGlzIHRoZW4gYmVpbmcgYXBwbGllZC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlcmUmIzM5O3MgYW55IHdlaXJkbmVzcyB3aXRoIHNjb3Bpbmcgb3IgaWYgSSBuZWVkIHRvIHdvcnJ5IGFib3V0IHNoYXJlZCByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzbWFsbG9jX21vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTc5MT1zdGF0aWMgdm9pZCB6c19wYWdlX3B1dGJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNzk0LVxubW0venNtYWxsb2MuYzoxNzk1OmNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG4tLVxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcbi0tXG5tbS96c21hbGxvYy5jLTIyNDUtI2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jOjIyNDY6XHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcdTAwMjZ6c21hbGxvY19tb3BzLCBQR1RZX3pzbWFsbG9jKTtcbm1tL3pzbWFsbG9jLmMtMjI0Ny1cdGlmIChyYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM2MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB6c21hbGxvYyBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBzZXRfbW92YWJsZV9vcHNgIGlzIHdoZXJlIHRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlZ2lzdGVyZWQuIFRoYXQgbWVhbnMgdGhlIGB6c19wYWdlX21pZ3JhdGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBhbmQgbWlncmF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aGVuIGl0IGJ1bXBzIGludG8gYSBwYWdlIHRoYXQmIzM5O3MgbWFya2VkIHdpdGggYFBHVFlfenNtYWxsb2NgLiBTaW5jZSBpdCYjMzk7cyBhIGNhbGxiYWNrLCB1c2luZyBgenNfcGFnZV9taWdyYXRlYCBhcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaW4gbXkgYW5hbHlzaXMgaXMgcGVyZmVjdGx5IHNvdW5kLiBJdCYjMzk7cyBhIGNsZWFuIGVudHJ5IHBvaW50LiBXZSBjYW4gYWxzbyB3ZWF2ZSBpbiBvdGhlciByZWxldmFudCBwaWVjZXMgdG8gc3RyZW5ndGhlbiB0aGUgdGVzdC4gVG8gbWFrZSBzdXJlIHpzbWFsbG9jIGlzIHRob3JvdWdobHkgdGVzdGVkLCBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYHpzX2NvbXBhY3RgIGluIHRoZSBtaXguIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1pbXBvcnRhbnQgYHpzX21hbGxvY2AgYW5kIGB6c19mcmVlYCBmdW5jdGlvbnMuIEdvdHRhIGNoZWNrIHRob3NlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBwYXRocy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHpzX21hbGxvY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzX21hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYz0xMjQzPXN0YXRpYyB1bnNpZ25lZCBsb25nIG9ial9tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsXG4tLVxubW0venNtYWxsb2MuYy0xMjg1LS8qKlxubW0venNtYWxsb2MuYzoxMjg2OiAqIHpzX21hbGxvYyAtIEFsbG9jYXRlIGJsb2NrIG9mIGdpdmVuIHNpemUgZnJvbSBwb29sLlxubW0venNtYWxsb2MuYy0xMjg3LSAqIEBwb29sOiBwb29sIHRvIGFsbG9jYXRlIGZyb21cbi0tXG5tbS96c21hbGxvYy5jLTEyOTUtICovXG5tbS96c21hbGxvYy5jOjEyOTY6dW5zaWduZWQgbG9uZyB6c19tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsXG5tbS96c21hbGxvYy5jLTEyOTctXHRcdFx0Y29uc3QgaW50IG5pZClcbi0tXG5tbS96c21hbGxvYy5jLTEzNTItfVxubW0venNtYWxsb2MuYzoxMzUzOkVYUE9SVF9TWU1CT0xfR1BMKHpzX21hbGxvYyk7XG5tbS96c21hbGxvYy5jLTEzNTQtXG4tLVxubW0venNtYWxsb2MuYz0yMDcxPXN0cnVjdCB6c19wb29sICp6c19jcmVhdGVfcG9vbChjb25zdCBjaGFyICpuYW1lKVxuLS1cbm1tL3pzbWFsbG9jLmMtMjExNi1cdFx0XHQgKiBUaGUgb2JqZWN0IHVzZXMgWlNfSEFORExFX1NJWkUgYnl0ZXMgdG8gc3RvcmUgdGhlXG5tbS96c21hbGxvYy5jOjIxMTc6XHRcdFx0ICogaGFuZGxlLiBXZSBuZWVkIHRvIHN1YnRyYWN0IGl0LCBiZWNhdXNlIHpzX21hbGxvYygpXG5tbS96c21hbGxvYy5jLTIxMTgtXHRcdFx0ICogdW5jb25kaXRpb25hbGx5IGFkZHMgaGFuZGxlIHNpemUgYmVmb3JlIGl0IHBlcmZvcm1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDQwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBac21hbGxvYyBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gaW50ZWdyYXRpbmcgWnNtYWxsb2MuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGJyaW5nIGludG8gdGhlIGRpc2N1c3Npb24gYXJlIGRlZmluaXRlbHkgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19wYWdlX21pZ3JhdGVgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBkeW5hbWljIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIHRoZSBtb3ZlbWVudCBvZiBwYWdlcywgcmVzcGVjdGl2ZWx5LiBXZSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgd2hvbGUgdGhpbmcgd29ya2luZywgSSB0aGluay4gYFpTTUFMTE9DYCBpdHNlbGYsIG9idmlvdXNseSwgYW5kIHRoZW4gYWxzbyBgWlJBTWAgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY29tcHJlc3Npb24sIGBDT01QQUNUSU9OYCB0byBhbGxvdyBmb3IgbWVyZ2luZyBvZiBtZW1vcnksIGFuZCBgTUlHUkFUSU9OYCBzbyB0aGF0IHdlIGNhbi4uLiBoYW5nIG9uIGEgc2Vjb25kLi4uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBNSUdSQVRJT05gIGlzIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlnIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgY2hhc2luZyBzaGFkb3dzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njg1PWNvbmZpZyBOVU1BX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjk1LVxubW0vS2NvbmZpZzo2OTY6Y29uZmlnIE1JR1JBVElPTlxubW0vS2NvbmZpZy02OTctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzY2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgc2VlIGBNSUdSQVRJT05gIGhlcmUsIGFuZCBpdCYjMzk7cyBhIGJvb2xlYW4gdmFyaWFibGUuIEludGVyZXN0aW5nIHRoYXQgaXQgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQgYXNzb2NpYXRlZCB3aXRoIGl0IOKAkyB0aGF0IGxpa2VseSBtZWFucyBpdHMgc3RhdGUsIHdoZXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgaXMgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgYE1JR1JBVElPTmAgc2V0dGluZy4gTGV0IG1lIGNoZWNrIHRoZSBvdGhlciBjb25maWdzLCBzdGFydGluZyB3aXRoIGBDT01QQUNUSU9OYC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIEl0JiMzOTtzIGhpZ2hseSBwcm9iYWJsZSBgQ09NUEFDVElPTmAgaGFzIGEgZGVwZW5kZW5jeSBvciBpcyBpbmZsdWVuY2luZyB0aGUgc2V0dGluZyBvZiBgTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTVBBQ1RJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjQ3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgTUlHUkFUSU9OYCBTZWxlY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgaW50byBteSBoZWFkIGlzIHRvIHBpbnBvaW50IHdoYXQmIzM5O3MgY3VycmVudGx5IHF1ZXJ5aW5nIG9yIHV0aWxpemluZyBgTUlHUkFUSU9OYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlJiMzOTtzIHNvbWV0aGluZyBzcGVjaWZpYyBvciB1bnVzdWFsIHdlJiMzOTtyZSBsb29raW5nIGZvciwgb3IgcG9zc2libHkgc29tZXRoaW5nIGluIHByb2dyZXNzLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBUaGUgYW5hbHlzaXMgY2Fubm90IHByb2NlZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbnMuIFNvIGxldCYjMzk7cyBpbW1lZGlhdGVseSBkaXZlIGludG8gZmluZGluZyB0aGUgc3BlY2lmaWMgcXVlcmllcyB1c2luZyBgTUlHUkFUSU9OYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1JR1JBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01OTE9Y29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcbi0tXG5tbS9LY29uZmlnLTU5NC1cdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcbm1tL0tjb25maWc6NTk1Olx0c2VsZWN0IE1JR1JBVElPTlxubW0vS2NvbmZpZy01OTYtXG4tLVxubW0vS2NvbmZpZz02NTQ9Y29uZmlnIENPTVBBQ1RJT05cbi0tXG5tbS9LY29uZmlnLTY1Ni1cdGRlZmF1bHQgeVxubW0vS2NvbmZpZzo2NTc6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY1OC1cdGRlcGVuZHMgb24gTU1VXG4tLVxubW0vS2NvbmZpZz02ODU9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02ODgtXHRkZXBlbmRzIG9uIE5VTUEgXHUwMDI2XHUwMDI2IE1NVVxubW0vS2NvbmZpZzo2ODk6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY5MC1cdGhlbHBcbi0tXG5tbS9LY29uZmlnPTEwNjc9Y29uZmlnIENNQVxuLS1cbm1tL0tjb25maWctMTA2OS1cdGRlcGVuZHMgb24gTU1VXG5tbS9LY29uZmlnOjEwNzA6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTEwNzEtXHRzZWxlY3QgTUVNT1JZX0lTT0xBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA3NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLi4uCgoqKk9wdGltaXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRoZSBQYXRoIHRvIEVmZmljaWVuY3kqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBob3cgdG8gb3B0aW1pemUgaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRoaXM6IGBDT01QQUNUSU9OYCBpcyB3aGF0IHRyaWdnZXJzIGBNSUdSQVRJT05gLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuIFRvIGFjaGlldmUgdGhhdCwgdGhlIG5haXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGVuYWJsZSBgWlNNQUxMT0NgLCBgWlJBTWAsIGFuZCBgQ09NUEFDVElPTmAuIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGEgYml0IG1vcmUgaW50cmljYXRlIHRoYW4gdGhhdC4KCkFoYSEgVXBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgWlJBTWAgaXRzZWxmIHB1bGxzIGluIGBaU01BTExPQ2AuIFNvIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LiBUaGlzIG1lYW5zIGVuYWJsaW5nIGJvdGggYFpSQU1gIGFuZCBgQ09NUEFDVElPTmAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBuZWVkcywgcmlnaHQ/IEkmIzM5O2QgbGlrZSB0byBqdXN0IHZlcmlmeSB0aGF0IGFsbCB0aGUgYFpSQU1gIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvciBqdXN0IHRvIGJlIHN1cmUsIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpSQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBSZWxhdGVkIEtlcm5lbCBDb21wb25lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBkaWZmZXJlbnQga2VybmVsIGNvbXBvbmVudHMuIEl0JiMzOTtzIGNsZWFyIHRoYXQgYFpSQU1gIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBCTE9DS2AsIGBTWVNGU2AsIGFuZCBgTU1VYC4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGp1c3QgbGlzdCBgWlJBTWAsIGBaU01BTExPQ2AsIGFuZCBgQ09NUEFDVElPTmAgYXMgdGhlIGNvcmUgZWxlbWVudHMsIGJ1dCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciB0byBpZGVudGlmeSBhbnl0aGluZyBJIG1heSBiZSBtaXNzaW5nLgoKSSBuZWVkIHRvIHJldmlzaXQgYHpzX3BhZ2VfbWlncmF0ZWAuIEkgcmVjYWxsIHRoYXQgaXQmIzM5O3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gSG1tLCBJIHNob3VsZCBjaGVjayB0aGF0IGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIEFoLCBoZXJlIGl0IGlzIGluIHRoZSBgenNtYWxsb2NfbW9wc2Agc3RydWN0dXJlLiBPa2F5LCBzbyB0aGF0JiMzOTtzIHRoZSBsaW5rLiBTbyBgenNfcGFnZV9pc29sYXRlYCwgYHpzX3BhZ2VfbWlncmF0ZWAsIGFuZCBgenNfcGFnZV9wdXRiYWNrYC4gR29vZC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqcmVsYXRlZCogdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIG15IG1lbnRhbCBtb2RlbCBoZXJlPyBMZXQmIzM5O3MgY29uc2lkZXIgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19jb21wYWN0YC4gYHpzX2NvbXBhY3RgIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoYXQmIzM5O3MgYSBzaWduYWwuIEkgc2hvdWxkIGRlZmluaXRlbHkgZXhhbWluZSBgenNfY29tcGFjdGAgbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzX2NvbXBhY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTg3MT1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c19jYW5fY29tcGFjdChzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MpXG4tLVxubW0venNtYWxsb2MuYy0xODg1LVxubW0venNtYWxsb2MuYzoxODg2OnN0YXRpYyB1bnNpZ25lZCBsb25nIF9fenNfY29tcGFjdChzdHJ1Y3QgenNfcG9vbCAqcG9vbCxcbm1tL3pzbWFsbG9jLmMtMTg4Ny1cdFx0XHRcdCAgc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTk0OS1cbm1tL3pzbWFsbG9jLmM6MTk1MDp1bnNpZ25lZCBsb25nIHpzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXG5tbS96c21hbGxvYy5jLTE5NTEte1xuLS1cbm1tL3pzbWFsbG9jLmMtMTk1Ny1cdCAqIFBvb2wgY29tcGFjdGlvbiBpcyBwZXJmb3JtZWQgdW5kZXIgcG9vbC1cdTAwM2Vsb2NrIHNvIGl0IGlzIGJhc2ljYWxseVxubW0venNtYWxsb2MuYzoxOTU4Olx0ICogc2luZ2xlLXRocmVhZGVkLiBIYXZpbmcgbW9yZSB0aGFuIG9uZSB0aHJlYWQgaW4gX196c19jb21wYWN0KClcbm1tL3pzbWFsbG9jLmMtMTk1OS1cdCAqIHdpbGwgaW5jcmVhc2UgcG9vbC1cdTAwM2Vsb2NrIGNvbnRlbnRpb24sIHdoaWNoIHdpbGwgaW1wYWN0IG90aGVyXG4tLVxubW0venNtYWxsb2MuYy0xOTY4LVx0XHRcdGNvbnRpbnVlO1xubW0venNtYWxsb2MuYzoxOTY5Olx0XHRwYWdlc19mcmVlZCAmIzQzOz0gX196c19jb21wYWN0KHBvb2wsIGNsYXNzKTtcbm1tL3pzbWFsbG9jLmMtMTk3MC1cdH1cbi0tXG5tbS96c21hbGxvYy5jLTE5NzUtfVxubW0venNtYWxsb2MuYzoxOTc2OkVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xubW0venNtYWxsb2MuYy0xOTc3LVxuLS1cbm1tL3pzbWFsbG9jLmM9MTk4ND1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c19zaHJpbmtlcl9zY2FuKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsXG4tLVxubW0venNtYWxsb2MuYy0xOTk0LVx0ICovXG5tbS96c21hbGxvYy5jOjE5OTU6XHRwYWdlc19mcmVlZCA9IHpzX2NvbXBhY3QocG9vbCk7XG5tbS96c21hbGxvYy5jLTE5OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjI3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDQ0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgenNtYWxsb2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGlzIHpzbWFsbG9jIGNvZGUuIFRoZSBwcmltYXJ5IGZ1bmN0aW9uIGZvciBwYWdlIG1pZ3JhdGlvbiwgYHpzX3BhZ2VfbWlncmF0ZWAsIGlzIGluIGZvY3VzIGhlcmUsIGJ1dCBhbHNvLCBJIHNob3VsZCBjb25zaWRlciBvdGhlciBrZXkgZW50cnkgcG9pbnRzLiBgenNfY29tcGFjdGAgaXMgb2J2aW91c2x5IGludm9sdmVkIGluIHNocmlua2luZywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGZ1enppbmcgY292ZXJzIHRoZSBwYWdlIG1pZ3JhdGlvbiBwYXRoIHRvby4gSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIGB6c19wYWdlX21pZ3JhdGVgLCBhbG9uZyB3aXRoIGB6c19tYWxsb2NgIGFuZCBgenNfZnJlZWAgaW4gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCB0byBlbnN1cmUgdGhlIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBhcmUgaGVhdmlseSBmdXp6ZWQgYWxvbmdzaWRlIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4KCldhaXQgYSBtb21lbnQsIEkgcmVjYWxsIGB6c19wYWdlX21pZ3JhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgcHJvbXB0IHN0cmVzc2VkIHRoYXQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGFyZSBwcmVmZXJyZWQuIEhvd2V2ZXIsIGJlY2F1c2UgYHpzX3BhZ2VfbWlncmF0ZWAmIzM5O3MgYWRkcmVzcyBpcyB0YWtlbiwgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSBpdCwgYW5kIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUuIEdvb2QuIFRoaXMgaXMgY29uZmlybWVkLiBJJiMzOTtsbCBpbmNsdWRlIHRob3NlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGNvdmVyIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIHRvby4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBpZiBvbmx5IGBaU01BTExPQ2AgaXMgc3VmZmljaWVudC4gWWVzLCBgWlNNQUxMT0NgIGVzc2VudGlhbGx5IGRlZmluZXMgdGhlIHN1YnN5c3RlbS4gQnV0IHRoZSBjb2RlIGFsc28gbmVlZHMgYENPTVBBQ1RJT05gIHRvIGNvbXBpbGUgYHpzX3BhZ2VfbWlncmF0ZWAsIHNvIG15IGBFbmFibGVDb25maWdzYCBsaXN0IG5lZWRzIHRvIGJlIGBbJiMzNDtaU01BTExPQyYjMzQ7LCAmIzM0O1pSQU0mIzM0OywgJiMzNDtDT01QQUNUSU9OJiMzNDtdYC4gYFpSQU1gIGlzIG5lZWRlZCB0byBlbmFibGUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGluIHRoZSBrZXJuZWwuCgpGaW5hbGx5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoaXMgcGF0Y2guIEFoYSEKCmBgYGMKLQl3cml0ZV91bmxvY2soJmFtcDtwb29sLSZndDtsb2NrKTsKLQlzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKTsKIAl6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7Y2xhc3MtJmd0O2xvY2spOwomIzQzOwl3cml0ZV91bmxvY2soJmFtcDtwb29sLSZndDtsb2NrKTsKYGBgCgpUaGlzIGlzIGZpeGluZyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgd2l0aGluIGB6c19wYWdlX21pZ3JhdGVgLiBUaGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLSZndDtsb2NrYCwgYGNsYXNzLSZndDtsb2NrYCwgYW5kIGB6c3BhZ2VgIGhhcyBiZWVuIHJldmVyc2VkIHRvIG1hdGNoIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGltcGFjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzIGFuZCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuIFNvLCB0aGlzIGlzIGEgKmRlZmluaXRlKiBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpUaGVyZWZvcmU6CgoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywgJiMzNDt6c19tYWxsb2MmIzM0OywgJiMzNDt6c19mcmVlJiMzNDtdYAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7WlNNQUxMT0MmIzM0OywgJiMzNDtaUkFNJiMzNDssICYjMzQ7Q09NUEFDVElPTiYjMzQ7XWAKCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaU01BTExPQyYjMzQ7LAogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywKICAgICYjMzQ7enNfbWFsbG9jJiMzNDssCiAgICAmIzM0O3pzX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NrIG9yZGVyaW5nIGlzc3VlIGluIGB6c19wYWdlX21pZ3JhdGVgIGJ5IHJldmVyc2luZyB0aGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLVx1MDAzZWxvY2tgLCBgY2xhc3MtXHUwMDNlbG9ja2AsIGFuZCBgenNwYWdlYCB0byBtYXRjaCB0aGUgcmV2ZXJzZSBvZiB0aGUgYWNxdWlzaXRpb24gb3JkZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBkZWFkbG9ja3Mgb3IgbG9ja2RlcCB3YXJuaW5ncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU0Ljg0MTc0OTE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDU0NTI4OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU0Ljg0MTc4MzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQ2MDEzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjZhZTI3Y2UxNjc3MjVlMzI0Y2ZhNzlhYWI5ZmI0N2VmM2U0NWUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXFxuaW5kZXggODNmNTgyMGM0NWY5My4uYjA5Mjk5MTE1ODg2NyAxMDA2NDRcXG4tLS0gYS9tbS96c21hbGxvYy5jXFxuKysrIGIvbW0venNtYWxsb2MuY1xcbkBAIC0xNzcyLDkgKzE3NzIsOSBAQCBzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuIFxcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcXG4gXFx0ICogaXQncyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suXFxuIFxcdCAqL1xcbi1cXHR3cml0ZV91bmxvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbi1cXHRzcGluX3VubG9jayhcXHUwMDI2Y2xhc3MtXFx1MDAzZWxvY2spO1xcbiBcXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuK1xcdHdyaXRlX3VubG9jayhcXHUwMDI2cG9vbC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHR6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7XFxuIFxcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTU6NTUuMzU3MjcwODQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM1OTM4OTk1ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmNmFlMjdjZTE2NzcyNWUzMjRjZmE3OWFhYjlmYjQ3ZWYzZTQ1ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMjoxNTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXG5pbmRleCA4M2Y1ODIwYzQ1ZjkzLi5iMDkyOTkxMTU4ODY3IDEwMDY0NFxuLS0tIGEvbW0venNtYWxsb2MuY1xuKysrIGIvbW0venNtYWxsb2MuY1xuQEAgLTE3NzIsOSArMTc3Miw5IEBAIHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcbiBcdCAqIGl0J3Mgb2theSB0byByZWxlYXNlIG1pZ3JhdGlvbl9sb2NrLlxuIFx0ICovXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNmNsYXNzLVx1MDAzZWxvY2spO1xuIFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4rXHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbiBcbiBcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcbiBcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU1LjM1NzI3MjcwNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTk3MDIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgWnNtYWxsb2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgbW0venNtYWxsb2MuY2AuIEl0J3MgZm9jdXNlZCBvbiBgenNfcGFnZV9taWdyYXRlYCwgYW5kIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYSByZW9yZGVyaW5nIG9mIHVubG9jayBvcGVyYXRpb25zLiBIbW0sIGludGVyZXN0aW5nLiBUaGUgY29kZSBiZWZvcmUgdGhlIHBhdGNoIHNob3dzIGB3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKWAsIHRoZW4gYHNwaW5fdW5sb2NrKFx1MDAyNmNsYXNzLVx1MDAzZWxvY2spYCwgYW5kIGZpbmFsbHkgYHpzcGFnZV93cml0ZV91bmxvY2soenNwYWdlKWAuIE5vdywgdGhlIHBhdGNoIHByb3Bvc2VzIGZsaXBwaW5nIHRoZSBvcmRlciB0byBgenNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpYCwgdGhlbiBgc3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jaylgLCBmb2xsb3dlZCBieSBgd3JpdGVfdW5sb2NrKFx1MDAyNnBvb2wtXHUwMDNlbG9jaylgLlxuXG5UaGlzIHNjcmVhbXMgbG9jayBvcmRlcmluZyBpc3N1ZSBmaXggdG8gbWUsIG9yIHBvdGVudGlhbGx5IHNvbWV0aGluZyByZWxhdGVkIHRvIHByZXZlbnRpbmcgYSBkZWFkbG9jay4gVGhlIGZ1bmN0aW9uIG9idmlvdXNseSBpbnZvbHZlcyBtaWdyYXRpbmcgcGFnZXMgd2l0aGluIHRoZSB6c21hbGxvYyBwb29sLCBzbyBjb250ZW50aW9uIGlzIHByb2JhYmx5IGV4cGVjdGVkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHJlb3JkZXJpbmcuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgaXMgcHJvdGVjdGVkIGJ5IHRoZXNlIGxvY2tzPyBJJ2xsIGNoZWNrIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQgcGVyaGFwcyByZWxhdGVkIGNvZGUsIHRvIGV2YWx1YXRlIHRoZSBjaGFuZ2UncyBpbXBhY3QgYW5kIGlmIGl0J3MgYWRkcmVzc2luZyBhbiBhY3R1YWwgY29uY3VycmVuY3kgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNTo1OS4zNzY5Nzg1NzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwMDQxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienNfcGFnZV9taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venNtYWxsb2MuYz0xNjc1PXN0YXRpYyBib29sIHpzX3BhZ2VfaXNvbGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2RlX3QgbW9kZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTY4NC1cXG5tbS96c21hbGxvYy5jOjE2ODU6c3RhdGljIGludCB6c19wYWdlX21pZ3JhdGUoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzbWFsbG9jLmMtMTY4Ni1cXHRcXHRlbnVtIG1pZ3JhdGVfbW9kZSBtb2RlKVxcbi0tXFxubW0venNtYWxsb2MuYz0xNzk1PWNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcXG5tbS96c21hbGxvYy5jLTE3OTYtXFx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcXG5tbS96c21hbGxvYy5jOjE3OTc6XFx0Lm1pZ3JhdGVfcGFnZSA9IHpzX3BhZ2VfbWlncmF0ZSxcXG5tbS96c21hbGxvYy5jLTE3OTgtXFx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTU6NTkuNDMyOTk0Mzk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2Nzg3MzY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipEaXZpbmcgaW50byB0aGUgWnNtYWxsb2MgUGFnZSBNaWdyYXRpb24gSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgenNfcGFnZV9taWdyYXRlYC4gUmlnaHQsIHRoYXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGB6c21hbGxvY19tb3BzYCBzdHJ1Y3R1cmUsIHRoZSBtZW1vcnkgb3BlcmF0aW9ucyBmb3IgenNtYWxsb2MuIE15IGZvY3VzIGhlcmUgaXMgcGFnZSBtaWdyYXRpb24sIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsaW5nIHRoaXMgc3BlY2lmaWMgZmVhdHVyZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSB6c21hbGxvYyBpbXBsZW1lbnRhdGlvbi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW52b2x2ZWQgd2l0aCBgenNtYWxsb2NgIGluIHRoZSBmaXJzdCBwbGFjZT8gV2hhdCB0cmlnZ2VycyB0aGUgYWxsb2NhdGlvbiBhbmQgdXNhZ2Ugb2YgbWVtb3J5PyBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjAyLjIwMDg3MTQxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE5NzM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlNNQUxMT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTExND1jb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXFxuLS1cXG5tbS9LY29uZmlnLTEyNC1cXG5tbS9LY29uZmlnOjEyNTpjb25maWcgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZVxcbi0tXFxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcXFwiWnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFxcdTAwMjYgenJhbVxcXCJcXG5tbS9LY29uZmlnLTEzNC1cXG5tbS9LY29uZmlnOjEzNTpjb25maWcgWlNNQUxMT0NfU1RBVFxcbm1tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkV4cG9ydCB6c21hbGxvYyBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMtXFxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcXG5tbS9LY29uZmlnLTE0NS1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjAyLjI1NDA3Njk5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjkyNzc2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBaU01BTExPQydzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBaU01BTExPQ2Ag4oCTIGl0J3MgYSB0cmlzdGF0ZSBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBidWlsdCBhcyBhIGJ1aWx0LWluIG1vZHVsZSwgYSBsb2FkYWJsZSBtb2R1bGUsIG9yIG5vdCBhdCBhbGwuIE15IGZvY3VzIGhlcmUgaXMgaG93IGl0J3MgYWN0aXZhdGVkOyBpdCdzIHNlbGVjdGVkLCBkaXJlY3RseSwgYnkgZWl0aGVyIGBaUkFNYCBvciBgWlNXQVBgLlxuXG5UbyB0cmFjZSBiYWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCB3aGVyZSBpdCdzIGluc3RhbnRpYXRlZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgbW0vS2NvbmZpZ2Ag4oCTIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb250ZXh0IOKAkyBhbmQgYWxzbyBsb29rIGluIGBkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ2AgaW4gY2FzZSBpdCdzIGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoZSB6cmFtIGRyaXZlciBpdHNlbGYuIFRoYXQgd2lsbCBwaW5wb2ludCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9kdWxlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBjb21wcmVzc2VkIFJBTSAoenJhbSkgYW5kIHN3YXAgKHpzd2FwKS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjA1LjMyMzM1NzA5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA4ODg2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBaU01BTExPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IE1NVVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjU6XFx0c2VsZWN0IFpTTUFMTE9DXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnPTIyPWNvbmZpZyBaU1dBUFxcbi0tXFxubW0vS2NvbmZpZy0yNS1cXHRzZWxlY3QgQ1JZUFRPXFxubW0vS2NvbmZpZzoyNjpcXHRzZWxlY3QgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTI3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MDcuNDMyMjQ5NjE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0ODMwNzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipaU01BTExPQyBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBaU01BTExPQ2AgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW5ldmVyIGBaUkFNYCBvciBgWlNXQVBgIGFyZSB0dXJuZWQgb24uIFRoYXQncyBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlIHNob3VsZCAqcHJvYmFibHkqIGp1c3QgZW5hYmxlIGBaU01BTExPQ2AgZGlyZWN0bHksIGJ1dCB0aGVuIEkgcmVtZW1iZXIgaXQncyBhIHRyaXN0YXRlIG9wdGlvbiwgc2VsZWN0ZWQgYnkgYFpSQU1gIGFuZCBgWlNXQVBgLiBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBlbmFibGluZyBlaXRoZXIgYFpTTUFMTE9DYCBvciBgWlJBTWAgd291bGQgYWNoaWV2ZSB0aGUgc2FtZSBvdXRjb21lLlxuXG5XYWl0IGEgc2Vjb25kLiBTaW5jZSBgWlNNQUxMT0NgICppcyogYSB0cmlzdGF0ZSBvcHRpb24sIHdlICpjYW4qIGp1c3QgZW5hYmxlIGl0IGRpcmVjdGx5LiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBhbmQgaXQgbWFrZXMgdGhlIGRlcGVuZGVuY3kgY2xlYXJlci5cblxuQWxyaWdodCwgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBtb3JlIGZ1bGx5LiBJcyBpdCBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkPyBUaW1lIHRvIHZlcmlmeSB0aGF0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSwgbGlrZWx5IGBtbS96c21hbGxvYy5jYCwgdG8gYmUgY2VydGFpbi4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTAuOTgwNTYxMTk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjg0NzcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c19wYWdlX21pZ3JhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTE2NzU9c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjg0LVxcbm1tL3pzbWFsbG9jLmM6MTY4NTpzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxubW0venNtYWxsb2MuYy0xNjg2LVxcdFxcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXFxuLS1cXG5tbS96c21hbGxvYy5jPTE3OTU9Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cXHQuaXNvbGF0ZV9wYWdlID0genNfcGFnZV9pc29sYXRlLFxcbm1tL3pzbWFsbG9jLmM6MTc5NzpcXHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxcbm1tL3pzbWFsbG9jLmMtMTc5OC1cXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxMS4wMzM0MTczNjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ1NjYwMTA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYHpzX3BhZ2VfbWlncmF0ZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGRldGVybWluZSBpZiB0aGUgYHpzX3BhZ2VfbWlncmF0ZWAgZnVuY3Rpb24gaXMgd3JhcHBlZCB3aXRoaW4gYSBwcmVwcm9jZXNzb3IgYCNpZmRlZmAgYmxvY2suIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBwbGF0Zm9ybS1zcGVjaWZpYyBvciBmZWF0dXJlLWZsYWdnZWQgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXRzIGluY2x1c2lvbiBpbiB0aGUgYnVpbGQgaXMgY29uZGl0aW9uYWwgb24gc29tZSBvdGhlciBtYWNybyBkZWZpbml0aW9uLiBEZXBlbmRpbmcgb24gdGhlIGFuc3dlciwgaXQnbGwgaW5kaWNhdGUgYSBncmVhdCBkZWFsIGFib3V0IHRoZSBvdmVyYWxsIHByb2plY3Qgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTMuNDkwMDIyNzg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQzMzExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZiBDT05GSUdfQ09NUEFDVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS96c21hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3pzbWFsbG9jLmM9MTk5PXN0cnVjdCB6c19wb29sIHtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjEzLSNlbmRpZlxcbm1tL3pzbWFsbG9jLmM6MjE0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMjE1LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XFxuLS1cXG5tbS96c21hbGxvYy5jPTM2MD1zdGF0aWMgYm9vbCBac0h1Z2VQYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMzY0LVxcbm1tL3pzbWFsbG9jLmM6MzY1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMzY2LXN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCk7XFxuLS1cXG5tbS96c21hbGxvYy5jPTE1OTQ9c3RhdGljIGludCBwdXRiYWNrX3pzcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTYwMy1cXG5tbS96c21hbGxvYy5jOjE2MDQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0xNjA1LS8qXFxuLS1cXG5tbS96c21hbGxvYy5jPTE2MDk9c3RhdGljIHZvaWQgbG9ja196c3BhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjQ3LVxcbm1tL3pzbWFsbG9jLmM6MTY0ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTE2NDktXFxuLS1cXG5tbS96c21hbGxvYy5jPTIyMzc9c3RhdGljIGludCBfX2luaXQgenNfaW5pdCh2b2lkKVxcbi0tXFxubW0venNtYWxsb2MuYy0yMjQ0LVxcbm1tL3pzbWFsbG9jLmM6MjI0NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTIyNDYtXFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbi0tXFxubW0venNtYWxsb2MuYz0yMjU2PXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXFxubW0venNtYWxsb2MuYy0yMjU3LXtcXG5tbS96c21hbGxvYy5jOjIyNTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yMjU5LVxcdHNldF9tb3ZhYmxlX29wcyhOVUxMLCBQR1RZX3pzbWFsbG9jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTMuNTQzNDYyNjk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjAxNzkxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgQ29tcGFjdGlvbiBEZXBlbmRlbmN5IGluIHpzbWFsbG9jKipcblxuUmlnaHQsIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBXZSBjYW4ndCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgb2YgenNtYWxsb2MgYW5kIGV4YW1pbmUgdGhlIHBhZ2UgbWlncmF0aW9uIGxvZ2ljLiBMZXQncyBzZWUgaG93IGB6c19wYWdlX21pZ3JhdGVgIGlzIGltcGxlbWVudGVkLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSB6b25lIGFsbG9jYXRvciBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBtb3ZlbWVudCBvZiBwYWdlcyB3aXRoaW4gdGhlIHpzbWFsbG9jIHBvb2wuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgY29tcGFjdGlvbiBzdWJzeXN0ZW0gdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZXkgY2FuIG1vdmUgYSBwYXJ0aWN1bGFyIHBhZ2UuIFRoaXMgaGFzIHRvIGJlIGluIGBtbS96c21hbGxvYy5jYCwgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxNi44MDM2NDUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0venNtYWxsb2MuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTY0ODpcXHQjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG4xNjQ5OlxcdFxcbjE2NTA6XFx0c3RhdGljIHZvaWQgcmVwbGFjZV9zdWJfcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSxcXG4xNjUxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB6cGRlc2MgKm5ld3pwZGVzYywgc3RydWN0IHpwZGVzYyAqb2xkenBkZXNjKVxcbjE2NTI6XFx0e1xcbjE2NTM6XFx0XFx0c3RydWN0IHpwZGVzYyAqenBkZXNjO1xcbjE2NTQ6XFx0XFx0c3RydWN0IHpwZGVzYyAqenBkZXNjc1taU19NQVhfUEFHRVNfUEVSX1pTUEFHRV0gPSB7TlVMTCwgfTtcXG4xNjU1OlxcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9vYmpfb2Zmc2V0O1xcbjE2NTY6XFx0XFx0aW50IGlkeCA9IDA7XFxuMTY1NzpcXHRcXG4xNjU4OlxcdFxcdHpwZGVzYyA9IGdldF9maXJzdF96cGRlc2MoenNwYWdlKTtcXG4xNjU5OlxcdFxcdGRvIHtcXG4xNjYwOlxcdFxcdFxcdGlmICh6cGRlc2MgPT0gb2xkenBkZXNjKVxcbjE2NjE6XFx0XFx0XFx0XFx0enBkZXNjc1tpZHhdID0gbmV3enBkZXNjO1xcbjE2NjI6XFx0XFx0XFx0ZWxzZVxcbjE2NjM6XFx0XFx0XFx0XFx0enBkZXNjc1tpZHhdID0genBkZXNjO1xcbjE2NjQ6XFx0XFx0XFx0aWR4Kys7XFxuMTY2NTpcXHRcXHR9IHdoaWxlICgoenBkZXNjID0gZ2V0X25leHRfenBkZXNjKHpwZGVzYykpICE9IE5VTEwpO1xcbjE2NjY6XFx0XFxuMTY2NzpcXHRcXHRjcmVhdGVfcGFnZV9jaGFpbihjbGFzcywgenNwYWdlLCB6cGRlc2NzKTtcXG4xNjY4OlxcdFxcdGZpcnN0X29ial9vZmZzZXQgPSBnZXRfZmlyc3Rfb2JqX29mZnNldChvbGR6cGRlc2MpO1xcbjE2Njk6XFx0XFx0c2V0X2ZpcnN0X29ial9vZmZzZXQobmV3enBkZXNjLCBmaXJzdF9vYmpfb2Zmc2V0KTtcXG4xNjcwOlxcdFxcdGlmICh1bmxpa2VseShac0h1Z2VQYWdlKHpzcGFnZSkpKVxcbjE2NzE6XFx0XFx0XFx0bmV3enBkZXNjLVxcdTAwM2VoYW5kbGUgPSBvbGR6cGRlc2MtXFx1MDAzZWhhbmRsZTtcXG4xNjcyOlxcdFxcdF9fenBkZXNjX3NldF9tb3ZhYmxlKG5ld3pwZGVzYyk7XFxuMTY3MzpcXHR9XFxuMTY3NDpcXHRcXG4xNjc1OlxcdHN0YXRpYyBib29sIHpzX3BhZ2VfaXNvbGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2RlX3QgbW9kZSlcXG4xNjc2OlxcdHtcXG4xNjc3OlxcdFxcdC8qXFxuMTY3ODpcXHRcXHQgKiBQYWdlIGlzIGxvY2tlZCBzbyB6c3BhZ2UgY2FuJ3QgYmUgZGVzdHJveWVkIGNvbmN1cnJlbnRseVxcbjE2Nzk6XFx0XFx0ICogKHNlZSBmcmVlX3pzcGFnZSgpKS4gQnV0IGlmIHRoZSBwYWdlIHdhcyBhbHJlYWR5IGRlc3Ryb3llZFxcbjE2ODA6XFx0XFx0ICogKHNlZSByZXNldF96cGRlc2MoKSksIHJlZnVzZSBpc29sYXRpb24gaGVyZS5cXG4xNjgxOlxcdFxcdCAqL1xcbjE2ODI6XFx0XFx0cmV0dXJuIHBhZ2VfenBkZXNjKHBhZ2UpLVxcdTAwM2V6c3BhZ2U7XFxuMTY4MzpcXHR9XFxuMTY4NDpcXHRcXG4xNjg1OlxcdHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4xNjg2OlxcdFxcdFxcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXFxuMTY4NzpcXHR7XFxuMTY4ODpcXHRcXHRzdHJ1Y3QgenNfcG9vbCAqcG9vbDtcXG4xNjg5OlxcdFxcdHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcztcXG4xNjkwOlxcdFxcdHN0cnVjdCB6c3BhZ2UgKnpzcGFnZTtcXG4xNjkxOlxcdFxcdHN0cnVjdCB6cGRlc2MgKmR1bW15O1xcbjE2OTI6XFx0XFx0c3RydWN0IHpwZGVzYyAqbmV3enBkZXNjID0gcGFnZV96cGRlc2MobmV3cGFnZSk7XFxuMTY5MzpcXHRcXHRzdHJ1Y3QgenBkZXNjICp6cGRlc2MgPSBwYWdlX3pwZGVzYyhwYWdlKTtcXG4xNjk0OlxcdFxcdHZvaWQgKnNfYWRkciwgKmRfYWRkciwgKmFkZHI7XFxuMTY5NTpcXHRcXHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xcbjE2OTY6XFx0XFx0dW5zaWduZWQgbG9uZyBoYW5kbGU7XFxuMTY5NzpcXHRcXHR1bnNpZ25lZCBsb25nIG9sZF9vYmosIG5ld19vYmo7XFxuMTY5ODpcXHRcXHR1bnNpZ25lZCBpbnQgb2JqX2lkeDtcXG4xNjk5OlxcdFxcbjE3MDA6XFx0XFx0LypcXG4xNzAxOlxcdFxcdCAqIFRPRE86IG5vdGhpbmcgcHJldmVudHMgYSB6c3BhZ2UgZnJvbSBnZXR0aW5nIGRlc3Ryb3llZCB3aGlsZVxcbjE3MDI6XFx0XFx0ICogaXQgaXMgaXNvbGF0ZWQgZm9yIG1pZ3JhdGlvbiwgYXMgdGhlIHBhZ2UgbG9jayBpcyB0ZW1wb3JhcmlseVxcbjE3MDM6XFx0XFx0ICogZHJvcHBlZCBhZnRlciB6c19wYWdlX2lzb2xhdGUoKSBzdWNjZWVkZWQ6IHdlIHNob3VsZCByZXdvcmsgdGhhdFxcbjE3MDQ6XFx0XFx0ICogYW5kIGRlZmVyIGRlc3Ryb3lpbmcgc3VjaCBwYWdlcyBvbmNlIHRoZXkgYXJlIHVuLWlzb2xhdGVkIChwdXRiYWNrKVxcbjE3MDU6XFx0XFx0ICogaW5zdGVhZC5cXG4xNzA2OlxcdFxcdCAqL1xcbjE3MDc6XFx0XFx0aWYgKCF6cGRlc2MtXFx1MDAzZXpzcGFnZSlcXG4xNzA4OlxcdFxcdFxcdHJldHVybiAwO1xcbjE3MDk6XFx0XFxuMTcxMDpcXHRcXHQvKiBUaGUgcGFnZSBpcyBsb2NrZWQsIHNvIHRoaXMgcG9pbnRlciBtdXN0IHJlbWFpbiB2YWxpZCAqL1xcbjE3MTE6XFx0XFx0enNwYWdlID0gZ2V0X3pzcGFnZSh6cGRlc2MpO1xcbjE3MTI6XFx0XFx0cG9vbCA9IHpzcGFnZS1cXHUwMDNlcG9vbDtcXG4xNzEzOlxcdFxcbjE3MTQ6XFx0XFx0LypcXG4xNzE1OlxcdFxcdCAqIFRoZSBwb29sIG1pZ3JhdGVfbG9jayBwcm90ZWN0cyB0aGUgcmFjZSBiZXR3ZWVuIHpwYWdlIG1pZ3JhdGlvblxcbjE3MTY6XFx0XFx0ICogYW5kIHpzX2ZyZWUuXFxuMTcxNzpcXHRcXHQgKi9cXG4xNzE4OlxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbjE3MTk6XFx0XFx0Y2xhc3MgPSB6c3BhZ2VfY2xhc3MocG9vbCwgenNwYWdlKTtcXG4xNzIwOlxcdFxcbjE3MjE6XFx0XFx0LypcXG4xNzIyOlxcdFxcdCAqIHRoZSBjbGFzcyBsb2NrIHByb3RlY3RzIHpwYWdlIGFsbG9jL2ZyZWUgaW4gdGhlIHpzcGFnZS5cXG4xNzIzOlxcdFxcdCAqL1xcbjE3MjQ6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTcyNTpcXHRcXHQvKiB0aGUgenNwYWdlIHdyaXRlX2xvY2sgcHJvdGVjdHMgenBhZ2UgYWNjZXNzIHZpYSB6c19vYmpfcmVhZC93cml0ZSgpICovXFxuMTcyNjpcXHRcXHRpZiAoIXpzcGFnZV93cml0ZV90cnlsb2NrKHpzcGFnZSkpIHtcXG4xNzI3OlxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTcyODpcXHRcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbjE3Mjk6XFx0XFx0XFx0LypcXG4xNzMwOlxcdFxcdFxcdCAqIFJldHVybiAtRUJVU1kgYnV0IG5vdCAtRUFHQUlOOiB0aGUgenNwYWdlJ3MgcmVhZGVyLWxvY2tcXG4xNzMxOlxcdFxcdFxcdCAqIG93bmVyIG1heSBob2xkIHRoZSBsb2NrIGZvciBhbiB1bmJvdW5kZWQgZHVyYXRpb24gZHVlIHRvIGFcXG4xNzMyOlxcdFxcdFxcdCAqIHNsb3cgZGVjb21wcmVzc2lvbiBvciByZWFkZXItbG9jayBvd25lciBwcmVlbXB0aW9uLlxcbjE3MzM6XFx0XFx0XFx0ICogU2luY2UgbWlncmF0aW9uIHJldHJpZXMgYXJlIGJvdW5kZWQgYnlcXG4xNzM0OlxcdFxcdFxcdCAqIE5SX01BWF9NSUdSQVRFX1BBR0VTX1JFVFJZIGFuZCBwZXJmb3JtZWQgd2l0aCB2aXJ0dWFsbHkgbm9cXG4xNzM1OlxcdFxcdFxcdCAqIGRlbGF5IGJldHdlZW4gYXR0ZW1wdHMsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgbG9jayB3aWxsXFxuMTczNjpcXHRcXHRcXHQgKiBiZSByZWxlYXNlZCBpbiB0aW1lIGZvciBhIHJldHJ5IHRvIHN1Y2NlZWQuXFxuMTczNzpcXHRcXHRcXHQgKiAtRUFHQUlOIGltcGxpZXMgXFxcInRyeSBhZ2FpbiBzb29uXFxcIiwgd2hpY2ggZG9lcyBub3QgaG9sZCBoZXJlLlxcbjE3Mzg6XFx0XFx0XFx0ICogLUVCVVNZIG1vcmUgYWNjdXJhdGVseSBjb252ZXlzIFxcXCJyZXNvdXJjZSBpcyBvY2N1cGllZCxcXG4xNzM5OlxcdFxcdFxcdCAqIG1pZ3JhdGlvbiBjYW5ub3QgcHJvY2VlZFxcXCIuXFxuMTc0MDpcXHRcXHRcXHQgKi9cXG4xNzQxOlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMTc0MjpcXHRcXHR9XFxuMTc0MzpcXHRcXG4xNzQ0OlxcdFxcdC8qIFdlJ3JlIGNvbW1pdHRlZCwgdGVsbCB0aGUgd29ybGQgdGhhdCB0aGlzIGlzIGEgWnNtYWxsb2MgcGFnZS4gKi9cXG4xNzQ1OlxcdFxcdF9fenBkZXNjX3NldF96c21hbGxvYyhuZXd6cGRlc2MpO1xcbjE3NDY6XFx0XFxuMTc0NzpcXHRcXHRvZmZzZXQgPSBnZXRfZmlyc3Rfb2JqX29mZnNldCh6cGRlc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxNi44MDM4MjE2MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxOTA5MjI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbCBmb3IgYHpzX3BhZ2VfbWlncmF0ZWAqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcy4gVGhlIGluaXRpYWwgaW5zdHJ1Y3Rpb24gaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBcIkxldCdzIHJlYWQgdGhlIHJlc3Qgb2YgYHpzX3BhZ2VfbWlncmF0ZWAuXCIgVGhhdCBpbXBsaWVzIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgY29kZSBzZWdtZW50LCBsaWtlbHkgd2l0aGluIGEgbGFyZ2VyIHN5c3RlbS4gVGhpcyBpc24ndCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgd2UncmUgZ29pbmcgaW4gd2l0aCBhIHRhcmdldGVkIHB1cnBvc2UsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSwgZGVidWdnaW5nIGFuIGlzc3VlLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgaXRzIGJlaGF2aW9yLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFtIEkgbG9va2luZyBmb3I/XCIgQXJlIHdlIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgZmluZCBhIHNwZWNpZmljIGFsZ29yaXRobSBpbXBsZW1lbnRhdGlvbiwgb3IgY2hlY2sgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gVGhlIGNvbnRleHQgaXMgY3J1Y2lhbDsgd2l0aG91dCBpdCwgdGhpcyBpcyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzQ3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxOS44MjI5MTc0ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3pzbWFsbG9jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc0OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3NDg6XFx0XFx0c19hZGRyID0ga21hcF9sb2NhbF96cGRlc2MoenBkZXNjKTtcXG4xNzQ5OlxcdFxcbjE3NTA6XFx0XFx0LypcXG4xNzUxOlxcdFxcdCAqIEhlcmUsIGFueSB1c2VyIGNhbm5vdCBhY2Nlc3MgYWxsIG9iamVjdHMgaW4gdGhlIHpzcGFnZSBzbyBsZXQncyBtb3ZlLlxcbjE3NTI6XFx0XFx0ICovXFxuMTc1MzpcXHRcXHRkX2FkZHIgPSBrbWFwX2xvY2FsX3pwZGVzYyhuZXd6cGRlc2MpO1xcbjE3NTQ6XFx0XFx0Y29weV9wYWdlKGRfYWRkciwgc19hZGRyKTtcXG4xNzU1OlxcdFxcdGttc2FuX2NvcHlfcGFnZV9tZXRhKHpwZGVzY19wYWdlKG5ld3pwZGVzYyksIHpwZGVzY19wYWdlKHpwZGVzYykpO1xcbjE3NTY6XFx0XFx0a3VubWFwX2xvY2FsKGRfYWRkcik7XFxuMTc1NzpcXHRcXG4xNzU4OlxcdFxcdGZvciAoYWRkciA9IHNfYWRkciArIG9mZnNldDsgYWRkciBcXHUwMDNjIHNfYWRkciArIFBBR0VfU0laRTtcXG4xNzU5OlxcdFxcdFxcdFxcdFxcdFxcdGFkZHIgKz0gY2xhc3MtXFx1MDAzZXNpemUpIHtcXG4xNzYwOlxcdFxcdFxcdGlmIChvYmpfYWxsb2NhdGVkKHpwZGVzYywgYWRkciwgXFx1MDAyNmhhbmRsZSkpIHtcXG4xNzYxOlxcdFxcbjE3NjI6XFx0XFx0XFx0XFx0b2xkX29iaiA9IGhhbmRsZV90b19vYmooaGFuZGxlKTtcXG4xNzYzOlxcdFxcdFxcdFxcdG9ial90b19sb2NhdGlvbihvbGRfb2JqLCBcXHUwMDI2ZHVtbXksIFxcdTAwMjZvYmpfaWR4KTtcXG4xNzY0OlxcdFxcdFxcdFxcdG5ld19vYmogPSAodW5zaWduZWQgbG9uZylsb2NhdGlvbl90b19vYmoobmV3enBkZXNjLCBvYmpfaWR4KTtcXG4xNzY1OlxcdFxcdFxcdFxcdHJlY29yZF9vYmooaGFuZGxlLCBuZXdfb2JqKTtcXG4xNzY2OlxcdFxcdFxcdH1cXG4xNzY3OlxcdFxcdH1cXG4xNzY4OlxcdFxcdGt1bm1hcF9sb2NhbChzX2FkZHIpO1xcbjE3Njk6XFx0XFxuMTc3MDpcXHRcXHRyZXBsYWNlX3N1Yl9wYWdlKGNsYXNzLCB6c3BhZ2UsIG5ld3pwZGVzYywgenBkZXNjKTtcXG4xNzcxOlxcdFxcdC8qXFxuMTc3MjpcXHRcXHQgKiBTaW5jZSB3ZSBjb21wbGV0ZSB0aGUgZGF0YSBjb3B5IGFuZCBzZXQgdXAgbmV3IHpzcGFnZSBzdHJ1Y3R1cmUsXFxuMTc3MzpcXHRcXHQgKiBpdCdzIG9rYXkgdG8gcmVsZWFzZSBtaWdyYXRpb25fbG9jay5cXG4xNzc0OlxcdFxcdCAqL1xcbjE3NzU6XFx0XFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xcbjE3NzY6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xNzc3OlxcdFxcdHdyaXRlX3VubG9jayhcXHUwMDI2cG9vbC1cXHUwMDNlbG9jayk7XFxuMTc3ODpcXHRcXG4xNzc5OlxcdFxcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcXG4xNzgwOlxcdFxcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcXG4xNzgxOlxcdFxcdFxcdHpwZGVzY19kZWNfem9uZV9wYWdlX3N0YXRlKHpwZGVzYyk7XFxuMTc4MjpcXHRcXHRcXHR6cGRlc2NfaW5jX3pvbmVfcGFnZV9zdGF0ZShuZXd6cGRlc2MpO1xcbjE3ODM6XFx0XFx0fVxcbjE3ODQ6XFx0XFxuMTc4NTpcXHRcXHRyZXNldF96cGRlc2MoenBkZXNjKTtcXG4xNzg2OlxcdFxcdHpwZGVzY19wdXQoenBkZXNjKTtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0cmV0dXJuIDA7XFxuMTc4OTpcXHR9XFxuMTc5MDpcXHRcXG4xNzkxOlxcdHN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4xNzkyOlxcdHtcXG4xNzkzOlxcdH1cXG4xNzk0OlxcdFxcbjE3OTU6XFx0Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbjE3OTY6XFx0XFx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcXG4xNzk3OlxcdFxcdC5taWdyYXRlX3BhZ2UgPSB6c19wYWdlX21pZ3JhdGUsXFxuMTc5ODpcXHRcXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxcbjE3OTk6XFx0fTtcXG4xODAwOlxcdFxcbjE4MDE6XFx0LypcXG4xODAyOlxcdCAqIENhbGxlciBzaG91bGQgaG9sZCBwYWdlX2xvY2sgb2YgYWxsIHBhZ2VzIGluIHRoZSB6c3BhZ2VcXG4xODAzOlxcdCAqIEluIGhlcmUsIHdlIGNhbm5vdCB1c2UgenNwYWdlIG1ldGEgZGF0YS5cXG4xODA0OlxcdCAqL1xcbjE4MDU6XFx0c3RhdGljIHZvaWQgYXN5bmNfZnJlZV96c3BhZ2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbjE4MDY6XFx0e1xcbjE4MDc6XFx0XFx0aW50IGk7XFxuMTgwODpcXHRcXHRzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3M7XFxuMTgwOTpcXHRcXHRzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsICp0bXA7XFxuMTgxMDpcXHRcXHRMSVNUX0hFQUQoZnJlZV9wYWdlcyk7XFxuMTgxMTpcXHRcXHRzdHJ1Y3QgenNfcG9vbCAqcG9vbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgenNfcG9vbCxcXG4xODEyOlxcdFxcdFxcdFxcdFxcdFxcdGZyZWVfd29yayk7XFxuMTgxMzpcXHRcXG4xODE0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBaU19TSVpFX0NMQVNTRVM7IGkrKykge1xcbjE4MTU6XFx0XFx0XFx0Y2xhc3MgPSBwb29sLVxcdTAwM2VzaXplX2NsYXNzW2ldO1xcbjE4MTY6XFx0XFx0XFx0aWYgKGNsYXNzLVxcdTAwM2VpbmRleCAhPSBpKVxcbjE4MTc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMTgxODpcXHRcXG4xODE5OlxcdFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2Y2xhc3MtXFx1MDAzZWxvY2spO1xcbjE4MjA6XFx0XFx0XFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2Y2xhc3MtXFx1MDAzZWZ1bGxuZXNzX2xpc3RbWlNfSU5VU0VfUkFUSU9fMF0sXFxuMTgyMTpcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmZyZWVfcGFnZXMpO1xcbjE4MjI6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xODIzOlxcdFxcdH1cXG4xODI0OlxcdFxcbjE4MjU6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHpzcGFnZSwgdG1wLCBcXHUwMDI2ZnJlZV9wYWdlcywgbGlzdCkge1xcbjE4MjY6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnpzcGFnZS1cXHUwMDNlbGlzdCk7XFxuMTgyNzpcXHRcXHRcXHRsb2NrX3pzcGFnZSh6c3BhZ2UpO1xcbjE4Mjg6XFx0XFxuMTgyOTpcXHRcXHRcXHRjbGFzcyA9IHpzcGFnZV9jbGFzcyhwb29sLCB6c3BhZ2UpO1xcbjE4MzA6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTgzMTpcXHRcXHRcXHRjbGFzc19zdGF0X3N1YihjbGFzcywgWlNfSU5VU0VfUkFUSU9fMCwgMSk7XFxuMTgzMjpcXHRcXHRcXHRfX2ZyZWVfenNwYWdlKHBvb2wsIGNsYXNzLCB6c3BhZ2UpO1xcbjE4MzM6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xODM0OlxcdFxcdH1cXG4xODM1OlxcdH07XFxuMTgzNjpcXHRcXG4xODM3OlxcdHN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG4xODM4OlxcdHtcXG4xODM5OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnBvb2wtXFx1MDAzZWZyZWVfd29yayk7XFxuMTg0MDpcXHR9XFxuMTg0MTpcXHRcXG4xODQyOlxcdHN0YXRpYyB2b2lkIHpzX2ZsdXNoX21pZ3JhdGlvbihzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG4xODQzOlxcdHtcXG4xODQ0OlxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnBvb2wtXFx1MDAzZWZyZWVfd29yayk7XFxuMTg0NTpcXHR9XFxuMTg0NjpcXHRcXG4xODQ3OlxcdHN0YXRpYyB2b2lkIGluaXRfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTkuODIzMTAxNTI3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NDAxMDkwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9jayBPcmRlcmluZyBCdWcgRml4IGluIHpzX3BhZ2VfbWlncmF0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9jayByZWxlYXNlIG9yZGVyIHdpdGhpbiBgenNfcGFnZV9taWdyYXRlYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUuIFRoZSBjb2RlIGFjcXVpcmVzIHRocmVlIGxvY2tzOiBmaXJzdCBgcG9vbC1cdTAwM2Vsb2NrYCBhcyBhIHdyaXRlIGxvY2ssIHRoZW4gYGNsYXNzLVx1MDAzZWxvY2tgIGFzIGEgc3BpbmxvY2ssIGFuZCBmaW5hbGx5LCBpdCB0cmllcyB0byBhY3F1aXJlIGB6c3BhZ2VgIHVzaW5nIGB6c3BhZ2Vfd3JpdGVfdHJ5bG9ja2AuIFNvLCB0aGUgYWNxdWlzaXRpb24gb3JkZXIgaXMgc3RyYWlnaHRmb3J3YXJkOiBgcG9vbC1cdTAwM2Vsb2NrYCwgdGhlbiBgY2xhc3MtXHUwMDNlbG9ja2AsIHRoZW4gYHpzcGFnZWAuXG5cblRoZSBwcm9ibGVtIGlzIHRoZSAqb3JpZ2luYWwqIHJlbGVhc2Ugb3JkZXIgbWlycm9yZWQgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiAgVGhhdCdzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBkZWFkbG9ja3MhICBUaGUgcGF0Y2ggY29ycmVjdHMgdGhpcy4gIEl0IG5vdyByZWxlYXNlcyB0aGUgbG9ja3MgaW4gdGhlICpyZXZlcnNlKiBvcmRlcjogYHpzcGFnZWAsIHRoZW4gYGNsYXNzLVx1MDAzZWxvY2tgLCB0aGVuIGBwb29sLVx1MDAzZWxvY2tgLiAgVGhpcyBpcyB0aGUgY29ycmVjdCBwYXR0ZXJuIHRvIGF2b2lkIHBvdGVudGlhbCBsb2NrLW9yZGVyaW5nIHZpb2xhdGlvbnMgYW5kIHN1YnNlcXVlbnQgZGVhZGxvY2tzIG9yLCBldmVuIHdvcnNlLCB0cmlnZ2VyaW5nIGxvY2tkZXAgd2FybmluZ3MgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlcHJvZHVjZSBhbmQgZGVidWcuICBTbywgZnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuXG5cbkdpdmVuIHRoYXQgdGhpcyBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUsIGl0J3MgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuICBXZSBuZWVkIHRvIHRyaWdnZXIgYHpzX3BhZ2VfbWlncmF0ZWAgcmVwZWF0ZWRseSB1bmRlciB2YXJpb3VzIGNvbmN1cnJlbnQgY29uZGl0aW9ucy4gIFRvIGRvIHRoYXQsIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHpzX3BhZ2VfbWlncmF0ZWAgZ2V0cyBjYWxsZWQuICBJdCdzIGludm9rZWQgYnkgdGhlIHBhZ2UgbWlncmF0aW9uIGNvZGUsIHNvIGNvbXBhY3Rpb24sIE5VTUEgYmFsYW5jaW5nLCBvciBhbiBleHBsaWNpdCBtaWdyYXRpb24gcmVxdWVzdCB3b3VsZCBhbGwgYmUgcG90ZW50aWFsIHRyaWdnZXJzLiAgVG8gYWN0dWFsbHkgKmVuYWJsZSogYHpzbWFsbG9jYCBhbmQgaXRzIGNvbXBhY3Rpb24gc3VwcG9ydCAod2hpY2ggd2UgbmVlZCBmb3IgdGhpcyBmdXp6aW5nKSwgd2UgbmVlZCB0aGUgZm9sbG93aW5nIEtjb25maWcgb3B0aW9uczogYENPTkZJR19aU01BTExPQz15YCwgYENPTkZJR19DT01QQUNUSU9OPXlgLCBhbmQgYENPTkZJR19NSUdSQVRJT049eWAuICBgQ09ORklHX01JR1JBVElPTmAgaXMgdXN1YWxseSBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IGBDT05GSUdfQ09NUEFDVElPTmAsIGJ1dCB3ZSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQsIG9mIGNvdXJzZS5cblxuVGltZSB0byBsb29rIGludG8gYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMgYW5kIHRoZW4gZGV2aXNlIGEgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUwMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjI2LjU2MzIxNDkxMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5NDk3MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY0Mj1jb25maWcgQkFMTE9PTl9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cXG5tbS9LY29uZmlnOjY1NDpjb25maWcgQ09NUEFDVElPTlxcbm1tL0tjb25maWctNjU1LVxcdGJvb2wgXFxcIkFsbG93IGZvciBtZW1vcnkgY29tcGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MjYuNjI0MTgxMjM0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDU4NTg0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlJldmlzaXRpbmcgYFpTTUFMTE9DYCoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgWlNNQUxMT0NgLiBJJ3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGEgd2hpbGUgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGxhdGVzdCBjaGFuZ2VzIGluIHRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBBcmUgdGhlcmUgYW55IHN1YnRsZSByZWdyZXNzaW9ucyBvciB1bmZvcmVzZWVuIG9wdGltaXphdGlvbnMgdGhhdCBoYXZlIGNyZXB0IGluPyBJJ20gc3BlY2lmaWNhbGx5IGN1cmlvdXMgYWJvdXQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG5ld2VyIE5VTUEtYXdhcmUgYWxsb2NhdGlvbiBwYXR0ZXJucy4gSGF2ZSB0aGUgcmVjZW50IHR3ZWFrcyB0byB0aGUgcGVyLW5vZGUgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGhhZCBhbnkgaW1wYWN0IG9uIGBaU01BTExPQ2AncyBhYmlsaXR5IHRvIGVmZmljaWVudGx5IG1hbmFnZSBzbWFsbCBvYmplY3QgYWxsb2NhdGlvbnMgYWNyb3NzIHRoZSBtZW1vcnkgaGllcmFyY2h5PyBJIHdhbnQgdG8gdmVyaWZ5IGlmIHRoZSBleHBlY3RlZCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYXJlIGhvbGRpbmcgdXAgdW5kZXIgdmFyaW91cyB3b3JrbG9hZHMsIGVzcGVjaWFsbHkgdGhvc2UgY2hhcmFjdGVyaXplZCBieSBoaWdoIG9iamVjdCBjaHVybi4gQSBxdWljayByZXZpZXcgb2YgaXRzIGNvcmUgbWVjaGFuaWNzIGlzIGluIG9yZGVyIHRvIGJlIHN1cmUuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgYmVuY2htYXJrcyBhZ2FpbiBhbmQgbWF5YmUgZXZlbiBzaW11bGF0ZSBhIGZldyBzcGVjaWZpYyBlZGdlIGNhc2VzIHRoYXQgSSBoYXZlIGJlZW4gY29uc2lkZXJpbmcuIEl0J3MgdGltZSB0byB0YWtlIGEgZnJlc2ggbG9vayBhdCBgWlNNQUxMT0NgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTExLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MjkuOTMwMDQzNjMzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDgyMjE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlNNQUxMT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTExND1jb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXFxuLS1cXG5tbS9LY29uZmlnLTEyNC1cXG5tbS9LY29uZmlnOjEyNTpjb25maWcgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZVxcbi0tXFxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcXFwiWnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFxcdTAwMjYgenJhbVxcXCJcXG5tbS9LY29uZmlnLTEzNC1cXG5tbS9LY29uZmlnOjEzNTpjb25maWcgWlNNQUxMT0NfU1RBVFxcbm1tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkV4cG9ydCB6c21hbGxvYyBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMtXFxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcXG5tbS9LY29uZmlnLTE0NS1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjI5Ljk4NDg3MzA1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgyOTY3MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpTTUFMTE9DIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBgWlNNQUxMT0NgIGlzIGEgdHJpc3RhdGUsIGludGVyZXN0aW5nLiBJIGNhbiBlbmFibGUgaXQsIHdoaWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGp1c3Qgc2V0IGBaU01BTExPQz15YC4gQnV0IHdhaXQsIHRoZXJlJ3MgYSBjcnVjaWFsIHBvaW50IGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHpzbWFsbG9jYCBpcyAqYWN0dWFsbHkqIHV0aWxpemVkLiBUaGF0IG1lYW5zIEkgbmVlZCBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAgZW5hYmxlZC4gSXQncyBhIGNsYXNzaWMgcGFpcmluZyBzdHJhdGVneSDigJMgb25lIGhlbHBzIHRoZSBvdGhlciBhY2hpZXZlIGl0cyBwb3RlbnRpYWwuIFJpZ2h0LCBsZXQncyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYFpSQU1gIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBiZWNhdXNlIHRoYXQncyB1c3VhbGx5IG15IGdvLXRvIGZvciB0aGlzIGtpbmQgb2Ygc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozMy4xNjc4NDQ5NzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTQ4MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozMy4yMjQwMDA4MDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4Nzc5NDUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWlNNQUxMT0MgTWlncmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhlIGRpcmVjdGl2ZSBpcyBjbGVhcjogd2UgbmVlZCB0byBlbmFibGUgYFpTTUFMTE9DYCwgYFpSQU1gLCBhbmQgYENPTVBBQ1RJT05gLiBUaGUgY3J1Y2lhbCBmdW5jdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uIGlzIGB6c19wYWdlX21pZ3JhdGVgLiBMZXQncyBzZWUuLi4gZmlyc3QsIGlzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyAqWWVzKiwgaXQgaXMuIE5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZ3VpZGFuY2UuLi4gXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLi4uXCIgUmlnaHQsIHJpZ2h0LiBJbnRlcm5hbCBzdGF0aWMgaGVscGVycywgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyDigJMgYnV0IHRoYXQncyB0aGUga2V5IGhlcmUuIFdlIHRha2UgdGhlIGFkZHJlc3Mgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGFzc2lnbiBpdCB0byBgenNtYWxsb2NfbW9wcy5taWdyYXRlX3BhZ2VgLiBTaW5jZSB0aGUgYWRkcmVzcyBpcyB0YWtlbiwgaXQgKndvbid0KiBiZSBpbmxpbmVkIGFuZCBpdCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbC4gU28sIGB6c19wYWdlX21pZ3JhdGVgIHNob3VsZCBiZSBwZXJmZWN0bHkgYWNjZXB0YWJsZSBldmVuIGlmIGl0IGlzIHN0YXRpYy4gV2UgYXJlbid0IGxvc2luZyBhbnl0aGluZyBieSB1c2luZyBpdC5cblxuQnV0LCBqdXN0IGZvciB0aG9yb3VnaG5lc3MsIGNvdWxkIHdlIHByb3ZpZGUgYSBub24tc3RhdGljIGVudHJ5IHBvaW50PyBJIHN1cHBvc2Ugd2UgY291bGQgcHJvdmlkZSBzb21lIGFsdGVybmF0aXZlIGB6c21hbGxvY2AgQVBJIGZ1bmN0aW9ucyBvciBwYWdlIG1pZ3JhdGlvbiBmdW5jdGlvbnMuIEJ1dCByZWFsbHksIG5vLCBgenNfcGFnZV9taWdyYXRlYCBpcyBmaW5lOyBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgYW5kIHRoYXQncyB0aGUgaW1wb3J0YW50IHBhcnQuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG8gY29uc2lkZXI/IExldCdzIHF1aWNrbHkgc2NhbiBgbW0venNtYWxsb2MuY2AgdG8gYmUgY29tcGxldGVseSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGEgYmV0dGVyIG5vbi1zdGF0aWMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUwMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozOC4xMTE3OTkzMTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDE0NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16X0EtWjAtOV0rIHpzX1thLXpfQS1aMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS96c21hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3pzbWFsbG9jLmM9MTA4ND1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9iZWdpbik7XFxubW0venNtYWxsb2MuYy0xMDg1LVxcbm1tL3pzbWFsbG9jLmM6MTA4Njp2b2lkIHpzX29ial9yZWFkX2VuZChzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUsXFxubW0venNtYWxsb2MuYy0xMDg3LVxcdFxcdCAgICAgc2l6ZV90IG1lbV9sZW4sIHZvaWQgKmhhbmRsZV9tZW0pXFxuLS1cXG5tbS96c21hbGxvYy5jPTExMTE9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3JlYWRfZW5kKTtcXG5tbS96c21hbGxvYy5jLTExMTItXFxubW0venNtYWxsb2MuYzoxMTEzOnZvaWQgenNfb2JqX3JlYWRfc2dfYmVnaW4oc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxcbm1tL3pzbWFsbG9jLmMtMTExNC1cXHRcXHRcXHQgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIHNpemVfdCBtZW1fbGVuKVxcbi0tXFxubW0venNtYWxsb2MuYz0xMTU4PUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2JlZ2luKTtcXG5tbS96c21hbGxvYy5jLTExNTktXFxubW0venNtYWxsb2MuYzoxMTYwOnZvaWQgenNfb2JqX3JlYWRfc2dfZW5kKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcXG5tbS96c21hbGxvYy5jLTExNjEte1xcbi0tXFxubW0venNtYWxsb2MuYz0xMTczPUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2VuZCk7XFxubW0venNtYWxsb2MuYy0xMTc0LVxcbm1tL3pzbWFsbG9jLmM6MTE3NTp2b2lkIHpzX29ial93cml0ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUsXFxubW0venNtYWxsb2MuYy0xMTc2LVxcdFxcdCAgdm9pZCAqaGFuZGxlX21lbSwgc2l6ZV90IG1lbV9sZW4pXFxuLS1cXG5tbS96c21hbGxvYy5jPTEyMjI9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3dyaXRlKTtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTIzNi0gKi9cXG5tbS96c21hbGxvYy5jOjEyMzc6c2l6ZV90IHpzX2h1Z2VfY2xhc3Nfc2l6ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5tbS96c21hbGxvYy5jLTEyMzgte1xcbi0tXFxubW0venNtYWxsb2MuYz0xMzU1PXN0YXRpYyB2b2lkIG9ial9mcmVlKGludCBjbGFzc19zaXplLCB1bnNpZ25lZCBsb25nIG9iailcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTM4Mi1cXG5tbS96c21hbGxvYy5jOjEzODM6dm9pZCB6c19mcmVlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcXG5tbS96c21hbGxvYy5jLTEzODQte1xcbi0tXFxubW0venNtYWxsb2MuYz0xOTc2PUVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xcbm1tL3pzbWFsbG9jLmMtMTk3Ny1cXG5tbS96c21hbGxvYy5jOjE5Nzg6dm9pZCB6c19wb29sX3N0YXRzKHN0cnVjdCB6c19wb29sICpwb29sLCBzdHJ1Y3QgenNfcG9vbF9zdGF0cyAqc3RhdHMpXFxubW0venNtYWxsb2MuYy0xOTc5LXtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjE4MD1FWFBPUlRfU1lNQk9MX0dQTCh6c19jcmVhdGVfcG9vbCk7XFxubW0venNtYWxsb2MuYy0yMTgxLVxcbm1tL3pzbWFsbG9jLmM6MjE4Mjp2b2lkIHpzX2Rlc3Ryb3lfcG9vbChzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5tbS96c21hbGxvYy5jLTIxODMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozOC4xNzE4MjE0NzZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MDAyMzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIFN0YXRpYyBWYXJpYWJsZSBpbiBhIFN0cnVjdCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbSBzZWVpbmcgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IGl0IHNlZW1zIHRvIGJlIGFzc2lnbmVkIG9yIHVzZWQgaW4gY29udGV4dCBvZiBhIHN0cnVjdC4gVGhhdCByYWlzZXMgYSByZWQgZmxhZy4gVHlwaWNhbGx5IHN0YXRpYyB2YXJpYWJsZXMgaGF2ZSBhIHNwZWNpZmljLCBvZnRlbiBmaWxlLWxldmVsLCBzY29wZS4gIEknbSBjdXJpb3VzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgaGVyZSDigJMgaXMgaXQgc2ltcGx5IGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhhdCBzdHJ1Y3QsIGEgbWV0aG9kLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbnRlcmFjdGlvbiB3b3Jrcy5cblxuVGhlIG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpdmUgaW50byBgenNtYWxsb2NfbW9wc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoYXQgc3RydWN0dXJlIGRlZmluaXRpb24sIGhvdyBgenNfcGFnZV9taWdyYXRlYCBpcyBiZWluZyB1c2VkIHdpdGhpbiBpdCwgYW5kIGhvdyBpdCBpcyB0aGVuIGJlaW5nIGFwcGxpZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGlmIHRoZXJlJ3MgYW55IHdlaXJkbmVzcyB3aXRoIHNjb3Bpbmcgb3IgaWYgSSBuZWVkIHRvIHdvcnJ5IGFib3V0IHNoYXJlZCByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDEuMzUxODQ3MzkxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM0MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c21hbGxvY19tb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venNtYWxsb2MuYz0xNzkxPXN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTc5NC1cXG5tbS96c21hbGxvYy5jOjE3OTU6Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cXHQuaXNvbGF0ZV9wYWdlID0genNfcGFnZV9pc29sYXRlLFxcbi0tXFxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjI0NS0jaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jOjIyNDY6XFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbm1tL3pzbWFsbG9jLmMtMjI0Ny1cXHRpZiAocmMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDEuNDExMjAyNTg2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjYwMjI3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgenNtYWxsb2MgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIGBzZXRfbW92YWJsZV9vcHNgIGlzIHdoZXJlIHRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlZ2lzdGVyZWQuIFRoYXQgbWVhbnMgdGhlIGB6c19wYWdlX21pZ3JhdGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBhbmQgbWlncmF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aGVuIGl0IGJ1bXBzIGludG8gYSBwYWdlIHRoYXQncyBtYXJrZWQgd2l0aCBgUEdUWV96c21hbGxvY2AuIFNpbmNlIGl0J3MgYSBjYWxsYmFjaywgdXNpbmcgYHpzX3BhZ2VfbWlncmF0ZWAgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9sIGluIG15IGFuYWx5c2lzIGlzIHBlcmZlY3RseSBzb3VuZC4gSXQncyBhIGNsZWFuIGVudHJ5IHBvaW50LiBXZSBjYW4gYWxzbyB3ZWF2ZSBpbiBvdGhlciByZWxldmFudCBwaWVjZXMgdG8gc3RyZW5ndGhlbiB0aGUgdGVzdC4gVG8gbWFrZSBzdXJlIHpzbWFsbG9jIGlzIHRob3JvdWdobHkgdGVzdGVkLCBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYHpzX2NvbXBhY3RgIGluIHRoZSBtaXguIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1pbXBvcnRhbnQgYHpzX21hbGxvY2AgYW5kIGB6c19mcmVlYCBmdW5jdGlvbnMuIEdvdHRhIGNoZWNrIHRob3NlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBwYXRocy4gTGV0J3Mgc3RhcnQgd2l0aCBgenNfbWFsbG9jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDQuOTc3MjMwMTcxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk1MjQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c19tYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTEyNDM9c3RhdGljIHVuc2lnbmVkIGxvbmcgb2JqX21hbGxvYyhzdHJ1Y3QgenNfcG9vbCAqcG9vbCxcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTI4NS0vKipcXG5tbS96c21hbGxvYy5jOjEyODY6ICogenNfbWFsbG9jIC0gQWxsb2NhdGUgYmxvY2sgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHBvb2wuXFxubW0venNtYWxsb2MuYy0xMjg3LSAqIEBwb29sOiBwb29sIHRvIGFsbG9jYXRlIGZyb21cXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTI5NS0gKi9cXG5tbS96c21hbGxvYy5jOjEyOTY6dW5zaWduZWQgbG9uZyB6c19tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsXFxubW0venNtYWxsb2MuYy0xMjk3LVxcdFxcdFxcdGNvbnN0IGludCBuaWQpXFxuLS1cXG5tbS96c21hbGxvYy5jLTEzNTItfVxcbm1tL3pzbWFsbG9jLmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTCh6c19tYWxsb2MpO1xcbm1tL3pzbWFsbG9jLmMtMTM1NC1cXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjA3MT1zdHJ1Y3QgenNfcG9vbCAqenNfY3JlYXRlX3Bvb2woY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjExNi1cXHRcXHRcXHQgKiBUaGUgb2JqZWN0IHVzZXMgWlNfSEFORExFX1NJWkUgYnl0ZXMgdG8gc3RvcmUgdGhlXFxubW0venNtYWxsb2MuYzoyMTE3OlxcdFxcdFxcdCAqIGhhbmRsZS4gV2UgbmVlZCB0byBzdWJ0cmFjdCBpdCwgYmVjYXVzZSB6c19tYWxsb2MoKVxcbm1tL3pzbWFsbG9jLmMtMjExOC1cXHRcXHRcXHQgKiB1bmNvbmRpdGlvbmFsbHkgYWRkcyBoYW5kbGUgc2l6ZSBiZWZvcmUgaXQgcGVyZm9ybXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDUuMDM0MTkwNzU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzM4NTE1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBac21hbGxvYyBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIGludGVncmF0aW5nIFpzbWFsbG9jLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBicmluZyBpbnRvIHRoZSBkaXNjdXNzaW9uIGFyZSBkZWZpbml0ZWx5IGB6c19tYWxsb2NgLCBgenNfZnJlZWAsIGFuZCBgenNfcGFnZV9taWdyYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgZHluYW1pYyBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIGFuZCB0aGUgbW92ZW1lbnQgb2YgcGFnZXMsIHJlc3BlY3RpdmVseS4gV2UnbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgd2hvbGUgdGhpbmcgd29ya2luZywgSSB0aGluay4gYFpTTUFMTE9DYCBpdHNlbGYsIG9idmlvdXNseSwgYW5kIHRoZW4gYWxzbyBgWlJBTWAgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY29tcHJlc3Npb24sIGBDT01QQUNUSU9OYCB0byBhbGxvdyBmb3IgbWVyZ2luZyBvZiBtZW1vcnksIGFuZCBgTUlHUkFUSU9OYCBzbyB0aGF0IHdlIGNhbi4uLiBoYW5nIG9uIGEgc2Vjb25kLi4uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBNSUdSQVRJT05gIGlzIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlnIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBjaGFzaW5nIHNoYWRvd3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo0OC4yNjgwNDY0NjRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDQzMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY4NT1jb25maWcgTlVNQV9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk1LVxcbm1tL0tjb25maWc6Njk2OmNvbmZpZyBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjQ4LjMyMjUwNjE2M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODczMzQwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIGBNSUdSQVRJT05gIGhlcmUsIGFuZCBpdCdzIGEgYm9vbGVhbiB2YXJpYWJsZS4gSW50ZXJlc3RpbmcgdGhhdCBpdCBkb2Vzbid0IGhhdmUgYSBkaXJlY3QgcHJvbXB0IGFzc29jaWF0ZWQgd2l0aCBpdCDigJMgdGhhdCBsaWtlbHkgbWVhbnMgaXRzIHN0YXRlLCB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgaXMgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyBhIGNvbW1vbiBwYXR0ZXJuLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZHJpdmluZyB0aGlzIGBNSUdSQVRJT05gIHNldHRpbmcuIExldCBtZSBjaGVjayB0aGUgb3RoZXIgY29uZmlncywgc3RhcnRpbmcgd2l0aCBgQ09NUEFDVElPTmAuIFRoYXQncyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIEl0J3MgaGlnaGx5IHByb2JhYmxlIGBDT01QQUNUSU9OYCBoYXMgYSBkZXBlbmRlbmN5IG9yIGlzIGluZmx1ZW5jaW5nIHRoZSBzZXR0aW5nIG9mIGBNSUdSQVRJT05gLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzY2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NTEuMTk1ODUxMzM1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjI4OTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ09NUEFDVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02NTMtIyBzdXBwb3J0IGZvciBtZW1vcnkgY29tcGFjdGlvblxcbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXFxubW0vS2NvbmZpZy02NTUtXFx0Ym9vbCBcXFwiQWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1MS4yNTIxNTE4MjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMDYxOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBNSUdSQVRJT05gIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIGludG8gbXkgaGVhZCBpcyB0byBwaW5wb2ludCB3aGF0J3MgY3VycmVudGx5IHF1ZXJ5aW5nIG9yIHV0aWxpemluZyBgTUlHUkFUSU9OYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlJ3Mgc29tZXRoaW5nIHNwZWNpZmljIG9yIHVudXN1YWwgd2UncmUgbG9va2luZyBmb3IsIG9yIHBvc3NpYmx5IHNvbWV0aGluZyBpbiBwcm9ncmVzcy4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBUaGUgYW5hbHlzaXMgY2Fubm90IHByb2NlZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbnMuIFNvIGxldCdzIGltbWVkaWF0ZWx5IGRpdmUgaW50byBmaW5kaW5nIHRoZSBzcGVjaWZpYyBxdWVyaWVzIHVzaW5nIGBNSUdSQVRJT05gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY0NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjU1LjQ4Mjc3NDU4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNDkyOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTU5MT1jb25maWcgTUVNT1JZX0hPVFJFTU9WRVxcbi0tXFxubW0vS2NvbmZpZy01OTQtXFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xcbm1tL0tjb25maWc6NTk1OlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTU5Ni1cXG4tLVxcbm1tL0tjb25maWc9NjU0PWNvbmZpZyBDT01QQUNUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY1Ni1cXHRkZWZhdWx0IHlcXG5tbS9LY29uZmlnOjY1NzpcXHRzZWxlY3QgTUlHUkFUSU9OXFxubW0vS2NvbmZpZy02NTgtXFx0ZGVwZW5kcyBvbiBNTVVcXG4tLVxcbm1tL0tjb25maWc9Njg1PWNvbmZpZyBOVU1BX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02ODgtXFx0ZGVwZW5kcyBvbiBOVU1BIFxcdTAwMjZcXHUwMDI2IE1NVVxcbm1tL0tjb25maWc6Njg5OlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5MC1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnPTEwNjc9Y29uZmlnIENNQVxcbi0tXFxubW0vS2NvbmZpZy0xMDY5LVxcdGRlcGVuZHMgb24gTU1VXFxubW0vS2NvbmZpZzoxMDcwOlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTEwNzEtXFx0c2VsZWN0IE1FTU9SWV9JU09MQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NTYuMDM2Mjc4Njk4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzA3NDcyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcy4uLlxuXG4qKk9wdGltaXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRoZSBQYXRoIHRvIEVmZmljaWVuY3kqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaG93IHRvIG9wdGltaXplIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBgQ09NUEFDVElPTmAgaXMgd2hhdCB0cmlnZ2VycyBgTUlHUkFUSU9OYCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiBUbyBhY2hpZXZlIHRoYXQsIHRoZSBuYWl2ZSBhcHByb2FjaCB3b3VsZCBiZSB0byBlbmFibGUgYFpTTUFMTE9DYCwgYFpSQU1gLCBhbmQgYENPTVBBQ1RJT05gLiBIb3dldmVyLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCBtb3JlIGludHJpY2F0ZSB0aGFuIHRoYXQuXG5cbkFoYSEgVXBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGBaUkFNYCBpdHNlbGYgcHVsbHMgaW4gYFpTTUFMTE9DYC4gU28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIFRoaXMgbWVhbnMgZW5hYmxpbmcgYm90aCBgWlJBTWAgYW5kIGBDT01QQUNUSU9OYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Igb3VyIG5lZWRzLCByaWdodD8gSSdkIGxpa2UgdG8ganVzdCB2ZXJpZnkgdGhhdCBhbGwgdGhlIGBaUkFNYCBkZXBlbmRlbmNpZXMgYXJlIGFjY291bnRlZCBmb3IganVzdCB0byBiZSBzdXJlLCBiZWZvcmUgbW92aW5nIGZvcndhcmQuIExldCdzIG1ha2Ugc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1OS4zNjcwMjk2NzJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTcxODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1OS40MTkyMDkwNDNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDQwNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBSZWxhdGVkIEtlcm5lbCBDb21wb25lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgZGlmZmVyZW50IGtlcm5lbCBjb21wb25lbnRzLiBJdCdzIGNsZWFyIHRoYXQgYFpSQU1gIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBCTE9DS2AsIGBTWVNGU2AsIGFuZCBgTU1VYC4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEkgY291bGQganVzdCBsaXN0IGBaUkFNYCwgYFpTTUFMTE9DYCwgYW5kIGBDT01QQUNUSU9OYCBhcyB0aGUgY29yZSBlbGVtZW50cywgYnV0IGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgdG8gaWRlbnRpZnkgYW55dGhpbmcgSSBtYXkgYmUgbWlzc2luZy5cblxuSSBuZWVkIHRvIHJldmlzaXQgYHpzX3BhZ2VfbWlncmF0ZWAuIEkgcmVjYWxsIHRoYXQgaXQncyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBIbW0sIEkgc2hvdWxkIGNoZWNrIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGB6c21hbGxvY19tb3BzYCBzdHJ1Y3R1cmUuIE9rYXksIHNvIHRoYXQncyB0aGUgbGluay4gU28gYHpzX3BhZ2VfaXNvbGF0ZWAsIGB6c19wYWdlX21pZ3JhdGVgLCBhbmQgYHpzX3BhZ2VfcHV0YmFja2AuIEdvb2QuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgKnJlbGF0ZWQqIHRoYXQgSSBzaG91bGQgaW5jbHVkZSBpbiBteSBtZW50YWwgbW9kZWwgaGVyZT8gTGV0J3MgY29uc2lkZXIgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19jb21wYWN0YC4gYHpzX2NvbXBhY3RgIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggbWVhbnMgaXQncyBhdmFpbGFibGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhhdCdzIGEgc2lnbmFsLiBJIHNob3VsZCBkZWZpbml0ZWx5IGV4YW1pbmUgYHpzX2NvbXBhY3RgIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNzowMy43MTM2MTgxMjdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzQ2NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzX2NvbXBhY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTE4NzE9c3RhdGljIHVuc2lnbmVkIGxvbmcgenNfY2FuX2NvbXBhY3Qoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxcbi0tXFxubW0venNtYWxsb2MuYy0xODg1LVxcbm1tL3pzbWFsbG9jLmM6MTg4NjpzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3pzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxubW0venNtYWxsb2MuYy0xODg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxcbi0tXFxubW0venNtYWxsb2MuYy0xOTQ5LVxcbm1tL3pzbWFsbG9jLmM6MTk1MDp1bnNpZ25lZCBsb25nIHpzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXFxubW0venNtYWxsb2MuYy0xOTUxLXtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTk1Ny1cXHQgKiBQb29sIGNvbXBhY3Rpb24gaXMgcGVyZm9ybWVkIHVuZGVyIHBvb2wtXFx1MDAzZWxvY2sgc28gaXQgaXMgYmFzaWNhbGx5XFxubW0venNtYWxsb2MuYzoxOTU4OlxcdCAqIHNpbmdsZS10aHJlYWRlZC4gSGF2aW5nIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGluIF9fenNfY29tcGFjdCgpXFxubW0venNtYWxsb2MuYy0xOTU5LVxcdCAqIHdpbGwgaW5jcmVhc2UgcG9vbC1cXHUwMDNlbG9jayBjb250ZW50aW9uLCB3aGljaCB3aWxsIGltcGFjdCBvdGhlclxcbi0tXFxubW0venNtYWxsb2MuYy0xOTY4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL3pzbWFsbG9jLmM6MTk2OTpcXHRcXHRwYWdlc19mcmVlZCArPSBfX3pzX2NvbXBhY3QocG9vbCwgY2xhc3MpO1xcbm1tL3pzbWFsbG9jLmMtMTk3MC1cXHR9XFxuLS1cXG5tbS96c21hbGxvYy5jLTE5NzUtfVxcbm1tL3pzbWFsbG9jLmM6MTk3NjpFWFBPUlRfU1lNQk9MX0dQTCh6c19jb21wYWN0KTtcXG5tbS96c21hbGxvYy5jLTE5NzctXFxuLS1cXG5tbS96c21hbGxvYy5jPTE5ODQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgenNfc2hyaW5rZXJfc2NhbihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxcbi0tXFxubW0venNtYWxsb2MuYy0xOTk0LVxcdCAqL1xcbm1tL3pzbWFsbG9jLmM6MTk5NTpcXHRwYWdlc19mcmVlZCA9IHpzX2NvbXBhY3QocG9vbCk7XFxubW0venNtYWxsb2MuYy0xOTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNzowMy43NzI5ODE0MjFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0MjQ5NzU5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIHpzbWFsbG9jIFBhdGNoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgenNtYWxsb2MgY29kZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gZm9yIHBhZ2UgbWlncmF0aW9uLCBgenNfcGFnZV9taWdyYXRlYCwgaXMgaW4gZm9jdXMgaGVyZSwgYnV0IGFsc28sIEkgc2hvdWxkIGNvbnNpZGVyIG90aGVyIGtleSBlbnRyeSBwb2ludHMuIGB6c19jb21wYWN0YCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQgaW4gc2hyaW5raW5nLCBidXQgSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emluZyBjb3ZlcnMgdGhlIHBhZ2UgbWlncmF0aW9uIHBhdGggdG9vLiBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgenNfcGFnZV9taWdyYXRlYCwgYWxvbmcgd2l0aCBgenNfbWFsbG9jYCBhbmQgYHpzX2ZyZWVgIGluIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QgdG8gZW5zdXJlIHRoZSBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gYXJlIGhlYXZpbHkgZnV6emVkIGFsb25nc2lkZSB0aGUgbWlncmF0aW9uIHByb2Nlc3MuXG5cbldhaXQgYSBtb21lbnQsIEkgcmVjYWxsIGB6c19wYWdlX21pZ3JhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgcHJvbXB0IHN0cmVzc2VkIHRoYXQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGFyZSBwcmVmZXJyZWQuIEhvd2V2ZXIsIGJlY2F1c2UgYHpzX3BhZ2VfbWlncmF0ZWAncyBhZGRyZXNzIGlzIHRha2VuLCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgc28gaXQncyBzYWZlIHRvIGluY2x1ZGUuIEdvb2QuIFRoaXMgaXMgY29uZmlybWVkLiBJJ2xsIGluY2x1ZGUgdGhvc2UuIEl0J3MgY3J1Y2lhbCB0byBjb3ZlciB0aGUgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyB0b28uXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIG9ubHkgYFpTTUFMTE9DYCBpcyBzdWZmaWNpZW50LiBZZXMsIGBaU01BTExPQ2AgZXNzZW50aWFsbHkgZGVmaW5lcyB0aGUgc3Vic3lzdGVtLiBCdXQgdGhlIGNvZGUgYWxzbyBuZWVkcyBgQ09NUEFDVElPTmAgdG8gY29tcGlsZSBgenNfcGFnZV9taWdyYXRlYCwgc28gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gYmUgYFtcIlpTTUFMTE9DXCIsIFwiWlJBTVwiLCBcIkNPTVBBQ1RJT05cIl1gLiBgWlJBTWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGlzIHBhdGNoLiBBaGEhXG5cbmBgYGNcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuLVx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4gXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZjbGFzcy1cdTAwM2Vsb2NrKTtcbitcdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuYGBgXG5cblRoaXMgaXMgZml4aW5nIGEgbG9jayBvcmRlcmluZyBpc3N1ZSB3aXRoaW4gYHpzX3BhZ2VfbWlncmF0ZWAuIFRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIGhhcyBiZWVuIHJldmVyc2VkIHRvIG1hdGNoIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGltcGFjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzIGFuZCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuIFNvLCB0aGlzIGlzIGEgKmRlZmluaXRlKiBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuXG5cblRoZXJlZm9yZTpcblxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1wienNfcGFnZV9taWdyYXRlXCIsIFwienNfbWFsbG9jXCIsIFwienNfZnJlZVwiXWBcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJaU01BTExPQ1wiLCBcIlpSQU1cIiwgXCJDT01QQUNUSU9OXCJdYFxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2MjcsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE4OjExLjE5Nzk2MTQxMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4Mjk4NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaU01BTExPQ1wiLFxuICAgIFwiWlJBTVwiLFxuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInpzX3BhZ2VfbWlncmF0ZVwiLFxuICAgIFwienNfbWFsbG9jXCIsXG4gICAgXCJ6c19mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NrIG9yZGVyaW5nIGlzc3VlIGluIGB6c19wYWdlX21pZ3JhdGVgIGJ5IHJldmVyc2luZyB0aGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLVxcdTAwM2Vsb2NrYCwgYGNsYXNzLVxcdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowtgp8h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 01:47:25 +0000 UTC FinishedAt: 2026-07-29 02:18:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "62bea7115fff400b1c41d591888535bf42f973da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSMALLOC", "ZRAM", "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "62bea7115fff400b1c41d591888535bf42f973da", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZSMALLOC", "ZRAM", "COMPACTION" ], "series_id": "8b99e938-e1b4-4d6a-a6ff-e21277938651" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "zs_page_migrate", "zs_malloc", "zs_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY2YWUyN2NlMTY3NzI1ZTMyNGNmYTc5YWFiOWZiNDdlZjNlNDVlMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXG5pbmRleCA4M2Y1ODIwYzQ1ZjkzLi5iMDkyOTkxMTU4ODY3IDEwMDY0NFxuLS0tIGEvbW0venNtYWxsb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0venNtYWxsb2MuY1xuQEAgLTE3NzIsOSAmIzQzOzE3NzIsOSBAQCBzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXHQgKiBTaW5jZSB3ZSBjb21wbGV0ZSB0aGUgZGF0YSBjb3B5IGFuZCBzZXQgdXAgbmV3IHpzcGFnZSBzdHJ1Y3R1cmUsXG4gXHQgKiBpdCYjMzk7cyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suXG4gXHQgKi9cbi1cdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuLVx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4gXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4mIzQzO1x0d3JpdGVfdW5sb2NrKFx1MDAyNnBvb2wtXHUwMDNlbG9jayk7XG4gXG4gXHR6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7XG4gXHRpZiAoenBkZXNjX3pvbmUobmV3enBkZXNjKSAhPSB6cGRlc2Nfem9uZSh6cGRlc2MpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWY2YWUyN2NlMTY3NzI1ZTMyNGNmYTc5YWFiOWZiNDdlZjNlNDVlMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0venNtYWxsb2MuYyBiL21tL3pzbWFsbG9jLmMKaW5kZXggODNmNTgyMGM0NWY5My4uYjA5Mjk5MTE1ODg2NyAxMDA2NDQKLS0tIGEvbW0venNtYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS96c21hbGxvYy5jCkBAIC0xNzcyLDkgJiM0MzsxNzcyLDkgQEAgc3RhdGljIGludCB6c19wYWdlX21pZ3JhdGUoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlLAogCSAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSwKIAkgKiBpdCYjMzk7cyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suCiAJICovCi0Jd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jayk7Ci0Jc3Bpbl91bmxvY2soJmFtcDtjbGFzcy0mZ3Q7bG9jayk7CiAJenNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKTsKJiM0MzsJd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jayk7CiAKIAl6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7CiAJaWYgKHpwZGVzY196b25lKG5ld3pwZGVzYykgIT0genBkZXNjX3pvbmUoenBkZXNjKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFpzbWFsbG9jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgbW0venNtYWxsb2MuY2AuIEl0JiMzOTtzIGZvY3VzZWQgb24gYHpzX3BhZ2VfbWlncmF0ZWAsIGFuZCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGEgcmVvcmRlcmluZyBvZiB1bmxvY2sgb3BlcmF0aW9ucy4gSG1tLCBpbnRlcmVzdGluZy4gVGhlIGNvZGUgYmVmb3JlIHRoZSBwYXRjaCBzaG93cyBgd3JpdGVfdW5sb2NrKCZhbXA7cG9vbC0mZ3Q7bG9jaylgLCB0aGVuIGBzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKWAsIGFuZCBmaW5hbGx5IGB6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSlgLiBOb3csIHRoZSBwYXRjaCBwcm9wb3NlcyBmbGlwcGluZyB0aGUgb3JkZXIgdG8gYHpzcGFnZV93cml0ZV91bmxvY2soenNwYWdlKWAsIHRoZW4gYHNwaW5fdW5sb2NrKCZhbXA7Y2xhc3MtJmd0O2xvY2spYCwgZm9sbG93ZWQgYnkgYHdyaXRlX3VubG9jaygmYW1wO3Bvb2wtJmd0O2xvY2spYC4KClRoaXMgc2NyZWFtcyBsb2NrIG9yZGVyaW5nIGlzc3VlIGZpeCB0byBtZSwgb3IgcG90ZW50aWFsbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gcHJldmVudGluZyBhIGRlYWRsb2NrLiBUaGUgZnVuY3Rpb24gb2J2aW91c2x5IGludm9sdmVzIG1pZ3JhdGluZyBwYWdlcyB3aXRoaW4gdGhlIHpzbWFsbG9jIHBvb2wsIHNvIGNvbnRlbnRpb24gaXMgcHJvYmFibHkgZXhwZWN0ZWQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGV0YWlscyBvZiBgenNfcGFnZV9taWdyYXRlYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcmVvcmRlcmluZy4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBpcyBwcm90ZWN0ZWQgYnkgdGhlc2UgbG9ja3M/IEkmIzM5O2xsIGNoZWNrIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQgcGVyaGFwcyByZWxhdGVkIGNvZGUsIHRvIGV2YWx1YXRlIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0IGFuZCBpZiBpdCYjMzk7cyBhZGRyZXNzaW5nIGFuIGFjdHVhbCBjb25jdXJyZW5jeSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTY3NT1zdGF0aWMgYm9vbCB6c19wYWdlX2lzb2xhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGlzb2xhdGVfbW9kZV90IG1vZGUpXG4tLVxubW0venNtYWxsb2MuYy0xNjg0LVxubW0venNtYWxsb2MuYzoxNjg1OnN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbm1tL3pzbWFsbG9jLmMtMTY4Ni1cdFx0ZW51bSBtaWdyYXRlX21vZGUgbW9kZSlcbi0tXG5tbS96c21hbGxvYy5jPTE3OTU9Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xubW0venNtYWxsb2MuYy0xNzk2LVx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcbm1tL3pzbWFsbG9jLmM6MTc5NzpcdC5taWdyYXRlX3BhZ2UgPSB6c19wYWdlX21pZ3JhdGUsXG5tbS96c21hbGxvYy5jLTE3OTgtXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkRpdmluZyBpbnRvIHRoZSBac21hbGxvYyBQYWdlIE1pZ3JhdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBgenNfcGFnZV9taWdyYXRlYC4gUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBwYXJ0IG9mIHRoZSBgenNtYWxsb2NfbW9wc2Agc3RydWN0dXJlLCB0aGUgbWVtb3J5IG9wZXJhdGlvbnMgZm9yIHpzbWFsbG9jLiBNeSBmb2N1cyBoZXJlIGlzIHBhZ2UgbWlncmF0aW9uLCBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxpbmcgdGhpcyBzcGVjaWZpYyBmZWF0dXJlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHpzbWFsbG9jIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbnZvbHZlZCB3aXRoIGB6c21hbGxvY2AgaW4gdGhlIGZpcnN0IHBsYWNlPyBXaGF0IHRyaWdnZXJzIHRoZSBhbGxvY2F0aW9uIGFuZCB1c2FnZSBvZiBtZW1vcnk/IExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaU01BTExPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMTQ9Y29uZmlnIFpTV0FQX0NPTVBSRVNTT1JfREVGQVVMVFxuLS1cbm1tL0tjb25maWctMTI0LVxubW0vS2NvbmZpZzoxMjU6Y29uZmlnIFpTTUFMTE9DXG5tbS9LY29uZmlnLTEyNi1cdHRyaXN0YXRlXG4tLVxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcJiMzNDtac21hbGxvYyBpcyBhIGNvbW1vbiBiYWNrZW5kIGFsbG9jYXRvciBmb3IgenN3YXAgXHUwMDI2IHpyYW1cJiMzNDtcbm1tL0tjb25maWctMTM0LVxubW0vS2NvbmZpZzoxMzU6Y29uZmlnIFpTTUFMTE9DX1NUQVRcbm1tL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtFeHBvcnQgenNtYWxsb2Mgc3RhdGlzdGljc1wmIzM0O1xuLS1cbm1tL0tjb25maWctMTQzLVxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcbm1tL0tjb25maWctMTQ1LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBaU01BTExPQyYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gYFpTTUFMTE9DYCDigJMgaXQmIzM5O3MgYSB0cmlzdGF0ZSBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBidWlsdCBhcyBhIGJ1aWx0LWluIG1vZHVsZSwgYSBsb2FkYWJsZSBtb2R1bGUsIG9yIG5vdCBhdCBhbGwuIE15IGZvY3VzIGhlcmUgaXMgaG93IGl0JiMzOTtzIGFjdGl2YXRlZDsgaXQmIzM5O3Mgc2VsZWN0ZWQsIGRpcmVjdGx5LCBieSBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAuCgpUbyB0cmFjZSBiYWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCB3aGVyZSBpdCYjMzk7cyBpbnN0YW50aWF0ZWQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBzdGFydCB3aXRoIGBtbS9LY29uZmlnYCDigJMgbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNvbnRleHQg4oCTIGFuZCBhbHNvIGxvb2sgaW4gYGRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnYCBpbiBjYXNlIGl0JiMzOTtzIGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoZSB6cmFtIGRyaXZlciBpdHNlbGYuIFRoYXQgd2lsbCBwaW5wb2ludCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9kdWxlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBjb21wcmVzc2VkIFJBTSAoenJhbSkgYW5kIHN3YXAgKHpzd2FwKS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Olx0c2VsZWN0IFpTTUFMTE9DXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02LVx0aGVscFxuLS1cbm1tL0tjb25maWc9MjI9Y29uZmlnIFpTV0FQXG4tLVxubW0vS2NvbmZpZy0yNS1cdHNlbGVjdCBDUllQVE9cbm1tL0tjb25maWc6MjY6XHRzZWxlY3QgWlNNQUxMT0Ncbm1tL0tjb25maWctMjctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipaU01BTExPQyBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgWlNNQUxMT0NgIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuZXZlciBgWlJBTWAgb3IgYFpTV0FQYCBhcmUgdHVybmVkIG9uLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2Ugc2hvdWxkICpwcm9iYWJseSoganVzdCBlbmFibGUgYFpTTUFMTE9DYCBkaXJlY3RseSwgYnV0IHRoZW4gSSByZW1lbWJlciBpdCYjMzk7cyBhIHRyaXN0YXRlIG9wdGlvbiwgc2VsZWN0ZWQgYnkgYFpSQU1gIGFuZCBgWlNXQVBgLiBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBlbmFibGluZyBlaXRoZXIgYFpTTUFMTE9DYCBvciBgWlJBTWAgd291bGQgYWNoaWV2ZSB0aGUgc2FtZSBvdXRjb21lLgoKV2FpdCBhIHNlY29uZC4gU2luY2UgYFpTTUFMTE9DYCAqaXMqIGEgdHJpc3RhdGUgb3B0aW9uLCB3ZSAqY2FuKiBqdXN0IGVuYWJsZSBpdCBkaXJlY3RseS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYW5kIGl0IG1ha2VzIHRoZSBkZXBlbmRlbmN5IGNsZWFyZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBtb3JlIGZ1bGx5LiBJcyBpdCBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkPyBUaW1lIHRvIHZlcmlmeSB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UsIGxpa2VseSBgbW0venNtYWxsb2MuY2AsIHRvIGJlIGNlcnRhaW4uIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enNfcGFnZV9taWdyYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS96c21hbGxvYy5jPTE2NzU9c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTY4NC1cbm1tL3pzbWFsbG9jLmM6MTY4NTpzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXG5tbS96c21hbGxvYy5jLTE2ODYtXHRcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXG4tLVxubW0venNtYWxsb2MuYz0xNzk1PWNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG5tbS96c21hbGxvYy5jOjE3OTc6XHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxubW0venNtYWxsb2MuYy0xNzk4LVx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuCgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIG9mIGB6c19wYWdlX21pZ3JhdGVgKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBpcyB3cmFwcGVkIHdpdGhpbiBhIHByZXByb2Nlc3NvciBgI2lmZGVmYCBibG9jay4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHBsYXRmb3JtLXNwZWNpZmljIG9yIGZlYXR1cmUtZmxhZ2dlZCBjb2RlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdHMgaW5jbHVzaW9uIGluIHRoZSBidWlsZCBpcyBjb25kaXRpb25hbCBvbiBzb21lIG90aGVyIG1hY3JvIGRlZmluaXRpb24uIERlcGVuZGluZyBvbiB0aGUgYW5zd2VyLCBpdCYjMzk7bGwgaW5kaWNhdGUgYSBncmVhdCBkZWFsIGFib3V0IHRoZSBvdmVyYWxsIHByb2plY3Qgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZmRlZiBDT05GSUdfQ09NUEFDVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYz0xOTk9c3RydWN0IHpzX3Bvb2wge1xuLS1cbm1tL3pzbWFsbG9jLmMtMjEzLSNlbmRpZlxubW0venNtYWxsb2MuYzoyMTQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIxNS1cdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XG4tLVxubW0venNtYWxsb2MuYz0zNjA9c3RhdGljIGJvb2wgWnNIdWdlUGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0zNjQtXG5tbS96c21hbGxvYy5jOjM2NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3pzbWFsbG9jLmMtMzY2LXN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCk7XG4tLVxubW0venNtYWxsb2MuYz0xNTk0PXN0YXRpYyBpbnQgcHV0YmFja196c3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNjAzLVxubW0venNtYWxsb2MuYzoxNjA0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjA1LS8qXG4tLVxubW0venNtYWxsb2MuYz0xNjA5PXN0YXRpYyB2b2lkIGxvY2tfenNwYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcbi0tXG5tbS96c21hbGxvYy5jLTE2NDctXG5tbS96c21hbGxvYy5jOjE2NDg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTE2NDktXG4tLVxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcbi0tXG5tbS96c21hbGxvYy5jLTIyNDQtXG5tbS96c21hbGxvYy5jOjIyNDU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIyNDYtXHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcdTAwMjZ6c21hbGxvY19tb3BzLCBQR1RZX3pzbWFsbG9jKTtcbi0tXG5tbS96c21hbGxvYy5jPTIyNTY9c3RhdGljIHZvaWQgX19leGl0IHpzX2V4aXQodm9pZClcbm1tL3pzbWFsbG9jLmMtMjI1Ny17XG5tbS96c21hbGxvYy5jOjIyNTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTIyNTktXHRzZXRfbW92YWJsZV9vcHMoTlVMTCwgUEdUWV96c21hbGxvYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIENvbXBhY3Rpb24gRGVwZW5kZW5jeSBpbiB6c21hbGxvYyoqCgpSaWdodCwgYENPTkZJR19DT01QQUNUSU9OYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFdlIGNhbiYjMzk7dCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgb2YgenNtYWxsb2MgYW5kIGV4YW1pbmUgdGhlIHBhZ2UgbWlncmF0aW9uIGxvZ2ljLiBMZXQmIzM5O3Mgc2VlIGhvdyBgenNfcGFnZV9taWdyYXRlYCBpcyBpbXBsZW1lbnRlZC4gSSYjMzk7bGwgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHpvbmUgYWxsb2NhdG9yIGFuZCBob3cgdGhleSBoYW5kbGUgdGhlIG1vdmVtZW50IG9mIHBhZ2VzIHdpdGhpbiB0aGUgenNtYWxsb2MgcG9vbC4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgY29tcGFjdGlvbiBzdWJzeXN0ZW0gdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZXkgY2FuIG1vdmUgYSBwYXJ0aWN1bGFyIHBhZ2UuIFRoaXMgaGFzIHRvIGJlIGluIGBtbS96c21hbGxvYy5jYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY0OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY0ODpcdCNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxuMTY0OTpcdFxuMTY1MDpcdHN0YXRpYyB2b2lkIHJlcGxhY2Vfc3ViX3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsXG4xNjUxOlx0XHRcdFx0XHRzdHJ1Y3QgenBkZXNjICpuZXd6cGRlc2MsIHN0cnVjdCB6cGRlc2MgKm9sZHpwZGVzYylcbjE2NTI6XHR7XG4xNjUzOlx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2M7XG4xNjU0Olx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2NzW1pTX01BWF9QQUdFU19QRVJfWlNQQUdFXSA9IHtOVUxMLCB9O1xuMTY1NTpcdFx0dW5zaWduZWQgaW50IGZpcnN0X29ial9vZmZzZXQ7XG4xNjU2Olx0XHRpbnQgaWR4ID0gMDtcbjE2NTc6XHRcbjE2NTg6XHRcdHpwZGVzYyA9IGdldF9maXJzdF96cGRlc2MoenNwYWdlKTtcbjE2NTk6XHRcdGRvIHtcbjE2NjA6XHRcdFx0aWYgKHpwZGVzYyA9PSBvbGR6cGRlc2MpXG4xNjYxOlx0XHRcdFx0enBkZXNjc1tpZHhdID0gbmV3enBkZXNjO1xuMTY2MjpcdFx0XHRlbHNlXG4xNjYzOlx0XHRcdFx0enBkZXNjc1tpZHhdID0genBkZXNjO1xuMTY2NDpcdFx0XHRpZHgmIzQzOyYjNDM7O1xuMTY2NTpcdFx0fSB3aGlsZSAoKHpwZGVzYyA9IGdldF9uZXh0X3pwZGVzYyh6cGRlc2MpKSAhPSBOVUxMKTtcbjE2NjY6XHRcbjE2Njc6XHRcdGNyZWF0ZV9wYWdlX2NoYWluKGNsYXNzLCB6c3BhZ2UsIHpwZGVzY3MpO1xuMTY2ODpcdFx0Zmlyc3Rfb2JqX29mZnNldCA9IGdldF9maXJzdF9vYmpfb2Zmc2V0KG9sZHpwZGVzYyk7XG4xNjY5Olx0XHRzZXRfZmlyc3Rfb2JqX29mZnNldChuZXd6cGRlc2MsIGZpcnN0X29ial9vZmZzZXQpO1xuMTY3MDpcdFx0aWYgKHVubGlrZWx5KFpzSHVnZVBhZ2UoenNwYWdlKSkpXG4xNjcxOlx0XHRcdG5ld3pwZGVzYy1cdTAwM2VoYW5kbGUgPSBvbGR6cGRlc2MtXHUwMDNlaGFuZGxlO1xuMTY3MjpcdFx0X196cGRlc2Nfc2V0X21vdmFibGUobmV3enBkZXNjKTtcbjE2NzM6XHR9XG4xNjc0Olx0XG4xNjc1Olx0c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxuMTY3NjpcdHtcbjE2Nzc6XHRcdC8qXG4xNjc4Olx0XHQgKiBQYWdlIGlzIGxvY2tlZCBzbyB6c3BhZ2UgY2FuJiMzOTt0IGJlIGRlc3Ryb3llZCBjb25jdXJyZW50bHlcbjE2Nzk6XHRcdCAqIChzZWUgZnJlZV96c3BhZ2UoKSkuIEJ1dCBpZiB0aGUgcGFnZSB3YXMgYWxyZWFkeSBkZXN0cm95ZWRcbjE2ODA6XHRcdCAqIChzZWUgcmVzZXRfenBkZXNjKCkpLCByZWZ1c2UgaXNvbGF0aW9uIGhlcmUuXG4xNjgxOlx0XHQgKi9cbjE2ODI6XHRcdHJldHVybiBwYWdlX3pwZGVzYyhwYWdlKS1cdTAwM2V6c3BhZ2U7XG4xNjgzOlx0fVxuMTY4NDpcdFxuMTY4NTpcdHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbjE2ODY6XHRcdFx0ZW51bSBtaWdyYXRlX21vZGUgbW9kZSlcbjE2ODc6XHR7XG4xNjg4Olx0XHRzdHJ1Y3QgenNfcG9vbCAqcG9vbDtcbjE2ODk6XHRcdHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcztcbjE2OTA6XHRcdHN0cnVjdCB6c3BhZ2UgKnpzcGFnZTtcbjE2OTE6XHRcdHN0cnVjdCB6cGRlc2MgKmR1bW15O1xuMTY5MjpcdFx0c3RydWN0IHpwZGVzYyAqbmV3enBkZXNjID0gcGFnZV96cGRlc2MobmV3cGFnZSk7XG4xNjkzOlx0XHRzdHJ1Y3QgenBkZXNjICp6cGRlc2MgPSBwYWdlX3pwZGVzYyhwYWdlKTtcbjE2OTQ6XHRcdHZvaWQgKnNfYWRkciwgKmRfYWRkciwgKmFkZHI7XG4xNjk1Olx0XHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xuMTY5NjpcdFx0dW5zaWduZWQgbG9uZyBoYW5kbGU7XG4xNjk3Olx0XHR1bnNpZ25lZCBsb25nIG9sZF9vYmosIG5ld19vYmo7XG4xNjk4Olx0XHR1bnNpZ25lZCBpbnQgb2JqX2lkeDtcbjE2OTk6XHRcbjE3MDA6XHRcdC8qXG4xNzAxOlx0XHQgKiBUT0RPOiBub3RoaW5nIHByZXZlbnRzIGEgenNwYWdlIGZyb20gZ2V0dGluZyBkZXN0cm95ZWQgd2hpbGVcbjE3MDI6XHRcdCAqIGl0IGlzIGlzb2xhdGVkIGZvciBtaWdyYXRpb24sIGFzIHRoZSBwYWdlIGxvY2sgaXMgdGVtcG9yYXJpbHlcbjE3MDM6XHRcdCAqIGRyb3BwZWQgYWZ0ZXIgenNfcGFnZV9pc29sYXRlKCkgc3VjY2VlZGVkOiB3ZSBzaG91bGQgcmV3b3JrIHRoYXRcbjE3MDQ6XHRcdCAqIGFuZCBkZWZlciBkZXN0cm95aW5nIHN1Y2ggcGFnZXMgb25jZSB0aGV5IGFyZSB1bi1pc29sYXRlZCAocHV0YmFjaylcbjE3MDU6XHRcdCAqIGluc3RlYWQuXG4xNzA2Olx0XHQgKi9cbjE3MDc6XHRcdGlmICghenBkZXNjLVx1MDAzZXpzcGFnZSlcbjE3MDg6XHRcdFx0cmV0dXJuIDA7XG4xNzA5Olx0XG4xNzEwOlx0XHQvKiBUaGUgcGFnZSBpcyBsb2NrZWQsIHNvIHRoaXMgcG9pbnRlciBtdXN0IHJlbWFpbiB2YWxpZCAqL1xuMTcxMTpcdFx0enNwYWdlID0gZ2V0X3pzcGFnZSh6cGRlc2MpO1xuMTcxMjpcdFx0cG9vbCA9IHpzcGFnZS1cdTAwM2Vwb29sO1xuMTcxMzpcdFxuMTcxNDpcdFx0LypcbjE3MTU6XHRcdCAqIFRoZSBwb29sIG1pZ3JhdGVfbG9jayBwcm90ZWN0cyB0aGUgcmFjZSBiZXR3ZWVuIHpwYWdlIG1pZ3JhdGlvblxuMTcxNjpcdFx0ICogYW5kIHpzX2ZyZWUuXG4xNzE3Olx0XHQgKi9cbjE3MTg6XHRcdHdyaXRlX2xvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbjE3MTk6XHRcdGNsYXNzID0genNwYWdlX2NsYXNzKHBvb2wsIHpzcGFnZSk7XG4xNzIwOlx0XG4xNzIxOlx0XHQvKlxuMTcyMjpcdFx0ICogdGhlIGNsYXNzIGxvY2sgcHJvdGVjdHMgenBhZ2UgYWxsb2MvZnJlZSBpbiB0aGUgenNwYWdlLlxuMTcyMzpcdFx0ICovXG4xNzI0Olx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzI1Olx0XHQvKiB0aGUgenNwYWdlIHdyaXRlX2xvY2sgcHJvdGVjdHMgenBhZ2UgYWNjZXNzIHZpYSB6c19vYmpfcmVhZC93cml0ZSgpICovXG4xNzI2Olx0XHRpZiAoIXpzcGFnZV93cml0ZV90cnlsb2NrKHpzcGFnZSkpIHtcbjE3Mjc6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzI4Olx0XHRcdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuMTcyOTpcdFx0XHQvKlxuMTczMDpcdFx0XHQgKiBSZXR1cm4gLUVCVVNZIGJ1dCBub3QgLUVBR0FJTjogdGhlIHpzcGFnZSYjMzk7cyByZWFkZXItbG9ja1xuMTczMTpcdFx0XHQgKiBvd25lciBtYXkgaG9sZCB0aGUgbG9jayBmb3IgYW4gdW5ib3VuZGVkIGR1cmF0aW9uIGR1ZSB0byBhXG4xNzMyOlx0XHRcdCAqIHNsb3cgZGVjb21wcmVzc2lvbiBvciByZWFkZXItbG9jayBvd25lciBwcmVlbXB0aW9uLlxuMTczMzpcdFx0XHQgKiBTaW5jZSBtaWdyYXRpb24gcmV0cmllcyBhcmUgYm91bmRlZCBieVxuMTczNDpcdFx0XHQgKiBOUl9NQVhfTUlHUkFURV9QQUdFU19SRVRSWSBhbmQgcGVyZm9ybWVkIHdpdGggdmlydHVhbGx5IG5vXG4xNzM1Olx0XHRcdCAqIGRlbGF5IGJldHdlZW4gYXR0ZW1wdHMsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgbG9jayB3aWxsXG4xNzM2Olx0XHRcdCAqIGJlIHJlbGVhc2VkIGluIHRpbWUgZm9yIGEgcmV0cnkgdG8gc3VjY2VlZC5cbjE3Mzc6XHRcdFx0ICogLUVBR0FJTiBpbXBsaWVzIFwmIzM0O3RyeSBhZ2FpbiBzb29uXCYjMzQ7LCB3aGljaCBkb2VzIG5vdCBob2xkIGhlcmUuXG4xNzM4Olx0XHRcdCAqIC1FQlVTWSBtb3JlIGFjY3VyYXRlbHkgY29udmV5cyBcJiMzNDtyZXNvdXJjZSBpcyBvY2N1cGllZCxcbjE3Mzk6XHRcdFx0ICogbWlncmF0aW9uIGNhbm5vdCBwcm9jZWVkXCYjMzQ7LlxuMTc0MDpcdFx0XHQgKi9cbjE3NDE6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbjE3NDI6XHRcdH1cbjE3NDM6XHRcbjE3NDQ6XHRcdC8qIFdlJiMzOTtyZSBjb21taXR0ZWQsIHRlbGwgdGhlIHdvcmxkIHRoYXQgdGhpcyBpcyBhIFpzbWFsbG9jIHBhZ2UuICovXG4xNzQ1Olx0XHRfX3pwZGVzY19zZXRfenNtYWxsb2MobmV3enBkZXNjKTtcbjE3NDY6XHRcbjE3NDc6XHRcdG9mZnNldCA9IGdldF9maXJzdF9vYmpfb2Zmc2V0KHpwZGVzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIGZvciBgenNfcGFnZV9taWdyYXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGluc3RydWN0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgJiMzNDtMZXQmIzM5O3MgcmVhZCB0aGUgcmVzdCBvZiBgenNfcGFnZV9taWdyYXRlYC4mIzM0OyBUaGF0IGltcGxpZXMgYSBzcGVjaWZpYyBmdW5jdGlvbiBvciBjb2RlIHNlZ21lbnQsIGxpa2VseSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgd2UmIzM5O3JlIGdvaW5nIGluIHdpdGggYSB0YXJnZXRlZCBwdXJwb3NlLCBwcm9iYWJseSByZWxhdGVkIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHksIGRlYnVnZ2luZyBhbiBpc3N1ZSwgb3IgcG90ZW50aWFsbHkgbW9kaWZ5aW5nIGl0cyBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBhbSBJIGxvb2tpbmcgZm9yPyYjMzQ7IEFyZSB3ZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBpZGVudGlmeSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGZpbmQgYSBzcGVjaWZpYyBhbGdvcml0aG0gaW1wbGVtZW50YXRpb24sIG9yIGNoZWNrIGZvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXM/IFRoZSBjb250ZXh0IGlzIGNydWNpYWw7IHdpdGhvdXQgaXQsIHRoaXMgaXMganVzdCBhIHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyBnZXQgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgY29kZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NDg6XHRcdHNfYWRkciA9IGttYXBfbG9jYWxfenBkZXNjKHpwZGVzYyk7XG4xNzQ5Olx0XG4xNzUwOlx0XHQvKlxuMTc1MTpcdFx0ICogSGVyZSwgYW55IHVzZXIgY2Fubm90IGFjY2VzcyBhbGwgb2JqZWN0cyBpbiB0aGUgenNwYWdlIHNvIGxldCYjMzk7cyBtb3ZlLlxuMTc1MjpcdFx0ICovXG4xNzUzOlx0XHRkX2FkZHIgPSBrbWFwX2xvY2FsX3pwZGVzYyhuZXd6cGRlc2MpO1xuMTc1NDpcdFx0Y29weV9wYWdlKGRfYWRkciwgc19hZGRyKTtcbjE3NTU6XHRcdGttc2FuX2NvcHlfcGFnZV9tZXRhKHpwZGVzY19wYWdlKG5ld3pwZGVzYyksIHpwZGVzY19wYWdlKHpwZGVzYykpO1xuMTc1NjpcdFx0a3VubWFwX2xvY2FsKGRfYWRkcik7XG4xNzU3Olx0XG4xNzU4Olx0XHRmb3IgKGFkZHIgPSBzX2FkZHIgJiM0Mzsgb2Zmc2V0OyBhZGRyIFx1MDAzYyBzX2FkZHIgJiM0MzsgUEFHRV9TSVpFO1xuMTc1OTpcdFx0XHRcdFx0XHRhZGRyICYjNDM7PSBjbGFzcy1cdTAwM2VzaXplKSB7XG4xNzYwOlx0XHRcdGlmIChvYmpfYWxsb2NhdGVkKHpwZGVzYywgYWRkciwgXHUwMDI2aGFuZGxlKSkge1xuMTc2MTpcdFxuMTc2MjpcdFx0XHRcdG9sZF9vYmogPSBoYW5kbGVfdG9fb2JqKGhhbmRsZSk7XG4xNzYzOlx0XHRcdFx0b2JqX3RvX2xvY2F0aW9uKG9sZF9vYmosIFx1MDAyNmR1bW15LCBcdTAwMjZvYmpfaWR4KTtcbjE3NjQ6XHRcdFx0XHRuZXdfb2JqID0gKHVuc2lnbmVkIGxvbmcpbG9jYXRpb25fdG9fb2JqKG5ld3pwZGVzYywgb2JqX2lkeCk7XG4xNzY1Olx0XHRcdFx0cmVjb3JkX29iaihoYW5kbGUsIG5ld19vYmopO1xuMTc2NjpcdFx0XHR9XG4xNzY3Olx0XHR9XG4xNzY4Olx0XHRrdW5tYXBfbG9jYWwoc19hZGRyKTtcbjE3Njk6XHRcbjE3NzA6XHRcdHJlcGxhY2Vfc3ViX3BhZ2UoY2xhc3MsIHpzcGFnZSwgbmV3enBkZXNjLCB6cGRlc2MpO1xuMTc3MTpcdFx0LypcbjE3NzI6XHRcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcbjE3NzM6XHRcdCAqIGl0JiMzOTtzIG9rYXkgdG8gcmVsZWFzZSBtaWdyYXRpb25fbG9jay5cbjE3NzQ6XHRcdCAqL1xuMTc3NTpcdFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xuMTc3NjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xNzc3Olx0XHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbjE3Nzg6XHRcbjE3Nzk6XHRcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcbjE3ODA6XHRcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcbjE3ODE6XHRcdFx0enBkZXNjX2RlY196b25lX3BhZ2Vfc3RhdGUoenBkZXNjKTtcbjE3ODI6XHRcdFx0enBkZXNjX2luY196b25lX3BhZ2Vfc3RhdGUobmV3enBkZXNjKTtcbjE3ODM6XHRcdH1cbjE3ODQ6XHRcbjE3ODU6XHRcdHJlc2V0X3pwZGVzYyh6cGRlc2MpO1xuMTc4NjpcdFx0enBkZXNjX3B1dCh6cGRlc2MpO1xuMTc4NzpcdFxuMTc4ODpcdFx0cmV0dXJuIDA7XG4xNzg5Olx0fVxuMTc5MDpcdFxuMTc5MTpcdHN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcbjE3OTI6XHR7XG4xNzkzOlx0fVxuMTc5NDpcdFxuMTc5NTpcdGNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbjE3OTY6XHRcdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG4xNzk3Olx0XHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxuMTc5ODpcdFx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcbjE3OTk6XHR9O1xuMTgwMDpcdFxuMTgwMTpcdC8qXG4xODAyOlx0ICogQ2FsbGVyIHNob3VsZCBob2xkIHBhZ2VfbG9jayBvZiBhbGwgcGFnZXMgaW4gdGhlIHpzcGFnZVxuMTgwMzpcdCAqIEluIGhlcmUsIHdlIGNhbm5vdCB1c2UgenNwYWdlIG1ldGEgZGF0YS5cbjE4MDQ6XHQgKi9cbjE4MDU6XHRzdGF0aWMgdm9pZCBhc3luY19mcmVlX3pzcGFnZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4xODA2Olx0e1xuMTgwNzpcdFx0aW50IGk7XG4xODA4Olx0XHRzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3M7XG4xODA5Olx0XHRzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsICp0bXA7XG4xODEwOlx0XHRMSVNUX0hFQUQoZnJlZV9wYWdlcyk7XG4xODExOlx0XHRzdHJ1Y3QgenNfcG9vbCAqcG9vbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgenNfcG9vbCxcbjE4MTI6XHRcdFx0XHRcdFx0ZnJlZV93b3JrKTtcbjE4MTM6XHRcbjE4MTQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFpTX1NJWkVfQ0xBU1NFUzsgaSYjNDM7JiM0MzspIHtcbjE4MTU6XHRcdFx0Y2xhc3MgPSBwb29sLVx1MDAzZXNpemVfY2xhc3NbaV07XG4xODE2Olx0XHRcdGlmIChjbGFzcy1cdTAwM2VpbmRleCAhPSBpKVxuMTgxNzpcdFx0XHRcdGNvbnRpbnVlO1xuMTgxODpcdFxuMTgxOTpcdFx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODIwOlx0XHRcdGxpc3Rfc3BsaWNlX2luaXQoXHUwMDI2Y2xhc3MtXHUwMDNlZnVsbG5lc3NfbGlzdFtaU19JTlVTRV9SQVRJT18wXSxcbjE4MjE6XHRcdFx0XHRcdCBcdTAwMjZmcmVlX3BhZ2VzKTtcbjE4MjI6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODIzOlx0XHR9XG4xODI0Olx0XG4xODI1Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoenNwYWdlLCB0bXAsIFx1MDAyNmZyZWVfcGFnZXMsIGxpc3QpIHtcbjE4MjY6XHRcdFx0bGlzdF9kZWwoXHUwMDI2enNwYWdlLVx1MDAzZWxpc3QpO1xuMTgyNzpcdFx0XHRsb2NrX3pzcGFnZSh6c3BhZ2UpO1xuMTgyODpcdFxuMTgyOTpcdFx0XHRjbGFzcyA9IHpzcGFnZV9jbGFzcyhwb29sLCB6c3BhZ2UpO1xuMTgzMDpcdFx0XHRzcGluX2xvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODMxOlx0XHRcdGNsYXNzX3N0YXRfc3ViKGNsYXNzLCBaU19JTlVTRV9SQVRJT18wLCAxKTtcbjE4MzI6XHRcdFx0X19mcmVlX3pzcGFnZShwb29sLCBjbGFzcywgenNwYWdlKTtcbjE4MzM6XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4xODM0Olx0XHR9XG4xODM1Olx0fTtcbjE4MzY6XHRcbjE4Mzc6XHRzdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXG4xODM4Olx0e1xuMTgzOTpcdFx0c2NoZWR1bGVfd29yayhcdTAwMjZwb29sLVx1MDAzZWZyZWVfd29yayk7XG4xODQwOlx0fVxuMTg0MTpcdFxuMTg0MjpcdHN0YXRpYyB2b2lkIHpzX2ZsdXNoX21pZ3JhdGlvbihzdHJ1Y3QgenNfcG9vbCAqcG9vbClcbjE4NDM6XHR7XG4xODQ0Olx0XHRmbHVzaF93b3JrKFx1MDAyNnBvb2wtXHUwMDNlZnJlZV93b3JrKTtcbjE4NDU6XHR9XG4xODQ2Olx0XG4xODQ3Olx0c3RhdGljIHZvaWQgaW5pdF9kZWZlcnJlZF9mcmVlKHN0cnVjdCB6c19wb29sICpwb29sKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvY2sgT3JkZXJpbmcgQnVnIEZpeCBpbiB6c19wYWdlX21pZ3JhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9jayByZWxlYXNlIG9yZGVyIHdpdGhpbiBgenNfcGFnZV9taWdyYXRlYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUuIFRoZSBjb2RlIGFjcXVpcmVzIHRocmVlIGxvY2tzOiBmaXJzdCBgcG9vbC0mZ3Q7bG9ja2AgYXMgYSB3cml0ZSBsb2NrLCB0aGVuIGBjbGFzcy0mZ3Q7bG9ja2AgYXMgYSBzcGlubG9jaywgYW5kIGZpbmFsbHksIGl0IHRyaWVzIHRvIGFjcXVpcmUgYHpzcGFnZWAgdXNpbmcgYHpzcGFnZV93cml0ZV90cnlsb2NrYC4gU28sIHRoZSBhY3F1aXNpdGlvbiBvcmRlciBpcyBzdHJhaWdodGZvcndhcmQ6IGBwb29sLSZndDtsb2NrYCwgdGhlbiBgY2xhc3MtJmd0O2xvY2tgLCB0aGVuIGB6c3BhZ2VgLgoKVGhlIHByb2JsZW0gaXMgdGhlICpvcmlnaW5hbCogcmVsZWFzZSBvcmRlciBtaXJyb3JlZCB0aGUgYWNxdWlzaXRpb24gb3JkZXIuICBUaGF0JiMzOTtzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBkZWFkbG9ja3MhICBUaGUgcGF0Y2ggY29ycmVjdHMgdGhpcy4gIEl0IG5vdyByZWxlYXNlcyB0aGUgbG9ja3MgaW4gdGhlICpyZXZlcnNlKiBvcmRlcjogYHpzcGFnZWAsIHRoZW4gYGNsYXNzLSZndDtsb2NrYCwgdGhlbiBgcG9vbC0mZ3Q7bG9ja2AuICBUaGlzIGlzIHRoZSBjb3JyZWN0IHBhdHRlcm4gdG8gYXZvaWQgcG90ZW50aWFsIGxvY2stb3JkZXJpbmcgdmlvbGF0aW9ucyBhbmQgc3Vic2VxdWVudCBkZWFkbG9ja3Mgb3IsIGV2ZW4gd29yc2UsIHRyaWdnZXJpbmcgbG9ja2RlcCB3YXJuaW5ncyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVwcm9kdWNlIGFuZCBkZWJ1Zy4gIFNvLCBmdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4KCkdpdmVuIHRoYXQgdGhpcyBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUsIGl0JiMzOTtzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiAgV2UgbmVlZCB0byB0cmlnZ2VyIGB6c19wYWdlX21pZ3JhdGVgIHJlcGVhdGVkbHkgdW5kZXIgdmFyaW91cyBjb25jdXJyZW50IGNvbmRpdGlvbnMuICBUbyBkbyB0aGF0LCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB6c19wYWdlX21pZ3JhdGVgIGdldHMgY2FsbGVkLiAgSXQmIzM5O3MgaW52b2tlZCBieSB0aGUgcGFnZSBtaWdyYXRpb24gY29kZSwgc28gY29tcGFjdGlvbiwgTlVNQSBiYWxhbmNpbmcsIG9yIGFuIGV4cGxpY2l0IG1pZ3JhdGlvbiByZXF1ZXN0IHdvdWxkIGFsbCBiZSBwb3RlbnRpYWwgdHJpZ2dlcnMuICBUbyBhY3R1YWxseSAqZW5hYmxlKiBgenNtYWxsb2NgIGFuZCBpdHMgY29tcGFjdGlvbiBzdXBwb3J0ICh3aGljaCB3ZSBuZWVkIGZvciB0aGlzIGZ1enppbmcpLCB3ZSBuZWVkIHRoZSBmb2xsb3dpbmcgS2NvbmZpZyBvcHRpb25zOiBgQ09ORklHX1pTTUFMTE9DPXlgLCBgQ09ORklHX0NPTVBBQ1RJT049eWAsIGFuZCBgQ09ORklHX01JR1JBVElPTj15YC4gIGBDT05GSUdfTUlHUkFUSU9OYCBpcyB1c3VhbGx5IHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgYENPTkZJR19DT01QQUNUSU9OYCwgYnV0IHdlIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCwgb2YgY291cnNlLgoKVGltZSB0byBsb29rIGludG8gYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMgYW5kIHRoZW4gZGV2aXNlIGEgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTVBBQ1RJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipSZXZpc2l0aW5nIGBaU01BTExPQ2AqKgoKUmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgWlNNQUxMT0NgLiBJJiMzOTt2ZSBiZWVuIG11bGxpbmcgb3ZlciB0aGUgaW1wbGljYXRpb25zIG9mIGl0cyBjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBhIHdoaWxlIG5vdy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGF0ZXN0IGNoYW5nZXMgaW4gdGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kuIEFyZSB0aGVyZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zIG9yIHVuZm9yZXNlZW4gb3B0aW1pemF0aW9ucyB0aGF0IGhhdmUgY3JlcHQgaW4/IEkmIzM5O20gc3BlY2lmaWNhbGx5IGN1cmlvdXMgYWJvdXQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG5ld2VyIE5VTUEtYXdhcmUgYWxsb2NhdGlvbiBwYXR0ZXJucy4gSGF2ZSB0aGUgcmVjZW50IHR3ZWFrcyB0byB0aGUgcGVyLW5vZGUgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGhhZCBhbnkgaW1wYWN0IG9uIGBaU01BTExPQ2AmIzM5O3MgYWJpbGl0eSB0byBlZmZpY2llbnRseSBtYW5hZ2Ugc21hbGwgb2JqZWN0IGFsbG9jYXRpb25zIGFjcm9zcyB0aGUgbWVtb3J5IGhpZXJhcmNoeT8gSSB3YW50IHRvIHZlcmlmeSBpZiB0aGUgZXhwZWN0ZWQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGFyZSBob2xkaW5nIHVwIHVuZGVyIHZhcmlvdXMgd29ya2xvYWRzLCBlc3BlY2lhbGx5IHRob3NlIGNoYXJhY3Rlcml6ZWQgYnkgaGlnaCBvYmplY3QgY2h1cm4uIEEgcXVpY2sgcmV2aWV3IG9mIGl0cyBjb3JlIG1lY2hhbmljcyBpcyBpbiBvcmRlciB0byBiZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBiZW5jaG1hcmtzIGFnYWluIGFuZCBtYXliZSBldmVuIHNpbXVsYXRlIGEgZmV3IHNwZWNpZmljIGVkZ2UgY2FzZXMgdGhhdCBJIGhhdmUgYmVlbiBjb25zaWRlcmluZy4gSXQmIzM5O3MgdGltZSB0byB0YWtlIGEgZnJlc2ggbG9vayBhdCBgWlNNQUxMT0NgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWlNNQUxMT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE0PWNvbmZpZyBaU1dBUF9DT01QUkVTU09SX0RFRkFVTFRcbi0tXG5tbS9LY29uZmlnLTEyNC1cbm1tL0tjb25maWc6MTI1OmNvbmZpZyBaU01BTExPQ1xubW0vS2NvbmZpZy0xMjYtXHR0cmlzdGF0ZVxuLS1cbm1tL0tjb25maWc9MTMzPWNvbW1lbnQgXCYjMzQ7WnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFx1MDAyNiB6cmFtXCYjMzQ7XG5tbS9LY29uZmlnLTEzNC1cbm1tL0tjb25maWc6MTM1OmNvbmZpZyBaU01BTExPQ19TVEFUXG5tbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7RXhwb3J0IHpzbWFsbG9jIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTE0My1cbm1tL0tjb25maWc6MTQ0OmNvbmZpZyBaU01BTExPQ19DSEFJTl9TSVpFXG5tbS9LY29uZmlnLTE0NS1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBwYWdlcyBwZXItenNwYWdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBaU01BTExPQyBNdXNpbmdzKioKCk9rYXksIHNvIGBaU01BTExPQ2AgaXMgYSB0cmlzdGF0ZSwgaW50ZXJlc3RpbmcuIEkgY2FuIGVuYWJsZSBpdCwgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMganVzdCBzZXQgYFpTTUFMTE9DPXlgLiBCdXQgd2FpdCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIHBvaW50IGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHpzbWFsbG9jYCBpcyAqYWN0dWFsbHkqIHV0aWxpemVkLiBUaGF0IG1lYW5zIEkgbmVlZCBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAgZW5hYmxlZC4gSXQmIzM5O3MgYSBjbGFzc2ljIHBhaXJpbmcgc3RyYXRlZ3kg4oCTIG9uZSBoZWxwcyB0aGUgb3RoZXIgYWNoaWV2ZSBpdHMgcG90ZW50aWFsLiBSaWdodCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgWlJBTWAgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIGJlY2F1c2UgdGhhdCYjMzk7cyB1c3VhbGx5IG15IGdvLXRvIGZvciB0aGlzIGtpbmQgb2Ygc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7bHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXHRib29sIFwmIzM0O2RlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBaUkFNXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtsem8tcmxlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtsem9cJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXHRib29sIFwmIzM0O2x6NFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtsejRoY1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtkZWZsYXRlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVx0c3RyaW5nXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFwmIzM0O1dyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVx0Ym9vbCBcJiMzNDtUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MDIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFpTTUFMTE9DIE1pZ3JhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiB3ZSBuZWVkIHRvIGVuYWJsZSBgWlNNQUxMT0NgLCBgWlJBTWAsIGFuZCBgQ09NUEFDVElPTmAuIFRoZSBjcnVjaWFsIGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24gaXMgYHpzX3BhZ2VfbWlncmF0ZWAuIExldCYjMzk7cyBzZWUuLi4gZmlyc3QsIGlzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyAqWWVzKiwgaXQgaXMuIE5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGd1aWRhbmNlLi4uICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4uLiYjMzQ7IFJpZ2h0LCByaWdodC4gSW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIOKAkyBidXQgdGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFdlIHRha2UgdGhlIGFkZHJlc3Mgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGFzc2lnbiBpdCB0byBgenNtYWxsb2NfbW9wcy5taWdyYXRlX3BhZ2VgLiBTaW5jZSB0aGUgYWRkcmVzcyBpcyB0YWtlbiwgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuIFNvLCBgenNfcGFnZV9taWdyYXRlYCBzaG91bGQgYmUgcGVyZmVjdGx5IGFjY2VwdGFibGUgZXZlbiBpZiBpdCBpcyBzdGF0aWMuIFdlIGFyZW4mIzM5O3QgbG9zaW5nIGFueXRoaW5nIGJ5IHVzaW5nIGl0LgoKQnV0LCBqdXN0IGZvciB0aG9yb3VnaG5lc3MsIGNvdWxkIHdlIHByb3ZpZGUgYSBub24tc3RhdGljIGVudHJ5IHBvaW50PyBJIHN1cHBvc2Ugd2UgY291bGQgcHJvdmlkZSBzb21lIGFsdGVybmF0aXZlIGB6c21hbGxvY2AgQVBJIGZ1bmN0aW9ucyBvciBwYWdlIG1pZ3JhdGlvbiBmdW5jdGlvbnMuIEJ1dCByZWFsbHksIG5vLCBgenNfcGFnZV9taWdyYXRlYCBpcyBmaW5lOyBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgYW5kIHRoYXQmIzM5O3MgdGhlIGltcG9ydGFudCBwYXJ0LiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbnNpZGVyPyBMZXQmIzM5O3MgcXVpY2tseSBzY2FuIGBtbS96c21hbGxvYy5jYCB0byBiZSBjb21wbGV0ZWx5IHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGEgYmV0dGVyIG5vbi1zdGF0aWMgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2Etel9BLVowLTldJiM0MzsgenNfW2Etel9BLVowLTldJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTA4ND1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9iZWdpbik7XG5tbS96c21hbGxvYy5jLTEwODUtXG5tbS96c21hbGxvYy5jOjEwODY6dm9pZCB6c19vYmpfcmVhZF9lbmQoc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxubW0venNtYWxsb2MuYy0xMDg3LVx0XHQgICAgIHNpemVfdCBtZW1fbGVuLCB2b2lkICpoYW5kbGVfbWVtKVxuLS1cbm1tL3pzbWFsbG9jLmM9MTExMT1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9lbmQpO1xubW0venNtYWxsb2MuYy0xMTEyLVxubW0venNtYWxsb2MuYzoxMTEzOnZvaWQgenNfb2JqX3JlYWRfc2dfYmVnaW4oc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxubW0venNtYWxsb2MuYy0xMTE0LVx0XHRcdCAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgc2l6ZV90IG1lbV9sZW4pXG4tLVxubW0venNtYWxsb2MuYz0xMTU4PUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2JlZ2luKTtcbm1tL3pzbWFsbG9jLmMtMTE1OS1cbm1tL3pzbWFsbG9jLmM6MTE2MDp2b2lkIHpzX29ial9yZWFkX3NnX2VuZChzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUpXG5tbS96c21hbGxvYy5jLTExNjEte1xuLS1cbm1tL3pzbWFsbG9jLmM9MTE3Mz1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9zZ19lbmQpO1xubW0venNtYWxsb2MuYy0xMTc0LVxubW0venNtYWxsb2MuYzoxMTc1OnZvaWQgenNfb2JqX3dyaXRlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSxcbm1tL3pzbWFsbG9jLmMtMTE3Ni1cdFx0ICB2b2lkICpoYW5kbGVfbWVtLCBzaXplX3QgbWVtX2xlbilcbi0tXG5tbS96c21hbGxvYy5jPTEyMjI9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3dyaXRlKTtcbi0tXG5tbS96c21hbGxvYy5jLTEyMzYtICovXG5tbS96c21hbGxvYy5jOjEyMzc6c2l6ZV90IHpzX2h1Z2VfY2xhc3Nfc2l6ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcbm1tL3pzbWFsbG9jLmMtMTIzOC17XG4tLVxubW0venNtYWxsb2MuYz0xMzU1PXN0YXRpYyB2b2lkIG9ial9mcmVlKGludCBjbGFzc19zaXplLCB1bnNpZ25lZCBsb25nIG9iailcbi0tXG5tbS96c21hbGxvYy5jLTEzODItXG5tbS96c21hbGxvYy5jOjEzODM6dm9pZCB6c19mcmVlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcbm1tL3pzbWFsbG9jLmMtMTM4NC17XG4tLVxubW0venNtYWxsb2MuYz0xOTc2PUVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xubW0venNtYWxsb2MuYy0xOTc3LVxubW0venNtYWxsb2MuYzoxOTc4OnZvaWQgenNfcG9vbF9zdGF0cyhzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgc3RydWN0IHpzX3Bvb2xfc3RhdHMgKnN0YXRzKVxubW0venNtYWxsb2MuYy0xOTc5LXtcbi0tXG5tbS96c21hbGxvYy5jPTIxODA9RVhQT1JUX1NZTUJPTF9HUEwoenNfY3JlYXRlX3Bvb2wpO1xubW0venNtYWxsb2MuYy0yMTgxLVxubW0venNtYWxsb2MuYzoyMTgyOnZvaWQgenNfZGVzdHJveV9wb29sKHN0cnVjdCB6c19wb29sICpwb29sKVxubW0venNtYWxsb2MuYy0yMTgzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIGEgU3RhdGljIFZhcmlhYmxlIGluIGEgU3RydWN0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gc2VlaW5nIGB6c19wYWdlX21pZ3JhdGVgIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBzdGF0aWNgLCBidXQgaXQgc2VlbXMgdG8gYmUgYXNzaWduZWQgb3IgdXNlZCBpbiBjb250ZXh0IG9mIGEgc3RydWN0LiBUaGF0IHJhaXNlcyBhIHJlZCBmbGFnLiBUeXBpY2FsbHkgc3RhdGljIHZhcmlhYmxlcyBoYXZlIGEgc3BlY2lmaWMsIG9mdGVuIGZpbGUtbGV2ZWwsIHNjb3BlLiAgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgaGVyZSDigJMgaXMgaXQgc2ltcGx5IGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhhdCBzdHJ1Y3QsIGEgbWV0aG9kLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbnRlcmFjdGlvbiB3b3Jrcy4KClRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBkaXZlIGludG8gYHpzbWFsbG9jX21vcHNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhhdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgaG93IGB6c19wYWdlX21pZ3JhdGVgIGlzIGJlaW5nIHVzZWQgd2l0aGluIGl0LCBhbmQgaG93IGl0IGlzIHRoZW4gYmVpbmcgYXBwbGllZC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhlcmUmIzM5O3MgYW55IHdlaXJkbmVzcyB3aXRoIHNjb3Bpbmcgb3IgaWYgSSBuZWVkIHRvIHdvcnJ5IGFib3V0IHNoYXJlZCByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzbWFsbG9jX21vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTc5MT1zdGF0aWMgdm9pZCB6c19wYWdlX3B1dGJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNzk0LVxubW0venNtYWxsb2MuYzoxNzk1OmNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cdC5pc29sYXRlX3BhZ2UgPSB6c19wYWdlX2lzb2xhdGUsXG4tLVxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcbi0tXG5tbS96c21hbGxvYy5jLTIyNDUtI2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jOjIyNDY6XHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcdTAwMjZ6c21hbGxvY19tb3BzLCBQR1RZX3pzbWFsbG9jKTtcbm1tL3pzbWFsbG9jLmMtMjI0Ny1cdGlmIChyYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM2MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB6c21hbGxvYyBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBzZXRfbW92YWJsZV9vcHNgIGlzIHdoZXJlIHRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlZ2lzdGVyZWQuIFRoYXQgbWVhbnMgdGhlIGB6c19wYWdlX21pZ3JhdGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBhbmQgbWlncmF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aGVuIGl0IGJ1bXBzIGludG8gYSBwYWdlIHRoYXQmIzM5O3MgbWFya2VkIHdpdGggYFBHVFlfenNtYWxsb2NgLiBTaW5jZSBpdCYjMzk7cyBhIGNhbGxiYWNrLCB1c2luZyBgenNfcGFnZV9taWdyYXRlYCBhcyB0aGUgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaW4gbXkgYW5hbHlzaXMgaXMgcGVyZmVjdGx5IHNvdW5kLiBJdCYjMzk7cyBhIGNsZWFuIGVudHJ5IHBvaW50LiBXZSBjYW4gYWxzbyB3ZWF2ZSBpbiBvdGhlciByZWxldmFudCBwaWVjZXMgdG8gc3RyZW5ndGhlbiB0aGUgdGVzdC4gVG8gbWFrZSBzdXJlIHpzbWFsbG9jIGlzIHRob3JvdWdobHkgdGVzdGVkLCBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYHpzX2NvbXBhY3RgIGluIHRoZSBtaXguIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1pbXBvcnRhbnQgYHpzX21hbGxvY2AgYW5kIGB6c19mcmVlYCBmdW5jdGlvbnMuIEdvdHRhIGNoZWNrIHRob3NlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBwYXRocy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHpzX21hbGxvY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzX21hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0venNtYWxsb2MuYz0xMjQzPXN0YXRpYyB1bnNpZ25lZCBsb25nIG9ial9tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsXG4tLVxubW0venNtYWxsb2MuYy0xMjg1LS8qKlxubW0venNtYWxsb2MuYzoxMjg2OiAqIHpzX21hbGxvYyAtIEFsbG9jYXRlIGJsb2NrIG9mIGdpdmVuIHNpemUgZnJvbSBwb29sLlxubW0venNtYWxsb2MuYy0xMjg3LSAqIEBwb29sOiBwb29sIHRvIGFsbG9jYXRlIGZyb21cbi0tXG5tbS96c21hbGxvYy5jLTEyOTUtICovXG5tbS96c21hbGxvYy5jOjEyOTY6dW5zaWduZWQgbG9uZyB6c19tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsXG5tbS96c21hbGxvYy5jLTEyOTctXHRcdFx0Y29uc3QgaW50IG5pZClcbi0tXG5tbS96c21hbGxvYy5jLTEzNTItfVxubW0venNtYWxsb2MuYzoxMzUzOkVYUE9SVF9TWU1CT0xfR1BMKHpzX21hbGxvYyk7XG5tbS96c21hbGxvYy5jLTEzNTQtXG4tLVxubW0venNtYWxsb2MuYz0yMDcxPXN0cnVjdCB6c19wb29sICp6c19jcmVhdGVfcG9vbChjb25zdCBjaGFyICpuYW1lKVxuLS1cbm1tL3pzbWFsbG9jLmMtMjExNi1cdFx0XHQgKiBUaGUgb2JqZWN0IHVzZXMgWlNfSEFORExFX1NJWkUgYnl0ZXMgdG8gc3RvcmUgdGhlXG5tbS96c21hbGxvYy5jOjIxMTc6XHRcdFx0ICogaGFuZGxlLiBXZSBuZWVkIHRvIHN1YnRyYWN0IGl0LCBiZWNhdXNlIHpzX21hbGxvYygpXG5tbS96c21hbGxvYy5jLTIxMTgtXHRcdFx0ICogdW5jb25kaXRpb25hbGx5IGFkZHMgaGFuZGxlIHNpemUgYmVmb3JlIGl0IHBlcmZvcm1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDQwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBac21hbGxvYyBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gaW50ZWdyYXRpbmcgWnNtYWxsb2MuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGJyaW5nIGludG8gdGhlIGRpc2N1c3Npb24gYXJlIGRlZmluaXRlbHkgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19wYWdlX21pZ3JhdGVgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBkeW5hbWljIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIHRoZSBtb3ZlbWVudCBvZiBwYWdlcywgcmVzcGVjdGl2ZWx5LiBXZSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgd2hvbGUgdGhpbmcgd29ya2luZywgSSB0aGluay4gYFpTTUFMTE9DYCBpdHNlbGYsIG9idmlvdXNseSwgYW5kIHRoZW4gYWxzbyBgWlJBTWAgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY29tcHJlc3Npb24sIGBDT01QQUNUSU9OYCB0byBhbGxvdyBmb3IgbWVyZ2luZyBvZiBtZW1vcnksIGFuZCBgTUlHUkFUSU9OYCBzbyB0aGF0IHdlIGNhbi4uLiBoYW5nIG9uIGEgc2Vjb25kLi4uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBNSUdSQVRJT05gIGlzIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlnIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgY2hhc2luZyBzaGFkb3dzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njg1PWNvbmZpZyBOVU1BX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjk1LVxubW0vS2NvbmZpZzo2OTY6Y29uZmlnIE1JR1JBVElPTlxubW0vS2NvbmZpZy02OTctXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzY2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgc2VlIGBNSUdSQVRJT05gIGhlcmUsIGFuZCBpdCYjMzk7cyBhIGJvb2xlYW4gdmFyaWFibGUuIEludGVyZXN0aW5nIHRoYXQgaXQgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQgYXNzb2NpYXRlZCB3aXRoIGl0IOKAkyB0aGF0IGxpa2VseSBtZWFucyBpdHMgc3RhdGUsIHdoZXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgaXMgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgYE1JR1JBVElPTmAgc2V0dGluZy4gTGV0IG1lIGNoZWNrIHRoZSBvdGhlciBjb25maWdzLCBzdGFydGluZyB3aXRoIGBDT01QQUNUSU9OYC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIEl0JiMzOTtzIGhpZ2hseSBwcm9iYWJsZSBgQ09NUEFDVElPTmAgaGFzIGEgZGVwZW5kZW5jeSBvciBpcyBpbmZsdWVuY2luZyB0aGUgc2V0dGluZyBvZiBgTUlHUkFUSU9OYC4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTVBBQ1RJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxuLS1cbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXG5tbS9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7QWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjQ3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgTUlHUkFUSU9OYCBTZWxlY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgaW50byBteSBoZWFkIGlzIHRvIHBpbnBvaW50IHdoYXQmIzM5O3MgY3VycmVudGx5IHF1ZXJ5aW5nIG9yIHV0aWxpemluZyBgTUlHUkFUSU9OYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlJiMzOTtzIHNvbWV0aGluZyBzcGVjaWZpYyBvciB1bnVzdWFsIHdlJiMzOTtyZSBsb29raW5nIGZvciwgb3IgcG9zc2libHkgc29tZXRoaW5nIGluIHByb2dyZXNzLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBUaGUgYW5hbHlzaXMgY2Fubm90IHByb2NlZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbnMuIFNvIGxldCYjMzk7cyBpbW1lZGlhdGVseSBkaXZlIGludG8gZmluZGluZyB0aGUgc3BlY2lmaWMgcXVlcmllcyB1c2luZyBgTUlHUkFUSU9OYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE1JR1JBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01OTE9Y29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcbi0tXG5tbS9LY29uZmlnLTU5NC1cdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcbm1tL0tjb25maWc6NTk1Olx0c2VsZWN0IE1JR1JBVElPTlxubW0vS2NvbmZpZy01OTYtXG4tLVxubW0vS2NvbmZpZz02NTQ9Y29uZmlnIENPTVBBQ1RJT05cbi0tXG5tbS9LY29uZmlnLTY1Ni1cdGRlZmF1bHQgeVxubW0vS2NvbmZpZzo2NTc6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY1OC1cdGRlcGVuZHMgb24gTU1VXG4tLVxubW0vS2NvbmZpZz02ODU9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02ODgtXHRkZXBlbmRzIG9uIE5VTUEgXHUwMDI2XHUwMDI2IE1NVVxubW0vS2NvbmZpZzo2ODk6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY5MC1cdGhlbHBcbi0tXG5tbS9LY29uZmlnPTEwNjc9Y29uZmlnIENNQVxuLS1cbm1tL0tjb25maWctMTA2OS1cdGRlcGVuZHMgb24gTU1VXG5tbS9LY29uZmlnOjEwNzA6XHRzZWxlY3QgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTEwNzEtXHRzZWxlY3QgTUVNT1JZX0lTT0xBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA3NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLi4uCgoqKk9wdGltaXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRoZSBQYXRoIHRvIEVmZmljaWVuY3kqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBob3cgdG8gb3B0aW1pemUgaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRoaXM6IGBDT01QQUNUSU9OYCBpcyB3aGF0IHRyaWdnZXJzIGBNSUdSQVRJT05gLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuIFRvIGFjaGlldmUgdGhhdCwgdGhlIG5haXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGVuYWJsZSBgWlNNQUxMT0NgLCBgWlJBTWAsIGFuZCBgQ09NUEFDVElPTmAuIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGEgYml0IG1vcmUgaW50cmljYXRlIHRoYW4gdGhhdC4KCkFoYSEgVXBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgWlJBTWAgaXRzZWxmIHB1bGxzIGluIGBaU01BTExPQ2AuIFNvIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LiBUaGlzIG1lYW5zIGVuYWJsaW5nIGJvdGggYFpSQU1gIGFuZCBgQ09NUEFDVElPTmAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG91ciBuZWVkcywgcmlnaHQ/IEkmIzM5O2QgbGlrZSB0byBqdXN0IHZlcmlmeSB0aGF0IGFsbCB0aGUgYFpSQU1gIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvciBqdXN0IHRvIGJlIHN1cmUsIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpSQU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTc6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtsejQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTIyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MjM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXHRib29sIFwmIzM0O2x6NGhjIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzAtXHRib29sIFwmIzM0O3pzdGQgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MzU6Y29uZmlnIFpSQU1fQkFDS0VORF9ERUZMQVRFXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7ZGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0MTpjb25maWcgWlJBTV9CQUNLRU5EXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXHRib29sIFwmIzM0Ozg0MiBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIFpSQU1cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz02MD1jaG9pY2Vcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1JMRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXHRib29sIFwmIzM0O2x6by1ybGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy02OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzAtXHRib29sIFwmIzM0O2x6b1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NzM6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7bHo0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo3Nzpjb25maWcgWlJBTV9ERUZfQ09NUF9MWjRIQ1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXHRib29sIFwmIzM0O2x6NGhjXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7enN0ZFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODU6Y29uZmlnIFpSQU1fREVGX0NPTVBfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODYtXHRib29sIFwmIzM0O2RlZmxhdGVcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04OC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg5OmNvbmZpZyBaUkFNX0RFRl9DT01QXzg0MlxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXHRib29sIFwmIzM0Ozg0MlwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTkzPWVuZGNob2ljZVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo5NTpjb25maWcgWlJBTV9ERUZfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTYtXHRzdHJpbmdcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMDgtICAgICAgIGJvb2wgXCYjMzQ7V3JpdGUgYmFjayBpbmNvbXByZXNzaWJsZSBvciBpZGxlIHBhZ2UgdG8gYmFja2luZyBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjAtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjItXHRib29sIFwmIzM0O1RyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjEyOTpjb25maWcgWlJBTV9NRU1PUllfVFJBQ0tJTkdcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7VHJhY2sgelJhbSBibG9jayBzdGF0dXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxNDA6Y29uZmlnIFpSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbXVsdGlwbGUgY29tcHJlc3Npb24gc3RyZWFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY3NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBSZWxhdGVkIEtlcm5lbCBDb21wb25lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVzZSBkaWZmZXJlbnQga2VybmVsIGNvbXBvbmVudHMuIEl0JiMzOTtzIGNsZWFyIHRoYXQgYFpSQU1gIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBCTE9DS2AsIGBTWVNGU2AsIGFuZCBgTU1VYC4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBJIGNvdWxkIGp1c3QgbGlzdCBgWlJBTWAsIGBaU01BTExPQ2AsIGFuZCBgQ09NUEFDVElPTmAgYXMgdGhlIGNvcmUgZWxlbWVudHMsIGJ1dCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciB0byBpZGVudGlmeSBhbnl0aGluZyBJIG1heSBiZSBtaXNzaW5nLgoKSSBuZWVkIHRvIHJldmlzaXQgYHpzX3BhZ2VfbWlncmF0ZWAuIEkgcmVjYWxsIHRoYXQgaXQmIzM5O3MgbWFya2VkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gSG1tLCBJIHNob3VsZCBjaGVjayB0aGF0IGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIEFoLCBoZXJlIGl0IGlzIGluIHRoZSBgenNtYWxsb2NfbW9wc2Agc3RydWN0dXJlLiBPa2F5LCBzbyB0aGF0JiMzOTtzIHRoZSBsaW5rLiBTbyBgenNfcGFnZV9pc29sYXRlYCwgYHpzX3BhZ2VfbWlncmF0ZWAsIGFuZCBgenNfcGFnZV9wdXRiYWNrYC4gR29vZC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqcmVsYXRlZCogdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIG15IG1lbnRhbCBtb2RlbCBoZXJlPyBMZXQmIzM5O3MgY29uc2lkZXIgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19jb21wYWN0YC4gYHpzX2NvbXBhY3RgIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoYXQmIzM5O3MgYSBzaWduYWwuIEkgc2hvdWxkIGRlZmluaXRlbHkgZXhhbWluZSBgenNfY29tcGFjdGAgbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pzX2NvbXBhY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS96c21hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3pzbWFsbG9jLmM9MTg3MT1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c19jYW5fY29tcGFjdChzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MpXG4tLVxubW0venNtYWxsb2MuYy0xODg1LVxubW0venNtYWxsb2MuYzoxODg2OnN0YXRpYyB1bnNpZ25lZCBsb25nIF9fenNfY29tcGFjdChzdHJ1Y3QgenNfcG9vbCAqcG9vbCxcbm1tL3pzbWFsbG9jLmMtMTg4Ny1cdFx0XHRcdCAgc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxuLS1cbm1tL3pzbWFsbG9jLmMtMTk0OS1cbm1tL3pzbWFsbG9jLmM6MTk1MDp1bnNpZ25lZCBsb25nIHpzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXG5tbS96c21hbGxvYy5jLTE5NTEte1xuLS1cbm1tL3pzbWFsbG9jLmMtMTk1Ny1cdCAqIFBvb2wgY29tcGFjdGlvbiBpcyBwZXJmb3JtZWQgdW5kZXIgcG9vbC1cdTAwM2Vsb2NrIHNvIGl0IGlzIGJhc2ljYWxseVxubW0venNtYWxsb2MuYzoxOTU4Olx0ICogc2luZ2xlLXRocmVhZGVkLiBIYXZpbmcgbW9yZSB0aGFuIG9uZSB0aHJlYWQgaW4gX196c19jb21wYWN0KClcbm1tL3pzbWFsbG9jLmMtMTk1OS1cdCAqIHdpbGwgaW5jcmVhc2UgcG9vbC1cdTAwM2Vsb2NrIGNvbnRlbnRpb24sIHdoaWNoIHdpbGwgaW1wYWN0IG90aGVyXG4tLVxubW0venNtYWxsb2MuYy0xOTY4LVx0XHRcdGNvbnRpbnVlO1xubW0venNtYWxsb2MuYzoxOTY5Olx0XHRwYWdlc19mcmVlZCAmIzQzOz0gX196c19jb21wYWN0KHBvb2wsIGNsYXNzKTtcbm1tL3pzbWFsbG9jLmMtMTk3MC1cdH1cbi0tXG5tbS96c21hbGxvYy5jLTE5NzUtfVxubW0venNtYWxsb2MuYzoxOTc2OkVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xubW0venNtYWxsb2MuYy0xOTc3LVxuLS1cbm1tL3pzbWFsbG9jLmM9MTk4ND1zdGF0aWMgdW5zaWduZWQgbG9uZyB6c19zaHJpbmtlcl9zY2FuKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsXG4tLVxubW0venNtYWxsb2MuYy0xOTk0LVx0ICovXG5tbS96c21hbGxvYy5jOjE5OTU6XHRwYWdlc19mcmVlZCA9IHpzX2NvbXBhY3QocG9vbCk7XG5tbS96c21hbGxvYy5jLTE5OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjI3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDQ0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgenNtYWxsb2MgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGlzIHpzbWFsbG9jIGNvZGUuIFRoZSBwcmltYXJ5IGZ1bmN0aW9uIGZvciBwYWdlIG1pZ3JhdGlvbiwgYHpzX3BhZ2VfbWlncmF0ZWAsIGlzIGluIGZvY3VzIGhlcmUsIGJ1dCBhbHNvLCBJIHNob3VsZCBjb25zaWRlciBvdGhlciBrZXkgZW50cnkgcG9pbnRzLiBgenNfY29tcGFjdGAgaXMgb2J2aW91c2x5IGludm9sdmVkIGluIHNocmlua2luZywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGZ1enppbmcgY292ZXJzIHRoZSBwYWdlIG1pZ3JhdGlvbiBwYXRoIHRvby4gSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIGB6c19wYWdlX21pZ3JhdGVgLCBhbG9uZyB3aXRoIGB6c19tYWxsb2NgIGFuZCBgenNfZnJlZWAgaW4gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdCB0byBlbnN1cmUgdGhlIGNvcmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBhcmUgaGVhdmlseSBmdXp6ZWQgYWxvbmdzaWRlIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4KCldhaXQgYSBtb21lbnQsIEkgcmVjYWxsIGB6c19wYWdlX21pZ3JhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgcHJvbXB0IHN0cmVzc2VkIHRoYXQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGFyZSBwcmVmZXJyZWQuIEhvd2V2ZXIsIGJlY2F1c2UgYHpzX3BhZ2VfbWlncmF0ZWAmIzM5O3MgYWRkcmVzcyBpcyB0YWtlbiwgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSBpdCwgYW5kIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUuIEdvb2QuIFRoaXMgaXMgY29uZmlybWVkLiBJJiMzOTtsbCBpbmNsdWRlIHRob3NlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGNvdmVyIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIHRvby4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBpZiBvbmx5IGBaU01BTExPQ2AgaXMgc3VmZmljaWVudC4gWWVzLCBgWlNNQUxMT0NgIGVzc2VudGlhbGx5IGRlZmluZXMgdGhlIHN1YnN5c3RlbS4gQnV0IHRoZSBjb2RlIGFsc28gbmVlZHMgYENPTVBBQ1RJT05gIHRvIGNvbXBpbGUgYHpzX3BhZ2VfbWlncmF0ZWAsIHNvIG15IGBFbmFibGVDb25maWdzYCBsaXN0IG5lZWRzIHRvIGJlIGBbJiMzNDtaU01BTExPQyYjMzQ7LCAmIzM0O1pSQU0mIzM0OywgJiMzNDtDT01QQUNUSU9OJiMzNDtdYC4gYFpSQU1gIGlzIG5lZWRlZCB0byBlbmFibGUgdGhlIG5lY2Vzc2FyeSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGluIHRoZSBrZXJuZWwuCgpGaW5hbGx5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoaXMgcGF0Y2guIEFoYSEKCmBgYGMKLQl3cml0ZV91bmxvY2soJmFtcDtwb29sLSZndDtsb2NrKTsKLQlzcGluX3VubG9jaygmYW1wO2NsYXNzLSZndDtsb2NrKTsKIAl6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7Y2xhc3MtJmd0O2xvY2spOwomIzQzOwl3cml0ZV91bmxvY2soJmFtcDtwb29sLSZndDtsb2NrKTsKYGBgCgpUaGlzIGlzIGZpeGluZyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgd2l0aGluIGB6c19wYWdlX21pZ3JhdGVgLiBUaGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLSZndDtsb2NrYCwgYGNsYXNzLSZndDtsb2NrYCwgYW5kIGB6c3BhZ2VgIGhhcyBiZWVuIHJldmVyc2VkIHRvIG1hdGNoIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGltcGFjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzIGFuZCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuIFNvLCB0aGlzIGlzIGEgKmRlZmluaXRlKiBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpUaGVyZWZvcmU6CgoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywgJiMzNDt6c19tYWxsb2MmIzM0OywgJiMzNDt6c19mcmVlJiMzNDtdYAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7WlNNQUxMT0MmIzM0OywgJiMzNDtaUkFNJiMzNDssICYjMzQ7Q09NUEFDVElPTiYjMzQ7XWAKCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pTTUFMTE9DJiMzNDssCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7Q09NUEFDVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pzX3BhZ2VfbWlncmF0ZSYjMzQ7LAogICAgJiMzNDt6c19tYWxsb2MmIzM0OywKICAgICYjMzQ7enNfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaU01BTExPQyYjMzQ7LAogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6c19wYWdlX21pZ3JhdGUmIzM0OywKICAgICYjMzQ7enNfbWFsbG9jJiMzNDssCiAgICAmIzM0O3pzX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NrIG9yZGVyaW5nIGlzc3VlIGluIGB6c19wYWdlX21pZ3JhdGVgIGJ5IHJldmVyc2luZyB0aGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLVx1MDAzZWxvY2tgLCBgY2xhc3MtXHUwMDNlbG9ja2AsIGFuZCBgenNwYWdlYCB0byBtYXRjaCB0aGUgcmV2ZXJzZSBvZiB0aGUgYWNxdWlzaXRpb24gb3JkZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBkZWFkbG9ja3Mgb3IgbG9ja2RlcCB3YXJuaW5ncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU0Ljg0MTc0OTE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDU0NTI4OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU0Ljg0MTc4MzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQ2MDEzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjZhZTI3Y2UxNjc3MjVlMzI0Y2ZhNzlhYWI5ZmI0N2VmM2U0NWUwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDAyOjE1OjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXFxuaW5kZXggODNmNTgyMGM0NWY5My4uYjA5Mjk5MTE1ODg2NyAxMDA2NDRcXG4tLS0gYS9tbS96c21hbGxvYy5jXFxuKysrIGIvbW0venNtYWxsb2MuY1xcbkBAIC0xNzcyLDkgKzE3NzIsOSBAQCBzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuIFxcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcXG4gXFx0ICogaXQncyBva2F5IHRvIHJlbGVhc2UgbWlncmF0aW9uX2xvY2suXFxuIFxcdCAqL1xcbi1cXHR3cml0ZV91bmxvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbi1cXHRzcGluX3VubG9jayhcXHUwMDI2Y2xhc3MtXFx1MDAzZWxvY2spO1xcbiBcXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuK1xcdHdyaXRlX3VubG9jayhcXHUwMDI2cG9vbC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHR6cGRlc2NfZ2V0KG5ld3pwZGVzYyk7XFxuIFxcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTU6NTUuMzU3MjcwODQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM1OTM4OTk1ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmNmFlMjdjZTE2NzcyNWUzMjRjZmE3OWFhYjlmYjQ3ZWYzZTQ1ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMjoxNTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3pzbWFsbG9jLmMgYi9tbS96c21hbGxvYy5jXG5pbmRleCA4M2Y1ODIwYzQ1ZjkzLi5iMDkyOTkxMTU4ODY3IDEwMDY0NFxuLS0tIGEvbW0venNtYWxsb2MuY1xuKysrIGIvbW0venNtYWxsb2MuY1xuQEAgLTE3NzIsOSArMTc3Miw5IEBAIHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdCAqIFNpbmNlIHdlIGNvbXBsZXRlIHRoZSBkYXRhIGNvcHkgYW5kIHNldCB1cCBuZXcgenNwYWdlIHN0cnVjdHVyZSxcbiBcdCAqIGl0J3Mgb2theSB0byByZWxlYXNlIG1pZ3JhdGlvbl9sb2NrLlxuIFx0ICovXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNmNsYXNzLVx1MDAzZWxvY2spO1xuIFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4rXHR3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKTtcbiBcbiBcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcbiBcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE1OjU1LjM1NzI3MjcwNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTk3MDIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgWnNtYWxsb2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgbW0venNtYWxsb2MuY2AuIEl0J3MgZm9jdXNlZCBvbiBgenNfcGFnZV9taWdyYXRlYCwgYW5kIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYSByZW9yZGVyaW5nIG9mIHVubG9jayBvcGVyYXRpb25zLiBIbW0sIGludGVyZXN0aW5nLiBUaGUgY29kZSBiZWZvcmUgdGhlIHBhdGNoIHNob3dzIGB3cml0ZV91bmxvY2soXHUwMDI2cG9vbC1cdTAwM2Vsb2NrKWAsIHRoZW4gYHNwaW5fdW5sb2NrKFx1MDAyNmNsYXNzLVx1MDAzZWxvY2spYCwgYW5kIGZpbmFsbHkgYHpzcGFnZV93cml0ZV91bmxvY2soenNwYWdlKWAuIE5vdywgdGhlIHBhdGNoIHByb3Bvc2VzIGZsaXBwaW5nIHRoZSBvcmRlciB0byBgenNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpYCwgdGhlbiBgc3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jaylgLCBmb2xsb3dlZCBieSBgd3JpdGVfdW5sb2NrKFx1MDAyNnBvb2wtXHUwMDNlbG9jaylgLlxuXG5UaGlzIHNjcmVhbXMgbG9jayBvcmRlcmluZyBpc3N1ZSBmaXggdG8gbWUsIG9yIHBvdGVudGlhbGx5IHNvbWV0aGluZyByZWxhdGVkIHRvIHByZXZlbnRpbmcgYSBkZWFkbG9jay4gVGhlIGZ1bmN0aW9uIG9idmlvdXNseSBpbnZvbHZlcyBtaWdyYXRpbmcgcGFnZXMgd2l0aGluIHRoZSB6c21hbGxvYyBwb29sLCBzbyBjb250ZW50aW9uIGlzIHByb2JhYmx5IGV4cGVjdGVkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIHJlb3JkZXJpbmcuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgaXMgcHJvdGVjdGVkIGJ5IHRoZXNlIGxvY2tzPyBJJ2xsIGNoZWNrIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQgcGVyaGFwcyByZWxhdGVkIGNvZGUsIHRvIGV2YWx1YXRlIHRoZSBjaGFuZ2UncyBpbXBhY3QgYW5kIGlmIGl0J3MgYWRkcmVzc2luZyBhbiBhY3R1YWwgY29uY3VycmVuY3kgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNTo1OS4zNzY5Nzg1NzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwMDQxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwienNfcGFnZV9taWdyYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venNtYWxsb2MuYz0xNjc1PXN0YXRpYyBib29sIHpzX3BhZ2VfaXNvbGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2RlX3QgbW9kZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTY4NC1cXG5tbS96c21hbGxvYy5jOjE2ODU6c3RhdGljIGludCB6c19wYWdlX21pZ3JhdGUoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlLFxcbm1tL3pzbWFsbG9jLmMtMTY4Ni1cXHRcXHRlbnVtIG1pZ3JhdGVfbW9kZSBtb2RlKVxcbi0tXFxubW0venNtYWxsb2MuYz0xNzk1PWNvbnN0IHN0cnVjdCBtb3ZhYmxlX29wZXJhdGlvbnMgenNtYWxsb2NfbW9wcyA9IHtcXG5tbS96c21hbGxvYy5jLTE3OTYtXFx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcXG5tbS96c21hbGxvYy5jOjE3OTc6XFx0Lm1pZ3JhdGVfcGFnZSA9IHpzX3BhZ2VfbWlncmF0ZSxcXG5tbS96c21hbGxvYy5jLTE3OTgtXFx0LnB1dGJhY2tfcGFnZSA9IHpzX3BhZ2VfcHV0YmFjayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTU6NTkuNDMyOTk0Mzk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2Nzg3MzY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipEaXZpbmcgaW50byB0aGUgWnNtYWxsb2MgUGFnZSBNaWdyYXRpb24gSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgenNfcGFnZV9taWdyYXRlYC4gUmlnaHQsIHRoYXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGB6c21hbGxvY19tb3BzYCBzdHJ1Y3R1cmUsIHRoZSBtZW1vcnkgb3BlcmF0aW9ucyBmb3IgenNtYWxsb2MuIE15IGZvY3VzIGhlcmUgaXMgcGFnZSBtaWdyYXRpb24sIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsaW5nIHRoaXMgc3BlY2lmaWMgZmVhdHVyZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSB6c21hbGxvYyBpbXBsZW1lbnRhdGlvbi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW52b2x2ZWQgd2l0aCBgenNtYWxsb2NgIGluIHRoZSBmaXJzdCBwbGFjZT8gV2hhdCB0cmlnZ2VycyB0aGUgYWxsb2NhdGlvbiBhbmQgdXNhZ2Ugb2YgbWVtb3J5PyBMZXQgbWUgc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjAyLjIwMDg3MTQxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE5NzM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlNNQUxMT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTExND1jb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXFxuLS1cXG5tbS9LY29uZmlnLTEyNC1cXG5tbS9LY29uZmlnOjEyNTpjb25maWcgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZVxcbi0tXFxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcXFwiWnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFxcdTAwMjYgenJhbVxcXCJcXG5tbS9LY29uZmlnLTEzNC1cXG5tbS9LY29uZmlnOjEzNTpjb25maWcgWlNNQUxMT0NfU1RBVFxcbm1tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkV4cG9ydCB6c21hbGxvYyBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMtXFxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcXG5tbS9LY29uZmlnLTE0NS1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjAyLjI1NDA3Njk5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjkyNzc2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBaU01BTExPQydzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIGBaU01BTExPQ2Ag4oCTIGl0J3MgYSB0cmlzdGF0ZSBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBidWlsdCBhcyBhIGJ1aWx0LWluIG1vZHVsZSwgYSBsb2FkYWJsZSBtb2R1bGUsIG9yIG5vdCBhdCBhbGwuIE15IGZvY3VzIGhlcmUgaXMgaG93IGl0J3MgYWN0aXZhdGVkOyBpdCdzIHNlbGVjdGVkLCBkaXJlY3RseSwgYnkgZWl0aGVyIGBaUkFNYCBvciBgWlNXQVBgLlxuXG5UbyB0cmFjZSBiYWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCB3aGVyZSBpdCdzIGluc3RhbnRpYXRlZCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgbW0vS2NvbmZpZ2Ag4oCTIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjb250ZXh0IOKAkyBhbmQgYWxzbyBsb29rIGluIGBkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ2AgaW4gY2FzZSBpdCdzIGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoZSB6cmFtIGRyaXZlciBpdHNlbGYuIFRoYXQgd2lsbCBwaW5wb2ludCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9kdWxlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBidWlsZC4gVGhpcyBpbnZlc3RpZ2F0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBjb21wcmVzc2VkIFJBTSAoenJhbSkgYW5kIHN3YXAgKHpzd2FwKS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjA1LjMyMzM1NzA5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA4ODg2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBaU01BTExPQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9Mj1jb25maWcgWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IE1NVVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjU6XFx0c2VsZWN0IFpTTUFMTE9DXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnPTIyPWNvbmZpZyBaU1dBUFxcbi0tXFxubW0vS2NvbmZpZy0yNS1cXHRzZWxlY3QgQ1JZUFRPXFxubW0vS2NvbmZpZzoyNjpcXHRzZWxlY3QgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTI3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MDcuNDMyMjQ5NjE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0ODMwNzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipaU01BTExPQyBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBaU01BTExPQ2AgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW5ldmVyIGBaUkFNYCBvciBgWlNXQVBgIGFyZSB0dXJuZWQgb24uIFRoYXQncyBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlIHNob3VsZCAqcHJvYmFibHkqIGp1c3QgZW5hYmxlIGBaU01BTExPQ2AgZGlyZWN0bHksIGJ1dCB0aGVuIEkgcmVtZW1iZXIgaXQncyBhIHRyaXN0YXRlIG9wdGlvbiwgc2VsZWN0ZWQgYnkgYFpSQU1gIGFuZCBgWlNXQVBgLiBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBlbmFibGluZyBlaXRoZXIgYFpTTUFMTE9DYCBvciBgWlJBTWAgd291bGQgYWNoaWV2ZSB0aGUgc2FtZSBvdXRjb21lLlxuXG5XYWl0IGEgc2Vjb25kLiBTaW5jZSBgWlNNQUxMT0NgICppcyogYSB0cmlzdGF0ZSBvcHRpb24sIHdlICpjYW4qIGp1c3QgZW5hYmxlIGl0IGRpcmVjdGx5LiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzLCBhbmQgaXQgbWFrZXMgdGhlIGRlcGVuZGVuY3kgY2xlYXJlci5cblxuQWxyaWdodCwgbGV0J3MgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgenNfcGFnZV9taWdyYXRlYCBmdW5jdGlvbiBtb3JlIGZ1bGx5LiBJcyBpdCBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkPyBUaW1lIHRvIHZlcmlmeSB0aGF0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSwgbGlrZWx5IGBtbS96c21hbGxvYy5jYCwgdG8gYmUgY2VydGFpbi4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTAuOTgwNTYxMTk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjg0NzcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c19wYWdlX21pZ3JhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTE2NzU9c3RhdGljIGJvb2wgenNfcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBtb2RlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjg0LVxcbm1tL3pzbWFsbG9jLmM6MTY4NTpzdGF0aWMgaW50IHpzX3BhZ2VfbWlncmF0ZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxubW0venNtYWxsb2MuYy0xNjg2LVxcdFxcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXFxuLS1cXG5tbS96c21hbGxvYy5jPTE3OTU9Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cXHQuaXNvbGF0ZV9wYWdlID0genNfcGFnZV9pc29sYXRlLFxcbm1tL3pzbWFsbG9jLmM6MTc5NzpcXHQubWlncmF0ZV9wYWdlID0genNfcGFnZV9taWdyYXRlLFxcbm1tL3pzbWFsbG9jLmMtMTc5OC1cXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxMS4wMzM0MTczNjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ1NjYwMTA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYHpzX3BhZ2VfbWlncmF0ZWAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGRldGVybWluZSBpZiB0aGUgYHpzX3BhZ2VfbWlncmF0ZWAgZnVuY3Rpb24gaXMgd3JhcHBlZCB3aXRoaW4gYSBwcmVwcm9jZXNzb3IgYCNpZmRlZmAgYmxvY2suIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBwbGF0Zm9ybS1zcGVjaWZpYyBvciBmZWF0dXJlLWZsYWdnZWQgY29kZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXRzIGluY2x1c2lvbiBpbiB0aGUgYnVpbGQgaXMgY29uZGl0aW9uYWwgb24gc29tZSBvdGhlciBtYWNybyBkZWZpbml0aW9uLiBEZXBlbmRpbmcgb24gdGhlIGFuc3dlciwgaXQnbGwgaW5kaWNhdGUgYSBncmVhdCBkZWFsIGFib3V0IHRoZSBvdmVyYWxsIHByb2plY3Qgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTMuNDkwMDIyNzg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQzMzExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZiBDT05GSUdfQ09NUEFDVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS96c21hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3pzbWFsbG9jLmM9MTk5PXN0cnVjdCB6c19wb29sIHtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjEzLSNlbmRpZlxcbm1tL3pzbWFsbG9jLmM6MjE0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMjE1LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XFxuLS1cXG5tbS96c21hbGxvYy5jPTM2MD1zdGF0aWMgYm9vbCBac0h1Z2VQYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMzY0LVxcbm1tL3pzbWFsbG9jLmM6MzY1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMzY2LXN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCk7XFxuLS1cXG5tbS96c21hbGxvYy5jPTE1OTQ9c3RhdGljIGludCBwdXRiYWNrX3pzcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTYwMy1cXG5tbS96c21hbGxvYy5jOjE2MDQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0xNjA1LS8qXFxuLS1cXG5tbS96c21hbGxvYy5jPTE2MDk9c3RhdGljIHZvaWQgbG9ja196c3BhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjQ3LVxcbm1tL3pzbWFsbG9jLmM6MTY0ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTE2NDktXFxuLS1cXG5tbS96c21hbGxvYy5jPTIyMzc9c3RhdGljIGludCBfX2luaXQgenNfaW5pdCh2b2lkKVxcbi0tXFxubW0venNtYWxsb2MuYy0yMjQ0LVxcbm1tL3pzbWFsbG9jLmM6MjI0NTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTIyNDYtXFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbi0tXFxubW0venNtYWxsb2MuYz0yMjU2PXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXFxubW0venNtYWxsb2MuYy0yMjU3LXtcXG5tbS96c21hbGxvYy5jOjIyNTg6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yMjU5LVxcdHNldF9tb3ZhYmxlX29wcyhOVUxMLCBQR1RZX3pzbWFsbG9jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTMuNTQzNDYyNjk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjAxNzkxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgQ29tcGFjdGlvbiBEZXBlbmRlbmN5IGluIHpzbWFsbG9jKipcblxuUmlnaHQsIGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBXZSBjYW4ndCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgb2YgenNtYWxsb2MgYW5kIGV4YW1pbmUgdGhlIHBhZ2UgbWlncmF0aW9uIGxvZ2ljLiBMZXQncyBzZWUgaG93IGB6c19wYWdlX21pZ3JhdGVgIGlzIGltcGxlbWVudGVkLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZSB6b25lIGFsbG9jYXRvciBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBtb3ZlbWVudCBvZiBwYWdlcyB3aXRoaW4gdGhlIHpzbWFsbG9jIHBvb2wuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlZ3JhdGUgd2l0aCB0aGUgY29tcGFjdGlvbiBzdWJzeXN0ZW0gdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZXkgY2FuIG1vdmUgYSBwYXJ0aWN1bGFyIHBhZ2UuIFRoaXMgaGFzIHRvIGJlIGluIGBtbS96c21hbGxvYy5jYCwgc28gdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxNi44MDM2NDUzMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0venNtYWxsb2MuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTY0ODpcXHQjaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG4xNjQ5OlxcdFxcbjE2NTA6XFx0c3RhdGljIHZvaWQgcmVwbGFjZV9zdWJfcGFnZShzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3MsIHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSxcXG4xNjUxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCB6cGRlc2MgKm5ld3pwZGVzYywgc3RydWN0IHpwZGVzYyAqb2xkenBkZXNjKVxcbjE2NTI6XFx0e1xcbjE2NTM6XFx0XFx0c3RydWN0IHpwZGVzYyAqenBkZXNjO1xcbjE2NTQ6XFx0XFx0c3RydWN0IHpwZGVzYyAqenBkZXNjc1taU19NQVhfUEFHRVNfUEVSX1pTUEFHRV0gPSB7TlVMTCwgfTtcXG4xNjU1OlxcdFxcdHVuc2lnbmVkIGludCBmaXJzdF9vYmpfb2Zmc2V0O1xcbjE2NTY6XFx0XFx0aW50IGlkeCA9IDA7XFxuMTY1NzpcXHRcXG4xNjU4OlxcdFxcdHpwZGVzYyA9IGdldF9maXJzdF96cGRlc2MoenNwYWdlKTtcXG4xNjU5OlxcdFxcdGRvIHtcXG4xNjYwOlxcdFxcdFxcdGlmICh6cGRlc2MgPT0gb2xkenBkZXNjKVxcbjE2NjE6XFx0XFx0XFx0XFx0enBkZXNjc1tpZHhdID0gbmV3enBkZXNjO1xcbjE2NjI6XFx0XFx0XFx0ZWxzZVxcbjE2NjM6XFx0XFx0XFx0XFx0enBkZXNjc1tpZHhdID0genBkZXNjO1xcbjE2NjQ6XFx0XFx0XFx0aWR4Kys7XFxuMTY2NTpcXHRcXHR9IHdoaWxlICgoenBkZXNjID0gZ2V0X25leHRfenBkZXNjKHpwZGVzYykpICE9IE5VTEwpO1xcbjE2NjY6XFx0XFxuMTY2NzpcXHRcXHRjcmVhdGVfcGFnZV9jaGFpbihjbGFzcywgenNwYWdlLCB6cGRlc2NzKTtcXG4xNjY4OlxcdFxcdGZpcnN0X29ial9vZmZzZXQgPSBnZXRfZmlyc3Rfb2JqX29mZnNldChvbGR6cGRlc2MpO1xcbjE2Njk6XFx0XFx0c2V0X2ZpcnN0X29ial9vZmZzZXQobmV3enBkZXNjLCBmaXJzdF9vYmpfb2Zmc2V0KTtcXG4xNjcwOlxcdFxcdGlmICh1bmxpa2VseShac0h1Z2VQYWdlKHpzcGFnZSkpKVxcbjE2NzE6XFx0XFx0XFx0bmV3enBkZXNjLVxcdTAwM2VoYW5kbGUgPSBvbGR6cGRlc2MtXFx1MDAzZWhhbmRsZTtcXG4xNjcyOlxcdFxcdF9fenBkZXNjX3NldF9tb3ZhYmxlKG5ld3pwZGVzYyk7XFxuMTY3MzpcXHR9XFxuMTY3NDpcXHRcXG4xNjc1OlxcdHN0YXRpYyBib29sIHpzX3BhZ2VfaXNvbGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2RlX3QgbW9kZSlcXG4xNjc2OlxcdHtcXG4xNjc3OlxcdFxcdC8qXFxuMTY3ODpcXHRcXHQgKiBQYWdlIGlzIGxvY2tlZCBzbyB6c3BhZ2UgY2FuJ3QgYmUgZGVzdHJveWVkIGNvbmN1cnJlbnRseVxcbjE2Nzk6XFx0XFx0ICogKHNlZSBmcmVlX3pzcGFnZSgpKS4gQnV0IGlmIHRoZSBwYWdlIHdhcyBhbHJlYWR5IGRlc3Ryb3llZFxcbjE2ODA6XFx0XFx0ICogKHNlZSByZXNldF96cGRlc2MoKSksIHJlZnVzZSBpc29sYXRpb24gaGVyZS5cXG4xNjgxOlxcdFxcdCAqL1xcbjE2ODI6XFx0XFx0cmV0dXJuIHBhZ2VfenBkZXNjKHBhZ2UpLVxcdTAwM2V6c3BhZ2U7XFxuMTY4MzpcXHR9XFxuMTY4NDpcXHRcXG4xNjg1OlxcdHN0YXRpYyBpbnQgenNfcGFnZV9taWdyYXRlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4xNjg2OlxcdFxcdFxcdGVudW0gbWlncmF0ZV9tb2RlIG1vZGUpXFxuMTY4NzpcXHR7XFxuMTY4ODpcXHRcXHRzdHJ1Y3QgenNfcG9vbCAqcG9vbDtcXG4xNjg5OlxcdFxcdHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcztcXG4xNjkwOlxcdFxcdHN0cnVjdCB6c3BhZ2UgKnpzcGFnZTtcXG4xNjkxOlxcdFxcdHN0cnVjdCB6cGRlc2MgKmR1bW15O1xcbjE2OTI6XFx0XFx0c3RydWN0IHpwZGVzYyAqbmV3enBkZXNjID0gcGFnZV96cGRlc2MobmV3cGFnZSk7XFxuMTY5MzpcXHRcXHRzdHJ1Y3QgenBkZXNjICp6cGRlc2MgPSBwYWdlX3pwZGVzYyhwYWdlKTtcXG4xNjk0OlxcdFxcdHZvaWQgKnNfYWRkciwgKmRfYWRkciwgKmFkZHI7XFxuMTY5NTpcXHRcXHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xcbjE2OTY6XFx0XFx0dW5zaWduZWQgbG9uZyBoYW5kbGU7XFxuMTY5NzpcXHRcXHR1bnNpZ25lZCBsb25nIG9sZF9vYmosIG5ld19vYmo7XFxuMTY5ODpcXHRcXHR1bnNpZ25lZCBpbnQgb2JqX2lkeDtcXG4xNjk5OlxcdFxcbjE3MDA6XFx0XFx0LypcXG4xNzAxOlxcdFxcdCAqIFRPRE86IG5vdGhpbmcgcHJldmVudHMgYSB6c3BhZ2UgZnJvbSBnZXR0aW5nIGRlc3Ryb3llZCB3aGlsZVxcbjE3MDI6XFx0XFx0ICogaXQgaXMgaXNvbGF0ZWQgZm9yIG1pZ3JhdGlvbiwgYXMgdGhlIHBhZ2UgbG9jayBpcyB0ZW1wb3JhcmlseVxcbjE3MDM6XFx0XFx0ICogZHJvcHBlZCBhZnRlciB6c19wYWdlX2lzb2xhdGUoKSBzdWNjZWVkZWQ6IHdlIHNob3VsZCByZXdvcmsgdGhhdFxcbjE3MDQ6XFx0XFx0ICogYW5kIGRlZmVyIGRlc3Ryb3lpbmcgc3VjaCBwYWdlcyBvbmNlIHRoZXkgYXJlIHVuLWlzb2xhdGVkIChwdXRiYWNrKVxcbjE3MDU6XFx0XFx0ICogaW5zdGVhZC5cXG4xNzA2OlxcdFxcdCAqL1xcbjE3MDc6XFx0XFx0aWYgKCF6cGRlc2MtXFx1MDAzZXpzcGFnZSlcXG4xNzA4OlxcdFxcdFxcdHJldHVybiAwO1xcbjE3MDk6XFx0XFxuMTcxMDpcXHRcXHQvKiBUaGUgcGFnZSBpcyBsb2NrZWQsIHNvIHRoaXMgcG9pbnRlciBtdXN0IHJlbWFpbiB2YWxpZCAqL1xcbjE3MTE6XFx0XFx0enNwYWdlID0gZ2V0X3pzcGFnZSh6cGRlc2MpO1xcbjE3MTI6XFx0XFx0cG9vbCA9IHpzcGFnZS1cXHUwMDNlcG9vbDtcXG4xNzEzOlxcdFxcbjE3MTQ6XFx0XFx0LypcXG4xNzE1OlxcdFxcdCAqIFRoZSBwb29sIG1pZ3JhdGVfbG9jayBwcm90ZWN0cyB0aGUgcmFjZSBiZXR3ZWVuIHpwYWdlIG1pZ3JhdGlvblxcbjE3MTY6XFx0XFx0ICogYW5kIHpzX2ZyZWUuXFxuMTcxNzpcXHRcXHQgKi9cXG4xNzE4OlxcdFxcdHdyaXRlX2xvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbjE3MTk6XFx0XFx0Y2xhc3MgPSB6c3BhZ2VfY2xhc3MocG9vbCwgenNwYWdlKTtcXG4xNzIwOlxcdFxcbjE3MjE6XFx0XFx0LypcXG4xNzIyOlxcdFxcdCAqIHRoZSBjbGFzcyBsb2NrIHByb3RlY3RzIHpwYWdlIGFsbG9jL2ZyZWUgaW4gdGhlIHpzcGFnZS5cXG4xNzIzOlxcdFxcdCAqL1xcbjE3MjQ6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTcyNTpcXHRcXHQvKiB0aGUgenNwYWdlIHdyaXRlX2xvY2sgcHJvdGVjdHMgenBhZ2UgYWNjZXNzIHZpYSB6c19vYmpfcmVhZC93cml0ZSgpICovXFxuMTcyNjpcXHRcXHRpZiAoIXpzcGFnZV93cml0ZV90cnlsb2NrKHpzcGFnZSkpIHtcXG4xNzI3OlxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTcyODpcXHRcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNnBvb2wtXFx1MDAzZWxvY2spO1xcbjE3Mjk6XFx0XFx0XFx0LypcXG4xNzMwOlxcdFxcdFxcdCAqIFJldHVybiAtRUJVU1kgYnV0IG5vdCAtRUFHQUlOOiB0aGUgenNwYWdlJ3MgcmVhZGVyLWxvY2tcXG4xNzMxOlxcdFxcdFxcdCAqIG93bmVyIG1heSBob2xkIHRoZSBsb2NrIGZvciBhbiB1bmJvdW5kZWQgZHVyYXRpb24gZHVlIHRvIGFcXG4xNzMyOlxcdFxcdFxcdCAqIHNsb3cgZGVjb21wcmVzc2lvbiBvciByZWFkZXItbG9jayBvd25lciBwcmVlbXB0aW9uLlxcbjE3MzM6XFx0XFx0XFx0ICogU2luY2UgbWlncmF0aW9uIHJldHJpZXMgYXJlIGJvdW5kZWQgYnlcXG4xNzM0OlxcdFxcdFxcdCAqIE5SX01BWF9NSUdSQVRFX1BBR0VTX1JFVFJZIGFuZCBwZXJmb3JtZWQgd2l0aCB2aXJ0dWFsbHkgbm9cXG4xNzM1OlxcdFxcdFxcdCAqIGRlbGF5IGJldHdlZW4gYXR0ZW1wdHMsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGUgbG9jayB3aWxsXFxuMTczNjpcXHRcXHRcXHQgKiBiZSByZWxlYXNlZCBpbiB0aW1lIGZvciBhIHJldHJ5IHRvIHN1Y2NlZWQuXFxuMTczNzpcXHRcXHRcXHQgKiAtRUFHQUlOIGltcGxpZXMgXFxcInRyeSBhZ2FpbiBzb29uXFxcIiwgd2hpY2ggZG9lcyBub3QgaG9sZCBoZXJlLlxcbjE3Mzg6XFx0XFx0XFx0ICogLUVCVVNZIG1vcmUgYWNjdXJhdGVseSBjb252ZXlzIFxcXCJyZXNvdXJjZSBpcyBvY2N1cGllZCxcXG4xNzM5OlxcdFxcdFxcdCAqIG1pZ3JhdGlvbiBjYW5ub3QgcHJvY2VlZFxcXCIuXFxuMTc0MDpcXHRcXHRcXHQgKi9cXG4xNzQxOlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMTc0MjpcXHRcXHR9XFxuMTc0MzpcXHRcXG4xNzQ0OlxcdFxcdC8qIFdlJ3JlIGNvbW1pdHRlZCwgdGVsbCB0aGUgd29ybGQgdGhhdCB0aGlzIGlzIGEgWnNtYWxsb2MgcGFnZS4gKi9cXG4xNzQ1OlxcdFxcdF9fenBkZXNjX3NldF96c21hbGxvYyhuZXd6cGRlc2MpO1xcbjE3NDY6XFx0XFxuMTc0NzpcXHRcXHRvZmZzZXQgPSBnZXRfZmlyc3Rfb2JqX29mZnNldCh6cGRlc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxNi44MDM4MjE2MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxOTA5MjI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbCBmb3IgYHpzX3BhZ2VfbWlncmF0ZWAqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcy4gVGhlIGluaXRpYWwgaW5zdHJ1Y3Rpb24gaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBcIkxldCdzIHJlYWQgdGhlIHJlc3Qgb2YgYHpzX3BhZ2VfbWlncmF0ZWAuXCIgVGhhdCBpbXBsaWVzIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgY29kZSBzZWdtZW50LCBsaWtlbHkgd2l0aGluIGEgbGFyZ2VyIHN5c3RlbS4gVGhpcyBpc24ndCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgd2UncmUgZ29pbmcgaW4gd2l0aCBhIHRhcmdldGVkIHB1cnBvc2UsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSwgZGVidWdnaW5nIGFuIGlzc3VlLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgaXRzIGJlaGF2aW9yLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFtIEkgbG9va2luZyBmb3I/XCIgQXJlIHdlIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgZmluZCBhIHNwZWNpZmljIGFsZ29yaXRobSBpbXBsZW1lbnRhdGlvbiwgb3IgY2hlY2sgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gVGhlIGNvbnRleHQgaXMgY3J1Y2lhbDsgd2l0aG91dCBpdCwgdGhpcyBpcyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzQ3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjoxOS44MjI5MTc0ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3pzbWFsbG9jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc0OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3NDg6XFx0XFx0c19hZGRyID0ga21hcF9sb2NhbF96cGRlc2MoenBkZXNjKTtcXG4xNzQ5OlxcdFxcbjE3NTA6XFx0XFx0LypcXG4xNzUxOlxcdFxcdCAqIEhlcmUsIGFueSB1c2VyIGNhbm5vdCBhY2Nlc3MgYWxsIG9iamVjdHMgaW4gdGhlIHpzcGFnZSBzbyBsZXQncyBtb3ZlLlxcbjE3NTI6XFx0XFx0ICovXFxuMTc1MzpcXHRcXHRkX2FkZHIgPSBrbWFwX2xvY2FsX3pwZGVzYyhuZXd6cGRlc2MpO1xcbjE3NTQ6XFx0XFx0Y29weV9wYWdlKGRfYWRkciwgc19hZGRyKTtcXG4xNzU1OlxcdFxcdGttc2FuX2NvcHlfcGFnZV9tZXRhKHpwZGVzY19wYWdlKG5ld3pwZGVzYyksIHpwZGVzY19wYWdlKHpwZGVzYykpO1xcbjE3NTY6XFx0XFx0a3VubWFwX2xvY2FsKGRfYWRkcik7XFxuMTc1NzpcXHRcXG4xNzU4OlxcdFxcdGZvciAoYWRkciA9IHNfYWRkciArIG9mZnNldDsgYWRkciBcXHUwMDNjIHNfYWRkciArIFBBR0VfU0laRTtcXG4xNzU5OlxcdFxcdFxcdFxcdFxcdFxcdGFkZHIgKz0gY2xhc3MtXFx1MDAzZXNpemUpIHtcXG4xNzYwOlxcdFxcdFxcdGlmIChvYmpfYWxsb2NhdGVkKHpwZGVzYywgYWRkciwgXFx1MDAyNmhhbmRsZSkpIHtcXG4xNzYxOlxcdFxcbjE3NjI6XFx0XFx0XFx0XFx0b2xkX29iaiA9IGhhbmRsZV90b19vYmooaGFuZGxlKTtcXG4xNzYzOlxcdFxcdFxcdFxcdG9ial90b19sb2NhdGlvbihvbGRfb2JqLCBcXHUwMDI2ZHVtbXksIFxcdTAwMjZvYmpfaWR4KTtcXG4xNzY0OlxcdFxcdFxcdFxcdG5ld19vYmogPSAodW5zaWduZWQgbG9uZylsb2NhdGlvbl90b19vYmoobmV3enBkZXNjLCBvYmpfaWR4KTtcXG4xNzY1OlxcdFxcdFxcdFxcdHJlY29yZF9vYmooaGFuZGxlLCBuZXdfb2JqKTtcXG4xNzY2OlxcdFxcdFxcdH1cXG4xNzY3OlxcdFxcdH1cXG4xNzY4OlxcdFxcdGt1bm1hcF9sb2NhbChzX2FkZHIpO1xcbjE3Njk6XFx0XFxuMTc3MDpcXHRcXHRyZXBsYWNlX3N1Yl9wYWdlKGNsYXNzLCB6c3BhZ2UsIG5ld3pwZGVzYywgenBkZXNjKTtcXG4xNzcxOlxcdFxcdC8qXFxuMTc3MjpcXHRcXHQgKiBTaW5jZSB3ZSBjb21wbGV0ZSB0aGUgZGF0YSBjb3B5IGFuZCBzZXQgdXAgbmV3IHpzcGFnZSBzdHJ1Y3R1cmUsXFxuMTc3MzpcXHRcXHQgKiBpdCdzIG9rYXkgdG8gcmVsZWFzZSBtaWdyYXRpb25fbG9jay5cXG4xNzc0OlxcdFxcdCAqL1xcbjE3NzU6XFx0XFx0enNwYWdlX3dyaXRlX3VubG9jayh6c3BhZ2UpO1xcbjE3NzY6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xNzc3OlxcdFxcdHdyaXRlX3VubG9jayhcXHUwMDI2cG9vbC1cXHUwMDNlbG9jayk7XFxuMTc3ODpcXHRcXG4xNzc5OlxcdFxcdHpwZGVzY19nZXQobmV3enBkZXNjKTtcXG4xNzgwOlxcdFxcdGlmICh6cGRlc2Nfem9uZShuZXd6cGRlc2MpICE9IHpwZGVzY196b25lKHpwZGVzYykpIHtcXG4xNzgxOlxcdFxcdFxcdHpwZGVzY19kZWNfem9uZV9wYWdlX3N0YXRlKHpwZGVzYyk7XFxuMTc4MjpcXHRcXHRcXHR6cGRlc2NfaW5jX3pvbmVfcGFnZV9zdGF0ZShuZXd6cGRlc2MpO1xcbjE3ODM6XFx0XFx0fVxcbjE3ODQ6XFx0XFxuMTc4NTpcXHRcXHRyZXNldF96cGRlc2MoenBkZXNjKTtcXG4xNzg2OlxcdFxcdHpwZGVzY19wdXQoenBkZXNjKTtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0cmV0dXJuIDA7XFxuMTc4OTpcXHR9XFxuMTc5MDpcXHRcXG4xNzkxOlxcdHN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4xNzkyOlxcdHtcXG4xNzkzOlxcdH1cXG4xNzk0OlxcdFxcbjE3OTU6XFx0Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbjE3OTY6XFx0XFx0Lmlzb2xhdGVfcGFnZSA9IHpzX3BhZ2VfaXNvbGF0ZSxcXG4xNzk3OlxcdFxcdC5taWdyYXRlX3BhZ2UgPSB6c19wYWdlX21pZ3JhdGUsXFxuMTc5ODpcXHRcXHQucHV0YmFja19wYWdlID0genNfcGFnZV9wdXRiYWNrLFxcbjE3OTk6XFx0fTtcXG4xODAwOlxcdFxcbjE4MDE6XFx0LypcXG4xODAyOlxcdCAqIENhbGxlciBzaG91bGQgaG9sZCBwYWdlX2xvY2sgb2YgYWxsIHBhZ2VzIGluIHRoZSB6c3BhZ2VcXG4xODAzOlxcdCAqIEluIGhlcmUsIHdlIGNhbm5vdCB1c2UgenNwYWdlIG1ldGEgZGF0YS5cXG4xODA0OlxcdCAqL1xcbjE4MDU6XFx0c3RhdGljIHZvaWQgYXN5bmNfZnJlZV96c3BhZ2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbjE4MDY6XFx0e1xcbjE4MDc6XFx0XFx0aW50IGk7XFxuMTgwODpcXHRcXHRzdHJ1Y3Qgc2l6ZV9jbGFzcyAqY2xhc3M7XFxuMTgwOTpcXHRcXHRzdHJ1Y3QgenNwYWdlICp6c3BhZ2UsICp0bXA7XFxuMTgxMDpcXHRcXHRMSVNUX0hFQUQoZnJlZV9wYWdlcyk7XFxuMTgxMTpcXHRcXHRzdHJ1Y3QgenNfcG9vbCAqcG9vbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgenNfcG9vbCxcXG4xODEyOlxcdFxcdFxcdFxcdFxcdFxcdGZyZWVfd29yayk7XFxuMTgxMzpcXHRcXG4xODE0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBaU19TSVpFX0NMQVNTRVM7IGkrKykge1xcbjE4MTU6XFx0XFx0XFx0Y2xhc3MgPSBwb29sLVxcdTAwM2VzaXplX2NsYXNzW2ldO1xcbjE4MTY6XFx0XFx0XFx0aWYgKGNsYXNzLVxcdTAwM2VpbmRleCAhPSBpKVxcbjE4MTc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMTgxODpcXHRcXG4xODE5OlxcdFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2Y2xhc3MtXFx1MDAzZWxvY2spO1xcbjE4MjA6XFx0XFx0XFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2Y2xhc3MtXFx1MDAzZWZ1bGxuZXNzX2xpc3RbWlNfSU5VU0VfUkFUSU9fMF0sXFxuMTgyMTpcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmZyZWVfcGFnZXMpO1xcbjE4MjI6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xODIzOlxcdFxcdH1cXG4xODI0OlxcdFxcbjE4MjU6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHpzcGFnZSwgdG1wLCBcXHUwMDI2ZnJlZV9wYWdlcywgbGlzdCkge1xcbjE4MjY6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNnpzcGFnZS1cXHUwMDNlbGlzdCk7XFxuMTgyNzpcXHRcXHRcXHRsb2NrX3pzcGFnZSh6c3BhZ2UpO1xcbjE4Mjg6XFx0XFxuMTgyOTpcXHRcXHRcXHRjbGFzcyA9IHpzcGFnZV9jbGFzcyhwb29sLCB6c3BhZ2UpO1xcbjE4MzA6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZjbGFzcy1cXHUwMDNlbG9jayk7XFxuMTgzMTpcXHRcXHRcXHRjbGFzc19zdGF0X3N1YihjbGFzcywgWlNfSU5VU0VfUkFUSU9fMCwgMSk7XFxuMTgzMjpcXHRcXHRcXHRfX2ZyZWVfenNwYWdlKHBvb2wsIGNsYXNzLCB6c3BhZ2UpO1xcbjE4MzM6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmNsYXNzLVxcdTAwM2Vsb2NrKTtcXG4xODM0OlxcdFxcdH1cXG4xODM1OlxcdH07XFxuMTgzNjpcXHRcXG4xODM3OlxcdHN0YXRpYyB2b2lkIGtpY2tfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG4xODM4OlxcdHtcXG4xODM5OlxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnBvb2wtXFx1MDAzZWZyZWVfd29yayk7XFxuMTg0MDpcXHR9XFxuMTg0MTpcXHRcXG4xODQyOlxcdHN0YXRpYyB2b2lkIHpzX2ZsdXNoX21pZ3JhdGlvbihzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG4xODQzOlxcdHtcXG4xODQ0OlxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnBvb2wtXFx1MDAzZWZyZWVfd29yayk7XFxuMTg0NTpcXHR9XFxuMTg0NjpcXHRcXG4xODQ3OlxcdHN0YXRpYyB2b2lkIGluaXRfZGVmZXJyZWRfZnJlZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MTkuODIzMTAxNTI3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NDAxMDkwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9jayBPcmRlcmluZyBCdWcgRml4IGluIHpzX3BhZ2VfbWlncmF0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgbG9jayByZWxlYXNlIG9yZGVyIHdpdGhpbiBgenNfcGFnZV9taWdyYXRlYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUuIFRoZSBjb2RlIGFjcXVpcmVzIHRocmVlIGxvY2tzOiBmaXJzdCBgcG9vbC1cdTAwM2Vsb2NrYCBhcyBhIHdyaXRlIGxvY2ssIHRoZW4gYGNsYXNzLVx1MDAzZWxvY2tgIGFzIGEgc3BpbmxvY2ssIGFuZCBmaW5hbGx5LCBpdCB0cmllcyB0byBhY3F1aXJlIGB6c3BhZ2VgIHVzaW5nIGB6c3BhZ2Vfd3JpdGVfdHJ5bG9ja2AuIFNvLCB0aGUgYWNxdWlzaXRpb24gb3JkZXIgaXMgc3RyYWlnaHRmb3J3YXJkOiBgcG9vbC1cdTAwM2Vsb2NrYCwgdGhlbiBgY2xhc3MtXHUwMDNlbG9ja2AsIHRoZW4gYHpzcGFnZWAuXG5cblRoZSBwcm9ibGVtIGlzIHRoZSAqb3JpZ2luYWwqIHJlbGVhc2Ugb3JkZXIgbWlycm9yZWQgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiAgVGhhdCdzIGEgdGV4dGJvb2sgcmVjaXBlIGZvciBkZWFkbG9ja3MhICBUaGUgcGF0Y2ggY29ycmVjdHMgdGhpcy4gIEl0IG5vdyByZWxlYXNlcyB0aGUgbG9ja3MgaW4gdGhlICpyZXZlcnNlKiBvcmRlcjogYHpzcGFnZWAsIHRoZW4gYGNsYXNzLVx1MDAzZWxvY2tgLCB0aGVuIGBwb29sLVx1MDAzZWxvY2tgLiAgVGhpcyBpcyB0aGUgY29ycmVjdCBwYXR0ZXJuIHRvIGF2b2lkIHBvdGVudGlhbCBsb2NrLW9yZGVyaW5nIHZpb2xhdGlvbnMgYW5kIHN1YnNlcXVlbnQgZGVhZGxvY2tzIG9yLCBldmVuIHdvcnNlLCB0cmlnZ2VyaW5nIGxvY2tkZXAgd2FybmluZ3MgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlcHJvZHVjZSBhbmQgZGVidWcuICBTbywgZnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuXG5cbkdpdmVuIHRoYXQgdGhpcyBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUsIGl0J3MgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuICBXZSBuZWVkIHRvIHRyaWdnZXIgYHpzX3BhZ2VfbWlncmF0ZWAgcmVwZWF0ZWRseSB1bmRlciB2YXJpb3VzIGNvbmN1cnJlbnQgY29uZGl0aW9ucy4gIFRvIGRvIHRoYXQsIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHpzX3BhZ2VfbWlncmF0ZWAgZ2V0cyBjYWxsZWQuICBJdCdzIGludm9rZWQgYnkgdGhlIHBhZ2UgbWlncmF0aW9uIGNvZGUsIHNvIGNvbXBhY3Rpb24sIE5VTUEgYmFsYW5jaW5nLCBvciBhbiBleHBsaWNpdCBtaWdyYXRpb24gcmVxdWVzdCB3b3VsZCBhbGwgYmUgcG90ZW50aWFsIHRyaWdnZXJzLiAgVG8gYWN0dWFsbHkgKmVuYWJsZSogYHpzbWFsbG9jYCBhbmQgaXRzIGNvbXBhY3Rpb24gc3VwcG9ydCAod2hpY2ggd2UgbmVlZCBmb3IgdGhpcyBmdXp6aW5nKSwgd2UgbmVlZCB0aGUgZm9sbG93aW5nIEtjb25maWcgb3B0aW9uczogYENPTkZJR19aU01BTExPQz15YCwgYENPTkZJR19DT01QQUNUSU9OPXlgLCBhbmQgYENPTkZJR19NSUdSQVRJT049eWAuICBgQ09ORklHX01JR1JBVElPTmAgaXMgdXN1YWxseSBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IGBDT05GSUdfQ09NUEFDVElPTmAsIGJ1dCB3ZSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQsIG9mIGNvdXJzZS5cblxuVGltZSB0byBsb29rIGludG8gYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMgYW5kIHRoZW4gZGV2aXNlIGEgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUwMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjI2LjU2MzIxNDkxMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5NDk3MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY0Mj1jb25maWcgQkFMTE9PTl9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjUzLSMgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbXBhY3Rpb25cXG5tbS9LY29uZmlnOjY1NDpjb25maWcgQ09NUEFDVElPTlxcbm1tL0tjb25maWctNjU1LVxcdGJvb2wgXFxcIkFsbG93IGZvciBtZW1vcnkgY29tcGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MjYuNjI0MTgxMjM0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDU4NTg0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlJldmlzaXRpbmcgYFpTTUFMTE9DYCoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgWlNNQUxMT0NgLiBJJ3ZlIGJlZW4gbXVsbGluZyBvdmVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGEgd2hpbGUgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGxhdGVzdCBjaGFuZ2VzIGluIHRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5LiBBcmUgdGhlcmUgYW55IHN1YnRsZSByZWdyZXNzaW9ucyBvciB1bmZvcmVzZWVuIG9wdGltaXphdGlvbnMgdGhhdCBoYXZlIGNyZXB0IGluPyBJJ20gc3BlY2lmaWNhbGx5IGN1cmlvdXMgYWJvdXQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG5ld2VyIE5VTUEtYXdhcmUgYWxsb2NhdGlvbiBwYXR0ZXJucy4gSGF2ZSB0aGUgcmVjZW50IHR3ZWFrcyB0byB0aGUgcGVyLW5vZGUgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGhhZCBhbnkgaW1wYWN0IG9uIGBaU01BTExPQ2AncyBhYmlsaXR5IHRvIGVmZmljaWVudGx5IG1hbmFnZSBzbWFsbCBvYmplY3QgYWxsb2NhdGlvbnMgYWNyb3NzIHRoZSBtZW1vcnkgaGllcmFyY2h5PyBJIHdhbnQgdG8gdmVyaWZ5IGlmIHRoZSBleHBlY3RlZCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYXJlIGhvbGRpbmcgdXAgdW5kZXIgdmFyaW91cyB3b3JrbG9hZHMsIGVzcGVjaWFsbHkgdGhvc2UgY2hhcmFjdGVyaXplZCBieSBoaWdoIG9iamVjdCBjaHVybi4gQSBxdWljayByZXZpZXcgb2YgaXRzIGNvcmUgbWVjaGFuaWNzIGlzIGluIG9yZGVyIHRvIGJlIHN1cmUuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgYmVuY2htYXJrcyBhZ2FpbiBhbmQgbWF5YmUgZXZlbiBzaW11bGF0ZSBhIGZldyBzcGVjaWZpYyBlZGdlIGNhc2VzIHRoYXQgSSBoYXZlIGJlZW4gY29uc2lkZXJpbmcuIEl0J3MgdGltZSB0byB0YWtlIGEgZnJlc2ggbG9vayBhdCBgWlNNQUxMT0NgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTExLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6MjkuOTMwMDQzNjMzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDgyMjE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlNNQUxMT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTExND1jb25maWcgWlNXQVBfQ09NUFJFU1NPUl9ERUZBVUxUXFxuLS1cXG5tbS9LY29uZmlnLTEyNC1cXG5tbS9LY29uZmlnOjEyNTpjb25maWcgWlNNQUxMT0NcXG5tbS9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZVxcbi0tXFxubW0vS2NvbmZpZz0xMzM9Y29tbWVudCBcXFwiWnNtYWxsb2MgaXMgYSBjb21tb24gYmFja2VuZCBhbGxvY2F0b3IgZm9yIHpzd2FwIFxcdTAwMjYgenJhbVxcXCJcXG5tbS9LY29uZmlnLTEzNC1cXG5tbS9LY29uZmlnOjEzNTpjb25maWcgWlNNQUxMT0NfU1RBVFxcbm1tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkV4cG9ydCB6c21hbGxvYyBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xNDMtXFxubW0vS2NvbmZpZzoxNDQ6Y29uZmlnIFpTTUFMTE9DX0NIQUlOX1NJWkVcXG5tbS9LY29uZmlnLTE0NS1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIHBhZ2VzIHBlci16c3BhZ2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjI5Ljk4NDg3MzA1MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgyOTY3MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpTTUFMTE9DIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBgWlNNQUxMT0NgIGlzIGEgdHJpc3RhdGUsIGludGVyZXN0aW5nLiBJIGNhbiBlbmFibGUgaXQsIHdoaWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGp1c3Qgc2V0IGBaU01BTExPQz15YC4gQnV0IHdhaXQsIHRoZXJlJ3MgYSBjcnVjaWFsIHBvaW50IGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHpzbWFsbG9jYCBpcyAqYWN0dWFsbHkqIHV0aWxpemVkLiBUaGF0IG1lYW5zIEkgbmVlZCBlaXRoZXIgYFpSQU1gIG9yIGBaU1dBUGAgZW5hYmxlZC4gSXQncyBhIGNsYXNzaWMgcGFpcmluZyBzdHJhdGVneSDigJMgb25lIGhlbHBzIHRoZSBvdGhlciBhY2hpZXZlIGl0cyBwb3RlbnRpYWwuIFJpZ2h0LCBsZXQncyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYFpSQU1gIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBiZWNhdXNlIHRoYXQncyB1c3VhbGx5IG15IGdvLXRvIGZvciB0aGlzIGtpbmQgb2Ygc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozMy4xNjc4NDQ5NzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTQ4MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozMy4yMjQwMDA4MDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4Nzc5NDUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWlNNQUxMT0MgTWlncmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhlIGRpcmVjdGl2ZSBpcyBjbGVhcjogd2UgbmVlZCB0byBlbmFibGUgYFpTTUFMTE9DYCwgYFpSQU1gLCBhbmQgYENPTVBBQ1RJT05gLiBUaGUgY3J1Y2lhbCBmdW5jdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uIGlzIGB6c19wYWdlX21pZ3JhdGVgLiBMZXQncyBzZWUuLi4gZmlyc3QsIGlzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyAqWWVzKiwgaXQgaXMuIE5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZ3VpZGFuY2UuLi4gXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLi4uXCIgUmlnaHQsIHJpZ2h0LiBJbnRlcm5hbCBzdGF0aWMgaGVscGVycywgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyDigJMgYnV0IHRoYXQncyB0aGUga2V5IGhlcmUuIFdlIHRha2UgdGhlIGFkZHJlc3Mgb2YgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGFzc2lnbiBpdCB0byBgenNtYWxsb2NfbW9wcy5taWdyYXRlX3BhZ2VgLiBTaW5jZSB0aGUgYWRkcmVzcyBpcyB0YWtlbiwgaXQgKndvbid0KiBiZSBpbmxpbmVkIGFuZCBpdCAqd2lsbCogaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbC4gU28sIGB6c19wYWdlX21pZ3JhdGVgIHNob3VsZCBiZSBwZXJmZWN0bHkgYWNjZXB0YWJsZSBldmVuIGlmIGl0IGlzIHN0YXRpYy4gV2UgYXJlbid0IGxvc2luZyBhbnl0aGluZyBieSB1c2luZyBpdC5cblxuQnV0LCBqdXN0IGZvciB0aG9yb3VnaG5lc3MsIGNvdWxkIHdlIHByb3ZpZGUgYSBub24tc3RhdGljIGVudHJ5IHBvaW50PyBJIHN1cHBvc2Ugd2UgY291bGQgcHJvdmlkZSBzb21lIGFsdGVybmF0aXZlIGB6c21hbGxvY2AgQVBJIGZ1bmN0aW9ucyBvciBwYWdlIG1pZ3JhdGlvbiBmdW5jdGlvbnMuIEJ1dCByZWFsbHksIG5vLCBgenNfcGFnZV9taWdyYXRlYCBpcyBmaW5lOyBpdHMgYWRkcmVzcyBpcyB0YWtlbiwgYW5kIHRoYXQncyB0aGUgaW1wb3J0YW50IHBhcnQuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG8gY29uc2lkZXI/IExldCdzIHF1aWNrbHkgc2NhbiBgbW0venNtYWxsb2MuY2AgdG8gYmUgY29tcGxldGVseSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGEgYmV0dGVyIG5vbi1zdGF0aWMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUwMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozOC4xMTE3OTkzMTJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDE0NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16X0EtWjAtOV0rIHpzX1thLXpfQS1aMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS96c21hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3pzbWFsbG9jLmM9MTA4ND1FWFBPUlRfU1lNQk9MX0dQTCh6c19vYmpfcmVhZF9iZWdpbik7XFxubW0venNtYWxsb2MuYy0xMDg1LVxcbm1tL3pzbWFsbG9jLmM6MTA4Njp2b2lkIHpzX29ial9yZWFkX2VuZChzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUsXFxubW0venNtYWxsb2MuYy0xMDg3LVxcdFxcdCAgICAgc2l6ZV90IG1lbV9sZW4sIHZvaWQgKmhhbmRsZV9tZW0pXFxuLS1cXG5tbS96c21hbGxvYy5jPTExMTE9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3JlYWRfZW5kKTtcXG5tbS96c21hbGxvYy5jLTExMTItXFxubW0venNtYWxsb2MuYzoxMTEzOnZvaWQgenNfb2JqX3JlYWRfc2dfYmVnaW4oc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgaGFuZGxlLFxcbm1tL3pzbWFsbG9jLmMtMTExNC1cXHRcXHRcXHQgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIHNpemVfdCBtZW1fbGVuKVxcbi0tXFxubW0venNtYWxsb2MuYz0xMTU4PUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2JlZ2luKTtcXG5tbS96c21hbGxvYy5jLTExNTktXFxubW0venNtYWxsb2MuYzoxMTYwOnZvaWQgenNfb2JqX3JlYWRfc2dfZW5kKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcXG5tbS96c21hbGxvYy5jLTExNjEte1xcbi0tXFxubW0venNtYWxsb2MuYz0xMTczPUVYUE9SVF9TWU1CT0xfR1BMKHpzX29ial9yZWFkX3NnX2VuZCk7XFxubW0venNtYWxsb2MuYy0xMTc0LVxcbm1tL3pzbWFsbG9jLmM6MTE3NTp2b2lkIHpzX29ial93cml0ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBoYW5kbGUsXFxubW0venNtYWxsb2MuYy0xMTc2LVxcdFxcdCAgdm9pZCAqaGFuZGxlX21lbSwgc2l6ZV90IG1lbV9sZW4pXFxuLS1cXG5tbS96c21hbGxvYy5jPTEyMjI9RVhQT1JUX1NZTUJPTF9HUEwoenNfb2JqX3dyaXRlKTtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTIzNi0gKi9cXG5tbS96c21hbGxvYy5jOjEyMzc6c2l6ZV90IHpzX2h1Z2VfY2xhc3Nfc2l6ZShzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5tbS96c21hbGxvYy5jLTEyMzgte1xcbi0tXFxubW0venNtYWxsb2MuYz0xMzU1PXN0YXRpYyB2b2lkIG9ial9mcmVlKGludCBjbGFzc19zaXplLCB1bnNpZ25lZCBsb25nIG9iailcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTM4Mi1cXG5tbS96c21hbGxvYy5jOjEzODM6dm9pZCB6c19mcmVlKHN0cnVjdCB6c19wb29sICpwb29sLCB1bnNpZ25lZCBsb25nIGhhbmRsZSlcXG5tbS96c21hbGxvYy5jLTEzODQte1xcbi0tXFxubW0venNtYWxsb2MuYz0xOTc2PUVYUE9SVF9TWU1CT0xfR1BMKHpzX2NvbXBhY3QpO1xcbm1tL3pzbWFsbG9jLmMtMTk3Ny1cXG5tbS96c21hbGxvYy5jOjE5Nzg6dm9pZCB6c19wb29sX3N0YXRzKHN0cnVjdCB6c19wb29sICpwb29sLCBzdHJ1Y3QgenNfcG9vbF9zdGF0cyAqc3RhdHMpXFxubW0venNtYWxsb2MuYy0xOTc5LXtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjE4MD1FWFBPUlRfU1lNQk9MX0dQTCh6c19jcmVhdGVfcG9vbCk7XFxubW0venNtYWxsb2MuYy0yMTgxLVxcbm1tL3pzbWFsbG9jLmM6MjE4Mjp2b2lkIHpzX2Rlc3Ryb3lfcG9vbChzdHJ1Y3QgenNfcG9vbCAqcG9vbClcXG5tbS96c21hbGxvYy5jLTIxODMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjozOC4xNzE4MjE0NzZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4MDAyMzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBhIFN0YXRpYyBWYXJpYWJsZSBpbiBhIFN0cnVjdCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbSBzZWVpbmcgYHpzX3BhZ2VfbWlncmF0ZWAgYW5kIGl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgYnV0IGl0IHNlZW1zIHRvIGJlIGFzc2lnbmVkIG9yIHVzZWQgaW4gY29udGV4dCBvZiBhIHN0cnVjdC4gVGhhdCByYWlzZXMgYSByZWQgZmxhZy4gVHlwaWNhbGx5IHN0YXRpYyB2YXJpYWJsZXMgaGF2ZSBhIHNwZWNpZmljLCBvZnRlbiBmaWxlLWxldmVsLCBzY29wZS4gIEknbSBjdXJpb3VzIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgaGVyZSDigJMgaXMgaXQgc2ltcGx5IGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhhdCBzdHJ1Y3QsIGEgbWV0aG9kLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbnRlcmFjdGlvbiB3b3Jrcy5cblxuVGhlIG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpdmUgaW50byBgenNtYWxsb2NfbW9wc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoYXQgc3RydWN0dXJlIGRlZmluaXRpb24sIGhvdyBgenNfcGFnZV9taWdyYXRlYCBpcyBiZWluZyB1c2VkIHdpdGhpbiBpdCwgYW5kIGhvdyBpdCBpcyB0aGVuIGJlaW5nIGFwcGxpZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGlmIHRoZXJlJ3MgYW55IHdlaXJkbmVzcyB3aXRoIHNjb3Bpbmcgb3IgaWYgSSBuZWVkIHRvIHdvcnJ5IGFib3V0IHNoYXJlZCByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODc5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDEuMzUxODQ3MzkxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM0MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c21hbGxvY19tb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3pzbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0venNtYWxsb2MuYz0xNzkxPXN0YXRpYyB2b2lkIHpzX3BhZ2VfcHV0YmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTc5NC1cXG5tbS96c21hbGxvYy5jOjE3OTU6Y29uc3Qgc3RydWN0IG1vdmFibGVfb3BlcmF0aW9ucyB6c21hbGxvY19tb3BzID0ge1xcbm1tL3pzbWFsbG9jLmMtMTc5Ni1cXHQuaXNvbGF0ZV9wYWdlID0genNfcGFnZV9pc29sYXRlLFxcbi0tXFxubW0venNtYWxsb2MuYz0yMjM3PXN0YXRpYyBpbnQgX19pbml0IHpzX2luaXQodm9pZClcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjI0NS0jaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jOjIyNDY6XFx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXFx1MDAyNnpzbWFsbG9jX21vcHMsIFBHVFlfenNtYWxsb2MpO1xcbm1tL3pzbWFsbG9jLmMtMjI0Ny1cXHRpZiAocmMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDEuNDExMjAyNTg2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjYwMjI3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgenNtYWxsb2MgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIGBzZXRfbW92YWJsZV9vcHNgIGlzIHdoZXJlIHRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlZ2lzdGVyZWQuIFRoYXQgbWVhbnMgdGhlIGB6c19wYWdlX21pZ3JhdGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBhbmQgbWlncmF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aGVuIGl0IGJ1bXBzIGludG8gYSBwYWdlIHRoYXQncyBtYXJrZWQgd2l0aCBgUEdUWV96c21hbGxvY2AuIFNpbmNlIGl0J3MgYSBjYWxsYmFjaywgdXNpbmcgYHpzX3BhZ2VfbWlncmF0ZWAgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9sIGluIG15IGFuYWx5c2lzIGlzIHBlcmZlY3RseSBzb3VuZC4gSXQncyBhIGNsZWFuIGVudHJ5IHBvaW50LiBXZSBjYW4gYWxzbyB3ZWF2ZSBpbiBvdGhlciByZWxldmFudCBwaWVjZXMgdG8gc3RyZW5ndGhlbiB0aGUgdGVzdC4gVG8gbWFrZSBzdXJlIHpzbWFsbG9jIGlzIHRob3JvdWdobHkgdGVzdGVkLCBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYHpzX2NvbXBhY3RgIGluIHRoZSBtaXguIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1pbXBvcnRhbnQgYHpzX21hbGxvY2AgYW5kIGB6c19mcmVlYCBmdW5jdGlvbnMuIEdvdHRhIGNoZWNrIHRob3NlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBwYXRocy4gTGV0J3Mgc3RhcnQgd2l0aCBgenNfbWFsbG9jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDQuOTc3MjMwMTcxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk1MjQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c19tYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTEyNDM9c3RhdGljIHVuc2lnbmVkIGxvbmcgb2JqX21hbGxvYyhzdHJ1Y3QgenNfcG9vbCAqcG9vbCxcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTI4NS0vKipcXG5tbS96c21hbGxvYy5jOjEyODY6ICogenNfbWFsbG9jIC0gQWxsb2NhdGUgYmxvY2sgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHBvb2wuXFxubW0venNtYWxsb2MuYy0xMjg3LSAqIEBwb29sOiBwb29sIHRvIGFsbG9jYXRlIGZyb21cXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTI5NS0gKi9cXG5tbS96c21hbGxvYy5jOjEyOTY6dW5zaWduZWQgbG9uZyB6c19tYWxsb2Moc3RydWN0IHpzX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsXFxubW0venNtYWxsb2MuYy0xMjk3LVxcdFxcdFxcdGNvbnN0IGludCBuaWQpXFxuLS1cXG5tbS96c21hbGxvYy5jLTEzNTItfVxcbm1tL3pzbWFsbG9jLmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTCh6c19tYWxsb2MpO1xcbm1tL3pzbWFsbG9jLmMtMTM1NC1cXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjA3MT1zdHJ1Y3QgenNfcG9vbCAqenNfY3JlYXRlX3Bvb2woY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMjExNi1cXHRcXHRcXHQgKiBUaGUgb2JqZWN0IHVzZXMgWlNfSEFORExFX1NJWkUgYnl0ZXMgdG8gc3RvcmUgdGhlXFxubW0venNtYWxsb2MuYzoyMTE3OlxcdFxcdFxcdCAqIGhhbmRsZS4gV2UgbmVlZCB0byBzdWJ0cmFjdCBpdCwgYmVjYXVzZSB6c19tYWxsb2MoKVxcbm1tL3pzbWFsbG9jLmMtMjExOC1cXHRcXHRcXHQgKiB1bmNvbmRpdGlvbmFsbHkgYWRkcyBoYW5kbGUgc2l6ZSBiZWZvcmUgaXQgcGVyZm9ybXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NDUuMDM0MTkwNzU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzM4NTE1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBac21hbGxvYyBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIGludGVncmF0aW5nIFpzbWFsbG9jLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBicmluZyBpbnRvIHRoZSBkaXNjdXNzaW9uIGFyZSBkZWZpbml0ZWx5IGB6c19tYWxsb2NgLCBgenNfZnJlZWAsIGFuZCBgenNfcGFnZV9taWdyYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgZHluYW1pYyBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIGFuZCB0aGUgbW92ZW1lbnQgb2YgcGFnZXMsIHJlc3BlY3RpdmVseS4gV2UnbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgd2hvbGUgdGhpbmcgd29ya2luZywgSSB0aGluay4gYFpTTUFMTE9DYCBpdHNlbGYsIG9idmlvdXNseSwgYW5kIHRoZW4gYWxzbyBgWlJBTWAgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY29tcHJlc3Npb24sIGBDT01QQUNUSU9OYCB0byBhbGxvdyBmb3IgbWVyZ2luZyBvZiBtZW1vcnksIGFuZCBgTUlHUkFUSU9OYCBzbyB0aGF0IHdlIGNhbi4uLiBoYW5nIG9uIGEgc2Vjb25kLi4uIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBNSUdSQVRJT05gIGlzIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlnIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBjaGFzaW5nIHNoYWRvd3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNDAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo0OC4yNjgwNDY0NjRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NDQzMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY4NT1jb25maWcgTlVNQV9NSUdSQVRJT05cXG4tLVxcbm1tL0tjb25maWctNjk1LVxcbm1tL0tjb25maWc6Njk2OmNvbmZpZyBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5Ny1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjQ4LjMyMjUwNjE2M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODczMzQwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgc2VlIGBNSUdSQVRJT05gIGhlcmUsIGFuZCBpdCdzIGEgYm9vbGVhbiB2YXJpYWJsZS4gSW50ZXJlc3RpbmcgdGhhdCBpdCBkb2Vzbid0IGhhdmUgYSBkaXJlY3QgcHJvbXB0IGFzc29jaWF0ZWQgd2l0aCBpdCDigJMgdGhhdCBsaWtlbHkgbWVhbnMgaXRzIHN0YXRlLCB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgaXMgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyBhIGNvbW1vbiBwYXR0ZXJuLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZHJpdmluZyB0aGlzIGBNSUdSQVRJT05gIHNldHRpbmcuIExldCBtZSBjaGVjayB0aGUgb3RoZXIgY29uZmlncywgc3RhcnRpbmcgd2l0aCBgQ09NUEFDVElPTmAuIFRoYXQncyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uIEl0J3MgaGlnaGx5IHByb2JhYmxlIGBDT01QQUNUSU9OYCBoYXMgYSBkZXBlbmRlbmN5IG9yIGlzIGluZmx1ZW5jaW5nIHRoZSBzZXR0aW5nIG9mIGBNSUdSQVRJT05gLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzY2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NTEuMTk1ODUxMzM1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjI4OTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ09NUEFDVElPTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NjQyPWNvbmZpZyBCQUxMT09OX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02NTMtIyBzdXBwb3J0IGZvciBtZW1vcnkgY29tcGFjdGlvblxcbm1tL0tjb25maWc6NjU0OmNvbmZpZyBDT01QQUNUSU9OXFxubW0vS2NvbmZpZy02NTUtXFx0Ym9vbCBcXFwiQWxsb3cgZm9yIG1lbW9yeSBjb21wYWN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1MS4yNTIxNTE4MjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzMDYxOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBNSUdSQVRJT05gIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIGludG8gbXkgaGVhZCBpcyB0byBwaW5wb2ludCB3aGF0J3MgY3VycmVudGx5IHF1ZXJ5aW5nIG9yIHV0aWxpemluZyBgTUlHUkFUSU9OYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXJlJ3Mgc29tZXRoaW5nIHNwZWNpZmljIG9yIHVudXN1YWwgd2UncmUgbG9va2luZyBmb3IsIG9yIHBvc3NpYmx5IHNvbWV0aGluZyBpbiBwcm9ncmVzcy4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBUaGUgYW5hbHlzaXMgY2Fubm90IHByb2NlZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbnMuIFNvIGxldCdzIGltbWVkaWF0ZWx5IGRpdmUgaW50byBmaW5kaW5nIHRoZSBzcGVjaWZpYyBxdWVyaWVzIHVzaW5nIGBNSUdSQVRJT05gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY0NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE2OjU1LjQ4Mjc3NDU4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzNDkyOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBNSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTU5MT1jb25maWcgTUVNT1JZX0hPVFJFTU9WRVxcbi0tXFxubW0vS2NvbmZpZy01OTQtXFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xcbm1tL0tjb25maWc6NTk1OlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTU5Ni1cXG4tLVxcbm1tL0tjb25maWc9NjU0PWNvbmZpZyBDT01QQUNUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY1Ni1cXHRkZWZhdWx0IHlcXG5tbS9LY29uZmlnOjY1NzpcXHRzZWxlY3QgTUlHUkFUSU9OXFxubW0vS2NvbmZpZy02NTgtXFx0ZGVwZW5kcyBvbiBNTVVcXG4tLVxcbm1tL0tjb25maWc9Njg1PWNvbmZpZyBOVU1BX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02ODgtXFx0ZGVwZW5kcyBvbiBOVU1BIFxcdTAwMjZcXHUwMDI2IE1NVVxcbm1tL0tjb25maWc6Njg5OlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTY5MC1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnPTEwNjc9Y29uZmlnIENNQVxcbi0tXFxubW0vS2NvbmZpZy0xMDY5LVxcdGRlcGVuZHMgb24gTU1VXFxubW0vS2NvbmZpZzoxMDcwOlxcdHNlbGVjdCBNSUdSQVRJT05cXG5tbS9LY29uZmlnLTEwNzEtXFx0c2VsZWN0IE1FTU9SWV9JU09MQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDI6MTY6NTYuMDM2Mjc4Njk4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzA3NDcyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcy4uLlxuXG4qKk9wdGltaXppbmcgTWVtb3J5IE1hbmFnZW1lbnQ6IFRoZSBQYXRoIHRvIEVmZmljaWVuY3kqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgaG93IHRvIG9wdGltaXplIGl0LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBgQ09NUEFDVElPTmAgaXMgd2hhdCB0cmlnZ2VycyBgTUlHUkFUSU9OYCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiBUbyBhY2hpZXZlIHRoYXQsIHRoZSBuYWl2ZSBhcHByb2FjaCB3b3VsZCBiZSB0byBlbmFibGUgYFpTTUFMTE9DYCwgYFpSQU1gLCBhbmQgYENPTVBBQ1RJT05gLiBIb3dldmVyLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCBtb3JlIGludHJpY2F0ZSB0aGFuIHRoYXQuXG5cbkFoYSEgVXBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGBaUkFNYCBpdHNlbGYgcHVsbHMgaW4gYFpTTUFMTE9DYC4gU28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIFRoaXMgbWVhbnMgZW5hYmxpbmcgYm90aCBgWlJBTWAgYW5kIGBDT01QQUNUSU9OYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Igb3VyIG5lZWRzLCByaWdodD8gSSdkIGxpa2UgdG8ganVzdCB2ZXJpZnkgdGhhdCBhbGwgdGhlIGBaUkFNYCBkZXBlbmRlbmNpZXMgYXJlIGFjY291bnRlZCBmb3IganVzdCB0byBiZSBzdXJlLCBiZWZvcmUgbW92aW5nIGZvcndhcmQuIExldCdzIG1ha2Ugc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNzYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1OS4zNjcwMjk2NzJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTcxODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNjo1OS40MTkyMDkwNDNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDQwNTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBSZWxhdGVkIEtlcm5lbCBDb21wb25lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgZGlmZmVyZW50IGtlcm5lbCBjb21wb25lbnRzLiBJdCdzIGNsZWFyIHRoYXQgYFpSQU1gIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBCTE9DS2AsIGBTWVNGU2AsIGFuZCBgTU1VYC4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEkgY291bGQganVzdCBsaXN0IGBaUkFNYCwgYFpTTUFMTE9DYCwgYW5kIGBDT01QQUNUSU9OYCBhcyB0aGUgY29yZSBlbGVtZW50cywgYnV0IGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgdG8gaWRlbnRpZnkgYW55dGhpbmcgSSBtYXkgYmUgbWlzc2luZy5cblxuSSBuZWVkIHRvIHJldmlzaXQgYHpzX3BhZ2VfbWlncmF0ZWAuIEkgcmVjYWxsIHRoYXQgaXQncyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBIbW0sIEkgc2hvdWxkIGNoZWNrIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGB6c21hbGxvY19tb3BzYCBzdHJ1Y3R1cmUuIE9rYXksIHNvIHRoYXQncyB0aGUgbGluay4gU28gYHpzX3BhZ2VfaXNvbGF0ZWAsIGB6c19wYWdlX21pZ3JhdGVgLCBhbmQgYHpzX3BhZ2VfcHV0YmFja2AuIEdvb2QuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgKnJlbGF0ZWQqIHRoYXQgSSBzaG91bGQgaW5jbHVkZSBpbiBteSBtZW50YWwgbW9kZWwgaGVyZT8gTGV0J3MgY29uc2lkZXIgYHpzX21hbGxvY2AsIGB6c19mcmVlYCwgYW5kIGB6c19jb21wYWN0YC4gYHpzX2NvbXBhY3RgIGlzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggbWVhbnMgaXQncyBhdmFpbGFibGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhhdCdzIGEgc2lnbmFsLiBJIHNob3VsZCBkZWZpbml0ZWx5IGV4YW1pbmUgYHpzX2NvbXBhY3RgIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNzowMy43MTM2MTgxMjdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MzQ2NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpzX2NvbXBhY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0venNtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS96c21hbGxvYy5jPTE4NzE9c3RhdGljIHVuc2lnbmVkIGxvbmcgenNfY2FuX2NvbXBhY3Qoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxcbi0tXFxubW0venNtYWxsb2MuYy0xODg1LVxcbm1tL3pzbWFsbG9jLmM6MTg4NjpzdGF0aWMgdW5zaWduZWQgbG9uZyBfX3pzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxubW0venNtYWxsb2MuYy0xODg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzKVxcbi0tXFxubW0venNtYWxsb2MuYy0xOTQ5LVxcbm1tL3pzbWFsbG9jLmM6MTk1MDp1bnNpZ25lZCBsb25nIHpzX2NvbXBhY3Qoc3RydWN0IHpzX3Bvb2wgKnBvb2wpXFxubW0venNtYWxsb2MuYy0xOTUxLXtcXG4tLVxcbm1tL3pzbWFsbG9jLmMtMTk1Ny1cXHQgKiBQb29sIGNvbXBhY3Rpb24gaXMgcGVyZm9ybWVkIHVuZGVyIHBvb2wtXFx1MDAzZWxvY2sgc28gaXQgaXMgYmFzaWNhbGx5XFxubW0venNtYWxsb2MuYzoxOTU4OlxcdCAqIHNpbmdsZS10aHJlYWRlZC4gSGF2aW5nIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGluIF9fenNfY29tcGFjdCgpXFxubW0venNtYWxsb2MuYy0xOTU5LVxcdCAqIHdpbGwgaW5jcmVhc2UgcG9vbC1cXHUwMDNlbG9jayBjb250ZW50aW9uLCB3aGljaCB3aWxsIGltcGFjdCBvdGhlclxcbi0tXFxubW0venNtYWxsb2MuYy0xOTY4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL3pzbWFsbG9jLmM6MTk2OTpcXHRcXHRwYWdlc19mcmVlZCArPSBfX3pzX2NvbXBhY3QocG9vbCwgY2xhc3MpO1xcbm1tL3pzbWFsbG9jLmMtMTk3MC1cXHR9XFxuLS1cXG5tbS96c21hbGxvYy5jLTE5NzUtfVxcbm1tL3pzbWFsbG9jLmM6MTk3NjpFWFBPUlRfU1lNQk9MX0dQTCh6c19jb21wYWN0KTtcXG5tbS96c21hbGxvYy5jLTE5NzctXFxuLS1cXG5tbS96c21hbGxvYy5jPTE5ODQ9c3RhdGljIHVuc2lnbmVkIGxvbmcgenNfc2hyaW5rZXJfc2NhbihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLFxcbi0tXFxubW0venNtYWxsb2MuYy0xOTk0LVxcdCAqL1xcbm1tL3pzbWFsbG9jLmM6MTk5NTpcXHRwYWdlc19mcmVlZCA9IHpzX2NvbXBhY3QocG9vbCk7XFxubW0venNtYWxsb2MuYy0xOTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMjoxNzowMy43NzI5ODE0MjFaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc0MjQ5NzU5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIHpzbWFsbG9jIFBhdGNoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgenNtYWxsb2MgY29kZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gZm9yIHBhZ2UgbWlncmF0aW9uLCBgenNfcGFnZV9taWdyYXRlYCwgaXMgaW4gZm9jdXMgaGVyZSwgYnV0IGFsc28sIEkgc2hvdWxkIGNvbnNpZGVyIG90aGVyIGtleSBlbnRyeSBwb2ludHMuIGB6c19jb21wYWN0YCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQgaW4gc2hyaW5raW5nLCBidXQgSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emluZyBjb3ZlcnMgdGhlIHBhZ2UgbWlncmF0aW9uIHBhdGggdG9vLiBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgenNfcGFnZV9taWdyYXRlYCwgYWxvbmcgd2l0aCBgenNfbWFsbG9jYCBhbmQgYHpzX2ZyZWVgIGluIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QgdG8gZW5zdXJlIHRoZSBjb3JlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gYXJlIGhlYXZpbHkgZnV6emVkIGFsb25nc2lkZSB0aGUgbWlncmF0aW9uIHByb2Nlc3MuXG5cbldhaXQgYSBtb21lbnQsIEkgcmVjYWxsIGB6c19wYWdlX21pZ3JhdGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGUgcHJvbXB0IHN0cmVzc2VkIHRoYXQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIGFyZSBwcmVmZXJyZWQuIEhvd2V2ZXIsIGJlY2F1c2UgYHpzX3BhZ2VfbWlncmF0ZWAncyBhZGRyZXNzIGlzIHRha2VuLCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgc28gaXQncyBzYWZlIHRvIGluY2x1ZGUuIEdvb2QuIFRoaXMgaXMgY29uZmlybWVkLiBJJ2xsIGluY2x1ZGUgdGhvc2UuIEl0J3MgY3J1Y2lhbCB0byBjb3ZlciB0aGUgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyB0b28uXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIG9ubHkgYFpTTUFMTE9DYCBpcyBzdWZmaWNpZW50LiBZZXMsIGBaU01BTExPQ2AgZXNzZW50aWFsbHkgZGVmaW5lcyB0aGUgc3Vic3lzdGVtLiBCdXQgdGhlIGNvZGUgYWxzbyBuZWVkcyBgQ09NUEFDVElPTmAgdG8gY29tcGlsZSBgenNfcGFnZV9taWdyYXRlYCwgc28gbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gYmUgYFtcIlpTTUFMTE9DXCIsIFwiWlJBTVwiLCBcIkNPTVBBQ1RJT05cIl1gLiBgWlJBTWAgaXMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGlzIHBhdGNoLiBBaGEhXG5cbmBgYGNcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuLVx0c3Bpbl91bmxvY2soXHUwMDI2Y2xhc3MtXHUwMDNlbG9jayk7XG4gXHR6c3BhZ2Vfd3JpdGVfdW5sb2NrKHpzcGFnZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZjbGFzcy1cdTAwM2Vsb2NrKTtcbitcdHdyaXRlX3VubG9jayhcdTAwMjZwb29sLVx1MDAzZWxvY2spO1xuYGBgXG5cblRoaXMgaXMgZml4aW5nIGEgbG9jayBvcmRlcmluZyBpc3N1ZSB3aXRoaW4gYHpzX3BhZ2VfbWlncmF0ZWAuIFRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXHUwMDNlbG9ja2AsIGBjbGFzcy1cdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIGhhcyBiZWVuIHJldmVyc2VkIHRvIG1hdGNoIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGltcGFjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzIGFuZCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuIFNvLCB0aGlzIGlzIGEgKmRlZmluaXRlKiBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuXG5cblRoZXJlZm9yZTpcblxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1wienNfcGFnZV9taWdyYXRlXCIsIFwienNfbWFsbG9jXCIsIFwienNfZnJlZVwiXWBcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXCJaU01BTExPQ1wiLCBcIlpSQU1cIiwgXCJDT01QQUNUSU9OXCJdYFxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2MjcsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAyOjE4OjExLjE5Nzk2MTQxMloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4Mjk4NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaU01BTExPQ1wiLFxuICAgIFwiWlJBTVwiLFxuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInpzX3BhZ2VfbWlncmF0ZVwiLFxuICAgIFwienNfbWFsbG9jXCIsXG4gICAgXCJ6c19mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NrIG9yZGVyaW5nIGlzc3VlIGluIGB6c19wYWdlX21pZ3JhdGVgIGJ5IHJldmVyc2luZyB0aGUgdW5sb2NrIG9yZGVyIG9mIGBwb29sLVxcdTAwM2Vsb2NrYCwgYGNsYXNzLVxcdTAwM2Vsb2NrYCwgYW5kIGB6c3BhZ2VgIHRvIG1hdGNoIHRoZSByZXZlcnNlIG9mIHRoZSBhY3F1aXNpdGlvbiBvcmRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpTTUFMTE9DXCIsXG4gICAgXCJaUkFNXCIsXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwienNfcGFnZV9taWdyYXRlXCIsXG4gICAgXCJ6c19tYWxsb2NcIixcbiAgICBcInpzX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvY2sgb3JkZXJpbmcgaXNzdWUgaW4gYHpzX3BhZ2VfbWlncmF0ZWAgYnkgcmV2ZXJzaW5nIHRoZSB1bmxvY2sgb3JkZXIgb2YgYHBvb2wtXFx1MDAzZWxvY2tgLCBgY2xhc3MtXFx1MDAzZWxvY2tgLCBhbmQgYHpzcGFnZWAgdG8gbWF0Y2ggdGhlIHJldmVyc2Ugb2YgdGhlIGFjcXVpc2l0aW9uIG9yZGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowtgp8h[1] Phase: Succeeded StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 02:18:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 02:18:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2] Phase: Succeeded StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 02:18:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 02:18:34 +0000 UTC FinishedAt: 2026-07-29 02:18:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-convert-artifact-2248589416/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 02:18:44 +0000 UTC FinishedAt: 2026-07-29 02:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 02:18:44 +0000 UTC FinishedAt: 2026-07-29 02:37:53 +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:*5ac88776-8e9a-4e12-bfa5-4dba3e910e31,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-workflowtgp8h/series-workflowtgp8h-convert-artifact-2248589416/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": "fe9c1190-5d44-4af3-88f4-7a782f5205f4", "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-workflowtgp8h/series-workflowtgp8h-build-action-893076958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 02:18:44 +0000 UTC FinishedAt: 2026-07-29 02:37:43 +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:*5ac88776-8e9a-4e12-bfa5-4dba3e910e31,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-workflowtgp8h/series-workflowtgp8h-convert-artifact-2248589416/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": "fe9c1190-5d44-4af3-88f4-7a782f5205f4", "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-workflowtgp8h/series-workflowtgp8h-build-action-893076958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 02:37:53 +0000 UTC FinishedAt: 2026-07-29 02:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 02:37:53 +0000 UTC FinishedAt: 2026-07-29 02:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 02:37:53 +0000 UTC FinishedAt: 2026-07-29 02:38:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 02:37:53 +0000 UTC FinishedAt: 2026-07-29 02:37:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-convert-artifact-608730191/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 02:38:03 +0000 UTC FinishedAt: 2026-07-29 02:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 02:38:03 +0000 UTC FinishedAt: 2026-07-29 02:40:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe9c1190-5d44-4af3-88f4-7a782f5205f4,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-workflowtgp8h/series-workflowtgp8h-build-action-893076958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 02:40:14 +0000 UTC FinishedAt: 2026-07-29 02:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 02:40:14 +0000 UTC FinishedAt: 2026-07-29 02:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 02:40:14 +0000 UTC FinishedAt: 2026-07-29 03:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 02:40:14 +0000 UTC FinishedAt: 2026-07-29 03:00:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5ac88776-8e9a-4e12-bfa5-4dba3e910e31,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-workflowtgp8h/series-workflowtgp8h-convert-artifact-608730191/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": "93672601-55b8-47ab-94a3-fd178d418583", "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-workflowtgp8h/series-workflowtgp8h-build-action-4010017891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 02:40:14 +0000 UTC FinishedAt: 2026-07-29 02:59:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5ac88776-8e9a-4e12-bfa5-4dba3e910e31,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-workflowtgp8h/series-workflowtgp8h-convert-artifact-608730191/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": "93672601-55b8-47ab-94a3-fd178d418583", "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-workflowtgp8h/series-workflowtgp8h-build-action-4010017891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 03:00:01 +0000 UTC FinishedAt: 2026-07-29 03:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 03:00:01 +0000 UTC FinishedAt: 2026-07-29 03:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 03:00:01 +0000 UTC FinishedAt: 2026-07-29 03:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 03:00:01 +0000 UTC FinishedAt: 2026-07-29 03:02:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*93672601-55b8-47ab-94a3-fd178d418583,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-build-action-4010017891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fe9c1190-5d44-4af3-88f4-7a782f5205f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*93672601-55b8-47ab-94a3-fd178d418583,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-build-action-893076958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-build-action-4010017891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 03:02:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 03:02:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},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-workflowtgp8h/series-workflowtgp8h-convert-artifact-3012466440/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 03:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 03:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 03:02:21 +0000 UTC FinishedAt: 2026-07-29 03:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 03:02:31 +0000 UTC FinishedAt: 2026-07-29 06:08:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgp8h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["zs_page_migrate","zs_malloc","zs_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"62bea7115fff400b1c41d591888535bf42f973da","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZSMALLOC","ZRAM","COMPACTION"],"series_id":"8b99e938-e1b4-4d6a-a6ff-e21277938651","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 03:02:31 +0000 UTC FinishedAt: 2026-07-29 06:07:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe9c1190-5d44-4af3-88f4-7a782f5205f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*93672601-55b8-47ab-94a3-fd178d418583,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-build-action-893076958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-build-action-4010017891/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgp8h/series-workflowtgp8h-convert-artifact-3012466440/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}