Name: series-workflowrg6cc Phase: Succeeded StartedAt: 2026-09-02 23:39:40 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[0] Phase: Succeeded StartedAt: 2026-09-02 23:39:40 +0000 UTC FinishedAt: 2026-09-02 23:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 23:39:40 +0000 UTC FinishedAt: 2026-09-02 23:43:07 +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": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR" ], "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": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR" ], "series_id": "371880e2-7b4a-4bb5-8791-ccbe265e151f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_set_schemes", "damon_new_scheme", "damos_commit_quota_goals", "damos_new_quota_goal", "damos_add_quota_goal", "damos_sysfs_set_quota_scores", "damos_sysfs_update_effective_quotas" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vc19uZXdfcXVvdGFfZ29hbCYjMzQ7LAogICAgJiMzNDtkYW1vc19hZGRfcXVvdGFfZ29hbCYjMzQ7LAogICAgJiMzNDtkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBlZmZlY3RpdmUgcXVvdGEgKGBlc3pgKSBpbiBEQU1PUyAoYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGluIGBtbS9kYW1vbi9jb3JlLmNgKSBieSByZXNldHRpbmcgYGVzemAgdG8gMCBpZiBgcXVvdGEtXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFsdGVycyB0aGUgZWZmZWN0aXZlIHF1b3RhIGNhbGN1bGF0aW9uIGxvZ2ljIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29yaykgYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBlZmZlY3RpdmUgc2NoZW1lIHNpemUgcXVvdGEgdG8gMCBpZiBlc3pfYnAgaXMgMC4gVGhpcyBjaGFuZ2VzIERBTU9TIHNjaGVtZSBxdW90YSBlbmZvcmNlbWVudCBhbmQgYXV0b3R1bmluZyBiZWhhdmlvciwgbWFraW5nIGl0IGZ1bmN0aW9uYWxseSBpbXBhY3RmdWwgYW5kIHdvcnRoIGZ1enppbmcgdmlhIHRoZSBEQU1PTiBzeXNmcyAvIGtlcm5lbCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMjUxLDYgJiM0MzszMjUxLDkgQEAgc3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbiBcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbiBcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG4gXG4mIzQzO1x0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG4mIzQzO1x0XHRlc3ogPSAwO1xuJiM0MztcbiBcdHF1b3RhLVx1MDAzZWVzeiA9IGVzejtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9zX25ld19xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX2FkZF9xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MzgxOGZkMzRjMDUzYjE5MTRiNTJjZmNiOTEyNmZkODczNmQxZDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMzo0MTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0zMjUxLDYgJiM0MzszMjUxLDkgQEAgc3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcykKIAlpZiAocXVvdGEtJmd0O3N6ICZhbXA7JmFtcDsgcXVvdGEtJmd0O3N6ICZsdDsgZXN6KQogCQllc3ogPSBxdW90YS0mZ3Q7c3o7CiAKJiM0MzsJaWYgKCFxdW90YS0mZ3Q7ZXN6X2JwKQomIzQzOwkJZXN6ID0gMDsKJiM0MzsKIAlxdW90YS0mZ3Q7ZXN6ID0gZXN6OwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gVGhlIGZvY3VzIGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoIXF1b3RhLSZndDtlc3pfYnApIGVzeiA9IDA7YC4gSG1tLCB0aGlzIHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBlZGdlIGNhc2UgcmVsYXRlZCB0byB0aGUgZXN0aW1hdGVkIHNpemUgKGBlc3pgKSB3aGVuIGBlc3pfYnBgIGlzIG51bGwuIFNvLCBwb3RlbnRpYWxseSBoYW5kbGluZyBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgcXVvdGEgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkLgoKTm93IEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb24gdGhlIGNvbnRleHQgaGVyZS4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBmaXJlIHVwIGBncmVwcGVyYCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFyb3VuZCBsaW5lIDMyNTEuIE5lZWQgdG8gbG9vayBpbnRvIGhvdyBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaXMgdXNlZCB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgaW52ZXN0aWdhdGUgYW55IHBvdGVudGlhbCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24sIGFuZCBjaGVjayByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciByZWxhdGVkIGNvZGUgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgYGVzemAgY2hlY2sgaXMgdHJ5aW5nIHRvIGFkZHJlc3Mgd2l0aGluIHRoZSBsYXJnZXIgREFNT04gZnJhbWV3b3JrIGFuZCB3aGF0IHRoZSBsaWtlbHkgaW1wbGljYXRpb25zIGFyZS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiB0aGUgYGVzel9icGAgdmFyaWFibGUgaXMgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyNDA6XHRcbjMyNDE6XHRcdGlmIChxdW90YS1cdTAwM2Vtcykge1xuMzI0MjpcdFx0XHRpZiAocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucylcbjMyNDM6XHRcdFx0XHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3osXG4zMjQ0Olx0XHRcdFx0XHRcdDEwMDAwMDAsIHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xuMzI0NTpcdFx0XHRlbHNlXG4zMjQ2Olx0XHRcdFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XG4zMjQ3Olx0XHRcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXHUwMDNlbXMsIGVzeik7XG4zMjQ4Olx0XHRcdGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcbjMyNDk6XHRcdH1cbjMyNTA6XHRcbjMyNTE6XHRcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbjMyNTI6XHRcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG4zMjUzOlx0XG4zMjU0Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWVzel9icClcbjMyNTU6XHRcdFx0ZXN6ID0gMDtcbjMyNTY6XHRcbjMyNTc6XHRcdHF1b3RhLVx1MDAzZWVzeiA9IGVzejtcbjMyNTg6XHR9XG4zMjU5Olx0XG4zMjYwOlx0c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbjMyNjE6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbjMyNjI6XHR7XG4zMjYzOlx0XHR1bnNpZ25lZCBpbnQgY2lkeCA9IDAsIHNpZHggPSAwO1xuMzI2NDpcdFx0c3RydWN0IGRhbW9zICpzaXRlcjtcbjMyNjU6XHRcbjMyNjY6XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xuMzI2NzpcdFx0XHRpZiAoc2l0ZXIgPT0gcylcbjMyNjg6XHRcdFx0XHRicmVhaztcbjMyNjk6XHRcdFx0c2lkeCYjNDM7JiM0Mzs7XG4zMjcwOlx0XHR9XG4zMjcxOlx0XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbjMyNzI6XHR9XG4zMjczOlx0XG4zMjc0Olx0c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbjMyNzU6XHR7XG4zMjc2Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjMyNzc6XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4zMjc4Olx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xuMzI3OTpcdFx0dW5zaWduZWQgbG9uZyBjdW11bGF0ZWRfc3osIGNhY2hlZF9lc3o7XG4zMjgwOlx0XHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XG4zMjgxOlx0XG4zMjgyOlx0XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiAhcXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKVxuMzI4MzpcdFx0XHRyZXR1cm47XG4zMjg0Olx0XG4zMjg1Olx0XHQvKiBGaXJzdCBjaGFyZ2Ugd2luZG93ICovXG4zMjg2Olx0XHRpZiAoIXF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20pIHtcbjMyODc6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9mcm9tID0gamlmZmllcztcbjMyODg6XHRcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbjMyODk6XHRcdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIERBTU9OIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBwaW5wb2ludCB3aGVyZSB0aGUgREFNT04gY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBNeSBndXQgdGVsbHMgbWUgdGhleSYjMzk7bGwgYmUgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBsaWtlbHkgd2l0aGluIHRoZSBgbW0vZGFtb25gIGRpcmVjdG9yeS4gU28sIGxldCYjMzk7cyBoZWFkIG92ZXIgdG8gYG1tL2RhbW9uL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGZldyBrZXkgdGhpbmdzIHRoZXJlOiB0aGUgbWFpbiBEQU1PTiBzd2l0Y2ggaXRzZWxmLCBwcm9iYWJseSBhIGBib29sYCBvcHRpb24sIGFuZCB0aGVuIG1heWJlIHNvbWUgZ3JhbnVsYXIgb3B0aW9ucyBmb3IgZGlmZmVyZW50IERBTU9OIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMuIEl04oCZcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gZmlndXJpbmcgb3V0IGhvdyBhIGZlYXR1cmUgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLiBUaGlzIGBLY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgZmluZXItZ3JhaW5lZCBjb250cm9scy4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9mIGhvdyBEQU1PTiBpcyBzdHJ1Y3R1cmVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciB0aGUganVndWxhciDigJMgdGhlIGNvcmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciBib3RoIGBtbS9kYW1vbi9NYWtlZmlsZWAgYW5kIGBtbS9kYW1vbi9LY29uZmlnYC4gYE1ha2VmaWxlYCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBkZXBlbmRlbmNpZXMsIGFuZCBob3cgYWxsIHRoZSBEQU1PTiBzb3VyY2UgZmlsZXMgZml0IHRvZ2V0aGVyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgbW9kdWxlIGNvbXBpbGF0aW9uLCBjb21waWxhdGlvbiBmbGFncywgYW5kIGhvdyB0aGlzIHBhcnRpY3VsYXIgREFNT04gaW1wbGVtZW50YXRpb24gbGlua3Mgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLgoKVGhlbiwgSSYjMzk7bGwgaGl0IGBtbS9kYW1vbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGxpdmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUga25vYnMgYW5kIGRpYWxzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoYXQmIzM5O3Mgb3B0aW9uYWwsIGFueSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIERBTU9OLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zLiBJIGV4cGVjdCB0byBzZWUgdGhlIHNlbGVjdGlvbiBvZiB0YXJnZXQgc2VsZWN0aW9uIGFsZ29yaXRobXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBpbnN0cnVtZW50YXRpb24gZmVhdHVyZXMuCgpJJiMzOTttIGFpbWluZyBmb3IgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlc2UgdHdvIGZpbGVzLCBzbyBJIGNhbiBzdGFydCB0byBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiBEQU1PTiYjMzk7cyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjoKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWc6IG1tL2RhbW9uL0tjb25maWcqKgoKT2theSwgdGltZSB0byBjaGVjayBvdXQgYG1tL2RhbW9uL0tjb25maWdgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IERBTU9OIGNhbiBiZSB0d2Vha2VkIGFuZCBpbnRlZ3JhdGVkIGludG8gYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuCgpJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluOgoKKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgc2NvcGU6KiogV2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggcmVxdWlyZSBleHBsaWNpdCBjb25maWd1cmF0aW9uPwoqICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGUga2VybmVsIGZlYXR1cmVzIG9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSSYjMzk7bSB0aGlua2luZywgZm9yIGluc3RhbmNlLCBhcmUgdGhlcmUgYW55IGludGVyYWN0aW9ucyB3aXRoIE5VTUEsIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCksIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPwoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMqKjogV2hhdCBzcGVjaWZpYyBwYXJhbWV0ZXJzIGNhbiBJIHR1bmUgdG8gbW9kaWZ5IERBTU9OJiMzOTtzIGJlaGF2aW9yPyBBcmUgdGhlcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtb25pdG9yaW5nIGdyYW51bGFyaXR5LCBkYXRhIGNvbGxlY3Rpb24gZnJlcXVlbmN5LCBvciB0aGUgYWN0aW9ucyB0YWtlbiB3aGVuIGRhdGEgYWNjZXNzIHBhdHRlcm5zIGFyZSBkZXRlY3RlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmFkZS1vZmZzIGFyZSBvZmZlcmVkIHZpYSB0aGUgY29uZmlndXJhYmxlIHNldHRpbmdzLgoqICAgKipEb2N1bWVudGF0aW9uIGluIEtjb25maWc6KiogRG9lcyBpdCBoYXZlIGFkZXF1YXRlIGhlbHAgdGV4dCBhbmQgZXhwbGFuYXRpb25zPyBHb29kIGRvY3VtZW50YXRpb24gaW4gdGhlIGBLY29uZmlnYCBmaWxlcyBpcyBjcml0aWNhbC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3MgY2xlYXIgYW5kIGNvbmNpc2UsIHByb3ZpZGluZyBhIGdvb2Qgb3ZlcnZpZXcgb2YgZWFjaCBvcHRpb24mIzM5O3MgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCkJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBEQU1PTi4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gc3RhcnQgZXhwZXJpbWVudGluZyB3aXRoIGl0IG9yIGludGVncmF0aW5nIGl0IGludG8gYSByZWFsLXdvcmxkIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgREFNT05cbiAgIDY6XHRcdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcbiAgIDk6XHRcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXG4gIDEwOlx0XHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxuICAxMzpcdFx0ICBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gREFNT05cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxuICAyMDpcdFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcbiAgMjE6XHRcdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cbiAgMjI6XHRcdCAgb25seSBkZXZlbG9wbWVudCBhbmQgdGVzdCBzZXR1cHMuXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIERBTU9OX0tVTklUX1RFU1RcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAyODpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICAyOTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgMzA6XHRcdGhlbHBcbiAgMzE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICAzNDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgREFNT05fVkFERFJcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4gIDQwOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNDE6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA0MjpcdFx0ZGVmYXVsdCBEQU1PTlxuICA0MzpcdFx0aGVscFxuICA0NDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDQ1Olx0XHQgIHRoYXQgd29yayBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlcy5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgREFNT05fUEFERFJcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgTU1VXG4gIDUwOlx0XHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbiAgNTE6XHRcdGRlZmF1bHQgREFNT05cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxuICA1NDpcdFx0ICB0aGF0IHdvcmtzIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxuICA1NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgNTg6XHRcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbiAgNTk6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDYwOlx0XHRoZWxwXG4gIDYxOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDYyOlx0XG4gIDYzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICA2NDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgREFNT05fU1lTRlNcbiAgNjk6XHRcdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4gIDcwOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xuICA3MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcbiAgNzQ6XHRcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcbiAgNzc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgNzg6XHRcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbiAgNzk6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDgwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgS2NvbmZpZyBJbmNsdXNpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYG1tL2RhbW9uL0tjb25maWdgIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgS2NvbmZpZyBmaWxlcywgYW5kIHRoZWlyIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgdGhhdCBtaWdodCBzb3VyY2UgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSB0eXBpY2FsIGluY2x1ZGUgaGllcmFyY2h5IHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGltcGFjdCBvZiBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYG1tL2RhbW9uL0tjb25maWdgIGl0c2VsZiBpbnRyb2R1Y2VzLiBUaGlzIGxpbmUgb2YgaW5xdWlyeSBhaW1zIHRvIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgb3IgbW9kdWxlcyB0cmlnZ2VyIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgYnVpbGQsIGFuZCBzdWJzZXF1ZW50bHksIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXQgcHJvdmlkZXMuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHBpbnBvaW50aW5nIGhvdyBEQU1PTiBpcyBhY3R1YWxseSBjb25maWd1cmVkIGFuZCBob3cgaXRzIHByZXNlbmNlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBGcm9tIHRoZXJlIEkgY2FuIGV4cGxvcmUgYW55IHJlbGF0aW9uc2hpcHMgaXQgaGFzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTE0ODU9Y29uZmlnIExBWllfTU1VX01PREVfS1VOSVRfVEVTVFxuLS1cbm1tL0tjb25maWctMTQ5Ni1cbm1tL0tjb25maWc6MTQ5Nzpzb3VyY2UgXCYjMzQ7bW0vZGFtb24vS2NvbmZpZ1wmIzM0O1xubW0vS2NvbmZpZy0xNDk4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTAwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIEludGVncmF0aW9uIHdpdGggUXVvdGFzOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYENPTkZJR19EQU1PTmAgZGlyZWN0bHkgdGllcyBpbnRvIHRoZSBjb21waWxhdGlvbiBvZiBgbW0vZGFtb24vY29yZS5vYCwgdGhlIGhlYXJ0IG9mIERBTU9OLiBGdXJ0aGVybW9yZSwgYENPTkZJR19EQU1PTl9TWVNGU2AgaXMgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIHRoZSBjcnVjaWFsIHN5c2ZzIGludGVyZmFjZSwgYXMgc2VlbiBpbiBgbW0vZGFtb24vc3lzZnMuY2AsIGBzeXNmcy1zY2hlbWVzLmNgLCBhbmQgYHN5c2ZzLWNvbW1vbi5jYC4gTm93LCBteSBtYWluIGZvY3VzIHNoaWZ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IERBTU9OLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gREFNT1MgcXVvdGFzLCBpcyBpbnRlcmFjdGVkIHdpdGggYXQgYWxsLiBJIGhhdmUgdG8gbG9vayBmb3IgZnVuY3Rpb25zIG9yIGludGVyZmFjZXMgdGhhdCByZWxhdGUgdG8gREFNT1MgUXVvdGFzIGluIFVzZXIgU3BhY2UuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcGVyZm9ybSBhIHRhcmdldGVkIHNlYXJjaC4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgY2FsbHMgdG8gYGRhbW9zX2FkanVzdF9xdW90YWAgYW5kIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdXNlciBzcGFjZSBhbmQga2VybmVsIGNvbnRyb2wgbWVjaGFuaXNtcyBmb3IgREFNT04gYW5kIERBTU9TLiBUaGlzIGV4YW1pbmF0aW9uIHdpbGwgcmV2ZWFsIHRoZSBwb2ludHMgb2YgaW50ZWdyYXRpb24gYW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBvZiB0aGUgcXVvdGEgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19hZGp1c3RfcXVvdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MzI2MD1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cbm1tL2RhbW9uL2NvcmUuYzozMzcxOlx0XHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA3NwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgREFNT04mIzM5O3MgQ29uZmlndXJhdGlvbiBhbmQgQ29udHJvbCoqCgpPa2F5LCBzbyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBga2RhbW9uZGAgd29ya2VyIHRocmVhZC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB1c2VycyBpbnRlcmFjdCB3aXRoIERBTU9OIOKAkyBob3cgdGhleSBzdGFydCB0aGUgd2hvbGUgdGhpbmcsIGNvbmZpZ3VyZSB0aGUgc2NoZW1lcywgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGV5IHNldCBxdW90YXMuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHVzZXItZmFjaW5nIEFQSXM7IEkgbmVlZCB0byBmaW5kIHRoZSBlbnRyeSBwb2ludHMuIExldCYjMzk7cyBzdGFydCB3aXRoIHN5c2ZzLCBhbmQgc2VlIGlmIHRoZSBzY2hlbWUgcXVvdGEgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCB0aGVyZS4gSWYgbm90LCBJJiMzOTtsbCBicmFuY2ggb3V0IHRvIHNlYXJjaCBmb3IgREFNT04gcXVvdGEtcmVsYXRlZCBmdW5jdGlvbnMuIExldCYjMzk7cyBnZXQgdGhpcyBpbnZlc3RpZ2F0aW9uIHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1b3RhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MjQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL2NvcmUuYz02ODM9dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODgtXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYzo2OTA6XHRcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxubW0vZGFtb24vY29yZS5jLTY5MS1cdFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXG5tbS9kYW1vbi9jb3JlLmMtNjkyLXtcbm1tL2RhbW9uL2NvcmUuYzo2OTM6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy02OTQtXG4tLVxubW0vZGFtb24vY29yZS5jLTcwNS1cbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxMC1cbm1tL2RhbW9uL2NvcmUuYzo3MTE6c3RhdGljIHZvaWQgZGFtb3NfZGVsX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzE1LVxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MjIte1xubW0vZGFtb24vY29yZS5jOjcyMzpcdGRhbW9zX2RlbF9xdW90YV9nb2FsKGcpO1xubW0vZGFtb24vY29yZS5jOjcyNDpcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYy03MjUtfVxubW0vZGFtb24vY29yZS5jLTcyNi1cbm1tL2RhbW9uL2NvcmUuYzo3Mjc6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkoc3RydWN0IGRhbW9zX3F1b3RhICpxKVxubW0vZGFtb24vY29yZS5jLTcyOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTczMS1cbm1tL2RhbW9uL2NvcmUuYzo3MzI6LyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG5tbS9kYW1vbi9jb3JlLmM6NzM1Olx0cXVvdGEtXHUwMDNlZXN6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3MzY6XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX3N6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzc6XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzg6XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jOjc0MDpcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmM6NzQxOlx0cXVvdGEtXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzQyOlx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3NDM6XHRyZXR1cm4gcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtNzQ0LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9NzQ2PXN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXG4tLVxubW0vZGFtb24vY29yZS5jLTc0OC1cdFx0XHR1bnNpZ25lZCBsb25nIGFwcGx5X2ludGVydmFsX3VzLFxubW0vZGFtb24vY29yZS5jOjc0OTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxubW0vZGFtb24vY29yZS5jLTc1MC1cdFx0XHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyAqd21hcmtzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03NzQtXG5tbS9kYW1vbi9jb3JlLmM6Nzc1Olx0c2NoZW1lLVx1MDAzZXF1b3RhID0gKihkYW1vc19xdW90YV9pbml0KHF1b3RhKSk7XG5tbS9kYW1vbi9jb3JlLmM6Nzc2Olx0LyogcXVvdGEuZ29hbHMgc2hvdWxkIGJlIHNlcGFyYXRlbHkgc2V0IGJ5IGNhbGxlciAqL1xubW0vZGFtb24vY29yZS5jOjc3NzpcdElOSVRfTElTVF9IRUFEKFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YS5nb2Fscyk7XG5tbS9kYW1vbi9jb3JlLmMtNzc4LVxuLS1cbm1tL2RhbW9uL2NvcmUuYz04MTU9dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbm1tL2RhbW9uL2NvcmUuYzo4MTc6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZywgKmdfbmV4dDtcbm1tL2RhbW9uL2NvcmUuYy04MTgtXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmLCAqbmV4dDtcbm1tL2RhbW9uL2NvcmUuYy04MTktXG5tbS9kYW1vbi9jb3JlLmM6ODIwOlx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGcsIGdfbmV4dCwgXHUwMDI2cy1cdTAwM2VxdW90YSlcbm1tL2RhbW9uL2NvcmUuYzo4MjE6XHRcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYy04MjItXG4tLVxubW0vZGFtb24vY29yZS5jPTExNjY9dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXG4tLVxubW0vZGFtb24vY29yZS5jLTExNzctXG5tbS9kYW1vbi9jb3JlLmM6MTE3ODpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX250aF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jOjExNzk6XHRcdGludCBuLCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXG5tbS9kYW1vbi9jb3JlLmMtMTE4MC17XG5tbS9kYW1vbi9jb3JlLmM6MTE4MTpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xubW0vZGFtb24vY29yZS5jLTExODItXHRpbnQgaSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMTE4My1cbm1tL2RhbW9uL2NvcmUuYzoxMTg0Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTE4NS1cdFx0aWYgKGkmIzQzOyYjNDM7ID09IG4pXG4tLVxubW0vZGFtb24vY29yZS5jLTExOTAtXG5tbS9kYW1vbi9jb3JlLmM6MTE5MTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbm1tL2RhbW9uL2NvcmUuYzoxMTkyOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExOTMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxubW0vZGFtb24vY29yZS5jOjEyMTU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6MTIxNjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIyMS1cdFx0ZHN0LVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXHUwMDNlY3VycmVudF92YWx1ZTtcbm1tL2RhbW9uL2NvcmUuYzoxMjIyOlx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyMjMtfVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjI1LS8qKlxubW0vZGFtb24vY29yZS5jOjEyMjY6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cbm1tL2RhbW9uL2NvcmUuYzoxMjI3OiAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9TIHF1b3RhLlxubW0vZGFtb24vY29yZS5jOjEyMjg6ICogQHNyYzpcdFRoZSBjb21taXQgc291cmNlIERBTU9TIHF1b3RhLlxubW0vZGFtb24vY29yZS5jLTEyMjktICpcbm1tL2RhbW9uL2NvcmUuYzoxMjMwOiAqIENvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZvciBxdW90YSBnb2FscyBmcm9tIEBzcmMgdG8gQGRzdC4gIFVzZXJzXG5tbS9kYW1vbi9jb3JlLmM6MTIzMTogKiBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24gZm9yIHF1b3RhIGdvYWxzLWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmdcbm1tL2RhbW9uL2NvcmUuYy0xMjMyLSAqIERBTU9OIGNvbnRleHRzLCBpbnN0ZWFkIG9mIG1hbnVhbCBpbi1wbGFjZSB1cGRhdGVzLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM2LSAqL1xubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XG5tbS9kYW1vbi9jb3JlLmM6MTIzOTpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3RfZ29hbCwgKm5leHQsICpzcmNfZ29hbCwgKm5ld19nb2FsO1xubW0vZGFtb24vY29yZS5jLTEyNDAtXHRpbnQgaSA9IDAsIGogPSAwO1xubW0vZGFtb24vY29yZS5jLTEyNDEtXG5tbS9kYW1vbi9jb3JlLmM6MTI0MjpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTI0MzpcdFx0c3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpJiM0MzsmIzQzOywgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjQ0LVx0XHRpZiAoc3JjX2dvYWwpXG5tbS9kYW1vbi9jb3JlLmM6MTI0NTpcdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xubW0vZGFtb24vY29yZS5jLTEyNDYtXHRcdGVsc2Vcbm1tL2RhbW9uL2NvcmUuYzoxMjQ3Olx0XHRcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTI0OC1cdH1cbm1tL2RhbW9uL2NvcmUuYzoxMjQ5Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbm1tL2RhbW9uL2NvcmUuYy0xMjUwLVx0XHRpZiAoaiYjNDM7JiM0MzsgXHUwMDNjIGkpXG5tbS9kYW1vbi9jb3JlLmMtMTI1MS1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL2NvcmUuYzoxMjUyOlx0XHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTEyNTMtXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNTUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTI1NjpcdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYzoxMjU3Olx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjU4LVx0fVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYxLVxubW0vZGFtb24vY29yZS5jOjEyNjI6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyNjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjY4LVx0ZHN0LVx1MDAzZXN6ID0gc3JjLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jOjEyNjk6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyNzAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTE5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUyNi1cbm1tL2RhbW9uL2NvcmUuYzoxNTI3Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFx1MDAyNmRzdC1cdTAwM2VxdW90YSwgXHUwMDI2c3JjLVx1MDAzZXF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0xNTI4LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTU0Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTY3LVx0XHRcdFx0c3JjX3NjaGVtZS1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyxcbm1tL2RhbW9uL2NvcmUuYzoxNTY4Olx0XHRcdFx0XHUwMDI2c3JjX3NjaGVtZS1cdTAwM2VxdW90YSwgXHUwMDI2c3JjX3NjaGVtZS1cdTAwM2V3bWFya3MsXG5tbS9kYW1vbi9jb3JlLmMtMTU2OS1cdFx0XHRcdE5VTUFfTk9fTk9ERSk7XG4tLVxubW0vZGFtb24vY29yZS5jPTE2Nzk9c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTcwNS1cdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTcwNjpcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTcwNzpcdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xubW0vZGFtb24vY29yZS5jOjE3MDg6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMTcwOS1cdFx0XHRcdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTg2Mj1zdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2NS1cdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xubW0vZGFtb24vY29yZS5jOjE4NjY6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xODY3LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODc0LVx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2NoZW1lLCBzcmMpIHtcbm1tL2RhbW9uL2NvcmUuYzoxODc1Olx0XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzY2hlbWUtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMTg3Ni1cbm1tL2RhbW9uL2NvcmUuYzoxODc3Olx0XHRcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcbm1tL2RhbW9uL2NvcmUuYy0xODc4LVx0XHRcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09XG4tLVxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMzg2LS8qXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0LlxubW0vZGFtb24vY29yZS5jOjIzODg6ICogQHF1b3RhOlx0VGhlIHF1b3RhIHRvIGNoZWNrLlxubW0vZGFtb24vY29yZS5jLTIzODktICpcbm1tL2RhbW9uL2NvcmUuYzoyMzkwOiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVvdGEgaXMgc2V0LCBmYWxzZSBvdGhlcndpc2UuXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jOjIzOTQ6XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xubW0vZGFtb24vY29yZS5jLTI0MDUtXG5tbS9kYW1vbi9jb3JlLmM6MjQwNjpcdHJldHVybiBjLVx1MDAzZW9wcy5nZXRfc2NoZW1lX3Njb3JlKGMsIHIsIHMpIFx1MDAzZT0gcy1cdTAwM2VxdW90YS5taW5fc2NvcmU7XG5tbS9kYW1vbi9jb3JlLmMtMjQwNy19XG4tLVxubW0vZGFtb24vY29yZS5jLTI0MTAtICogZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbigpIC0gQ2hlY2sgaWYgdGhlIGdpdmVuIHJlZ2lvbiBvciBzdGFydGluZyBwYXJ0IG9mXG5tbS9kYW1vbi9jb3JlLmM6MjQxMTogKiBpdCBpcyBhbHJlYWR5IGNoYXJnZWQgZm9yIHRoZSBEQU1PUyBxdW90YS5cbm1tL2RhbW9uL2NvcmUuYy0yNDEyLSAqIEB0Olx0VGhlIHRhcmdldCBvZiB0aGUgcmVnaW9uLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNDE2LSAqXG5tbS9kYW1vbi9jb3JlLmM6MjQxNzogKiBJZiBhIHF1b3RhIG9mIGEgc2NoZW1lIGhhcyBleGNlZWRlZCBpbiBhIHF1b3RhIGNoYXJnZSB3aW5kb3csIHRoZSBzY2hlbWUmIzM5O3Ncbm1tL2RhbW9uL2NvcmUuYy0yNDE4LSAqIGFjdGlvbiB3b3VsZCBhcHBsaWVkIHRvIG9ubHkgYSBwYXJ0IG9mIHRoZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4gZnVsZmlsbGluZ1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNDM0PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XG5tbS9kYW1vbi9jb3JlLmM6MjQzODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTI0MzktXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XG4tLVxubW0vZGFtb24vY29yZS5jLTI0NDEtXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ0MjpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDQzOlx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm1tL2RhbW9uL2NvcmUuYy0yNDQ1LVx0XHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xubW0vZGFtb24vY29yZS5jOjI0NDY6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYzoyNDQ3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jLTI0NDgtXHRcdFx0cmV0dXJuIHRydWU7XG5tbS9kYW1vbi9jb3JlLmMtMjQ0OS1cdFx0fVxubW0vZGFtb24vY29yZS5jOjI0NTA6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFx1MDAyNlx1MDAyNlxubW0vZGFtb24vY29yZS5jOjI0NTE6XHRcdFx0XHRyLVx1MDAzZWFyLmVuZCBcdTAwM2M9IHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ1Mi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm1tL2RhbW9uL2NvcmUuYy0yNDUzLVxubW0vZGFtb24vY29yZS5jOjI0NTQ6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFx1MDAyNlx1MDAyNiByLVx1MDAzZWFyLnN0YXJ0IFx1MDAzY1xubW0vZGFtb24vY29yZS5jOjI0NTU6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ1NjpcdFx0XHRzel90b19za2lwID0gQUxJR05fRE9XTihxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIC1cbm1tL2RhbW9uL2NvcmUuYy0yNDU3LVx0XHRcdFx0XHRyLVx1MDAzZWFyLnN0YXJ0LCBtaW5fcmVnaW9uX3N6KTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ2NS1cdFx0fVxubW0vZGFtb24vY29yZS5jOjI0NjY6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmM6MjQ2NzpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMjQ2OC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTI2MzUtXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy0yNjM3LVx0XHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjQzLVx0ICovXG5tbS9kYW1vbi9jb3JlLmM6MjY0NDpcdGlmICghcXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcdTAwM2Ugc3pfcmVnaW9uKVxubW0vZGFtb24vY29yZS5jOjI2NDU6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X3JlZ2lvbjtcbm1tL2RhbW9uL2NvcmUuYy0yNjQ2LVx0ZWxzZVxubW0vZGFtb24vY29yZS5jOjI2NDc6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X2FwcGxpZWQgJiM0MzsgbXVsdF9mcmFjKFxubW0vZGFtb24vY29yZS5jLTI2NDgtXHRcdFx0XHQoc3pfcmVnaW9uIC0gc3pfYXBwbGllZCksXG5tbS9kYW1vbi9jb3JlLmM6MjY0OTpcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX251bSxcbm1tL2RhbW9uL2NvcmUuYzoyNjUwOlx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xubW0vZGFtb24vY29yZS5jLTI2NTEtfVxubW0vZGFtb24vY29yZS5jLTI2NTItXG5tbS9kYW1vbi9jb3JlLmM6MjY1MzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG5tbS9kYW1vbi9jb3JlLmMtMjY1NC1cdFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxubW0vZGFtb24vY29yZS5jLTI2NTUte1xubW0vZGFtb24vY29yZS5jOjI2NTY6XHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG5tbS9kYW1vbi9jb3JlLmMtMjY1Ny1cdFx0cmV0dXJuIGZhbHNlO1xubW0vZGFtb24vY29yZS5jOjI2NTg6XHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbm1tL2RhbW9uL2NvcmUuYy0yNjU5LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY2MS1cdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXG5tbS9kYW1vbi9jb3JlLmM6MjY2MjpcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxubW0vZGFtb24vY29yZS5jLTI2NjMtXHQgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNjY0Olx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG5tbS9kYW1vbi9jb3JlLmMtMjY2NS19XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njc9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI2Njkte1xubW0vZGFtb24vY29yZS5jOjI2NzA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNjcxLVx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjcwNC1cdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzA1Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbm1tL2RhbW9uL2NvcmUuYzoyNzA2Olx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG5tbS9kYW1vbi9jb3JlLmM6MjcwNzpcdFx0XHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeixcbm1tL2RhbW9uL2NvcmUuYy0yNzA4LVx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzIyLVx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbm1tL2RhbW9uL2NvcmUuYzoyNzIzOlx0XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zICYjNDM7PSB0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmVuZCkgLVxubW0vZGFtb24vY29yZS5jLTI3MjQtXHRcdFx0dGltZXNwZWM2NF90b19ucyhcdTAwMjZiZWdpbik7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNTpcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNjpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzI3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmM6MjcyODpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG5tbS9kYW1vbi9jb3JlLmMtMjcyOS1cdFx0fVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNzM4PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG5tbS9kYW1vbi9jb3JlLmM6Mjc0NTpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc1Mi1cbm1tL2RhbW9uL2NvcmUuYzoyNzUzOlx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzU0Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzc3LSAqXG5tbS9kYW1vbi9jb3JlLmM6Mjc3ODogKiBUaGlzIGZ1bmN0aW9uIGNvdWxkIHNwbGl0IHJlZ2lvbnMgZm9yIGtlZXBpbmcgdGhlIHF1b3RhLiAgVG8gbWluaW1pemVcbm1tL2RhbW9uL2NvcmUuYy0yNzc5LSAqIG92ZXJoZWFkIGZyb20gdGhlIHNwbGl0IG9wZXJhdGlvbnMgaW5jcmVhc2VkIG51bWJlciBvZiByZWdpb25zLCB0aGlzXG4tLVxubW0vZGFtb24vY29yZS5jPTI3OTA9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI4MDAtXHRcdCAqIGRhbW9uX2RvX2FwcGx5X3NjaGVlbXMoKSBjb3VsZCBzcGxpdCB0aGUgcmVnaW9uIGZvciB0aGVcbm1tL2RhbW9uL2NvcmUuYzoyODAxOlx0XHQgKiBxdW90YS4gIEtlZXBpbmcgdGhlIG5ldyBzbGljZXMgaXMgYW4gb3ZlcmhlYWQuICBNZXJnZSBiYWNrXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cdFx0ICogdGhlIHNsaWNlcyBpbnRvIHRoZSBwcmV2aW91cyByZWdpb24gaWYgaXQgZG9lc24mIzM5O3QgbG9zZSBhbnlcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjkwMD1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG5tbS9kYW1vbi9jb3JlLmM6MjkwMTpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMjkwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTI5Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbm1tL2RhbW9uL2NvcmUuYzoyOTI5Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0yOTMwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzA4Mj1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG5tbS9kYW1vbi9jb3JlLmM6MzA4MzpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMzA4NC17XG4tLVxubW0vZGFtb24vY29yZS5jPTMwODg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbm1tL2RhbW9uL2NvcmUuYzozMDg5Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMDkwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzExOT1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMTM0LVxubW0vZGFtb24vY29yZS5jOjMxMzU6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShzdHJ1Y3QgZGFtb25fY3R4ICpjLFxubW0vZGFtb24vY29yZS5jOjMxMzY6XHRcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMzEzNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTMxNzktLyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xubW0vZGFtb24vY29yZS5jOjMxODA6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMxODEte1xubW0vZGFtb24vY29yZS5jOjMxODI6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYzozMTgzOlx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzE4NC1cdHVuc2lnbmVkIGxvbmcgaGlnaGVzdF9zY29yZSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMzE4NS1cbm1tL2RhbW9uL2NvcmUuYzozMTg2Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xubW0vZGFtb24vY29yZS5jOjMxODc6XHRcdGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoYywgcywgZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMzE4OC1cdFx0aGlnaGVzdF9zY29yZSA9IG1heChoaWdoZXN0X3Njb3JlLFxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMTk2PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzE5Ny17XG5tbS9kYW1vbi9jb3JlLmM6MzE5ODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMxOTk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIwMC1cbm1tL2RhbW9uL2NvcmUuYzozMjAxOlx0cXVvdGEtXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXG5tbS9kYW1vbi9jb3JlLmM6MzIwMjpcdFx0XHRtYXgocXVvdGEtXHUwMDNlZXN6X2JwLCAxMDAwMFVMKSwgc2NvcmUpO1xubW0vZGFtb24vY29yZS5jLTMyMDMtfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMyMDk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cbm1tL2RhbW9uL2NvcmUuYy0zMjExLVx0aWYgKHNjb3JlIFx1MDAzZT0gMTAwMDApXG5tbS9kYW1vbi9jb3JlLmM6MzIxMjpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbm1tL2RhbW9uL2NvcmUuYzozMjEzOlx0ZWxzZSBpZiAocXVvdGEtXHUwMDNlc3opXG5tbS9kYW1vbi9jb3JlLmM6MzIxNDpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gcXVvdGEtXHUwMDNlc3ogKiAxMDAwMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjE1LVx0ZWxzZVxubW0vZGFtb24vY29yZS5jOjMyMTY6XHRcdHF1b3RhLVx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcbm1tL2RhbW9uL2NvcmUuYy0zMjE3LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIxOS0vKlxubW0vZGFtb24vY29yZS5jOjMyMjA6ICogQ2FsbGVkIG9ubHkgaWYgcXVvdGEtXHUwMDNlbXMsIG9yIHF1b3RhLVx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVx1MDAzZWdvYWxzIGlzIG5vdCBlbXB0eVxubW0vZGFtb24vY29yZS5jLTMyMjEtICovXG5tbS9kYW1vbi9jb3JlLmM6MzIyMjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMyMjMte1xubW0vZGFtb24vY29yZS5jOjMyMjQ6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0zMjI1LVx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjI3LVxubW0vZGFtb24vY29yZS5jOjMyMjg6XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xubW0vZGFtb24vY29yZS5jOjMyMjk6XHRcdHF1b3RhLVx1MDAzZWVzeiA9IHF1b3RhLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jLTMyMzAtXHRcdHJldHVybjtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIzMi1cbm1tL2RhbW9uL2NvcmUuYzozMjMzOlx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xubW0vZGFtb24vY29yZS5jOjMyMzQ6XHRcdGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfQ09OU0lTVClcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChjdHgsIHMpO1xubW0vZGFtb24vY29yZS5jOjMyMzY6XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbm1tL2RhbW9uL2NvcmUuYy0zMjM3LVx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoY3R4LCBzKTtcbm1tL2RhbW9uL2NvcmUuYzozMjM4Olx0XHRlc3ogPSBxdW90YS1cdTAwM2Vlc3pfYnAgLyAxMDAwMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVx0fVxubW0vZGFtb24vY29yZS5jLTMyNDAtXG5tbS9kYW1vbi9jb3JlLmM6MzI0MTpcdGlmIChxdW90YS1cdTAwM2Vtcykge1xubW0vZGFtb24vY29yZS5jOjMyNDI6XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxubW0vZGFtb24vY29yZS5jOjMyNDM6XHRcdFx0dGhyb3VnaHB1dCA9IG11bHRfZnJhYyhxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxubW0vZGFtb24vY29yZS5jOjMyNDQ6XHRcdFx0XHRcdDEwMDAwMDAsIHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xubW0vZGFtb24vY29yZS5jLTMyNDUtXHRcdGVsc2Vcbm1tL2RhbW9uL2NvcmUuYy0zMjQ2LVx0XHRcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xubW0vZGFtb24vY29yZS5jOjMyNDc6XHRcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXHUwMDNlbXMsIGVzeik7XG5tbS9kYW1vbi9jb3JlLmMtMzI0OC1cdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjUwLVxubW0vZGFtb24vY29yZS5jOjMyNTE6XHRpZiAocXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IHF1b3RhLVx1MDAzZXN6IFx1MDAzYyBlc3opXG5tbS9kYW1vbi9jb3JlLmM6MzI1MjpcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI1My1cbm1tL2RhbW9uL2NvcmUuYzozMjU0Olx0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG5tbS9kYW1vbi9jb3JlLmMtMzI1NS1cdFx0ZXN6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjU2LVxubW0vZGFtb24vY29yZS5jOjMyNTc6XHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI1OC19XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbm1tL2RhbW9uL2NvcmUuYzozMjYxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTMyNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVx0fVxubW0vZGFtb24vY29yZS5jOjMyNzE6XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbm1tL2RhbW9uL2NvcmUuYzozMjc2Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzI3Ny1cdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyODEtXG5tbS9kYW1vbi9jb3JlLmM6MzI4MjpcdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZxdW90YS1cdTAwM2Vnb2FscykpXG5tbS9kYW1vbi9jb3JlLmMtMzI4My1cdFx0cmV0dXJuO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjg1LVx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xubW0vZGFtb24vY29yZS5jOjMyODY6XHRpZiAoIXF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzozMjg3Olx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xubW0vZGFtb24vY29yZS5jOjMyODg6XHRcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzI4OS1cdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG5tbS9kYW1vbi9jb3JlLmM6MzI5MDpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMyOTEtXHR9XG4tLVxubW0vZGFtb24vY29yZS5jLTMyOTMtXHQvKiBOZXcgY2hhcmdlIHdpbmRvdyBzdGFydHMgKi9cbm1tL2RhbW9uL2NvcmUuYzozMjk0Olx0aWYgKCF0aW1lX2luX3JhbmdlX29wZW4oamlmZmllcywgcXVvdGEtXHUwMDNlY2hhcmdlZF9mcm9tLFxubW0vZGFtb24vY29yZS5jOjMyOTU6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gJiM0Mztcbm1tL2RhbW9uL2NvcmUuYzozMjk2Olx0XHRcdFx0bXNlY3NfdG9famlmZmllcyhxdW90YS1cdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzI5NzpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG5tbS9kYW1vbi9jb3JlLmMtMzI5OC1cdFx0XHRzLVx1MDAzZXN0YXQucXRfZXhjZWVkcyYjNDM7JiM0Mzs7XG5tbS9kYW1vbi9jb3JlLmM6MzI5OTpcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeiAmIzQzOz0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zejtcbm1tL2RhbW9uL2NvcmUuYzozMzAwOlx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xubW0vZGFtb24vY29yZS5jOjMzMDE6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogPSAwO1xubW0vZGFtb24vY29yZS5jLTMzMDItXHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxubW0vZGFtb24vY29yZS5jOjMzMDM6XHRcdFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVx1MDAzZWVzejtcbm1tL2RhbW9uL2NvcmUuYzozMzA0Olx0XHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jOjMzMDU6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2Vlc3ogIT0gY2FjaGVkX2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMzA2Olx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzMwNy1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzMzMi1cdFx0Y3VtdWxhdGVkX3N6ICYjNDM7PSBjLVx1MDAzZXJlZ2lvbnNfc2NvcmVfaGlzdG9ncmFtW3Njb3JlXTtcbm1tL2RhbW9uL2NvcmUuYzozMzMzOlx0XHRpZiAoY3VtdWxhdGVkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6IHx8ICFzY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0zMzM0LVx0XHRcdGJyZWFrO1xubW0vZGFtb24vY29yZS5jLTMzMzUtXHR9XG5tbS9kYW1vbi9jb3JlLmM6MzMzNjpcdHF1b3RhLVx1MDAzZW1pbl9zY29yZSA9IHNjb3JlO1xubW0vZGFtb24vY29yZS5jLTMzMzctfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMzU1PXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMzcwLVxubW0vZGFtb24vY29yZS5jOjMzNzE6XHRcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMzcyLVx0fVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9Mzk9c3RhdGljIGJvb2wgY29tbWl0X2lucHV0cyBfX3JlYWRfbW9zdGx5O1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDMtICpcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDQ6ICogV2hpbGUga2VlcGluZyB0aGUgY2FwcyB0aGF0IHNldCBieSBvdGhlciBxdW90YXMsIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ1OiAqIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2VzIGFuZCBkZWNyZWFzZXMgdGhlIGVmZmVjdGl2ZSBsZXZlbCBvZiB0aGUgcXVvdGFcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDYtICogYWltaW5nIHRoZSBMUlUgW2RlXXByaW9yaXRpemF0aW9ucyBvZiB0aGUgaG90IGFuZCBjb2xkIG1lbW9yeSByZXN1bHRpbmcgaW5cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTEwND1tb2R1bGVfcGFyYW0oY29sZF9taW5fYWdlLCB1bG9uZywgMDYwMCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNS1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MTA2OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fbHJ1X3NvcnRfcXVvdGEgPSB7XG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNy1cdC8qIFVzZSB1cCB0byAxMCBtcyBwZXIgMSBzZWMsIGJ5IGRlZmF1bHQgKi9cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTExMC1cdC5yZXNldF9pbnRlcnZhbCA9IDEwMDAsXG5tbS9kYW1vbi9scnVfc29ydC5jOjExMTpcdC8qIFdpdGhpbiB0aGUgcXVvdGEsIG1hcmsgaG90dGVyIHJlZ2lvbnMgYWNjZXNzZWQgZmlyc3QuICovXG5tbS9kYW1vbi9scnVfc29ydC5jLTExMi1cdC53ZWlnaHRfc3ogPSAwLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMTE1LX07XG5tbS9kYW1vbi9scnVfc29ydC5jOjExNjpERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19USU1FX1FVT1RBKGRhbW9uX2xydV9zb3J0X3F1b3RhKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTE3LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MTY0PURFRklORV9EQU1PTl9NT0RVTEVTX0RBTU9TX1NUQVRTX1BBUkFNUyhkYW1vbl9scnVfc29ydF9ob3Rfc3RhdCxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTY1LVx0XHRscnVfc29ydF90cmllZF9ob3RfcmVnaW9ucywgbHJ1X3NvcnRlZF9ob3RfcmVnaW9ucyxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTY2Olx0XHRob3RfcXVvdGFfZXhjZWVkcyk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTE2Ny1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTE2OT1ERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19TVEFUU19QQVJBTVMoZGFtb25fbHJ1X3NvcnRfY29sZF9zdGF0LFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xNzAtXHRcdGxydV9zb3J0X3RyaWVkX2NvbGRfcmVnaW9ucywgbHJ1X3NvcnRlZF9jb2xkX3JlZ2lvbnMsXG5tbS9kYW1vbi9scnVfc29ydC5jOjE3MTpcdFx0Y29sZF9xdW90YV9leGNlZWRzKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTcyLVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MTg4PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX2xydV9zb3J0X25ld19zY2hlbWUoXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTAte1xubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTE6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgcXVvdGEgPSBkYW1vbl9scnVfc29ydF9xdW90YTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTkyLVxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTM6XHQvKiBVc2UgaGFsZiBvZiB0b3RhbCBxdW90YSBmb3IgaG90L2NvbGQgcGFnZXMgc29ydGluZyAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTQ6XHRxdW90YS5tcyA9IHF1b3RhLm1zIC8gMjtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTk1LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjAyLVx0XHRcdDAsXG5tbS9kYW1vbi9scnVfc29ydC5jOjIwMzpcdFx0XHQvKiB1bmRlciB0aGUgcXVvdGEuICovXG5tbS9kYW1vbi9scnVfc29ydC5jOjIwNDpcdFx0XHRcdTAwMjZxdW90YSxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjA1LVx0XHRcdC8qIChEZSlhY3RpdmF0ZSB0aGlzIGFjY29yZGluZyB0byB0aGUgd2F0ZXJtYXJrcy4gKi9cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMC1cdFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzkxNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5KioKClJpZ2h0LCBzbyBEQU1PTiwgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IsIGhhcyBhIGZldyBhY2Nlc3Mgcm91dGVzLCBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBGaXJzdCwgYW5kIGxpa2VseSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgYWNjZXNzaWJsZSB0aHJvdWdoIHN5c2ZzLiBUaGF0JiMzOTtzIHRoZSBnby10byB1c3VhbGx5LCBhbmQgSSB3b3VsZCBjaGVjayBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCBpZiBgQ09ORklHX0RBTU9OX1NZU0ZTYCBpcyBlbmFibGVkLCBhcyBpdCBwcm9iYWJseSB3aWxsIGJlLiBCdXQgaWYgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlLCBvciBJJiMzOTttIGRvaW5nIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLCBpdCBjYW4gYWxzbyBiZSBhY2Nlc3NlZCB0aHJvdWdoIGRlYnVnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHVuZGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpa2UgYENPTkZJR19EQU1PTl9SRUNMQUlNYCBvciBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYC4gR29vZCB0byBrbm93IHRoZSBhbHRlcm5hdGl2ZXMuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBleHBvc3VyZSBpbiBzeXNmcyBmaXJzdC4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCYjMzk7cyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19zeXNmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQyPXZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTUxPWludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1Nzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2ModW5zaWduZWQgY2hhciBoaXRzKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqcHJvYmU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxPXN0YXRpYyBzc2l6ZV90IGhpdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMy17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDI6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDM6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19wcm9iZV9oaXRzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5LVx0XHRfX0FUVFJfUk9fTU9ERShoaXRzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MjpcdFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2hpdHNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NC19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU1OkFUVFJJQlVURV9HUk9VUFMoZGFtb3Nfc3lzZnNfcHJvYmUpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU4Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZV9yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU5LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYwOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcHJvYmVfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYxLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OnN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2OTpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqKnByb2Jlc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzAtXHRpbnQgbnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpkYW1vc19zeXNmc19wcm9iZXNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzU6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzYtfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc4OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2Jlcylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03OS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODA6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyID0gcHJvYmVzLVx1MDAzZXByb2Jlc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODEtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTA6c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTkxLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtOTMtXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjk0Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICoqcHJvYmVzX2Fycjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05NS1cdGludCBpID0gMDtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA5LVx0ZGFtb25fZm9yX2VhY2hfcHJvYmUocHJvYmUsIGN0eCkge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjExMDpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTExLVx0XHRpbnQgZXJyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTM6XHRcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNC1cdFx0XHRcdGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaSwgcmVnaW9uLCBjdHgpKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXHRcdGlmICghc3lzX3Byb2JlKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTE2Olx0XHRcdGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHByb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTE3LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTktXHRcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFx1MDAyNnN5c19wcm9iZS1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMDpcdFx0XHRcdFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlLCBcdTAwMjZwcm9iZXMtXHUwMDNla29iaiwgXCYjMzQ7JWRcJiMzNDssXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxLVx0XHRcdFx0aSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMy1cdFx0XHRrb2JqZWN0X3B1dChcdTAwMjZzeXNfcHJvYmUtXHUwMDNla29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI0Olx0XHRcdGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHByb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI1LVx0XHRcdHJldHVybiBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzY6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI6XHQucmVsZWFzZSA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0My1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUwPXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1LVx0dW5zaWduZWQgbG9uZyBzel9maWx0ZXJfcGFzc2VkO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2Jlcztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTctXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWxsb2MoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzY6c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc3LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2JlcyA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19hbGxvYygpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4Mi1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg2Olx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXHUwMDI2cHJvYmVzLVx1MDAzZWtvYmosIFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODctXHRcdFx0XHUwMDI2cmVnaW9uLVx1MDAzZWtvYmosIFwmIzM0O3Byb2Jlc1wmIzM0Oyk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4OS1cdFx0Z290byBmYWlsO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE5MDpcdGVyciA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhwcm9iZXMsIGN0eCwgZHJlZ2lvbik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTkxLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjAxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIwMjpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDMtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjA0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDU6XHRkYW1vc19zeXNmc19wcm9iZXNfcm1fZGlycyhyZWdpb24tXHUwMDNlcHJvYmVzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDYtXHRrb2JqZWN0X3B1dChcdTAwMjZyZWdpb24tXHUwMDNlcHJvYmVzLVx1MDAzZWtvYmopO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMjg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcm1fZGlycyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMzLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHIsIG5leHQsIFx1MDAyNnJlZ2lvbnMtXHUwMDNlcmVnaW9uc19saXN0LCBsaXN0KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzM0Olx0XHRkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhyKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzUtXHRcdGxpc3RfZGVsKFx1MDAyNnItXHUwMDNlbGlzdCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTIwLS8qXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTIxOiAqIGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciAtIExheWVycyBoYW5kbGluZyBmaWx0ZXJzIG9mIGEgZGlyLlxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyMi0gKi9cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MjM6ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjQtXHREQU1PU19TWVNGU19GSUxURVJfSEFORExFX0xBWUVSX0NPUkUsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyOT1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MzE6XHRlbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIgaGFuZGxlX2xheWVyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMi1cdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTQxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDI6XHRcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDMte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTUyOnN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTMtXHRlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NTc6c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU4OmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTU5LVx0e1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01OTM9c3RhdGljIHNzaXplX3QgdHlwZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjAwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lcyk7IGkmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjAxOlx0XHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSAqdHlwZV9uYW1lO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYwMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDM6XHRcdHR5cGVfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW2ldO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYwNC1cdFx0aWYgKHR5cGVfbmFtZS1cdTAwM2V0eXBlID09IGZpbHRlci1cdTAwM2V0eXBlKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjEwOnN0YXRpYyBib29sIGRhbW9zX3N5c2ZzX3NjaGVtZV9maWx0ZXJfdmFsaWRfdHlwZShcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTE6XHRcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MTItXHRcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSlcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzKTsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzY6XHRcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lICp0eXBlX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjM3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzODpcdFx0dHlwZV9uYW1lID0gXHUwMDI2ZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZXNbaV07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjM5LVx0XHRpZiAoc3lzZnNfc3RyZXEoYnVmLCB0eXBlX25hbWUtXHUwMDNlbmFtZSkpIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NDA6XHRcdFx0aWYgKCFkYW1vc19zeXNmc19zY2hlbWVfZmlsdGVyX3ZhbGlkX3R5cGUoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjQxLVx0XHRcdFx0XHRcdGZpbHRlci1cdTAwM2VoYW5kbGVfbGF5ZXIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5Mj1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODk0Olx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGhhbmRsZV9sYXllcjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTUtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqKmZpbHRlcnNfYXJyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04OTk9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVycyAqXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTAwOmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2FsbG9jKGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05MDEte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDI5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyAqZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19hbGxvYyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA0NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDQ2OnN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA0Ny1cdGVudW0gZGFtb3Nfd21hcmtfbWV0cmljIG1ldHJpYztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA1MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUyOmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNTMtXHR7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwNjM9c3RhdGljIHNzaXplX3QgbWV0cmljX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA2OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDcwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwNzE6XHRcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA3Mi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDczOlx0XHRtZXRyaWNfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tpXTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDc0LVx0XHRpZiAobWV0cmljX25hbWUtXHUwMDNlbWV0cmljID09IHdhdGVybWFya3MtXHUwMDNlbWV0cmljKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDgwPXN0YXRpYyBzc2l6ZV90IG1ldHJpY19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwODc6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lcyk7IGkmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA4ODpcdFx0Y29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lICptZXRyaWNfbmFtZTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwOTA6XHRcdG1ldHJpY19uYW1lID0gXHUwMDI2ZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVzW2ldO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwOTEtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIG1ldHJpY19uYW1lLVx1MDAzZW5hbWUpKSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE1OnN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIyMy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjY6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIyOTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzAtXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIzND1zdGF0aWNcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjM1OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjM2LVx0e1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4MC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cdGludCBpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4NTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzKTsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg2Olx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUgKm1ldHJpY19uYW1lO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4ODpcdFx0bWV0cmljX25hbWUgPSBcdTAwMjZkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbaV07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4OS1cdFx0aWYgKG1ldHJpY19uYW1lLVx1MDAzZW1ldHJpYyA9PSBnb2FsLVx1MDAzZW1ldHJpYylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTI5NT1zdGF0aWMgc3NpemVfdCB0YXJnZXRfbWV0cmljX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjk3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjk4Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjk5Olx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzAwLVx0aW50IGk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwMS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzAyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDM6XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzA1Olx0XHRtZXRyaWNfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lc1tpXTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA2LVx0XHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBtZXRyaWNfbmFtZS1cdTAwM2VuYW1lKSkge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzE0PXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzE3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE5LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyNS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjc6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMzMz1zdGF0aWMgc3NpemVfdCBjdXJyZW50X3ZhbHVlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMzUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMzY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMzgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNDI9c3RhdGljIHNzaXplX3QgY3VycmVudF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM0NTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0Ny1cdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNjM9c3RhdGljIHNzaXplX3QgbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzY1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzY2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2NzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzY4LVx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNlbmlkKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM3ND1zdGF0aWMgc3NpemVfdCBwYXRoX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzc6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzktXHRpbnQgbGVuO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzg4PXN0YXRpYyBzc2l6ZV90IHBhdGhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTE6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTMtXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMDpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfbWV0cmljX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjAtXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9tZXRyaWMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjMtXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXHRcdF9fQVRUUl9SV19NT0RFKGN1cnJlbnRfdmFsdWUsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfbmlkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjktXHRcdF9fQVRUUl9SV19NT0RFKG5pZCwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzMC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzItXHRcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfbmlkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQxLX07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XHQucmVsZWFzZSA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQ2LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDc6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQ4LX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ1NDpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FycjtcdC8qIGNvdW50ZWQgYnkgbnIgKi9cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU3LVx0aW50IG5yO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDYyOlx0cmV0dXJuIGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDY1OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDY4Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnIgPSBnb2Fscy1cdTAwM2Vnb2Fsc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2OS1cdGludCBpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDc5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODA6c3RhdGljIGludCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hZGRfZGlycyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzLCBpbnQgbnJfZ29hbHMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ4Mi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MzpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyLCAqZ29hbDtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg0LVx0aW50IGVyciwgaTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODY6XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg3LVx0aWYgKCFucl9nb2Fscylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2dvYWxzOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0OTc6XHRcdGdvYWwgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2FsbG9jKCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5OC1cdFx0aWYgKCFnb2FsKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ5OTpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAwLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAzLVx0XHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcdTAwMjZnb2FsLVx1MDAzZWtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwNDpcdFx0XHRcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUsIFx1MDAyNmdvYWxzLVx1MDAzZWtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNS1cdFx0XHRcdFwmIzM0OyVkXCYjMzQ7LCBpKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNy1cdFx0XHRrb2JqZWN0X3B1dChcdTAwMjZnb2FsLVx1MDAzZWtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MDg6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwOS1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNTE4PXN0YXRpYyBzc2l6ZV90IG5yX2dvYWxzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MjE6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUyMjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1Mjc9c3RhdGljIHNzaXplX3QgbnJfZ29hbHNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1Mjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MzA6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MzEtXHRpbnQgbnIsIGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFx1MDAyNm5yKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUzNy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTM4Olx0Z29hbHMgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTM5LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTQxLVx0XHRyZXR1cm4gLUVCVVNZO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NDI6XHRlcnIgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hZGRfZGlycyhnb2FscywgbnIpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDMtXHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU1MDpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTI6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1My19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTU1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfbnJfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1Ni1cdFx0X19BVFRSX1JXX01PREUobnJfZ29hbHMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU1ODpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTU5Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfbnJfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjAtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjEtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTYyOkFUVFJJQlVURV9HUk9VUFMoZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTY1Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjYtXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU2NzpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY4LX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2ODQ9c3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODYtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyAqd2VpZ2h0cztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg4LVx0dW5zaWduZWQgbG9uZyBtcztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTcwMj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3F1b3Rhc19hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcXVvdGFzICpxdW90YXMpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MDQtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyAqd2VpZ2h0cztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzA1Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzA2LVx0aW50IGVycjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcxOS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzIwOlx0Z29hbHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYygpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjEtXHRpZiAoIWdvYWxzKSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjUtXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcdTAwMjZnb2Fscy1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3MjY6XHRcdFx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUsIFx1MDAyNnF1b3Rhcy1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjctXHRcdFx0XCYjMzQ7Z29hbHNcJiMzNDspO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzM4PXN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3F1b3Rhc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMgKnF1b3Rhcylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0MC1cdGtvYmplY3RfcHV0KFx1MDAyNnF1b3Rhcy1cdTAwM2V3ZWlnaHRzLVx1MDAzZWtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NDE6XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKHF1b3Rhcy1cdTAwM2Vnb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0Mi1cdGtvYmplY3RfcHV0KFx1MDAyNnF1b3Rhcy1cdTAwM2Vnb2Fscy1cdTAwM2Vrb2JqKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgwOD1zdGF0aWMgc3NpemVfdCBlZmZlY3RpdmVfYnl0ZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgxNi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODE3OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODE4LVx0ZW51bSBkYW1vc19xdW90YV9nb2FsX3R1bmVyIHR1bmVyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODIxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MjI6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIGRhbW9zX3N5c2ZzX3Fnb2FsX3R1bmVyX25hbWVzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMy1cdHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgzMz1zdGF0aWMgc3NpemVfdCBnb2FsX3R1bmVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4MzktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg0MDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfdHVuZXJfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYCBhbmQgaG93IHRoaXMgc3BlY2lmaWMgY2hhbmdlIGltcGFjdHMgaXRzIGxvZ2ljLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEVzc2VudGlhbGx5LCB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbiBlZmZlY3RpdmUgcXVvdGEgc2l6ZSAoYGVzemApIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9ycyB0aWVkIHRvIHRoZSBgZGFtb3NgIHN0cnVjdHVyZSBhbmQgaXRzIGFzc29jaWF0ZWQgYHF1b3RhYC4KCkluaXRpYWxseSwgaWYgbmVpdGhlciBgcXVvdGEtJmd0O21zYCBpcyBzZXQgKmFuZCogdGhlIGdvYWwgbGlzdCBpcyBlbXB0eSwgdGhlbiBgZXN6YCBzaW1wbHkgZGVmYXVsdHMgdG8gYHF1b3RhLSZndDtzemAsIHdoaWNoIG1ha2VzIHNlbnNlLiAgTm93LCBpZiB0aGVyZSAqYXJlKiBnb2FscyBzZXQsIGl0IHVzZXMgb25lIG9mIHRoZSBnb2FsIHR1bmVycyAodGVtcG9yYWwgb3IgY29uc2lzdGVudCkgdG8gYWRqdXN0IGBlc3pfYnBgLiBUaGUga2V5IHBvaW50IGlzOiBpZiB0aGUgZ29hbCB0dW5pbmcgbG9naWMgc2V0cyBgcXVvdGEtJmd0O2Vzel9icGAgdG8gMCAod2hpY2ggSSByZWNhbGwgZnJvbSBteSBwcmV2aW91cyB1bmRlcnN0YW5kaW5nIGlzIHF1aXRlIHBvc3NpYmxlLCBlc3BlY2lhbGx5IHdpdGggYHNjb3JlICZndDs9IDEwMDAwYCksIHRoZW4gdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgc3VidGxlIGZsYXcuCgpIZXJlJiMzOTtzIHdoZXJlIGl0IGdvdCBpbnRlcmVzdGluZy4gIEV2ZW4gaWYgYGVzel9icGAgd2FzIHplcm8gZHVlIHRvIGdvYWwgdHVuaW5nLCBpZiBgcXVvdGEtJmd0O21zYCB3YXMgc3Vic2VxdWVudGx5IHNldCwgdGhlIGNvZGUgd291bGQgY2FsY3VsYXRlIGBlc3pgIGFzIHRoZSBtaW5pbXVtIG9mIHNvbWUgdGhyb3VnaHB1dCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IGBxdW90YS0mZ3Q7bXNgLCAqYW5kKiB0aGUgKG5vdyB6ZXJvKSBgZXN6YCB2YWx1ZS4gIE9mIGNvdXJzZSwgdGhlIG1pbmltdW0gb2YgMCBhbmQgYW55dGhpbmcgaXMgMC4gSG93ZXZlciwgdGhlIG5leHQgbGluZSBgZXN6ID0gbWF4KGN0eC0mZ3Q7bWluX3JlZ2lvbl9zeiwgZXN6KTtgIHdvdWxkIHRoZW4gc2V0IGBlc3pgIHRvIGBjdHgtJmd0O21pbl9yZWdpb25fc3pgLiAgU28sIHlvdSYjMzk7ZCBlbmQgdXAgd2l0aCBhIG5vbi16ZXJvIGBlc3pgIGV2ZW4gdGhvdWdoIGdvYWwgdHVuaW5nIGhhZCBkZWxpYmVyYXRlbHkgemVyb2VkIG91dCBgZXN6X2JwYC4KClRoZSBuZXcgY2hlY2sgYGlmICghcXVvdGEtJmd0O2Vzel9icCkgZXN6ID0gMDtgIGFkZHJlc3NlcyB0aGlzLiAgSXQgKmZvcmNlcyogYGVzemAgdG8gemVybyB3aGVuIGBlc3pfYnBgIGlzIHplcm8sIHdoaWNoIGlzIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBiYXNlZCBvbiB0aGUgZ29hbCB0dW5pbmcuIFByZXZpb3VzbHksIHRoZSBgbWF4YCBmdW5jdGlvbiB3YXMgZWZmZWN0aXZlbHkgb3ZlcnJpZGluZyB0aGUgemVybyB2YWx1ZS4KCkkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGBxdW90YS0mZ3Q7Z29hbHNgIGlzIGVtcHR5LCBidXQgYHF1b3RhLSZndDttc2AgKmlzKiBzZXQuICBJIGtub3cgYGRhbW9zX3F1b3RhX2luaXRgIHNldHMgYHF1b3RhLSZndDtlc3pfYnAgPSAwYCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFNvLCB0aGUgY29uZGl0aW9uIGAhcXVvdGEtJmd0O21zICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO3F1b3RhLSZndDtnb2FscylgIGlzIGZhbHNlLiAgSW4gdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiwgaWYgYCFsaXN0X2VtcHR5KCZhbXA7cXVvdGEtJmd0O2dvYWxzKWAgaXMgZmFsc2UsIGl0IG1lYW5zIHdlIGRvbiYjMzk7dCB1c2UgZ29hbCB0dW5pbmcuICBUaHVzLCBgZXN6YCB3b3VsZCByZW1haW4gdW5pbml0aWFsaXplZC4gIChIYW5nIG9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciB0aGUgY2FzZSB3aGVyZSBgbGlzdF9lbXB0eSgmYW1wO3F1b3RhLSZndDtnb2FscylgIGFuZCBgcXVvdGEtJmd0O21zICE9IDBgISBMZXQgbWUgcmV2aWV3IHRob3NlIGxpbmVzLi4uKQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIyMDpcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVx1MDAzZW1zLCBvciBxdW90YS1cdTAwM2VzeiBhcmUgc2V0LCBvciBxdW90YS1cdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcbjMyMjE6XHQgKi9cbjMyMjI6XHRzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxuMzIyMzpcdHtcbjMyMjQ6XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xuMzIyNTpcdFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xuMzIyNjpcdFx0dW5zaWduZWQgbG9uZyBlc3ogPSBVTE9OR19NQVg7XG4zMjI3Olx0XG4zMjI4Olx0XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIyOTpcdFx0XHRxdW90YS1cdTAwM2Vlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyMzA6XHRcdFx0cmV0dXJuO1xuMzIzMTpcdFx0fVxuMzIzMjpcdFxuMzIzMzpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIzNDpcdFx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG4zMjM1Olx0XHRcdFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XG4zMjM2Olx0XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbjMyMzc6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG4zMjM4Olx0XHRcdGVzeiA9IHF1b3RhLVx1MDAzZWVzel9icCAvIDEwMDAwO1xuMzIzOTpcdFx0fVxuMzI0MDpcdFxuMzI0MTpcdFx0aWYgKHF1b3RhLVx1MDAzZW1zKSB7XG4zMjQyOlx0XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxuMzI0MzpcdFx0XHRcdHRocm91Z2hwdXQgPSBtdWx0X2ZyYWMocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeixcbjMyNDQ6XHRcdFx0XHRcdFx0MTAwMDAwMCwgcXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyk7XG4zMjQ1Olx0XHRcdGVsc2VcbjMyNDY6XHRcdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbjMyNDc6XHRcdFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cdTAwM2VtcywgZXN6KTtcbjMyNDg6XHRcdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuMzI0OTpcdFx0fVxuMzI1MDpcdFxuMzI1MTpcdFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuMzI1MjpcdFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyNTM6XHRcbjMyNTQ6XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuMzI1NTpcdFx0XHRlc3ogPSAwO1xuMzI1NjpcdFxuMzI1NzpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuMzI1ODpcdH1cbjMyNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0NDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhIERBTU9OIENvcmUgTG9naWMgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHdoZW4gYHF1b3RhLSZndDtnb2Fsc2AgaXMgZW1wdHksIGBxdW90YS0mZ3Q7ZXN6X2JwYCBzdGF5cyBhdCB6ZXJvLiBUaGF0JiMzOTtzIGZpbmUsIGJ1dCB0aGVuIHRoZSBjb2RlIGdvZXMgb24gdG8gY2hlY2sgYGlmICghcXVvdGEtJmd0O2Vzel9icCkgZXN6ID0gMDtgLiBUaGlzIG1lYW5zIGlmIHNvbWVvbmUgZGVmaW5lcyBhIHRpbWUgcXVvdGEgKGBxdW90YS0mZ3Q7bXNgKSBidXQgKmRvZXNuJiMzOTt0KiBzZXQgYW55IGdvYWxzLCB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIChgcXVvdGEtJmd0O2VzemApIGdldHMgc2V0IHRvIHplcm8hIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IERBTU9OIGZyYW1ld29yay4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggc2VyaW91cyBhdHRlbnRpb24/IEZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KClllcywgREFNT04mIzM5O3Mgc3lzZnMgaW50ZXJmYWNlIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCkgKmlzKiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyBnb29kIG5ld3MuIEFuZCBEQU1PTiByZWNsYWltLCB0aGUgTFJVIHNvcnQsIGFuZCB0aGUgc3lzZnMgc2NoZW1lcyBhcmUgYWxsIHJlYWNoYWJsZSBpbiB1c2VyIHNwYWNlIGFuZCBhcmUgdGVzdGVkIGFscmVhZHkuCgpUaGVyZWZvcmUsIGJlY2F1c2U6CgoqICAgSXQgZGlyZWN0bHkgYWx0ZXJzIGtlcm5lbCBsb2dpYyBpbiBgbW0vZGFtb24vY29yZS5jYCAodGhhdCYjMzk7cyBjb3JlIERBTU9OIGNvZGUpCiogICBJdCYjMzk7cyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4KKiAgIEl0IG1vZGlmaWVzIGhvdyB0aGUgYGVzemAgdmFsdWUgKGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSkgaXMgY2FsY3VsYXRlZAoKSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmcgPSB0cnVlYC4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIHRoaXMgZnVydGhlci4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnV6emluZyBzdHJhdGVneS4gV2UgbmVlZCB0byBpZGVudGlmeSByZWxldmFudDoKCjEuICBgRm9jdXNTeW1ib2xzYAoyLiAgYEVuYWJsZUNvbmZpZ3NgCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBpbiBgbW0vZGFtb24vYCBhbmQgbG9vayBmb3IgZW50cnkgcG9pbnRzLCBleHBvcnRlZCBzeW1ib2xzLCBub24tc3RhdGljIGZ1bmN0aW9ucywgYW5kIGtleSBmdW5jdGlvbnMgdG8gZnV6ei4gV2UmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vYCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zXy4qcXVvdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODEwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmM9NjgzPXZvaWQgZGFtb3NfZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxubW0vZGFtb24vY29yZS5jOjY4OTpzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6NjkwOlx0XHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYyxcbm1tL2RhbW9uL2NvcmUuYy02OTEtXHRcdHVuc2lnbmVkIGxvbmcgdGFyZ2V0X3ZhbHVlKVxubW0vZGFtb24vY29yZS5jLTY5Mi17XG5tbS9kYW1vbi9jb3JlLmM6NjkzOlx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9jb3JlLmMtNjk0LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy03MDUtXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MTAtXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxMi17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxNS1cbm1tL2RhbW9uL2NvcmUuYzo3MTY6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcyMC1cbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcbm1tL2RhbW9uL2NvcmUuYzo3MjM6XHRkYW1vc19kZWxfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYzo3MjQ6XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwoZyk7XG5tbS9kYW1vbi9jb3JlLmMtNzI1LX1cbm1tL2RhbW9uL2NvcmUuYy03MjYtXG5tbS9kYW1vbi9jb3JlLmM6NzI3OnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MzItLyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG4tLVxubW0vZGFtb24vY29yZS5jPTc0Nj1zdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03NDgtXHRcdFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cyxcbm1tL2RhbW9uL2NvcmUuYzo3NDk6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy03NTAtXHRcdFx0c3RydWN0IGRhbW9zX3dhdGVybWFya3MgKndtYXJrcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzc0LVxubW0vZGFtb24vY29yZS5jOjc3NTpcdHNjaGVtZS1cdTAwM2VxdW90YSA9ICooZGFtb3NfcXVvdGFfaW5pdChxdW90YSkpO1xubW0vZGFtb24vY29yZS5jLTc3Ni1cdC8qIHF1b3RhLmdvYWxzIHNob3VsZCBiZSBzZXBhcmF0ZWx5IHNldCBieSBjYWxsZXIgKi9cbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODE1PXZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNi17XG5tbS9kYW1vbi9jb3JlLmM6ODE3Olx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcsICpnX25leHQ7XG5tbS9kYW1vbi9jb3JlLmMtODE4LVx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZiwgKm5leHQ7XG5tbS9kYW1vbi9jb3JlLmMtODE5LVxubW0vZGFtb24vY29yZS5jOjgyMDpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShnLCBnX25leHQsIFx1MDAyNnMtXHUwMDNlcXVvdGEpXG5tbS9kYW1vbi9jb3JlLmM6ODIxOlx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZyk7XG5tbS9kYW1vbi9jb3JlLmMtODIyLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTY2PXZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYzoxMTc5Olx0XHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxubW0vZGFtb24vY29yZS5jLTExODAte1xubW0vZGFtb24vY29yZS5jOjExODE6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xMTgyLVx0aW50IGkgPSAwO1xubW0vZGFtb24vY29yZS5jLTExODMtXG5tbS9kYW1vbi9jb3JlLmM6MTE4NDpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcSkge1xubW0vZGFtb24vY29yZS5jLTExODUtXHRcdGlmIChpJiM0MzsmIzQzOyA9PSBuKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG5tbS9kYW1vbi9jb3JlLmM6MTE5MjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMTkzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jOjEyMTY6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyMjEtXHRcdGRzdC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVx1MDAzZWN1cnJlbnRfdmFsdWU7XG5tbS9kYW1vbi9jb3JlLmM6MTIyMjpcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjIzLX1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIyNS0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMjI2OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTIyNy0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMjM3OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyMzgte1xubW0vZGFtb24vY29yZS5jOjEyMzk6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xMjQwLVx0aW50IGkgPSAwLCBqID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0xMjQxLVxubW0vZGFtb24vY29yZS5jOjEyNDI6XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xubW0vZGFtb24vY29yZS5jOjEyNDM6XHRcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSYjNDM7JiM0MzssIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTI0NC1cdFx0aWYgKHNyY19nb2FsKVxubW0vZGFtb24vY29yZS5jOjEyNDU6XHRcdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjQ2LVx0XHRlbHNlXG5tbS9kYW1vbi9jb3JlLmM6MTI0NzpcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xubW0vZGFtb24vY29yZS5jLTEyNDgtXHR9XG5tbS9kYW1vbi9jb3JlLmM6MTI0OTpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShzcmNfZ29hbCwgbmV4dCwgc3JjKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTI1MC1cdFx0aWYgKGomIzQzOyYjNDM7IFx1MDAzYyBpKVxubW0vZGFtb24vY29yZS5jLTEyNTEtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MTI1MjpcdFx0bmV3X2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMjUzLVx0XHRcdFx0c3JjX2dvYWwtXHUwMDNlbWV0cmljLCBzcmNfZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjU1LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjEyNTY6XHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmM6MTI1NzpcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTI1OC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC1cdGRzdC1cdTAwM2VzeiA9IHNyYy1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYzoxMjY5Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjcwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTUxOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE1MjYtXG5tbS9kYW1vbi9jb3JlLmM6MTUyNzpcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMTUyOC1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTE4NjI9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4NjUtXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcbm1tL2RhbW9uL2NvcmUuYzoxODY2Olx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9jb3JlLmMtMTg2Ny1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg3NC1cdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNjaGVtZSwgc3JjKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTg3NTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTE4NzYtXG5tbS9kYW1vbi9jb3JlLmM6MTg3NzpcdFx0XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTg3OC1cdFx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMzcxPXN0YXRpYyBib29sIF9fZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxubW0vZGFtb24vY29yZS5jOjIzODc6ICogZGFtb3NfcXVvdGFfaXNfc2V0KCkgLSBSZXR1cm4gaWYgdGhlIGdpdmVuIHF1b3RhIGlzIGFjdHVhbGx5IHNldC5cbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcdFRoZSBxdW90YSB0byBjaGVjay5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jLTIzOTQtXHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNDM0PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XG5tbS9kYW1vbi9jb3JlLmM6MjQzODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTI0MzktXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XG4tLVxubW0vZGFtb24vY29yZS5jPTI2MTk9c3RhdGljIHZvaWQgZGFtb3Nfd2Fsa19jYW5jZWwoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjM1LVxubW0vZGFtb24vY29yZS5jOjI2MzY6c3RhdGljIHZvaWQgZGFtb3NfY2hhcmdlX3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cdFx0dW5zaWduZWQgbG9uZyBzel9yZWdpb24sIHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY1Mi1cbm1tL2RhbW9uL2NvcmUuYzoyNjUzOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVx0XHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njc9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI2Njkte1xubW0vZGFtb24vY29yZS5jOjI2NzA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNjcxLVx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjcwNC1cdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzA1Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbm1tL2RhbW9uL2NvcmUuYy0yNzA2LVx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4tLVxubW0vZGFtb24vY29yZS5jLTI3MjQtXHRcdFx0dGltZXNwZWM2NF90b19ucyhcdTAwMjZiZWdpbik7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNTpcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNjpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYy0yNzI3LVx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTI3Mzg9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzUzLVx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzU0Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yOTAwPXN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcbm1tL2RhbW9uL2NvcmUuYzoyOTAxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0yOTAyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjkyOD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxubW0vZGFtb24vY29yZS5jOjI5Mjk6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxubW0vZGFtb24vY29yZS5jLTI5MzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDgyPXN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcbm1tL2RhbW9uL2NvcmUuYzozMDgzOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMDg0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzA4OD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxubW0vZGFtb24vY29yZS5jOjMwODk6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxubW0vZGFtb24vY29yZS5jLTMwOTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMTE5PXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfaHVnZXBhZ2VfbWVtX2JwKHZvaWQpXG4tLVxubW0vZGFtb24vY29yZS5jLTMxMzQtXG5tbS9kYW1vbi9jb3JlLmM6MzEzNTpzdGF0aWMgdm9pZCBkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKHN0cnVjdCBkYW1vbl9jdHggKmMsXG5tbS9kYW1vbi9jb3JlLmM6MzEzNjpcdFx0c3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMTM3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzE3OS0vKiBSZXR1cm4gdGhlIGhpZ2hlc3Qgc2NvcmUgc2luY2UgaXQgbWFrZXMgc2NoZW1lcyBsZWFzdCBhZ2dyZXNzaXZlICovXG5tbS9kYW1vbi9jb3JlLmM6MzE4MDpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzE4MS17XG5tbS9kYW1vbi9jb3JlLmM6MzE4MjpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xubW0vZGFtb24vY29yZS5jOjMxODM6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0zMTg0LVx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0zMTg1LVxubW0vZGFtb24vY29yZS5jOjMxODY6XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzE4NzpcdFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0zMTg4LVx0XHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXG4tLVxubW0vZGFtb24vY29yZS5jPTMxOTY9c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMTk3LXtcbm1tL2RhbW9uL2NvcmUuYzozMTk4Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmM6MzE5OTpcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjAwLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMyMDk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIyMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozMjIyOnN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzIyMy17XG5tbS9kYW1vbi9jb3JlLmM6MzIyNDpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTMyMjUtXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbm1tL2RhbW9uL2NvcmUuYzozMjYxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTMyNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVx0fVxubW0vZGFtb24vY29yZS5jOjMyNzE6XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbm1tL2RhbW9uL2NvcmUuYzozMjc2Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzI3Ny1cdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyODctXHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IGppZmZpZXM7XG5tbS9kYW1vbi9jb3JlLmM6MzI4ODpcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjg5LVx0XHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSlcbm1tL2RhbW9uL2NvcmUuYzozMjkwOlx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzI5MS1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI5Ni1cdFx0XHRcdG1zZWNzX3RvX2ppZmZpZXMocXVvdGEtXHUwMDNlcmVzZXRfaW50ZXJ2YWwpKSkge1xubW0vZGFtb24vY29yZS5jOjMyOTc6XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxubW0vZGFtb24vY29yZS5jLTMyOTgtXHRcdFx0cy1cdTAwM2VzdGF0LnF0X2V4Y2VlZHMmIzQzOyYjNDM7O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMzAzLVx0XHRcdGNhY2hlZF9lc3ogPSBxdW90YS1cdTAwM2Vlc3o7XG5tbS9kYW1vbi9jb3JlLmM6MzMwNDpcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYzozMzA1Olx0XHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXG5tbS9kYW1vbi9jb3JlLmM6MzMwNjpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMzMDctXHR9XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzNzAtXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpcdFx0ZGFtb3NfYWRqdXN0X3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jLTMzNzItXHR9XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0xMDQ9bW9kdWxlX3BhcmFtKGNvbGRfbWluX2FnZSwgdWxvbmcsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDUtXG5tbS9kYW1vbi9scnVfc29ydC5jOjEwNjpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhIGRhbW9uX2xydV9zb3J0X3F1b3RhID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDctXHQvKiBVc2UgdXAgdG8gMTAgbXMgcGVyIDEgc2VjLCBieSBkZWZhdWx0ICovXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0xODg9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbHJ1X3NvcnRfbmV3X3NjaGVtZShcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5MC17XG5tbS9kYW1vbi9scnVfc29ydC5jOjE5MTpcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YSA9IGRhbW9uX2xydV9zb3J0X3F1b3RhO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTItXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMxLXtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjMyOlx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMy1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5tbS9kYW1vbi9scnVfc29ydC5jOjIzODpcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVx0aWYgKCFnb2FsKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDAtXHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDE6XHRkYW1vc19hZGRfcXVvdGFfZ29hbChcdTAwMjZob3Rfc2NoZW1lLVx1MDAzZXF1b3RhLCBnb2FsKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQyLVx0LyogYWltIDAuMiAlIGdvYWwgY29uZmxpY3QsIHRvIGtlZXAgbGl0dGxlIHBpbmcgcG9uZyAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDM6XHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDQtXHRcdFx0MTAwMDAgLSBhY3RpdmVfbWVtX2JwICYjNDM7IDIpO1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ2LVx0XHRyZXR1cm4gLUVOT01FTTtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjQ3Olx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXHUwMDI2Y29sZF9zY2hlbWUtXHUwMDNlcXVvdGEsIGdvYWwpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDgtXHRyZXR1cm4gMDtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9NDg9bW9kdWxlX3BhcmFtKG1pbl9hZ2UsIHVsb25nLCAwNjAwKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy00OS1cbm1tL2RhbW9uL3JlY2xhaW0uYzo1MDpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhIGRhbW9uX3JlY2xhaW1fcXVvdGEgPSB7XG5tbS9kYW1vbi9yZWNsYWltLmMtNTEtXHQvKiB1c2UgdXAgdG8gMTAgbXMgdGltZSwgcmVjbGFpbSB1cCB0byAxMjggTWlCIHBlciAxIHNlYyBieSBkZWZhdWx0ICovXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0xOTktXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMDA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMDEtXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXI7XG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTIzNS1cdGlmIChxdW90YV9tZW1fcHJlc3N1cmVfdXMpIHtcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMzY6XHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9TT01FX01FTV9QU0lfVVMsXG5tbS9kYW1vbi9yZWNsYWltLmMtMjM3LVx0XHRcdFx0cXVvdGFfbWVtX3ByZXNzdXJlX3VzKTtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjM5LVx0XHRcdGdvdG8gb3V0O1xubW0vZGFtb24vcmVjbGFpbS5jOjI0MDpcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhLCBnb2FsKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDEtXHR9XG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI0My1cdGlmIChxdW90YV9hdXRvdHVuZV9mZWVkYmFjaykge1xubW0vZGFtb24vcmVjbGFpbS5jOjI0NDpcdFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsIDEwMDAwKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDUtXHRcdGlmICghZ29hbClcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ3LVx0XHRnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBxdW90YV9hdXRvdHVuZV9mZWVkYmFjaztcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDg6XHRcdGRhbW9zX2FkZF9xdW90YV9nb2FsKFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YSwgZ29hbCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ5LVx0fVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTUxPWludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1Nzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3dhdGVybWFya3Nfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNzpcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTgtXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIyMy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjY6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjI5PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIzMDpcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzEtXHRjaGFyICpuYW1lO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4MC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cdGludCBpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyOTcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTk6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxNi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTg6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMyMz1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzI3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjgtXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzMzM9c3RhdGljIHNzaXplX3QgY3VycmVudF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDQte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzQ2Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzUzPXN0YXRpYyBzc2l6ZV90IG5pZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzU1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM1NzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzU4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IG5pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2NjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2OC1cdGludCBlcnIgPSBrc3RydG9pbnQoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZW5pZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc2LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc4Olx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVx0aW50IGxlbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkyOlx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVx0Y2hhciAqcGF0aCA9IGttYWxsb2NfYXJyYXkoc2l6ZV9hZGQoY291bnQsIDEpLCBzaXplb2YoKnBhdGgpLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTM6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIwLVx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfdmFsdWUsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyNTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI2LVx0XHRfX0FUVFJfUldfTU9ERShjdXJyZW50X3ZhbHVlLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI5LVx0XHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzMTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcGF0aF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVx0XHRfX0FUVFJfUldfTU9ERShwYXRoLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzQ6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM1Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfbWV0cmljX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM2Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfdmFsdWVfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mzc6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mzg6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzOTpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcGF0aF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0MC1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0MS19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDI6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19xdW90YV9nb2FsKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ1Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0Ni1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ3Olx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDUzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnI7XHQvKiBjb3VudGVkIGJ5IG5yICovXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cdGludCBucjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDYwOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2MS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjMtfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NTpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjY6XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyID0gZ29hbHMtXHUwMDNlZ29hbHNfYXJyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgwOnN0YXRpYyBpbnQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MTpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2FscywgaW50IG5yX2dvYWxzKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDU4CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUXVvdGEgTWFuYWdlbWVudCBDb2RlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLiBTaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgd2lkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgaXQgYW5kIGZpbmQgb3V0IHRoZSBlbnRyeXBvaW50cyBvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGggZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4gRmlyc3QsIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLgoKUmlnaHQsIEkgc2VlIHRoYXQgYGRhbW9zX2FkanVzdF9xdW90YWAgY2FsbHMgaXQuIFRoYXQmIzM5O3MgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFsc28gc3RhdGljLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCBieSBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga3RocmVhZC4gVGhhdCYjMzk7cyBvbmUgcGF0aC4gR290IGl0LiBBbHNvLCBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRoZSBEQU1PTiBjb21taXQgcHJvY2VzcywgYW5kIGR1cmluZyBzeXNmcyBvcGVyYXRpb25zIC0gc3RhcnQsIHVwZGF0ZS4KCk5leHQsIEkmIzM5O2xsIGJyb2FkZW4gbXkgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAsIGBkYW1vc19hZGRfcXVvdGFfZ29hbGAsIGBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0c2AsIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AsIGBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHNgLiBUaG9zZSBjb3VsZCBiZSBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IHRyaWdnZXIgYSBjYWxsIHRvIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgYWxsIHRoZSBwYXRocy4KCkZpbmFsbHksIHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4gSSYjMzk7bGwgZm9jdXMgb24gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gTXkgYWltIGlzIHRvIGxvb2sgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYWN0IGFzIGludGVyZmFjZXMgb3IgZW50cnkgcG9pbnRzIGludG8gdGhpcyBxdW90YSBtYW5hZ2VtZW50IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV8gXSpcXCo/W2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubW0vZGFtb24vY29yZS5jLTI1LVxubW0vZGFtb24vY29yZS5jOjI2OnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fbG9jayk7XG5tbS9kYW1vbi9jb3JlLmMtMjctc3RhdGljIGludCBucl9ydW5uaW5nX2N0eHM7XG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcbm1tL2RhbW9uL2NvcmUuYy0yOS1cbm1tL2RhbW9uL2NvcmUuYzozMDpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX29wc19sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpkYW1vbl9yZWdpb25fY2FjaGUgX19yb19hZnRlcl9pbml0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNS0vKiBTaG91bGQgYmUgY2FsbGVkIHVuZGVyIGRhbW9uX29wc19sb2NrIHdpdGggaWQgc21hbGxlciB0aGFuIE5SX0RBTU9OX09QUyAqL1xubW0vZGFtb24vY29yZS5jOjM2OnN0YXRpYyBib29sIF9fZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy01MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTUyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYtXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcbm1tL2RhbW9uL2NvcmUuYy0xMjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzEtXG5tbS9kYW1vbi9jb3JlLmM6MTMyOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTEzMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzNi1cbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTEzOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MS1cbm1tL2RhbW9uL2NvcmUuYzoxNDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTE0My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0Ny1cbm1tL2RhbW9uL2NvcmUuYzoxNDg6c3RhdGljIHN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9udGhfcHJlcChpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTE0OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1OS1cbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0xNjEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzEtXG5tbS9kYW1vbi9jb3JlLmM6MTcyOnN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX25ld19maWx0ZXIoZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTE3My1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxubW0vZGFtb24vY29yZS5jOjE4Nzp2b2lkIGRhbW9uX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE4OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MS1cbm1tL2RhbW9uL2NvcmUuYzoxOTI6c3RhdGljIHZvaWQgZGFtb25fZGVsX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE5My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5Ni1cbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDEtXG5tbS9kYW1vbi9jb3JlLmM6MjAyOnZvaWQgZGFtb25fZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0yMDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDctXG5tbS9kYW1vbi9jb3JlLmM6MjA4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE5LVxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxubW0vZGFtb24vY29yZS5jLTIyMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIzMy1cbm1tL2RhbW9uL2NvcmUuYzoyMzQ6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxubW0vZGFtb24vY29yZS5jLTIzNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIzOC1cbm1tL2RhbW9uL2NvcmUuYzoyMzk6c3RhdGljIHZvaWQgZGFtb25fZGVsX3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNDMtXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTI0NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTI1NS1cbm1tL2RhbW9uL2NvcmUuYzoyNTY6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjU3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjYxLVxubW0vZGFtb24vY29yZS5jOjI2MjpzdGF0aWMgc3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9udGhfcHJvYmUoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzMtXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG5tbS9kYW1vbi9jb3JlLmMtMjc1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xubW0vZGFtb24vY29yZS5jOjMwNjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9tdnN1bSh1bnNpZ25lZCBsb25nIGN1cnJlbnRfbnIsXG5tbS9kYW1vbi9jb3JlLmMtMzA3LVx0XHR1bnNpZ25lZCBsb25nIGxhc3RfbnIsIHVuc2lnbmVkIGxvbmcgbGVmdF93aW5kb3dfYnApXG4tLVxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozMjY6dW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMzI3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTM0OS1cbm1tL2RhbW9uL2NvcmUuYzozNTA6dW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMzUxLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vY29yZS5jOjM3NTpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zNzYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzktI2Vsc2Vcbm1tL2RhbW9uL2NvcmUuYzozODA6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzg5LSAqL1xubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTM5MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTQxNC1cbm1tL2RhbW9uL2NvcmUuYzo0MTU6c3RhdGljIHZvaWQgZGFtb25fYWRkX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQxNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTQyMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MjQ6c3RhdGljIGlubGluZSB2b2lkIGRhbW9uX2luc2VydF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00MjUtXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnByZXYsIHN0cnVjdCBkYW1vbl9yZWdpb24gKm5leHQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQzMi0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vY29yZS5jOjQzMzpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQzNC17XG4tLVxubW0vZGFtb24vY29yZS5jLTQzNy0jZWxzZVxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQzOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ0Mi1cbm1tL2RhbW9uL2NvcmUuYzo0NDM6c3RhdGljIHZvaWQgZGFtb25fZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQ0NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ1MC1cbm1tL2RhbW9uL2NvcmUuYzo0NTE6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy00NTUtXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDU3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00NjItXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDY0LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00NzYtICovXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxubW0vZGFtb24vY29yZS5jLTQ3OC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00OTctICovXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vY29yZS5jLTQ5OS1cdFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MDYtICovXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxubW0vZGFtb24vY29yZS5jLTUwOC1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNTM5LSAqL1xubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcbm1tL2RhbW9uL2NvcmUuYy01NDEtXHRcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjMwLVxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcbm1tL2RhbW9uL2NvcmUuYy02MzItXHRcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXG4tLVxubW0vZGFtb24vY29yZS5jLTY1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXG5tbS9kYW1vbi9jb3JlLmMtNjU0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxubW0vZGFtb24vY29yZS5jOjY2NTp2b2lkIGRhbW9zX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY2Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTY3Mi1cbm1tL2RhbW9uL2NvcmUuYzo2NzM6c3RhdGljIHZvaWQgZGFtb3NfZGVsX2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY3NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTY3Ny1cbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy02Nzkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODItXG5tbS9kYW1vbi9jb3JlLmM6NjgzOnZvaWQgZGFtb3NfZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy02ODQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODgtXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy02OTAtXHRcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03MDUtXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MTAtXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxMi17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxNS1cbm1tL2RhbW9uL2NvcmUuYzo3MTY6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcyMC1cbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzI2LVxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXG5tbS9kYW1vbi9jb3JlLmMtNzI4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4mIzM5O3Qgc2V0ICovXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03NDUtXG5tbS9kYW1vbi9jb3JlLmM6NzQ2OnN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXG5tbS9kYW1vbi9jb3JlLmMtNzQ3LVx0XHRcdGVudW0gZGFtb3NfYWN0aW9uIGFjdGlvbixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzg3LVxubW0vZGFtb24vY29yZS5jOjc4ODpzdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzk4LVxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODAwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxubW0vZGFtb24vY29yZS5jOjgwNTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MDYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MDktXG5tbS9kYW1vbi9jb3JlLmM6ODEwOnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MTQtXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NDA6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTg0MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTg1Ni1cbm1tL2RhbW9uL2NvcmUuYzo4NTc6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04NjQtICovXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxubW0vZGFtb24vY29yZS5jLTg2Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTg3Mi1cbm1tL2RhbW9uL2NvcmUuYzo4NzM6c3RhdGljIHZvaWQgZGFtb25fZGVsX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg3Ny1cbm1tL2RhbW9uL2NvcmUuYzo4Nzg6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTg4Ni1cbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxubW0vZGFtb24vY29yZS5jOjg5Nzp1bnNpZ25lZCBpbnQgZGFtb25fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg5OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTkwMS1cbm1tL2RhbW9uL2NvcmUuYzo5MDI6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTkwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTk0MS1cbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy05NDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05NDktXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk1MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTk2NS1cbm1tL2RhbW9uL2NvcmUuYzo5NjY6c3RhdGljIGJvb2wgZGFtb25fYXR0cnNfZXF1YWxzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMxLFxubW0vZGFtb24vY29yZS5jLTk2Ny1cdFx0Y29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczIpXG4tLVxubW0vZGFtb24vY29yZS5jLTk4Mi1cbm1tL2RhbW9uL2NvcmUuYzo5ODM6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hZ2VfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgYWdlLFxubW0vZGFtb24vY29yZS5jLTk4NC1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05ODktLyogY29udmVydCBzYW1wbGUgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIGNvdW50ICovXG5tbS9kYW1vbi9jb3JlLmM6OTkwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50KFxubW0vZGFtb24vY29yZS5jLTk5MS1cdFx0dW5zaWduZWQgaW50IGJwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05OTYtLyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXG5tbS9kYW1vbi9jb3JlLmM6OTk3OnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxubW0vZGFtb24vY29yZS5jLTk5OC1cdFx0dW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDAyLVxubW0vZGFtb24vY29yZS5jOjEwMDM6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yLFxubW0vZGFtb24vY29yZS5jLTEwMDQtXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTAwOS1cbm1tL2RhbW9uL2NvcmUuYzoxMDEwOnN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDI5LVxubW0vZGFtb24vY29yZS5jOjEwMzA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDU5LSAqL1xubW0vZGFtb24vY29yZS5jOjEwNjA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsIGJvb2wgYWdncmVnYXRpbmcpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwODItICovXG5tbS9kYW1vbi9jb3JlLmM6MTA4MzpzdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTEwODQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE3Ny1cbm1tL2RhbW9uL2NvcmUuYzoxMTc4OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cdFx0aW50IG4sIHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE5MC1cbm1tL2RhbW9uL2NvcmUuYzoxMTkxOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxubW0vZGFtb24vY29yZS5jLTExOTItXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTIxNTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM2LSAqL1xubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNjEtXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTI2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyODAtXG5tbS9kYW1vbi9jb3JlLmM6MTI4MTpzdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX2NvcmVfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMTI4Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyOTItXG5tbS9kYW1vbi9jb3JlLmM6MTI5MzpzdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX29wc19maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTMwNC1cbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxubW0vZGFtb24vY29yZS5jLTEzMDYtXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzI1LVxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcbm1tL2RhbW9uL2NvcmUuYy0xMzI3LVx0XHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTMzNC1cbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTMzNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzNjItXG5tbS9kYW1vbi9jb3JlLmM6MTM2MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9vcHNfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTM2NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzOTUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTM5NjpzdGF0aWMgYm9vbCBkYW1vc19maWx0ZXJzX2RlZmF1bHRfcmVqZWN0KHN0cnVjdCBsaXN0X2hlYWQgKmZpbHRlcnMpXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MDUtXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMTQwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MTYtXG5tbS9kYW1vbi9jb3JlLmM6MTQxNzpzdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9wcm9iZV9wYXJhbXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE0MTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDYxLSAqL1xubW0vZGFtb24vY29yZS5jOjE0NjI6c3RhdGljIGludCBkYW1vc19jb21taXRfZGVzdHMoc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDkyLVxubW0vZGFtb24vY29yZS5jOjE0OTM6c3RhdGljIGludCBkYW1vc19jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1MDYtXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTUwOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1MTgtXG5tbS9kYW1vbi9jb3JlLmM6MTUxOTpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTUyMC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1NDUtXG5tbS9kYW1vbi9jb3JlLmM6MTU0NjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE1NDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTgxLVxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0xNTgzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxNjAxOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNjAyLVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jLTE2MzUtXG5tbS9kYW1vbi9jb3JlLmM6MTYzNjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG5tbS9kYW1vbi9jb3JlLmMtMTYzNy1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LCBib29sIGRzdF9oYXNfcGlkLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xubW0vZGFtb24vY29yZS5jOjE2NjM6c3RhdGljIHZvaWQgZGFtb25fcmV2ZXJ0X3RhcmdldF9jb21taXRzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNjY0LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpmYWlsZWQsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cbm1tL2RhbW9uL2NvcmUuYzoxNjc5OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXG5tbS9kYW1vbi9jb3JlLmMtMTY4MC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDMtXG5tbS9kYW1vbi9jb3JlLmM6MTc0NDpzdGF0aWMgdm9pZCBkYW1vbl9jb21taXRfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqZHN0LCBzdHJ1Y3QgZGFtb25fcHJlcCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NDUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzQ4LVxubW0vZGFtb24vY29yZS5jOjE3NDk6c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJlcHMoc3RydWN0IGRhbW9uX3Byb2JlICpkc3QsIHN0cnVjdCBkYW1vbl9wcm9iZSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzczLVxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXG5tbS9kYW1vbi9jb3JlLmMtMTc3NS1cdFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzg4LVxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNzkwLVx0XHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTgyMi1cbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xODI0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cbm1tL2RhbW9uL2NvcmUuYzoxODYyOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4NjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTE5LVxubW0vZGFtb24vY29yZS5jOjE5MjA6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5NDgtICovXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xOTUwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9yZWdpb25fc3pfbGltaXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE5Njgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTg1LVxubW0vZGFtb24vY29yZS5jOjE5ODY6c3RhdGljIGludCBkYW1vbl9zcGxpdF9yZWdpb25fYXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVx0XHRcdFx0ICBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCB1bnNpZ25lZCBsb25nIHN6X3IpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xubW0vZGFtb24vY29yZS5jOjIwMDI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fYXBwbHlfbWluX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwMDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDIxLVxubW0vZGFtb24vY29yZS5jOjIwMjI6c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpO1xubW0vZGFtb24vY29yZS5jLTIwMjMtXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMzEtICovXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwMzMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xubW0vZGFtb24vY29yZS5jOjIwNjk6aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG5tbS9kYW1vbi9jb3JlLmMtMjA3MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxMTMtICovXG5tbS9kYW1vbi9jb3JlLmM6MjExNDpzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIxMTUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTMzLSAqL1xubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTQ5OmJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0OTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gUXVvdGEgTWFuYWdlbWVudCAtIEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBlbGVtZW50cyBmb3IgbWFuYWdpbmcgREFNT04gcXVvdGFzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX25ld19zY2hlbWVgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCB0aGVuIHRoZSBxdW90YS1zcGVjaWZpYyBvbmVzIGxpa2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCwgYGRhbW9zX2FkZF9xdW90YV9nb2FsYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIE5lZWQgdG8ga2VlcCB0aG9zZSBzdHJhaWdodC4KCk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCBgREFNT05gIGl0c2VsZiBpcyBlbmFibGVkLCBhbmQgb2YgY291cnNlLCBgREFNT05fU1lTRlNgIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCBJIGFtIHdvcmtpbmcgd2l0aC4gSSBuZWVkIHRoZSB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1vbml0b3Jpbmcgc2V0dGluZ3MsIHNvIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgbXVzdCBiZSBzZXQuIFRoZSBzYW1lIGFwcGxpZXMgdG8gYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIGJlY2F1c2UgdGhlc2UgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIGpvYiBJIGFtIGRvaW5nLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSByZWxldmFudCBvciB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBldmVuIGlmIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSBpbXBsaWNhdGVkIGluIHdoYXQgSSYjMzk7bSBkb2luZy4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGUgYmlnIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxuICA4MjpcdFxuICA4MzpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcbiAgODQ6XHRcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXG4gIDg1Olx0XG4gIDg2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cbiAgODk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG4gIDkzOlx0XHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cbiAgOTQ6XHRcdCAgdGhvc2UuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XG4gIDk3Olx0XHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcbiAgOTg6XHRcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4gMTAxOlx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiAxMDI6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAxMDM6XHRcdGhlbHBcbiAxMDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXG4gMTA1Olx0XHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXG4gMTA2Olx0XHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXG4gMTA3Olx0XG4gMTA4Olx0Y29uZmlnIERBTU9OX1NUQVRcbiAxMDk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuIDExMDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXG4gMTEzOlx0XHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XG4gMTE0Olx0XHQgIG1ldHJpY3MuXG4gMTE1Olx0XG4gMTE2Olx0Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG4gMTE3Olx0XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiAxMTg6XHRcdGRlcGVuZHMgb24gREFNT05fU1RBVFxuIDExOTpcdFx0ZGVmYXVsdCBEQU1PTl9TVEFUXG4gMTIwOlx0XHRoZWxwXG4gMTIxOlx0XHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXG4gMTIyOlx0XHQgIGJvb3Qgb3IgcnVudGltZSB1c2luZyBpdHMgJiMzOTtlbmFibGVkJiMzOTsgcGFyYW1ldGVyLlxuIDEyMzpcdFxuIDEyNDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3NzkKCQkJCQkJCW91dHB1dDogMjIzCgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIEtlcm5lbCBDaGFuZ2UgUmV2aWV3KioKCk9rYXksIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgb24gdGhpcyBEQU1PTiBwYXRjaC4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIGl0IHN5c3RlbWF0aWNhbGx5LiBUaGUgY2hhbmdlIGlzIGluIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCBgZXN6ID0gMGAgaWYgYCFxdW90YS0mZ3Q7ZXN6X2JwYC4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCwgY29yZS1sZXZlbCBrZXJuZWwgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IERBTU9OIGNhbGN1bGF0ZXMgZWZmZWN0aXZlIHF1b3Rhcy4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgcXVvdGEgY2FsY3VsYXRpb24gY2hhbmdlcyBjYW4gaGF2ZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIHNvIEkgd2FudCB0byBiZSB0aG9yb3VnaC4KCkkgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSXQgcmVsaWVzIG9uIHRoZSB1c3VhbCBzdXNwZWN0czogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYW5kIGBEQU1PTl9WQUREUmAuIEkmIzM5O2xsIHdhbnQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgaW1wYWN0LgoKTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fbmV3X3NjaGVtZWAsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgLCBgZGFtb3NfYWRkX3F1b3RhX2dvYWxgLCBgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc2AsIGFuZCBgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBpbnRlcmZhY2VzIGFuZCBkYXRhIHBhdGhzIGludm9sdmVkIGluIHRoaXMgcXVvdGEgbWFuYWdlbWVudCBhbmQgdXBkYXRlIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZGF0YSB0aHJvdWdoIHRob3NlLgoKRmluYWxseSwgdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIEdvb2QuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgdGhpcyBjaGFuZ2Ugd2FycmFudHMgcm9idXN0IGZ1enppbmcuIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBwbGFucy4KCkFscmlnaHQsIHRoYXQmIzM5O3MgZXZlcnl0aGluZy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIGxvZyB0aGUgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fbmV3X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb3NfbmV3X3F1b3RhX2dvYWwmIzM0OywKICAgICYjMzQ7ZGFtb3NfYWRkX3F1b3RhX2dvYWwmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyYjMzQ7LAogICAgJiMzNDtkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9zX25ld19xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX2FkZF9xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggZGYyMjYyMTc2NTkxMS4uNzNkYzlhNzBmYjEyYiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMzI1MSw2ICYjNDM7MzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpCiAJaWYgKHF1b3RhLSZndDtzeiAmYW1wOyZhbXA7IHF1b3RhLSZndDtzeiAmbHQ7IGVzeikKIAkJZXN6ID0gcXVvdGEtJmd0O3N6OwogCiYjNDM7CWlmICghcXVvdGEtJmd0O2Vzel9icCkKJiM0MzsJCWVzeiA9IDA7CiYjNDM7CiAJcXVvdGEtJmd0O2VzeiA9IGVzejsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmcgd2l0aCB0aGlzIERBTU9OIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCByZWFsbHkuIExvb2tpbmcgYXQgdGhlIGBkaWZmYCwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgbWFpbiBmb2N1cyBpcyBhcm91bmQgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYC4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBzaW1wbGUgY2hlY2s6IGBpZiAoIXF1b3RhLSZndDtlc3pfYnApIGVzeiA9IDA7YCAgUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIHZhcmlhYmxlIGBlc3pgIGlzIHNvbWUga2luZCBvZiBlZmZlY3RpdmUgc2l6ZSBjYWxjdWxhdGlvbi4gVGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBjb25zaWRlcnMgYHF1b3RhLSZndDtzemAsIGVuc3VyaW5nIHRoZSBlZmZlY3RpdmUgc2l6ZSBkb2VzbiYjMzk7dCBleGNlZWQgdGhlIHF1b3RhIHNpemUuIFRoaXMgbmV3IGNvbmRpdGlvbiBpcyBwcm9iYWJseSBhIHNhZmVndWFyZCwgbWVhbmluZyB0aGF0IGlmIHRoZSBiYWNraW5nIHBvaW50ZXIgZm9yIGVmZmVjdGl2ZSBzaXplIGlzIG51bGwsIGl0IHNob3VsZCBiZSBkZWZhdWx0ZWQgdG8gemVyby4KCkkgbmVlZCB0byBkaWcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgYW5kIGhvdyBgZXN6X2JwYCwgYGVzemAsIGFuZCBgcXVvdGFgIGFyZSB1c2VkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUsIGxpa2VseSB0byBjb250cm9sIG1lbW9yeSB1c2FnZSBvciBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBEQU1PTiBjb250ZXh0LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBiYWNraW5nIHBvaW50ZXIgaXMgdXNlZCB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIGVmZmVjdGl2ZSBzaXplLiBXaXRob3V0IGl0LCB0aGUgZWZmZWN0aXZlIHNpemUgc2hvdWxkIGJlIHplcm9lZC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHF1b3RhLSZndDtlc3pfYnBgIHJlcHJlc2VudHMgdG8gZGV0ZXJtaW5lIHRoZSBjb21wbGV0ZSBpbXBhY3QsIGJ1dCBmcm9tIHRoZSBpbW1lZGlhdGUgY29udGV4dCB0aGlzIGZlZWxzIGxpa2UgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyMzA6XHRcdFx0cmV0dXJuO1xuMzIzMTpcdFx0fVxuMzIzMjpcdFxuMzIzMzpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIzNDpcdFx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG4zMjM1Olx0XHRcdFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XG4zMjM2Olx0XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbjMyMzc6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG4zMjM4Olx0XHRcdGVzeiA9IHF1b3RhLVx1MDAzZWVzel9icCAvIDEwMDAwO1xuMzIzOTpcdFx0fVxuMzI0MDpcdFxuMzI0MTpcdFx0aWYgKHF1b3RhLVx1MDAzZW1zKSB7XG4zMjQyOlx0XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxuMzI0MzpcdFx0XHRcdHRocm91Z2hwdXQgPSBtdWx0X2ZyYWMocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeixcbjMyNDQ6XHRcdFx0XHRcdFx0MTAwMDAwMCwgcXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyk7XG4zMjQ1Olx0XHRcdGVsc2VcbjMyNDY6XHRcdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbjMyNDc6XHRcdFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cdTAwM2VtcywgZXN6KTtcbjMyNDg6XHRcdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuMzI0OTpcdFx0fVxuMzI1MDpcdFxuMzI1MTpcdFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuMzI1MjpcdFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyNTM6XHRcbjMyNTQ6XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuMzI1NTpcdFx0XHRlc3ogPSAwO1xuMzI1NjpcdFxuMzI1NzpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuMzI1ODpcdH1cbjMyNTk6XHRcbjMyNjA6XHRzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxuMzI2MTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxuMzI2MjpcdHtcbjMyNjM6XHRcdHVuc2lnbmVkIGludCBjaWR4ID0gMCwgc2lkeCA9IDA7XG4zMjY0Olx0XHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xuMzI2NTpcdFxuMzI2NjpcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XG4zMjY3Olx0XHRcdGlmIChzaXRlciA9PSBzKVxuMzI2ODpcdFx0XHRcdGJyZWFrO1xuMzI2OTpcdFx0XHRzaWR4JiM0MzsmIzQzOztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBjb250ZXh0IG9mIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCwgc3BlY2lmaWNhbGx5IHN0YXJ0aW5nIGF0IGxpbmUgMzIxNS4gTGV0IG1lIGdyYWIgdGhlIGNvZGUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB3aG9sZSBmdW5jdGlvbi4gSSYjMzk7bSBub3QganVzdCBpbnRlcmVzdGVkIGluIHRoYXQgc3BlY2lmaWMgbGluZSwgSSB3YW50IHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgbG9naWMsIGFueSBjYWxscyBpdCBtYWtlcywgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0gaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3cgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiBpcyBjcml0aWNhbCB0byBncmFzcGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiB0byBkaWFnbm9zZSBvciBtb2RpZnkgaXQgd2l0aCBjb25maWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIwMDpcdFxuMzIwMTpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXG4zMjAyOlx0XHRcdFx0bWF4KHF1b3RhLVx1MDAzZWVzel9icCwgMTAwMDBVTCksIHNjb3JlKTtcbjMyMDM6XHR9XG4zMjA0Olx0XG4zMjA1Olx0c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMzIwNjpcdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4zMjA3Olx0e1xuMzIwODpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMjA5Olx0XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG4zMjEwOlx0XG4zMjExOlx0XHRpZiAoc2NvcmUgXHUwMDNlPSAxMDAwMClcbjMyMTI6XHRcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbjMyMTM6XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZXN6KVxuMzIxNDpcdFx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBxdW90YS1cdTAwM2VzeiAqIDEwMDAwO1xuMzIxNTpcdFx0ZWxzZVxuMzIxNjpcdFx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBVTE9OR19NQVg7XG4zMjE3Olx0fVxuMzIxODpcdFxuMzIxOTpcdC8qXG4zMjIwOlx0ICogQ2FsbGVkIG9ubHkgaWYgcXVvdGEtXHUwMDNlbXMsIG9yIHF1b3RhLVx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVx1MDAzZWdvYWxzIGlzIG5vdCBlbXB0eVxuMzIyMTpcdCAqL1xuMzIyMjpcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4zMjIzOlx0e1xuMzIyNDpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMjI1Olx0XHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG4zMjI2Olx0XHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcbjMyMjc6XHRcbjMyMjg6XHRcdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG4zMjI5Olx0XHRcdHF1b3RhLVx1MDAzZWVzeiA9IHF1b3RhLVx1MDAzZXN6O1xuMzIzMDpcdFx0XHRyZXR1cm47XG4zMjMxOlx0XHR9XG4zMjMyOlx0XG4zMjMzOlx0XHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG4zMjM0Olx0XHRcdGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfQ09OU0lTVClcbjMyMzU6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3QoY3R4LCBzKTtcbjMyMzY6XHRcdFx0ZWxzZSBpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxuMzIzNzpcdFx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoY3R4LCBzKTtcbjMyMzg6XHRcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlZXN6X2JwIC8gMTAwMDA7XG4zMjM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjkKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsYCBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgYGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWxgIGZ1bmN0aW9uIGlzIHBsYXlpbmcgd2l0aCBhIG1lbW9yeSBxdW90YSwgc3BlY2lmaWNhbGx5IHNldHRpbmcgYHF1b3RhLSZndDtlc3pfYnBgIHRvIHplcm8gaWYgdGhlIGBzY29yZWAgaGl0cyAxMDAwMCBvciBtb3JlLiBUaGVuLCBpdCBsb29rcyBsaWtlIGBxdW90YS0mZ3Q7bXNgIGNvbWVzIGludG8gcGxheSwgcG90ZW50aWFsbHkgcmFpc2luZyB0aGUgYGVzemAgdmFsdWUsIGJ1dCB0aGVyZSYjMzk7cyBhIGd1YXJkcmFpbDogaWYgYGVzel9icGAgaXMgemVybywgYGVzemAgZ2V0cyBwaW5uZWQgdG8gemVybyBhcyB3ZWxsLiBUaGF04oCZcyB0aGUgY29yZSBsb2dpYy4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBEb2VzIHRoaXMgaW50cm9kdWNlIGFueSBtZW1vcnkgc2FmZXR5IGlzc3Vlcz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC4KCjEuICAqKktlcm5lbC1Vc2VyIFNwYWNlIENvbW11bmljYXRpb246KiogTm9wZS4gTm8gbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgYSBwcm9ibGVtLiBUaGlzIGlzIGludGVybmFsIGtlcm5lbCBzdHVmZi4KMi4gICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vLCBgcXVvdGEtJmd0O2Vzel9icGAgaXMgaW5pdGlhbGl6ZWQgZHVyaW5nIHRoZSBEQU1PTiBzY2hlbWUgcXVvdGEgc2V0dXAsIHNvIHdlIGRvbiYjMzk7dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGNhdXNpbmcgaXNzdWVzIGluIGNvbmRpdGlvbmFsIGxvZ2ljLgozLiAgKipDb21wbGV4IERhdGEgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uOioqIE5vcGUuIFRoaXMgaXNuJiMzOTt0IGFib3V0IGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIGEgcHJvYmxlbSBsYXRlci4KNC4gICoqQnVmZmVyIEFjY2VzczoqKiBOb3QgaGVyZS4gVGhpcyBpc24mIzM5O3QgYWJvdXQgYm91bmRzIGNoZWNraW5nIG9yIGFjY2Vzc2luZyBwYXJ0cyBvZiBidWZmZXJzIHRoYXQgaGF2ZW4mIzM5O3QgYmVlbiBpbml0aWFsaXplZC4gSXQmIzM5O3MganVzdCBudW1iZXIgY3J1bmNoaW5nLgoKU28sIGFtIEkgc2VlaW5nIGFueSByZWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gVGhlIGBxdW90YWAgZmllbGRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIERBTU9OIHN1YnN5c3RlbSwgaW5pdGlhbGl6ZWQgZHVyaW5nIGNyZWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBqdXN0IGFyaXRobWV0aWMgYW5kIHF1b3RhIGNhbGN1bGF0aW9uLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgd291bGQgZmxhZywgYW5kIGl0JiMzOTtzIG5vdCBhcHBsaWNhYmxlIGhlcmUuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIGV2ZXJ5dGhpbmcsIHNvIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZWZmZWN0aXZlIHF1b3RhIChgZXN6YCkgaW4gREFNT1MgKGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBpbiBgbW0vZGFtb24vY29yZS5jYCkgYnkgcmVzZXR0aW5nIGBlc3pgIHRvIDAgaWYgYHF1b3RhLVx1MDAzZWVzel9icGAgaXMgMC4gVGhpcyBpcyBwdXJlbHkgYW4gYXJpdGhtZXRpYyAvIGxvZ2ljIGFkanVzdG1lbnQgZm9yIERBTU9OIHF1b3RhIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgdXNlci1zcGFjZSBjb3B5IG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo0MC41NjMxNDQ2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDk0MTY0NDY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fbmV3X3NjaGVtZVwiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vc19uZXdfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3NfYWRkX3F1b3RhX2dvYWxcIixcbiAgICBcImRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXNcIixcbiAgICBcImRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjQwLjU2MzE1MDI1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwODAzNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIzOjQxOjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IGRmMjI2MjE3NjU5MTEuLjczZGM5YTcwZmIxMmIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTMyNTEsNiArMzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxuIFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbiBcXHRcXHRlc3ogPSBxdW90YS1cXHUwMDNlc3o7XFxuIFxcbitcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuK1xcdFxcdGVzeiA9IDA7XFxuK1xcbiBcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo0MS4wMDQ2NjE3MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYxNTg5NzcyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9uZXdfc2NoZW1lXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9zX25ld19xdW90YV9nb2FsXCIsXG4gICAgXCJkYW1vc19hZGRfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc1wiLFxuICAgIFwiZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGRmMjI2MjE3NjU5MTEuLjczZGM5YTcwZmIxMmIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTMyNTEsNiArMzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4gXHRpZiAocXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IHF1b3RhLVx1MDAzZXN6IFx1MDAzYyBlc3opXG4gXHRcdGVzeiA9IHF1b3RhLVx1MDAzZXN6O1xuIFxuK1x0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG4rXHRcdGVzeiA9IDA7XG4rXG4gXHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NDEuMDA0NjYzNTkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODY3NDIzNjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gVGhlIGZvY3VzIGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoIXF1b3RhLVx1MDAzZWVzel9icCkgZXN6ID0gMDtgLiBIbW0sIHRoaXMgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYW4gZWRnZSBjYXNlIHJlbGF0ZWQgdG8gdGhlIGVzdGltYXRlZCBzaXplIChgZXN6YCkgd2hlbiBgZXN6X2JwYCBpcyBudWxsLiBTbywgcG90ZW50aWFsbHkgaGFuZGxpbmcgYSBzaXR1YXRpb24gd2hlcmUgdGhlIHF1b3RhIGlzbid0IHByb3Blcmx5IGluaXRpYWxpemVkLlxuXG5Ob3cgSSBuZWVkIHRvIGdldCBhIGJldHRlciBncmFzcCBvbiB0aGUgY29udGV4dCBoZXJlLiBJJ2xsIHVzZSBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbW0vZGFtb24vY29yZS5jYCBhcm91bmQgbGluZSAzMjUxLiBOZWVkIHRvIGxvb2sgaW50byBob3cgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGlzIHVzZWQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0sIGludmVzdGlnYXRlIGFueSBwb3RlbnRpYWwgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLCBhbmQgY2hlY2sgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgcmVsYXRlZCBjb2RlIHBhdGhzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGBlc3pgIGNoZWNrIGlzIHRyeWluZyB0byBhZGRyZXNzIHdpdGhpbiB0aGUgbGFyZ2VyIERBTU9OIGZyYW1ld29yayBhbmQgd2hhdCB0aGUgbGlrZWx5IGltcGxpY2F0aW9ucyBhcmUuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGBlc3pfYnBgIHZhcmlhYmxlIGlzIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NDkuNjc4OTAyNTA3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjQwOlxcdFxcbjMyNDE6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2Vtcykge1xcbjMyNDI6XFx0XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxcbjMyNDM6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IG11bHRfZnJhYyhxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeixcXG4zMjQ0OlxcdFxcdFxcdFxcdFxcdFxcdDEwMDAwMDAsIHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKTtcXG4zMjQ1OlxcdFxcdFxcdGVsc2VcXG4zMjQ2OlxcdFxcdFxcdFxcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xcbjMyNDc6XFx0XFx0XFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cXHUwMDNlbXMsIGVzeik7XFxuMzI0ODpcXHRcXHRcXHRlc3ogPSBtYXgoY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xcbjMyNDk6XFx0XFx0fVxcbjMyNTA6XFx0XFxuMzI1MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXN6IFxcdTAwMjZcXHUwMDI2IHF1b3RhLVxcdTAwM2VzeiBcXHUwMDNjIGVzeilcXG4zMjUyOlxcdFxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjUzOlxcdFxcbjMyNTQ6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6X2JwKVxcbjMyNTU6XFx0XFx0XFx0ZXN6ID0gMDtcXG4zMjU2OlxcdFxcbjMyNTc6XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IGVzejtcXG4zMjU4OlxcdH1cXG4zMjU5OlxcdFxcbjMyNjA6XFx0c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG4zMjYxOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuMzI2MjpcXHR7XFxuMzI2MzpcXHRcXHR1bnNpZ25lZCBpbnQgY2lkeCA9IDAsIHNpZHggPSAwO1xcbjMyNjQ6XFx0XFx0c3RydWN0IGRhbW9zICpzaXRlcjtcXG4zMjY1OlxcdFxcbjMyNjY6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XFxuMzI2NzpcXHRcXHRcXHRpZiAoc2l0ZXIgPT0gcylcXG4zMjY4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMyNjk6XFx0XFx0XFx0c2lkeCsrO1xcbjMyNzA6XFx0XFx0fVxcbjMyNzE6XFx0XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbjMyNzI6XFx0fVxcbjMyNzM6XFx0XFxuMzI3NDpcXHRzdGF0aWMgdm9pZCBkYW1vc19hZGp1c3RfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbjMyNzU6XFx0e1xcbjMyNzY6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG4zMjc3OlxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XFxuMzI3ODpcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xcbjMyNzk6XFx0XFx0dW5zaWduZWQgbG9uZyBjdW11bGF0ZWRfc3osIGNhY2hlZF9lc3o7XFxuMzI4MDpcXHRcXHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XFxuMzI4MTpcXHRcXG4zMjgyOlxcdFxcdGlmICghcXVvdGEtXFx1MDAzZW1zIFxcdTAwMjZcXHUwMDI2ICFxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSlcXG4zMjgzOlxcdFxcdFxcdHJldHVybjtcXG4zMjg0OlxcdFxcbjMyODU6XFx0XFx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xcbjMyODY6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeiBcXHUwMDI2XFx1MDAyNiAhcXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSkge1xcbjMyODc6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IGppZmZpZXM7XFxuMzI4ODpcXHRcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbjMyODk6XFx0XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjQ5LjY3OTA3NDQ2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NzkyMzAzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIERBTU9OIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcGlucG9pbnQgd2hlcmUgdGhlIERBTU9OIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXknbGwgYmUgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBsaWtlbHkgd2l0aGluIHRoZSBgbW0vZGFtb25gIGRpcmVjdG9yeS4gU28sIGxldCdzIGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBmZXcga2V5IHRoaW5ncyB0aGVyZTogdGhlIG1haW4gREFNT04gc3dpdGNoIGl0c2VsZiwgcHJvYmFibHkgYSBgYm9vbGAgb3B0aW9uLCBhbmQgdGhlbiBtYXliZSBzb21lIGdyYW51bGFyIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBEQU1PTiBjb21wb25lbnRzIG9yIGZlYXR1cmVzLiBJdOKAmXMgYWx3YXlzIHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIGZpZ3VyaW5nIG91dCBob3cgYSBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpbmVyLWdyYWluZWQgY29udHJvbHMuIFRpbWUgdG8gc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjAwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo1Mi4xNTgzMDcxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2ODI0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTIuMjA5OTk2NTc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM1MzgwMzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9mIGhvdyBEQU1PTiBpcyBzdHJ1Y3R1cmVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciB0aGUganVndWxhciDigJMgdGhlIGNvcmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGJvdGggYG1tL2RhbW9uL01ha2VmaWxlYCBhbmQgYG1tL2RhbW9uL0tjb25maWdgLiBgTWFrZWZpbGVgIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHByb2Nlc3MsIGRlcGVuZGVuY2llcywgYW5kIGhvdyBhbGwgdGhlIERBTU9OIHNvdXJjZSBmaWxlcyBmaXQgdG9nZXRoZXIuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IG1vZHVsZSBjb21waWxhdGlvbiwgY29tcGlsYXRpb24gZmxhZ3MsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIERBTU9OIGltcGxlbWVudGF0aW9uIGxpbmtzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS5cblxuVGhlbiwgSSdsbCBoaXQgYG1tL2RhbW9uL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbGl2ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBrbm9icyBhbmQgZGlhbHMuIEknbGwgYmUgbG9va2luZyBmb3Igd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0J3Mgb3B0aW9uYWwsIGFueSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIERBTU9OLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zLiBJIGV4cGVjdCB0byBzZWUgdGhlIHNlbGVjdGlvbiBvZiB0YXJnZXQgc2VsZWN0aW9uIGFsZ29yaXRobXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBpbnN0cnVtZW50YXRpb24gZmVhdHVyZXMuXG5cbkknbSBhaW1pbmcgZm9yIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZXNlIHR3byBmaWxlcywgc28gSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgREFNT04ncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aCB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTYuNTYzODAyNDk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTYuNTYzODcwNjQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNDQ0MTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlnOiBtbS9kYW1vbi9LY29uZmlnKipcblxuT2theSwgdGltZSB0byBjaGVjayBvdXQgYG1tL2RhbW9uL0tjb25maWdgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IERBTU9OIGNhbiBiZSB0d2Vha2VkIGFuZCBpbnRlZ3JhdGVkIGludG8gYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuXG5cbkknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbjpcblxuKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgc2NvcGU6KiogV2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggcmVxdWlyZSBleHBsaWNpdCBjb25maWd1cmF0aW9uP1xuKiAgICoqRGVwZW5kZW5jaWVzOioqIEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlIGtlcm5lbCBmZWF0dXJlcyBvciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0ICptdXN0KiBiZSBlbmFibGVkIGZvciBEQU1PTiB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEknbSB0aGlua2luZywgZm9yIGluc3RhbmNlLCBhcmUgdGhlcmUgYW55IGludGVyYWN0aW9ucyB3aXRoIE5VTUEsIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCksIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kP1xuKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zKio6IFdoYXQgc3BlY2lmaWMgcGFyYW1ldGVycyBjYW4gSSB0dW5lIHRvIG1vZGlmeSBEQU1PTidzIGJlaGF2aW9yPyBBcmUgdGhlcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtb25pdG9yaW5nIGdyYW51bGFyaXR5LCBkYXRhIGNvbGxlY3Rpb24gZnJlcXVlbmN5LCBvciB0aGUgYWN0aW9ucyB0YWtlbiB3aGVuIGRhdGEgYWNjZXNzIHBhdHRlcm5zIGFyZSBkZXRlY3RlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmFkZS1vZmZzIGFyZSBvZmZlcmVkIHZpYSB0aGUgY29uZmlndXJhYmxlIHNldHRpbmdzLlxuKiAgICoqRG9jdW1lbnRhdGlvbiBpbiBLY29uZmlnOioqIERvZXMgaXQgaGF2ZSBhZGVxdWF0ZSBoZWxwIHRleHQgYW5kIGV4cGxhbmF0aW9ucz8gR29vZCBkb2N1bWVudGF0aW9uIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaXMgY3JpdGljYWwuIEknbSBob3BpbmcgaXQncyBjbGVhciBhbmQgY29uY2lzZSwgcHJvdmlkaW5nIGEgZ29vZCBvdmVydmlldyBvZiBlYWNoIG9wdGlvbidzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cbkJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBEQU1PTi4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gc3RhcnQgZXhwZXJpbWVudGluZyB3aXRoIGl0IG9yIGludGVncmF0aW5nIGl0IGludG8gYSByZWFsLXdvcmxkIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo1OS4zNjgzMTU4ODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIERBTU9OXFxuICAgNjpcXHRcXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcXG4gICA5OlxcdFxcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXFxuICAxMDpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXFxuICAxMzpcXHRcXHQgIG1vcmUgaW5mb3JtYXRpb24uXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG4gIDE2OlxcdFxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbiAgMTc6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXFxuICAyMDpcXHRcXHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxcbiAgMjE6XFx0XFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxcbiAgMjI6XFx0XFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgMjk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDMwOlxcdFxcdGhlbHBcXG4gIDMxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICAzNDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBEQU1PTl9WQUREUlxcbiAgMzk6XFx0XFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDQxOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNDI6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA0NTpcXHRcXHQgIHRoYXQgd29yayBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlcy5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbiAgNTc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICA1OTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgNjA6XFx0XFx0aGVscFxcbiAgNjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gdmlydHVhbCBhZGRyZXNzZXMgb3BlcmF0aW9ucyBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgNjI6XFx0XFxuICA2MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgNjQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgREFNT05fU1lTRlNcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgU1lTRlNcXG4gIDcxOlxcdFxcdGRlZmF1bHQgREFNT05cXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3IgREFNT04uICBUaGUgdXNlciBzcGFjZSBjYW4gdXNlXFxuICA3NDpcXHRcXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDc5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA4MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjU5LjM2ODQyNjMzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3NzA0NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgS2NvbmZpZyBJbmNsdXNpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtbS9kYW1vbi9LY29uZmlnYCB3aXRoaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoLiBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGRpZmZlcmVudCBLY29uZmlnIGZpbGVzLCBhbmQgdGhlaXIgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCB0aGF0IG1pZ2h0IHNvdXJjZSB0aGlzIHNwZWNpZmljIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBpbmNsdWRlIGhpZXJhcmNoeSB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb2YgYW55IGRlcGVuZGVuY2llcyB0aGF0IGBtbS9kYW1vbi9LY29uZmlnYCBpdHNlbGYgaW50cm9kdWNlcy4gVGhpcyBsaW5lIG9mIGlucXVpcnkgYWltcyB0byB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIG9yIG1vZHVsZXMgdHJpZ2dlciBpdHMgaW52b2x2ZW1lbnQgaW4gdGhlIGJ1aWxkLCBhbmQgc3Vic2VxdWVudGx5LCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGl0IHByb3ZpZGVzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byBwaW5wb2ludGluZyBob3cgREFNT04gaXMgYWN0dWFsbHkgY29uZmlndXJlZCBhbmQgaG93IGl0cyBwcmVzZW5jZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gRnJvbSB0aGVyZSBJIGNhbiBleHBsb3JlIGFueSByZWxhdGlvbnNoaXBzIGl0IGhhcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjAxLjU3NjEzNDI2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxOTIzNTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTQ4NT1jb25maWcgTEFaWV9NTVVfTU9ERV9LVU5JVF9URVNUXFxuLS1cXG5tbS9LY29uZmlnLTE0OTYtXFxubW0vS2NvbmZpZzoxNDk3OnNvdXJjZSBcXFwibW0vZGFtb24vS2NvbmZpZ1xcXCJcXG5tbS9LY29uZmlnLTE0OTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjAzLjQ5NTM3NjAzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE5NzMyMTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEludGVncmF0aW9uIHdpdGggUXVvdGFzOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBDT05GSUdfREFNT05gIGRpcmVjdGx5IHRpZXMgaW50byB0aGUgY29tcGlsYXRpb24gb2YgYG1tL2RhbW9uL2NvcmUub2AsIHRoZSBoZWFydCBvZiBEQU1PTi4gRnVydGhlcm1vcmUsIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIHJlc3BvbnNpYmxlIGZvciBidWlsZGluZyB0aGUgY3J1Y2lhbCBzeXNmcyBpbnRlcmZhY2UsIGFzIHNlZW4gaW4gYG1tL2RhbW9uL3N5c2ZzLmNgLCBgc3lzZnMtc2NoZW1lcy5jYCwgYW5kIGBzeXNmcy1jb21tb24uY2AuIE5vdywgbXkgbWFpbiBmb2N1cyBzaGlmdHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIERBTU9TIHF1b3RhcywgaXMgaW50ZXJhY3RlZCB3aXRoIGF0IGFsbC4gSSBoYXZlIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyBvciBpbnRlcmZhY2VzIHRoYXQgcmVsYXRlIHRvIERBTU9TIFF1b3RhcyBpbiBVc2VyIFNwYWNlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcGVyZm9ybSBhIHRhcmdldGVkIHNlYXJjaC4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBjYWxscyB0byBgZGFtb3NfYWRqdXN0X3F1b3RhYCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB1c2VyIHNwYWNlIGFuZCBrZXJuZWwgY29udHJvbCBtZWNoYW5pc21zIGZvciBEQU1PTiBhbmQgREFNT1MuIFRoaXMgZXhhbWluYXRpb24gd2lsbCByZXZlYWwgdGhlIHBvaW50cyBvZiBpbnRlZ3JhdGlvbiBhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIHRoZSBxdW90YSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDUuODE1MTEwOTk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vc19hZGp1c3RfcXVvdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxcbm1tL2RhbW9uL2NvcmUuYzozMjc0OnN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyNzUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpcXHRcXHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMzNzItXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjowNS44NjM4NDkzODVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxNzg2NDc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERBTU9OJ3MgQ29uZmlndXJhdGlvbiBhbmQgQ29udHJvbCoqXG5cbk9rYXksIHNvIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBrZGFtb25kYCB3b3JrZXIgdGhyZWFkLiBOb3csIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHVzZXJzIGludGVyYWN0IHdpdGggREFNT04g4oCTIGhvdyB0aGV5IHN0YXJ0IHRoZSB3aG9sZSB0aGluZywgY29uZmlndXJlIHRoZSBzY2hlbWVzLCBhbmQsIGNydWNpYWxseSwgaG93IHRoZXkgc2V0IHF1b3Rhcy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSB1c2VyLWZhY2luZyBBUElzOyBJIG5lZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnRzLiBMZXQncyBzdGFydCB3aXRoIHN5c2ZzLCBhbmQgc2VlIGlmIHRoZSBzY2hlbWUgcXVvdGEgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCB0aGVyZS4gSWYgbm90LCBJJ2xsIGJyYW5jaCBvdXQgdG8gc2VhcmNoIGZvciBEQU1PTiBxdW90YS1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0J3MgZ2V0IHRoaXMgaW52ZXN0aWdhdGlvbiBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDc3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDcuNzgxNzE2NzQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUzNDgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdW90YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MjQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL2NvcmUuYz02ODM9dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTY4OC1cXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6NjkwOlxcdFxcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxcbm1tL2RhbW9uL2NvcmUuYy02OTEtXFx0XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXFxubW0vZGFtb24vY29yZS5jLTY5Mi17XFxubW0vZGFtb24vY29yZS5jOjY5MzpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtNjk0LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTcwNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzA3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MTAtXFxubW0vZGFtb24vY29yZS5jOjcxMTpzdGF0aWMgdm9pZCBkYW1vc19kZWxfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MTUtXFxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTcxNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxcbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTcyMi17XFxubW0vZGFtb24vY29yZS5jOjcyMzpcXHRkYW1vc19kZWxfcXVvdGFfZ29hbChnKTtcXG5tbS9kYW1vbi9jb3JlLmM6NzI0OlxcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChnKTtcXG5tbS9kYW1vbi9jb3JlLmMtNzI1LX1cXG5tbS9kYW1vbi9jb3JlLmMtNzI2LVxcbm1tL2RhbW9uL2NvcmUuYzo3Mjc6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkoc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTczMS1cXG5tbS9kYW1vbi9jb3JlLmM6NzMyOi8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG5tbS9kYW1vbi9jb3JlLmM6NzM1OlxcdHF1b3RhLVxcdTAwM2Vlc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3MzY6XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzc6XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzg6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XFxubW0vZGFtb24vY29yZS5jOjc0MDpcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQxOlxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQyOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3NDM6XFx0cmV0dXJuIHF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy03NDQtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTc0Nj1zdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc0OC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFwcGx5X2ludGVydmFsX3VzLFxcbm1tL2RhbW9uL2NvcmUuYzo3NDk6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtNzUwLVxcdFxcdFxcdHN0cnVjdCBkYW1vc193YXRlcm1hcmtzICp3bWFya3MsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzc0LVxcbm1tL2RhbW9uL2NvcmUuYzo3NzU6XFx0c2NoZW1lLVxcdTAwM2VxdW90YSA9ICooZGFtb3NfcXVvdGFfaW5pdChxdW90YSkpO1xcbm1tL2RhbW9uL2NvcmUuYzo3NzY6XFx0LyogcXVvdGEuZ29hbHMgc2hvdWxkIGJlIHNlcGFyYXRlbHkgc2V0IGJ5IGNhbGxlciAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3Nzc6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnNjaGVtZS1cXHUwMDNlcXVvdGEuZ29hbHMpO1xcbm1tL2RhbW9uL2NvcmUuYy03NzgtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODE1PXZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbm1tL2RhbW9uL2NvcmUuYzo4MTc6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcsICpnX25leHQ7XFxubW0vZGFtb24vY29yZS5jLTgxOC1cXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmLCAqbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtODE5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MjA6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGcsIGdfbmV4dCwgXFx1MDAyNnMtXFx1MDAzZXF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYzo4MjE6XFx0XFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYy04MjItXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTE2Nj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTc4OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jOjExNzk6XFx0XFx0aW50IG4sIHN0cnVjdCBkYW1vc19xdW90YSAqcSlcXG5tbS9kYW1vbi9jb3JlLmMtMTE4MC17XFxubW0vZGFtb24vY29yZS5jOjExODE6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxubW0vZGFtb24vY29yZS5jLTExODItXFx0aW50IGkgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTgzLVxcbm1tL2RhbW9uL2NvcmUuYzoxMTg0OlxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcSkge1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVxcdFxcdGlmIChpKysgPT0gbilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxcbm1tL2RhbW9uL2NvcmUuYzoxMTkxOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxcbm1tL2RhbW9uL2NvcmUuYzoxMTkyOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTExOTMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMTQtXFxubW0vZGFtb24vY29yZS5jOjEyMTU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jOjEyMTY6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIxNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIyMS1cXHRcXHRkc3QtXFx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXFx1MDAzZWN1cnJlbnRfdmFsdWU7XFxubW0vZGFtb24vY29yZS5jOjEyMjI6XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjIzLX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjI1LS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxMjI2OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jOjEyMjc6ICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9TIHF1b3RhLlxcbm1tL2RhbW9uL2NvcmUuYzoxMjI4OiAqIEBzcmM6XFx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT1MgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jLTEyMjktICpcXG5tbS9kYW1vbi9jb3JlLmM6MTIzMDogKiBDb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmb3IgcXVvdGEgZ29hbHMgZnJvbSBAc3JjIHRvIEBkc3QuICBVc2Vyc1xcbm1tL2RhbW9uL2NvcmUuYzoxMjMxOiAqIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiBmb3IgcXVvdGEgZ29hbHMtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZ1xcbm1tL2RhbW9uL2NvcmUuYy0xMjMyLSAqIERBTU9OIGNvbnRleHRzLCBpbnN0ZWFkIG9mIG1hbnVhbCBpbi1wbGFjZSB1cGRhdGVzLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMzYtICovXFxubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyMzgte1xcbm1tL2RhbW9uL2NvcmUuYzoxMjM5OlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3RfZ29hbCwgKm5leHQsICpzcmNfZ29hbCwgKm5ld19nb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQwLVxcdGludCBpID0gMCwgaiA9IDA7XFxubW0vZGFtb24vY29yZS5jLTEyNDEtXFxubW0vZGFtb24vY29yZS5jOjEyNDI6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTI0MzpcXHRcXHRzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkrKywgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0NC1cXHRcXHRpZiAoc3JjX2dvYWwpXFxubW0vZGFtb24vY29yZS5jOjEyNDU6XFx0XFx0XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0Ni1cXHRcXHRlbHNlXFxubW0vZGFtb24vY29yZS5jOjEyNDc6XFx0XFx0XFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0OC1cXHR9XFxubW0vZGFtb24vY29yZS5jOjEyNDk6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcXG5tbS9kYW1vbi9jb3JlLmMtMTI1MC1cXHRcXHRpZiAoaisrIFxcdTAwM2MgaSlcXG5tbS9kYW1vbi9jb3JlLmMtMTI1MS1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1MjpcXHRcXHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjUzLVxcdFxcdFxcdFxcdHNyY19nb2FsLVxcdTAwM2VtZXRyaWMsIHNyY19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNTUtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vY29yZS5jOjEyNTY6XFx0XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1NzpcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI1OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNjgtXFx0ZHN0LVxcdTAwM2VzeiA9IHNyYy1cXHUwMDNlc3o7XFxubW0vZGFtb24vY29yZS5jOjEyNjk6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI3MC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE1MTk9c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MjYtXFxubW0vZGFtb24vY29yZS5jOjE1Mjc6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFxcdTAwMjZkc3QtXFx1MDAzZXF1b3RhLCBcXHUwMDI2c3JjLVxcdTAwM2VxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTE1MjgtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNTQ2PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU2Ny1cXHRcXHRcXHRcXHRzcmNfc2NoZW1lLVxcdTAwM2VhcHBseV9pbnRlcnZhbF91cyxcXG5tbS9kYW1vbi9jb3JlLmM6MTU2ODpcXHRcXHRcXHRcXHRcXHUwMDI2c3JjX3NjaGVtZS1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmNfc2NoZW1lLVxcdTAwM2V3bWFya3MsXFxubW0vZGFtb24vY29yZS5jLTE1NjktXFx0XFx0XFx0XFx0TlVNQV9OT19OT0RFKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjc5PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcwNS1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MDY6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MDc6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6MTcwODpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMTcwOS1cXHRcXHRcXHRcXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTg2Mj1zdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODY1LVxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xcbm1tL2RhbW9uL2NvcmUuYzoxODY2OlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy0xODY3LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NzQtXFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNjaGVtZSwgc3JjKSB7XFxubW0vZGFtb24vY29yZS5jOjE4NzU6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzY2hlbWUtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0xODc2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc3OlxcdFxcdFxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcXG5tbS9kYW1vbi9jb3JlLmMtMTg3OC1cXHRcXHRcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjM3MT1zdGF0aWMgYm9vbCBfX2RhbW9zX3ZhbGlkX3RhcmdldChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxcbm1tL2RhbW9uL2NvcmUuYzoyMzg3OiAqIGRhbW9zX3F1b3RhX2lzX3NldCgpIC0gUmV0dXJuIGlmIHRoZSBnaXZlbiBxdW90YSBpcyBhY3R1YWxseSBzZXQuXFxubW0vZGFtb24vY29yZS5jOjIzODg6ICogQHF1b3RhOlxcdFRoZSBxdW90YSB0byBjaGVjay5cXG5tbS9kYW1vbi9jb3JlLmMtMjM4OS0gKlxcbm1tL2RhbW9uL2NvcmUuYzoyMzkwOiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVvdGEgaXMgc2V0LCBmYWxzZSBvdGhlcndpc2UuXFxubW0vZGFtb24vY29yZS5jLTIzOTEtICovXFxubW0vZGFtb24vY29yZS5jOjIzOTI6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfc2V0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxubW0vZGFtb24vY29yZS5jLTIzOTMte1xcbm1tL2RhbW9uL2NvcmUuYzoyMzk0OlxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IHx8IHF1b3RhLVxcdTAwM2VzeiB8fCBxdW90YS1cXHUwMDNlbXMgfHxcXG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcXHRcXHQhZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkocXVvdGEpO1xcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMzk4PXN0YXRpYyBib29sIGRhbW9zX3ZhbGlkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MDItXFxubW0vZGFtb24vY29yZS5jOjI0MDM6XFx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcXHUwMDI2cy1cXHUwMDNlcXVvdGEpIHx8ICFjLVxcdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjQwNC1cXHRcXHRyZXR1cm4gcmV0O1xcbm1tL2RhbW9uL2NvcmUuYy0yNDA1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNDA2OlxcdHJldHVybiBjLVxcdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZShjLCByLCBzKSBcXHUwMDNlPSBzLVxcdTAwM2VxdW90YS5taW5fc2NvcmU7XFxubW0vZGFtb24vY29yZS5jLTI0MDctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MTAtICogZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbigpIC0gQ2hlY2sgaWYgdGhlIGdpdmVuIHJlZ2lvbiBvciBzdGFydGluZyBwYXJ0IG9mXFxubW0vZGFtb24vY29yZS5jOjI0MTE6ICogaXQgaXMgYWxyZWFkeSBjaGFyZ2VkIGZvciB0aGUgREFNT1MgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jLTI0MTItICogQHQ6XFx0VGhlIHRhcmdldCBvZiB0aGUgcmVnaW9uLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MTYtICpcXG5tbS9kYW1vbi9jb3JlLmM6MjQxNzogKiBJZiBhIHF1b3RhIG9mIGEgc2NoZW1lIGhhcyBleGNlZWRlZCBpbiBhIHF1b3RhIGNoYXJnZSB3aW5kb3csIHRoZSBzY2hlbWUnc1xcbm1tL2RhbW9uL2NvcmUuYy0yNDE4LSAqIGFjdGlvbiB3b3VsZCBhcHBsaWVkIHRvIG9ubHkgYSBwYXJ0IG9mIHRoZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4gZnVsZmlsbGluZ1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI0MzQ9c3RhdGljIGJvb2wgZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0Mzcte1xcbm1tL2RhbW9uL2NvcmUuYzoyNDM4OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI0MzktXFx0dW5zaWduZWQgbG9uZyBzel90b19za2lwO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0NDEtXFx0LyogU2tpcCBwcmV2aW91c2x5IGNoYXJnZWQgcmVnaW9ucyAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQyOlxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tKSB7XFxubW0vZGFtb24vY29yZS5jOjI0NDM6XFx0XFx0aWYgKHQgIT0gcXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSlcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NC1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NS1cXHRcXHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQ2OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQ3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0OC1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0OS1cXHRcXHR9XFxubW0vZGFtb24vY29yZS5jOjI0NTA6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFxcdTAwMjZcXHUwMDI2XFxubW0vZGFtb24vY29yZS5jOjI0NTE6XFx0XFx0XFx0XFx0ci1cXHUwMDNlYXIuZW5kIFxcdTAwM2M9IHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUyLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm1tL2RhbW9uL2NvcmUuYy0yNDUzLVxcbm1tL2RhbW9uL2NvcmUuYzoyNDU0OlxcdFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSBcXHUwMDI2XFx1MDAyNiByLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNjXFxubW0vZGFtb24vY29yZS5jOjI0NTU6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV9hZGRyX2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ1NjpcXHRcXHRcXHRzel90b19za2lwID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSAtXFxubW0vZGFtb24vY29yZS5jLTI0NTctXFx0XFx0XFx0XFx0XFx0ci1cXHUwMDNlYXIuc3RhcnQsIG1pbl9yZWdpb25fc3opO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0NjUtXFx0XFx0fVxcbm1tL2RhbW9uL2NvcmUuYzoyNDY2OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYzoyNDY3OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ2OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYzNS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cXHRcXHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NDMtXFx0ICovXFxubW0vZGFtb24vY29yZS5jOjI2NDQ6XFx0aWYgKCFxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcXHUwMDNlIHN6X3JlZ2lvbilcXG5tbS9kYW1vbi9jb3JlLmM6MjY0NTpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9yZWdpb247XFxubW0vZGFtb24vY29yZS5jLTI2NDYtXFx0ZWxzZVxcbm1tL2RhbW9uL2NvcmUuYzoyNjQ3OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X2FwcGxpZWQgKyBtdWx0X2ZyYWMoXFxubW0vZGFtb24vY29yZS5jLTI2NDgtXFx0XFx0XFx0XFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxcbm1tL2RhbW9uL2NvcmUuYzoyNjQ5OlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VmYWlsX2NoYXJnZV9udW0sXFxubW0vZGFtb24vY29yZS5jOjI2NTA6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjY1MS19XFxubW0vZGFtb24vY29yZS5jLTI2NTItXFxubW0vZGFtb24vY29yZS5jOjI2NTM6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XFxubW0vZGFtb24vY29yZS5jOjI2NTY6XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVxcdFxcdHJldHVybiBmYWxzZTtcXG5tbS9kYW1vbi9jb3JlLmM6MjY1ODpcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1OS1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNjYxLVxcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFxcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xcbm1tL2RhbW9uL2NvcmUuYzoyNjYyOlxcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxcbm1tL2RhbW9uL2NvcmUuYy0yNjYzLVxcdCAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNjY0OlxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xcbm1tL2RhbW9uL2NvcmUuYy0yNjY1LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjY3PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2Njkte1xcbm1tL2RhbW9uL2NvcmUuYzoyNjcwOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI2NzEtXFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzA0LVxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxubW0vZGFtb24vY29yZS5jOjI3MDU6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9kYW1vbi9jb3JlLmM6MjcwNjpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzA3OlxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxubW0vZGFtb24vY29yZS5jLTI3MDgtXFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjcyMi1cXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxubW0vZGFtb24vY29yZS5jOjI3MjM6XFx0XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgKz0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2ZW5kKSAtXFxubW0vZGFtb24vY29yZS5jLTI3MjQtXFx0XFx0XFx0dGltZXNwZWM2NF90b19ucyhcXHUwMDI2YmVnaW4pO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI1OlxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI2OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI4OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbm1tL2RhbW9uL2NvcmUuYy0yNzI5LVxcdFxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzM4PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxubW0vZGFtb24vY29yZS5jOjI3NDU6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzUyLVxcbm1tL2RhbW9uL2NvcmUuYzoyNzUzOlxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNzU0OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSlcXG5tbS9kYW1vbi9jb3JlLmMtMjc1NS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzc3LSAqXFxubW0vZGFtb24vY29yZS5jOjI3Nzg6ICogVGhpcyBmdW5jdGlvbiBjb3VsZCBzcGxpdCByZWdpb25zIGZvciBrZWVwaW5nIHRoZSBxdW90YS4gIFRvIG1pbmltaXplXFxubW0vZGFtb24vY29yZS5jLTI3NzktICogb3ZlcmhlYWQgZnJvbSB0aGUgc3BsaXQgb3BlcmF0aW9ucyBpbmNyZWFzZWQgbnVtYmVyIG9mIHJlZ2lvbnMsIHRoaXNcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzkwPXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI4MDAtXFx0XFx0ICogZGFtb25fZG9fYXBwbHlfc2NoZWVtcygpIGNvdWxkIHNwbGl0IHRoZSByZWdpb24gZm9yIHRoZVxcbm1tL2RhbW9uL2NvcmUuYzoyODAxOlxcdFxcdCAqIHF1b3RhLiAgS2VlcGluZyB0aGUgbmV3IHNsaWNlcyBpcyBhbiBvdmVyaGVhZC4gIE1lcmdlIGJhY2tcXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cXHRcXHQgKiB0aGUgc2xpY2VzIGludG8gdGhlIHByZXZpb3VzIHJlZ2lvbiBpZiBpdCBkb2Vzbid0IGxvc2UgYW55XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjkwMD1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jOjI5MDE6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTI5MDIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI5Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG5tbS9kYW1vbi9jb3JlLmM6MjkyOTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG5tbS9kYW1vbi9jb3JlLmMtMjkzMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzA4Mj1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jOjMwODM6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMwODg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG5tbS9kYW1vbi9jb3JlLmM6MzA4OTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG5tbS9kYW1vbi9jb3JlLmMtMzA5MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzExOT1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMxMzQtXFxubW0vZGFtb24vY29yZS5jOjMxMzU6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbm1tL2RhbW9uL2NvcmUuYzozMTM2OlxcdFxcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMxMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMxNzktLyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMTgwOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3F1b3RhX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzE4MS17XFxubW0vZGFtb24vY29yZS5jOjMxODI6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxubW0vZGFtb24vY29yZS5jOjMxODM6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4NC1cXHR1bnNpZ25lZCBsb25nIGhpZ2hlc3Rfc2NvcmUgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy0zMTg1LVxcbm1tL2RhbW9uL2NvcmUuYzozMTg2OlxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzE4NzpcXHRcXHRkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKGMsIHMsIGdvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMTg4LVxcdFxcdGhpZ2hlc3Rfc2NvcmUgPSBtYXgoaGlnaGVzdF9zY29yZSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMTk2PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMxOTcte1xcbm1tL2RhbW9uL2NvcmUuYzozMTk4OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jOjMxOTk6XFx0dW5zaWduZWQgbG9uZyBzY29yZSA9IGRhbW9zX3F1b3RhX3Njb3JlKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjAwLVxcbm1tL2RhbW9uL2NvcmUuYzozMjAxOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dChcXG5tbS9kYW1vbi9jb3JlLmM6MzIwMjpcXHRcXHRcXHRtYXgocXVvdGEtXFx1MDAzZWVzel9icCwgMTAwMDBVTCksIHNjb3JlKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMy19XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzIwNT1zdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XFxubW0vZGFtb24vY29yZS5jOjMyMDg6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmM6MzIwOTpcXHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyMTAtXFxubW0vZGFtb24vY29yZS5jLTMyMTEtXFx0aWYgKHNjb3JlIFxcdTAwM2U9IDEwMDAwKVxcbm1tL2RhbW9uL2NvcmUuYzozMjEyOlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzozMjEzOlxcdGVsc2UgaWYgKHF1b3RhLVxcdTAwM2VzeilcXG5tbS9kYW1vbi9jb3JlLmM6MzIxNDpcXHRcXHRxdW90YS1cXHUwMDNlZXN6X2JwID0gcXVvdGEtXFx1MDAzZXN6ICogMTAwMDA7XFxubW0vZGFtb24vY29yZS5jLTMyMTUtXFx0ZWxzZVxcbm1tL2RhbW9uL2NvcmUuYzozMjE2OlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBVTE9OR19NQVg7XFxubW0vZGFtb24vY29yZS5jLTMyMTctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMTktLypcXG5tbS9kYW1vbi9jb3JlLmM6MzIyMDogKiBDYWxsZWQgb25seSBpZiBxdW90YS1cXHUwMDNlbXMsIG9yIHF1b3RhLVxcdTAwM2VzeiBhcmUgc2V0LCBvciBxdW90YS1cXHUwMDNlZ29hbHMgaXMgbm90IGVtcHR5XFxubW0vZGFtb24vY29yZS5jLTMyMjEtICovXFxubW0vZGFtb24vY29yZS5jOjMyMjI6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMy17XFxubW0vZGFtb24vY29yZS5jOjMyMjQ6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyNS1cXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIyNy1cXG5tbS9kYW1vbi9jb3JlLmM6MzIyODpcXHRpZiAoIXF1b3RhLVxcdTAwM2VtcyBcXHUwMDI2XFx1MDAyNiBsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyMjk6XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzIzMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIzMi1cXG5tbS9kYW1vbi9jb3JlLmM6MzIzMzpcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVxcdFxcdFxcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChjdHgsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMjM2OlxcdFxcdGVsc2UgaWYgKHF1b3RhLVxcdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfVEVNUE9SQUwpXFxubW0vZGFtb24vY29yZS5jLTMyMzctXFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMjM4OlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2Vlc3pfYnAgLyAxMDAwMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIzOS1cXHR9XFxubW0vZGFtb24vY29yZS5jLTMyNDAtXFxubW0vZGFtb24vY29yZS5jOjMyNDE6XFx0aWYgKHF1b3RhLVxcdTAwM2Vtcykge1xcbm1tL2RhbW9uL2NvcmUuYzozMjQyOlxcdFxcdGlmIChxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucylcXG5tbS9kYW1vbi9jb3JlLmM6MzI0MzpcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbm1tL2RhbW9uL2NvcmUuYzozMjQ0OlxcdFxcdFxcdFxcdFxcdDEwMDAwMDAsIHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI0NS1cXHRcXHRlbHNlXFxubW0vZGFtb24vY29yZS5jLTMyNDYtXFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxubW0vZGFtb24vY29yZS5jOjMyNDc6XFx0XFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cXHUwMDNlbXMsIGVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNDgtXFx0XFx0ZXN6ID0gbWF4KGN0eC1cXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjUwLVxcbm1tL2RhbW9uL2NvcmUuYzozMjUxOlxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1NDpcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxubW0vZGFtb24vY29yZS5jLTMyNTUtXFx0XFx0ZXN6ID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1NzpcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjU4LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjYwPXN0YXRpYyB2b2lkIGRhbW9zX3RyYWNlX2VzeihzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMsXFxubW0vZGFtb24vY29yZS5jOjMyNjE6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMzI2Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3MC1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMyNzE6XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI3NDpzdGF0aWMgdm9pZCBkYW1vc19hZGp1c3RfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzI3NjpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjc3LVxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4MS1cXG5tbS9kYW1vbi9jb3JlLmM6MzI4MjpcXHRpZiAoIXF1b3RhLVxcdTAwM2VtcyBcXHUwMDI2XFx1MDAyNiAhcXVvdGEtXFx1MDAzZXN6IFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpXFxubW0vZGFtb24vY29yZS5jLTMyODMtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyODUtXFx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMjg2OlxcdGlmICghcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXFx1MDAyNlxcdTAwMjYgIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzI4NzpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9mcm9tID0gamlmZmllcztcXG5tbS9kYW1vbi9jb3JlLmM6MzI4ODpcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjg5LVxcdFxcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxcbm1tL2RhbW9uL2NvcmUuYzozMjkwOlxcdFxcdFxcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTMyOTEtXFx0fVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyOTMtXFx0LyogTmV3IGNoYXJnZSB3aW5kb3cgc3RhcnRzICovXFxubW0vZGFtb24vY29yZS5jOjMyOTQ6XFx0aWYgKCF0aW1lX2luX3JhbmdlX29wZW4oamlmZmllcywgcXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSxcXG5tbS9kYW1vbi9jb3JlLmM6MzI5NTpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9mcm9tICtcXG5tbS9kYW1vbi9jb3JlLmM6MzI5NjpcXHRcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKHF1b3RhLVxcdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyOTc6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjk4LVxcdFxcdFxcdHMtXFx1MDAzZXN0YXQucXRfZXhjZWVkcysrO1xcbm1tL2RhbW9uL2NvcmUuYzozMjk5OlxcdFxcdHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6ICs9IHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6O1xcbm1tL2RhbW9uL2NvcmUuYzozMzAwOlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xcbm1tL2RhbW9uL2NvcmUuYzozMzAxOlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwMi1cXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSlcXG5tbS9kYW1vbi9jb3JlLmM6MzMwMzpcXHRcXHRcXHRjYWNoZWRfZXN6ID0gcXVvdGEtXFx1MDAzZWVzejtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNDpcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMzA1OlxcdFxcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IHF1b3RhLVxcdTAwM2Vlc3ogIT0gY2FjaGVkX2VzeilcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNjpcXHRcXHRcXHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzA3LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzMyLVxcdFxcdGN1bXVsYXRlZF9zeiArPSBjLVxcdTAwM2VyZWdpb25zX3Njb3JlX2hpc3RvZ3JhbVtzY29yZV07XFxubW0vZGFtb24vY29yZS5jOjMzMzM6XFx0XFx0aWYgKGN1bXVsYXRlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6IHx8ICFzY29yZSlcXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cXHRcXHRcXHRicmVhaztcXG5tbS9kYW1vbi9jb3JlLmMtMzMzNS1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMzMzY6XFx0cXVvdGEtXFx1MDAzZW1pbl9zY29yZSA9IHNjb3JlO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzM3LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMzU1PXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMzNzAtXFxubW0vZGFtb24vY29yZS5jOjMzNzE6XFx0XFx0ZGFtb3NfYWRqdXN0X3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzcyLVxcdH1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9Mzk9c3RhdGljIGJvb2wgY29tbWl0X2lucHV0cyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00My0gKlxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDQ6ICogV2hpbGUga2VlcGluZyB0aGUgY2FwcyB0aGF0IHNldCBieSBvdGhlciBxdW90YXMsIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0NTogKiBhdXRvbWF0aWNhbGx5IGluY3JlYXNlcyBhbmQgZGVjcmVhc2VzIHRoZSBlZmZlY3RpdmUgbGV2ZWwgb2YgdGhlIHF1b3RhXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00Ni0gKiBhaW1pbmcgdGhlIExSVSBbZGVdcHJpb3JpdGl6YXRpb25zIG9mIHRoZSBob3QgYW5kIGNvbGQgbWVtb3J5IHJlc3VsdGluZyBpblxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0xMDQ9bW9kdWxlX3BhcmFtKGNvbGRfbWluX2FnZSwgdWxvbmcsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTA1LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTA2OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fbHJ1X3NvcnRfcXVvdGEgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDctXFx0LyogVXNlIHVwIHRvIDEwIG1zIHBlciAxIHNlYywgYnkgZGVmYXVsdCAqL1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMTAtXFx0LnJlc2V0X2ludGVydmFsID0gMTAwMCxcXG5tbS9kYW1vbi9scnVfc29ydC5jOjExMTpcXHQvKiBXaXRoaW4gdGhlIHF1b3RhLCBtYXJrIGhvdHRlciByZWdpb25zIGFjY2Vzc2VkIGZpcnN0LiAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTEyLVxcdC53ZWlnaHRfc3ogPSAwLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMTUtfTtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjExNjpERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19USU1FX1FVT1RBKGRhbW9uX2xydV9zb3J0X3F1b3RhKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTExNy1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MTY0PURFRklORV9EQU1PTl9NT0RVTEVTX0RBTU9TX1NUQVRTX1BBUkFNUyhkYW1vbl9scnVfc29ydF9ob3Rfc3RhdCxcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE2NS1cXHRcXHRscnVfc29ydF90cmllZF9ob3RfcmVnaW9ucywgbHJ1X3NvcnRlZF9ob3RfcmVnaW9ucyxcXG5tbS9kYW1vbi9scnVfc29ydC5jOjE2NjpcXHRcXHRob3RfcXVvdGFfZXhjZWVkcyk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xNjctXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTE2OT1ERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19TVEFUU19QQVJBTVMoZGFtb25fbHJ1X3NvcnRfY29sZF9zdGF0LFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTcwLVxcdFxcdGxydV9zb3J0X3RyaWVkX2NvbGRfcmVnaW9ucywgbHJ1X3NvcnRlZF9jb2xkX3JlZ2lvbnMsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxNzE6XFx0XFx0Y29sZF9xdW90YV9leGNlZWRzKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE3Mi1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MTg4PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX2xydV9zb3J0X25ld19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5MC17XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTE6XFx0c3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhID0gZGFtb25fbHJ1X3NvcnRfcXVvdGE7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTItXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTM6XFx0LyogVXNlIGhhbGYgb2YgdG90YWwgcXVvdGEgZm9yIGhvdC9jb2xkIHBhZ2VzIHNvcnRpbmcgKi9cXG5tbS9kYW1vbi9scnVfc29ydC5jOjE5NDpcXHRxdW90YS5tcyA9IHF1b3RhLm1zIC8gMjtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5NS1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjAyLVxcdFxcdFxcdDAsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMDM6XFx0XFx0XFx0LyogdW5kZXIgdGhlIHF1b3RhLiAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjA0OlxcdFxcdFxcdFxcdTAwMjZxdW90YSxcXG5tbS9kYW1vbi9scnVfc29ydC5jLTIwNS1cXHRcXHRcXHQvKiAoRGUpYWN0aXZhdGUgdGhpcyBhY2NvcmRpbmcgdG8gdGhlIHdhdGVybWFya3MuICovXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTIyOC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzAtXFx0XFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDcuODI5MjU3MDc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTYwMzM0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5KipcblxuUmlnaHQsIHNvIERBTU9OLCB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciwgaGFzIGEgZmV3IGFjY2VzcyByb3V0ZXMsIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBhbmQgbGlrZWx5IG1vc3Qgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCBzeXNmcy4gVGhhdCdzIHRoZSBnby10byB1c3VhbGx5LCBhbmQgSSB3b3VsZCBjaGVjayBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCBpZiBgQ09ORklHX0RBTU9OX1NZU0ZTYCBpcyBlbmFibGVkLCBhcyBpdCBwcm9iYWJseSB3aWxsIGJlLiBCdXQgaWYgdGhhdCdzIG5vdCBhdmFpbGFibGUsIG9yIEknbSBkb2luZyBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYywgaXQgY2FuIGFsc28gYmUgYWNjZXNzZWQgdGhyb3VnaCBkZWJ1Z2ZzIG9yIG1vZHVsZSBwYXJhbWV0ZXJzLCB1bmRlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaWtlIGBDT05GSUdfREFNT05fUkVDTEFJTWAgb3IgYENPTkZJR19EQU1PTl9MUlVfU09SVGAuIEdvb2QgdG8ga25vdyB0aGUgYWx0ZXJuYXRpdmVzLlxuXG5Ob3csIEknbSB0aGlua2luZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGV4cG9zdXJlIGluIHN5c2ZzIGZpcnN0LiBMZXQncyBzZWUgaG93IHRoYXQncyBzdHJ1Y3R1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzkxNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjEwLjg4NTI5Mjk4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1Nzg4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3Nfc3lzZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MDIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQyPXZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTE9aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU6c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2ModW5zaWduZWQgY2hhciBoaXRzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIyOlxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqcHJvYmU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxPXN0YXRpYyBzc2l6ZV90IGhpdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICpwcm9iZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3Byb2JlX2hpdHNfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5LVxcdFxcdF9fQVRUUl9ST19NT0RFKGhpdHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3Byb2JlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOlxcdFxcdTAwMjZkYW1vc19zeXNmc19wcm9iZV9oaXRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19wcm9iZSk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZV9rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTg6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZV9yZWxlYXNlLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OS1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19wcm9iZV9ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OnN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02OC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2OTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MC1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpkYW1vc19zeXNmc19wcm9iZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2LX1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc4OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2JlcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo4MDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyID0gcHJvYmVzLVxcdTAwM2Vwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04MS1cXHRpbnQgaTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTA6c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05MS1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbilcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05My1cXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo5NDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05NS1cXHRpbnQgaSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA5LVxcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHByb2JlLCBjdHgpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTEwOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTEtXFx0XFx0aW50IGVycjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTEyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTM6XFx0XFx0c3lzX3Byb2JlID0gZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2MoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNC1cXHRcXHRcXHRcXHRkYW1vbl9wcm9iZV9oaXRzX212c3VtKGksIHJlZ2lvbiwgY3R4KSk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNS1cXHRcXHRpZiAoIXN5c19wcm9iZSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocHJvYmVzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTE3LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExOS1cXHRcXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcXHUwMDI2c3lzX3Byb2JlLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjA6XFx0XFx0XFx0XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlLCBcXHUwMDI2cHJvYmVzLVxcdTAwM2Vrb2JqLCBcXFwiJWRcXFwiLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjEtXFx0XFx0XFx0XFx0aSk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIzLVxcdFxcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZzeXNfcHJvYmUtXFx1MDAzZWtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjQ6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocHJvYmVzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI1LVxcdFxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZXNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzLVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUwPXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTUtXFx0dW5zaWduZWQgbG9uZyBzel9maWx0ZXJfcGFzc2VkO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTctXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWxsb2MoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzY6c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4MC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBkYW1vc19zeXNmc19wcm9iZXNfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyLVxcdGludCBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTg1LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODY6XFx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXFx1MDAyNnByb2Jlcy1cXHUwMDNla29iaiwgXFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTg3LVxcdFxcdFxcdFxcdTAwMjZyZWdpb24tXFx1MDAzZWtvYmosIFxcXCJwcm9iZXNcXFwiKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODktXFx0XFx0Z290byBmYWlsO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTA6XFx0ZXJyID0gZGFtb3Nfc3lzZnNfcHJvYmVzX2FkZF9kaXJzKHByb2JlcywgY3R4LCBkcmVnaW9uKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTkxLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjAxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDI6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcmVnaW9uX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwMy1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDU6XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocmVnaW9uLVxcdTAwM2Vwcm9iZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDYtXFx0a29iamVjdF9wdXQoXFx1MDAyNnJlZ2lvbi1cXHUwMDNlcHJvYmVzLVxcdTAwM2Vrb2JqKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMjg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcm1fZGlycyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzMtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHIsIG5leHQsIFxcdTAwMjZyZWdpb25zLVxcdTAwM2VyZWdpb25zX2xpc3QsIGxpc3QpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzM0OlxcdFxcdGRhbW9zX3N5c2ZzX3JlZ2lvbl9ybV9kaXJzKHIpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzUtXFx0XFx0bGlzdF9kZWwoXFx1MDAyNnItXFx1MDAzZWxpc3QpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjAtLypcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTIxOiAqIGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciAtIExheWVycyBoYW5kbGluZyBmaWx0ZXJzIG9mIGEgZGlyLlxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjItICovXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyMzplbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjQtXFx0REFNT1NfU1lTRlNfRklMVEVSX0hBTkRMRV9MQVlFUl9DT1JFLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyOT1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MzE6XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGhhbmRsZV9sYXllcjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMyLVxcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01NDE9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDI6XFx0XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDMte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1MS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTUyOnN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTUzLVxcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU4OmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1OS1cXHR7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYwMDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDE6XFx0XFx0Y29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUgKnR5cGVfbmFtZTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjAyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDM6XFx0XFx0dHlwZV9uYW1lID0gXFx1MDAyNmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MDQtXFx0XFx0aWYgKHR5cGVfbmFtZS1cXHUwMDNldHlwZSA9PSBmaWx0ZXItXFx1MDAzZXR5cGUpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTA6c3RhdGljIGJvb2wgZGFtb3Nfc3lzZnNfc2NoZW1lX2ZpbHRlcl92YWxpZF90eXBlKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTE6XFx0XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MTItXFx0XFx0ZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTYyNz1zdGF0aWMgc3NpemVfdCB0eXBlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzKTsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzNjpcXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSAqdHlwZV9uYW1lO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MzctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzODpcXHRcXHR0eXBlX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZXNbaV07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzOS1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCB0eXBlX25hbWUtXFx1MDAzZW5hbWUpKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY0MDpcXHRcXHRcXHRpZiAoIWRhbW9zX3N5c2ZzX3NjaGVtZV9maWx0ZXJfdmFsaWRfdHlwZShcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjQxLVxcdFxcdFxcdFxcdFxcdFxcdGZpbHRlci1cXHUwMDNlaGFuZGxlX2xheWVyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5Mj1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODk0OlxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBoYW5kbGVfbGF5ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5NS1cXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqKmZpbHRlcnNfYXJyO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5OT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzICpcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTAwOmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2FsbG9jKGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtOTAxLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDI5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyAqZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19hbGxvYyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDQ1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDQ2OnN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNDctXFx0ZW51bSBkYW1vc193bWFya19tZXRyaWMgbWV0cmljO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwNTE6c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUyOmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tdID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDUzLVxcdHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDYzPXN0YXRpYyBzc2l6ZV90IG1ldHJpY19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA2OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA3MDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZXMpOyBpKyspIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA3MTpcXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWUgKm1ldHJpY19uYW1lO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDcyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDczOlxcdFxcdG1ldHJpY19uYW1lID0gXFx1MDAyNmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tpXTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA3NC1cXHRcXHRpZiAobWV0cmljX25hbWUtXFx1MDAzZW1ldHJpYyA9PSB3YXRlcm1hcmtzLVxcdTAwM2VtZXRyaWMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTA4MD1zdGF0aWMgc3NpemVfdCBtZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDg3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDg4OlxcdFxcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwODktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwOTA6XFx0XFx0bWV0cmljX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDkxLVxcdFxcdGlmIChzeXNmc19zdHJlcShidWYsIG1ldHJpY19uYW1lLVxcdTAwM2VuYW1lKSkge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjE0LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE1OnN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjQ6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI2OlxcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI5OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzAtXFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIzND1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIzNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzYtXFx0e1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyNzg9c3RhdGljIHNzaXplX3QgdGFyZ2V0X21ldHJpY19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjgxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyODI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjgzLVxcdGludCBpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjg0LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg2OlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyODg6XFx0XFx0bWV0cmljX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjg5LVxcdFxcdGlmIChtZXRyaWNfbmFtZS1cXHUwMDNlbWV0cmljID09IGdvYWwtXFx1MDAzZW1ldHJpYylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI5Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI5OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXFx0aW50IGk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzKTsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDM6XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lICptZXRyaWNfbmFtZTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMwNTpcXHRcXHRtZXRyaWNfbmFtZSA9IFxcdTAwMjZkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbaV07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDYtXFx0XFx0aWYgKHN5c2ZzX3N0cmVxKGJ1ZiwgbWV0cmljX25hbWUtXFx1MDAzZW5hbWUpKSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzMzPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMzOC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXFx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXFx1MDAyNmdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM1NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBuaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNjgtXFx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2VuaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVxcdGludCBsZW47XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVxcdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDEwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMC1cXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXFx0XFx0X19BVFRSX1JXX01PREUoY3VycmVudF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyOS1cXHRcXHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVxcdFxcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM0OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9uaWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5OlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3BhdGhfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVxcdE5VTEwsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDEtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDYtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NzpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyO1xcdC8qIGNvdW50ZWQgYnkgbnIgKi9cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MDpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjU6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FyciA9IGdvYWxzLVxcdTAwM2Vnb2Fsc19hcnI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MDpzdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMsIGludCBucl9nb2FscylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ4Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODM6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnIsICpnb2FsO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg0LVxcdGludCBlcnIsIGk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0ODUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODY6XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0ODctXFx0aWYgKCFucl9nb2FscylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDk2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9nb2FsczsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0OTc6XFx0XFx0Z29hbCA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5OC1cXHRcXHRpZiAoIWdvYWwpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ5OTpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwMC1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAzLVxcdFxcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFxcdTAwMjZnb2FsLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA0OlxcdFxcdFxcdFxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX2t0eXBlLCBcXHUwMDI2Z29hbHMtXFx1MDAzZWtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MDUtXFx0XFx0XFx0XFx0XFxcIiVkXFxcIiwgaSk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNy1cXHRcXHRcXHRrb2JqZWN0X3B1dChcXHUwMDI2Z29hbC1cXHUwMDNla29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MDg6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MDktXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNTE4PXN0YXRpYyBzc2l6ZV90IG5yX2dvYWxzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUyMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MjE6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2FscyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUyNz1zdGF0aWMgc3NpemVfdCBucl9nb2Fsc19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUzMDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTMxLVxcdGludCBuciwgZXJyID0ga3N0cnRvaW50KGJ1ZiwgMCwgXFx1MDAyNm5yKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTM3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTM4OlxcdGdvYWxzID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MzktXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU0MS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTQyOlxcdGVyciA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKGdvYWxzLCBucik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTUwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTUyOlxcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMsIGtvYmopKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ucl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1Ni1cXHRcXHRfX0FUVFJfUldfTU9ERShucl9nb2FscywgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTg6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTk6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX25yX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU2MC1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTYxLX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjI6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19xdW90YV9nb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY2LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1Njc6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY4LX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTY4ND1zdHJ1Y3QgZGFtb25fc3lzZnNfcXVvdGFzIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg2LVxcdHN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzICp3ZWlnaHRzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODgtXFx0dW5zaWduZWQgbG9uZyBtcztcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzAyPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcXVvdGFzX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMgKnF1b3RhcylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzA0LVxcdHN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzICp3ZWlnaHRzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzA1OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MDYtXFx0aW50IGVycjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzE5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzIwOlxcdGdvYWxzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcyMS1cXHRpZiAoIWdvYWxzKSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcyNS1cXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcXHUwMDI2Z29hbHMtXFx1MDAzZWtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3MjY6XFx0XFx0XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2t0eXBlLCBcXHUwMDI2cXVvdGFzLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzI3LVxcdFxcdFxcdFxcXCJnb2Fsc1xcXCIpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE3Mzg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcXVvdGFzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyAqcXVvdGFzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3NDAtXFx0a29iamVjdF9wdXQoXFx1MDAyNnF1b3Rhcy1cXHUwMDNld2VpZ2h0cy1cXHUwMDNla29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NDE6XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhxdW90YXMtXFx1MDAzZWdvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0Mi1cXHRrb2JqZWN0X3B1dChcXHUwMDI2cXVvdGFzLVxcdTAwM2Vnb2Fscy1cXHUwMDNla29iaik7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgwOD1zdGF0aWMgc3NpemVfdCBlZmZlY3RpdmVfYnl0ZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODE2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODE3OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgxOC1cXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfdHVuZXIgdHVuZXI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTgyMjpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX3R1bmVyX25hbWUgZGFtb3Nfc3lzZnNfcWdvYWxfdHVuZXJfbmFtZXNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMy1cXHR7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgzMz1zdGF0aWMgc3NpemVfdCBnb2FsX3R1bmVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgzOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg0MDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lcyk7IGkrKykge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjoxMC45MzE4NzY1MzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjcyOTk3OTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgZnVuY3Rpb24gaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGhvdyB0aGlzIHNwZWNpZmljIGNoYW5nZSBpbXBhY3RzIGl0cyBsb2dpYy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBFc3NlbnRpYWxseSwgdGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUgKGBlc3pgKSBiYXNlZCBvbiBzZXZlcmFsIGZhY3RvcnMgdGllZCB0byB0aGUgYGRhbW9zYCBzdHJ1Y3R1cmUgYW5kIGl0cyBhc3NvY2lhdGVkIGBxdW90YWAuXG5cbkluaXRpYWxseSwgaWYgbmVpdGhlciBgcXVvdGEtXHUwMDNlbXNgIGlzIHNldCAqYW5kKiB0aGUgZ29hbCBsaXN0IGlzIGVtcHR5LCB0aGVuIGBlc3pgIHNpbXBseSBkZWZhdWx0cyB0byBgcXVvdGEtXHUwMDNlc3pgLCB3aGljaCBtYWtlcyBzZW5zZS4gIE5vdywgaWYgdGhlcmUgKmFyZSogZ29hbHMgc2V0LCBpdCB1c2VzIG9uZSBvZiB0aGUgZ29hbCB0dW5lcnMgKHRlbXBvcmFsIG9yIGNvbnNpc3RlbnQpIHRvIGFkanVzdCBgZXN6X2JwYC4gVGhlIGtleSBwb2ludCBpczogaWYgdGhlIGdvYWwgdHVuaW5nIGxvZ2ljIHNldHMgYHF1b3RhLVx1MDAzZWVzel9icGAgdG8gMCAod2hpY2ggSSByZWNhbGwgZnJvbSBteSBwcmV2aW91cyB1bmRlcnN0YW5kaW5nIGlzIHF1aXRlIHBvc3NpYmxlLCBlc3BlY2lhbGx5IHdpdGggYHNjb3JlIFx1MDAzZT0gMTAwMDBgKSwgdGhlbiB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdy5cblxuSGVyZSdzIHdoZXJlIGl0IGdvdCBpbnRlcmVzdGluZy4gIEV2ZW4gaWYgYGVzel9icGAgd2FzIHplcm8gZHVlIHRvIGdvYWwgdHVuaW5nLCBpZiBgcXVvdGEtXHUwMDNlbXNgIHdhcyBzdWJzZXF1ZW50bHkgc2V0LCB0aGUgY29kZSB3b3VsZCBjYWxjdWxhdGUgYGVzemAgYXMgdGhlIG1pbmltdW0gb2Ygc29tZSB0aHJvdWdocHV0IHZhbHVlIG11bHRpcGxpZWQgYnkgYHF1b3RhLVx1MDAzZW1zYCwgKmFuZCogdGhlIChub3cgemVybykgYGVzemAgdmFsdWUuICBPZiBjb3Vyc2UsIHRoZSBtaW5pbXVtIG9mIDAgYW5kIGFueXRoaW5nIGlzIDAuIEhvd2V2ZXIsIHRoZSBuZXh0IGxpbmUgYGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtgIHdvdWxkIHRoZW4gc2V0IGBlc3pgIHRvIGBjdHgtXHUwMDNlbWluX3JlZ2lvbl9zemAuICBTbywgeW91J2QgZW5kIHVwIHdpdGggYSBub24temVybyBgZXN6YCBldmVuIHRob3VnaCBnb2FsIHR1bmluZyBoYWQgZGVsaWJlcmF0ZWx5IHplcm9lZCBvdXQgYGVzel9icGAuXG5cblRoZSBuZXcgY2hlY2sgYGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKSBlc3ogPSAwO2AgYWRkcmVzc2VzIHRoaXMuICBJdCAqZm9yY2VzKiBgZXN6YCB0byB6ZXJvIHdoZW4gYGVzel9icGAgaXMgemVybywgd2hpY2ggaXMgdGhlIGludGVuZGVkIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBnb2FsIHR1bmluZy4gUHJldmlvdXNseSwgdGhlIGBtYXhgIGZ1bmN0aW9uIHdhcyBlZmZlY3RpdmVseSBvdmVycmlkaW5nIHRoZSB6ZXJvIHZhbHVlLlxuXG5JIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgcXVvdGEtXHUwMDNlZ29hbHNgIGlzIGVtcHR5LCBidXQgYHF1b3RhLVx1MDAzZW1zYCAqaXMqIHNldC4gIEkga25vdyBgZGFtb3NfcXVvdGFfaW5pdGAgc2V0cyBgcXVvdGEtXHUwMDNlZXN6X2JwID0gMGAgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBTbywgdGhlIGNvbmRpdGlvbiBgIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKWAgaXMgZmFsc2UuICBJbiB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGZ1bmN0aW9uLCBpZiBgIWxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpYCBpcyBmYWxzZSwgaXQgbWVhbnMgd2UgZG9uJ3QgdXNlIGdvYWwgdHVuaW5nLiAgVGh1cywgYGVzemAgd291bGQgcmVtYWluIHVuaW5pdGlhbGl6ZWQuICAoSGFuZyBvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgdGhlIGNhc2Ugd2hlcmUgYGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpYCBhbmQgYHF1b3RhLVx1MDAzZW1zICE9IDBgISBMZXQgbWUgcmV2aWV3IHRob3NlIGxpbmVzLi4uKVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjoxNy42NjE4NTkwODRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjIwOlxcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVxcdTAwM2Vtcywgb3IgcXVvdGEtXFx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVxcdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcXG4zMjIxOlxcdCAqL1xcbjMyMjI6XFx0c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG4zMjIzOlxcdHtcXG4zMjI0OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIyNTpcXHRcXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuMzIyNjpcXHRcXHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcXG4zMjI3OlxcdFxcbjMyMjg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlbXMgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSkge1xcbjMyMjk6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcbjMyNDA6XFx0XFxuMzI0MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZW1zKSB7XFxuMzI0MjpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpXFxuMzI0MzpcXHRcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbjMyNDQ6XFx0XFx0XFx0XFx0XFx0XFx0MTAwMDAwMCwgcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xcbjMyNDU6XFx0XFx0XFx0ZWxzZVxcbjMyNDY6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxuMzI0NzpcXHRcXHRcXHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVxcdTAwM2VtcywgZXN6KTtcXG4zMjQ4OlxcdFxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxuMzI0OTpcXHRcXHR9XFxuMzI1MDpcXHRcXG4zMjUxOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbjMyNTI6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbjMyNTM6XFx0XFxuMzI1NDpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuMzI1NTpcXHRcXHRcXHRlc3ogPSAwO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbjMyNTg6XFx0fVxcbjMyNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjE3LjY2MjEwNTE1NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzEwNDgwMzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYSBEQU1PTiBDb3JlIExvZ2ljIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2hlbiBgcXVvdGEtXHUwMDNlZ29hbHNgIGlzIGVtcHR5LCBgcXVvdGEtXHUwMDNlZXN6X2JwYCBzdGF5cyBhdCB6ZXJvLiBUaGF0J3MgZmluZSwgYnV0IHRoZW4gdGhlIGNvZGUgZ29lcyBvbiB0byBjaGVjayBgaWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApIGVzeiA9IDA7YC4gVGhpcyBtZWFucyBpZiBzb21lb25lIGRlZmluZXMgYSB0aW1lIHF1b3RhIChgcXVvdGEtXHUwMDNlbXNgKSBidXQgKmRvZXNuJ3QqIHNldCBhbnkgZ29hbHMsIHRoZSBlZmZlY3RpdmUgc2NoZW1lIHNpemUgKGBxdW90YS1cdTAwM2Vlc3pgKSBnZXRzIHNldCB0byB6ZXJvISBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBEQU1PTiBmcmFtZXdvcmsuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggc2VyaW91cyBhdHRlbnRpb24/IEZpcnN0LCBsZXQncyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgdGhpcyBjb25kaXRpb24gaW4gYSB0ZXN0IGVudmlyb25tZW50LlxuXG5ZZXMsIERBTU9OJ3Mgc3lzZnMgaW50ZXJmYWNlIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCkgKmlzKiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVS4gVGhhdCdzIGdvb2QgbmV3cy4gQW5kIERBTU9OIHJlY2xhaW0sIHRoZSBMUlUgc29ydCwgYW5kIHRoZSBzeXNmcyBzY2hlbWVzIGFyZSBhbGwgcmVhY2hhYmxlIGluIHVzZXIgc3BhY2UgYW5kIGFyZSB0ZXN0ZWQgYWxyZWFkeS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlOlxuXG4qICAgSXQgZGlyZWN0bHkgYWx0ZXJzIGtlcm5lbCBsb2dpYyBpbiBgbW0vZGFtb24vY29yZS5jYCAodGhhdCdzIGNvcmUgREFNT04gY29kZSlcbiogICBJdCdzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuKiAgIEl0IG1vZGlmaWVzIGhvdyB0aGUgYGVzemAgdmFsdWUgKGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSkgaXMgY2FsY3VsYXRlZFxuXG5JIGNvbmNsdWRlIHRoYXQgYFdvcnRoRnV6emluZyA9IHRydWVgLiBXZSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBmdXJ0aGVyLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnV6emluZyBzdHJhdGVneS4gV2UgbmVlZCB0byBpZGVudGlmeSByZWxldmFudDpcblxuMS4gIGBGb2N1c1N5bWJvbHNgXG4yLiAgYEVuYWJsZUNvbmZpZ3NgXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGluIGBtbS9kYW1vbi9gIGFuZCBsb29rIGZvciBlbnRyeSBwb2ludHMsIGV4cG9ydGVkIHN5bWJvbHMsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBhbmQga2V5IGZ1bmN0aW9ucyB0byBmdXp6LiBXZSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2AgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ0NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjIxLjk3MjU4ODc0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4NTY5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfLipxdW90YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgxMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jPTY4Mz12b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYzo2OTA6XFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxubW0vZGFtb24vY29yZS5jLTY5MS1cXHRcXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZSlcXG5tbS9kYW1vbi9jb3JlLmMtNjkyLXtcXG5tbS9kYW1vbi9jb3JlLmM6NjkzOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy02OTQtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG5tbS9kYW1vbi9jb3JlLmM6NzIzOlxcdGRhbW9zX2RlbF9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYzo3MjQ6XFx0ZGFtb3NfZnJlZV9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYy03MjUtfVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz03NDY9c3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cyxcXG5tbS9kYW1vbi9jb3JlLmM6NzQ5OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxubW0vZGFtb24vY29yZS5jLTc1MC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyAqd21hcmtzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc3NC1cXG5tbS9kYW1vbi9jb3JlLmM6Nzc1OlxcdHNjaGVtZS1cXHUwMDNlcXVvdGEgPSAqKGRhbW9zX3F1b3RhX2luaXQocXVvdGEpKTtcXG5tbS9kYW1vbi9jb3JlLmMtNzc2LVxcdC8qIHF1b3RhLmdvYWxzIHNob3VsZCBiZSBzZXBhcmF0ZWx5IHNldCBieSBjYWxsZXIgKi9cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MTU9dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgxNi17XFxubW0vZGFtb24vY29yZS5jOjgxNzpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZywgKmdfbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtODE4LVxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmYsICpuZXh0O1xcbm1tL2RhbW9uL2NvcmUuYy04MTktXFxubW0vZGFtb24vY29yZS5jOjgyMDpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZywgZ19uZXh0LCBcXHUwMDI2cy1cXHUwMDNlcXVvdGEpXFxubW0vZGFtb24vY29yZS5jOjgyMTpcXHRcXHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZyk7XFxubW0vZGFtb24vY29yZS5jLTgyMi1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMTY2PXZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6MTE3OTpcXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTgwLXtcXG5tbS9kYW1vbi9jb3JlLmM6MTE4MTpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtMTE4Mi1cXHRpbnQgaSA9IDA7XFxubW0vZGFtb24vY29yZS5jLTExODMtXFxubW0vZGFtb24vY29yZS5jOjExODQ6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxKSB7XFxubW0vZGFtb24vY29yZS5jLTExODUtXFx0XFx0aWYgKGkrKyA9PSBuKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jOjExOTI6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTIxNTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6MTIxNjpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjIxLVxcdFxcdGRzdC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IHNyYy1cXHUwMDNlY3VycmVudF92YWx1ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTIyMjpcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XFxubW0vZGFtb24vY29yZS5jLTEyMjMtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMjUtLyoqXFxubW0vZGFtb24vY29yZS5jOjEyMjY6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTIyNy0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxubW0vZGFtb24vY29yZS5jOjEyMzk6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XFxubW0vZGFtb24vY29yZS5jLTEyNDAtXFx0aW50IGkgPSAwLCBqID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI0MjpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxMjQzOlxcdFxcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSsrLCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ0LVxcdFxcdGlmIChzcmNfZ29hbClcXG5tbS9kYW1vbi9jb3JlLmM6MTI0NTpcXHRcXHRcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ2LVxcdFxcdGVsc2VcXG5tbS9kYW1vbi9jb3JlLmM6MTI0NzpcXHRcXHRcXHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ4LVxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MTI0OTpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xcbm1tL2RhbW9uL2NvcmUuYy0xMjUwLVxcdFxcdGlmIChqKysgXFx1MDAzYyBpKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjUxLVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjUyOlxcdFxcdG5ld19nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jLTEyNTMtXFx0XFx0XFx0XFx0c3JjX2dvYWwtXFx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI1NS1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1NjpcXHRcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjU3OlxcdFxcdGRhbW9zX2FkZF9xdW90YV9nb2FsKGRzdCwgbmV3X2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjU4LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTI2OTpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjcwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTUxOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUyNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUyNzpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXFx1MDAyNmRzdC1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmMtXFx1MDAzZXF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTUyOC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE4NjI9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2NS1cXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTg2NjpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtMTg2Ny1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODc0LVxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzY2hlbWUsIHNyYykge1xcbm1tL2RhbW9uL2NvcmUuYzoxODc1OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMTg3Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MTg3NzpcXHRcXHRcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XFxubW0vZGFtb24vY29yZS5jLTE4NzgtXFx0XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzODYtLypcXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0Llxcbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcXHRUaGUgcXVvdGEgdG8gY2hlY2suXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjM5MjpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19zZXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM5My17XFxubW0vZGFtb24vY29yZS5jLTIzOTQtXFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogfHwgcXVvdGEtXFx1MDAzZXN6IHx8IHF1b3RhLVxcdTAwM2VtcyB8fFxcbm1tL2RhbW9uL2NvcmUuYzoyMzk1OlxcdFxcdCFkYW1vc19xdW90YV9nb2Fsc19lbXB0eShxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTIzOTYtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzOTg9c3RhdGljIGJvb2wgZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MjQwMzpcXHRpZiAoIXJldCB8fCAhZGFtb3NfcXVvdGFfaXNfc2V0KFxcdTAwMjZzLVxcdTAwM2VxdW90YSkgfHwgIWMtXFx1MDAzZW9wcy5nZXRfc2NoZW1lX3Njb3JlKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjQzND1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XFxubW0vZGFtb24vY29yZS5jOjI0Mzg6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQzOS1cXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYzNS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cXHRcXHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NTItXFxubW0vZGFtb24vY29yZS5jOjI2NTM6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XFxubW0vZGFtb24vY29yZS5jOjI2NTY6XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjY3PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2Njkte1xcbm1tL2RhbW9uL2NvcmUuYzoyNjcwOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI2NzEtXFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzA0LVxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxubW0vZGFtb24vY29yZS5jOjI3MDU6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9kYW1vbi9jb3JlLmMtMjcwNi1cXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3MjQtXFx0XFx0XFx0dGltZXNwZWM2NF90b19ucyhcXHUwMDI2YmVnaW4pO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI1OlxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI2OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYy0yNzI3LVxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3Mzg9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NDQtXFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG5tbS9kYW1vbi9jb3JlLmM6Mjc0NTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NTMtXFx0XFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXFxubW0vZGFtb24vY29yZS5jOjI3NTQ6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI5MDA9c3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxcbm1tL2RhbW9uL2NvcmUuYzoyOTAxOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0yOTAyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yOTI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxubW0vZGFtb24vY29yZS5jOjI5Mjk6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTI5MzAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMwODI9c3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxcbm1tL2RhbW9uL2NvcmUuYzozMDgzOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0zMDg0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMDg4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxubW0vZGFtb24vY29yZS5jOjMwODk6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMwOTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxMTk9c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19odWdlcGFnZV9tZW1fYnAodm9pZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTM0LVxcbm1tL2RhbW9uL2NvcmUuYzozMTM1OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG5tbS9kYW1vbi9jb3JlLmM6MzEzNjpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0zMTM3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTc5LS8qIFJldHVybiB0aGUgaGlnaGVzdCBzY29yZSBzaW5jZSBpdCBtYWtlcyBzY2hlbWVzIGxlYXN0IGFnZ3Jlc3NpdmUgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzE4MDpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMxODEte1xcbm1tL2RhbW9uL2NvcmUuYzozMTgyOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYzozMTgzOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMxODQtXFx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MzE4NjpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XFxubW0vZGFtb24vY29yZS5jOjMxODc6XFx0XFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4OC1cXHRcXHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzE5Nj1zdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3Qoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0zMTk3LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzE5ODpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYzozMTk5OlxcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMC1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjA3LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYzozMjA5OlxcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjIxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMjIyOnN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyMjMte1xcbm1tL2RhbW9uL2NvcmUuYzozMjI0OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMyMjUtXFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG5tbS9kYW1vbi9jb3JlLmM6MzI2MTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjYyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MzI3MTpcXHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXFx1MDAzZWVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNzItfVxcbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxcbm1tL2RhbW9uL2NvcmUuYzozMjc0OnN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyNzUte1xcbm1tL2RhbW9uL2NvcmUuYzozMjc2OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMyNzctXFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjg3LVxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xcbm1tL2RhbW9uL2NvcmUuYzozMjg4OlxcdFxcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyODktXFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMyOTA6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI5MS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI5Ni1cXHRcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKHF1b3RhLVxcdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyOTc6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjk4LVxcdFxcdFxcdHMtXFx1MDAzZXN0YXQucXRfZXhjZWVkcysrO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMzMDMtXFx0XFx0XFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVxcdTAwM2Vlc3o7XFxubW0vZGFtb24vY29yZS5jOjMzMDQ6XFx0XFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNTpcXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcXHUwMDI2XFx1MDAyNiBxdW90YS1cXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXFxubW0vZGFtb24vY29yZS5jOjMzMDY6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwNy1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzcwLVxcbm1tL2RhbW9uL2NvcmUuYzozMzcxOlxcdFxcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi1cXHR9XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTEwND1tb2R1bGVfcGFyYW0oY29sZF9taW5fYWdlLCB1bG9uZywgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDUtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxMDY6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSBkYW1vbl9scnVfc29ydF9xdW90YSA9IHtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNy1cXHQvKiBVc2UgdXAgdG8gMTAgbXMgcGVyIDEgc2VjLCBieSBkZWZhdWx0ICovXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTE4OD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfc2NoZW1lKFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTAte1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTkxOlxcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YSA9IGRhbW9uX2xydV9zb3J0X3F1b3RhO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTkyLVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzEte1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjMyOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMzLVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzg6XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVxcdGlmICghZ29hbClcXG5tbS9kYW1vbi9scnVfc29ydC5jLTI0MC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjI0MTpcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChcXHUwMDI2aG90X3NjaGVtZS1cXHUwMDNlcXVvdGEsIGdvYWwpO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQyLVxcdC8qIGFpbSAwLjIgJSBnb2FsIGNvbmZsaWN0LCB0byBrZWVwIGxpdHRsZSBwaW5nIHBvbmcgKi9cXG5tbS9kYW1vbi9scnVfc29ydC5jOjI0MzpcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ0LVxcdFxcdFxcdDEwMDAwIC0gYWN0aXZlX21lbV9icCArIDIpO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDYtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDc6XFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXFx1MDAyNmNvbGRfc2NoZW1lLVxcdTAwM2VxdW90YSwgZ29hbCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDgtXFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9NDg9bW9kdWxlX3BhcmFtKG1pbl9hZ2UsIHVsb25nLCAwNjAwKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtNDktXFxubW0vZGFtb24vcmVjbGFpbS5jOjUwOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fcmVjbGFpbV9xdW90YSA9IHtcXG5tbS9kYW1vbi9yZWNsYWltLmMtNTEtXFx0LyogdXNlIHVwIHRvIDEwIG1zIHRpbWUsIHJlY2xhaW0gdXAgdG8gMTI4IE1pQiBwZXIgMSBzZWMgYnkgZGVmYXVsdCAqL1xcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTE5OS1cXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcXG5tbS9kYW1vbi9yZWNsYWltLmM6MjAwOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMDEtXFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyO1xcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTIzNS1cXHRpZiAocXVvdGFfbWVtX3ByZXNzdXJlX3VzKSB7XFxubW0vZGFtb24vcmVjbGFpbS5jOjIzNjpcXHRcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfU09NRV9NRU1fUFNJX1VTLFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMzctXFx0XFx0XFx0XFx0cXVvdGFfbWVtX3ByZXNzdXJlX3VzKTtcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMzktXFx0XFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vcmVjbGFpbS5jOjI0MDpcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YSwgZ29hbCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTI0MS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQzLVxcdGlmIChxdW90YV9hdXRvdHVuZV9mZWVkYmFjaykge1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDQ6XFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsIDEwMDAwKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ1LVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDctXFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IHF1b3RhX2F1dG90dW5lX2ZlZWRiYWNrO1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDg6XFx0XFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXFx1MDAyNnNjaGVtZS1cXHUwMDNlcXVvdGEsIGdvYWwpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDktXFx0fVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTE9aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3dhdGVybWFya3Nfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNzpcXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxOC1cXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjIzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIyNjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI3LX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjI5PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMzA6XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzEtXFx0Y2hhciAqbmFtZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjgwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjgyOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cXHRpbnQgaTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI5Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI5OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzMzPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMzOC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXFx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXFx1MDAyNmdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM1NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBuaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNjgtXFx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2VuaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVxcdGludCBsZW47XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVxcdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDEwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMC1cXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXFx0XFx0X19BVFRSX1JXX01PREUoY3VycmVudF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyOS1cXHRcXHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVxcdFxcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM0OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9uaWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5OlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3BhdGhfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVxcdE5VTEwsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDEtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDYtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NzpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyO1xcdC8qIGNvdW50ZWQgYnkgbnIgKi9cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MDpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjU6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FyciA9IGdvYWxzLVxcdTAwM2Vnb2Fsc19hcnI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MDpzdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMsIGludCBucl9nb2FscylcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MjIuMDI1NDUxNDYyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMTc1ODUxOTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUXVvdGEgTWFuYWdlbWVudCBDb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYC4gU2luY2UgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgd2lkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgaXQgYW5kIGZpbmQgb3V0IHRoZSBlbnRyeXBvaW50cyBvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGggZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4gRmlyc3QsIEknbGwgZXhhbWluZSB0aGUgY2FsbGVycyBvZiBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAuXG5cblJpZ2h0LCBJIHNlZSB0aGF0IGBkYW1vc19hZGp1c3RfcXVvdGFgIGNhbGxzIGl0LiBUaGF0J3MgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFsc28gc3RhdGljLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCBieSBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga3RocmVhZC4gVGhhdCdzIG9uZSBwYXRoLiBHb3QgaXQuIEFsc28sIEkgc2VlIGl0J3MgY2FsbGVkIGR1cmluZyB0aGUgREFNT04gY29tbWl0IHByb2Nlc3MsIGFuZCBkdXJpbmcgc3lzZnMgb3BlcmF0aW9ucyAtIHN0YXJ0LCB1cGRhdGUuXG5cbk5leHQsIEknbGwgYnJvYWRlbiBteSBzZWFyY2guIEknbGwgbmVlZCB0byBsb29rIGF0IGZ1bmN0aW9ucyBsaWtlIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgLCBgZGFtb3NfYWRkX3F1b3RhX2dvYWxgLCBgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHNgLCBgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNgLCBgZGFtb25fc3lzZnNfYXBwbHlfaW5wdXRzYC4gVGhvc2UgY291bGQgYmUgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSB0cmlnZ2VyIGEgY2FsbCB0byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMuXG5cbkZpbmFsbHksIHRvIGJlIHRob3JvdWdoLCBJJ2xsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJ2xsIGZvY3VzIG9uIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIE15IGFpbSBpcyB0byBsb29rIGZvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFjdCBhcyBpbnRlcmZhY2VzIG9yIGVudHJ5IHBvaW50cyBpbnRvIHRoaXMgcXVvdGEgbWFuYWdlbWVudCBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNTgsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MzQuMjAxMzA2NTQ4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MjA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfIF0qXFxcXCo/W2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jLTI1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNjpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmMtMjktXFxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUtLyogU2hvdWxkIGJlIGNhbGxlZCB1bmRlciBkYW1vbl9vcHNfbG9jayB3aXRoIGlkIHNtYWxsZXIgdGhhbiBOUl9EQU1PTl9PUFMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy01Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXFxubW0vZGFtb24vY29yZS5jOjcyOmludCBkYW1vbl9yZWdpc3Rlcl9vcHMoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgKm9wcylcXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTk4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYtXFxubW0vZGFtb24vY29yZS5jOjEyNzp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXFxubW0vZGFtb24vY29yZS5jLTEzMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQyOnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDctXFxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxubW0vZGFtb24vY29yZS5jLTE0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxcbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMTYxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTEtXFxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA3LVxcbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTktXFxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzMy1cXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzgtXFxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0My1cXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI1NS1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3My1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxubW0vZGFtb24vY29yZS5jLTI3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMDY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fbXZzdW0odW5zaWduZWQgbG9uZyBjdXJyZW50X25yLFxcbm1tL2RhbW9uL2NvcmUuYy0zMDctXFx0XFx0dW5zaWduZWQgbG9uZyBsYXN0X25yLCB1bnNpZ25lZCBsb25nIGxlZnRfd2luZG93X2JwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzI2OnVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0OS1cXG5tbS9kYW1vbi9jb3JlLmM6MzUwOnVuc2lnbmVkIGNoYXIgZGFtb25fcHJvYmVfaGl0c19tdnN1bShpbnQgcHJvYmVfaWR4LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYzozNzU6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM3Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzc5LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODktICovXFxubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNC1cXG5tbS9kYW1vbi9jb3JlLmM6NDE1OnN0YXRpYyB2b2lkIGRhbW9uX2FkZF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MjMtICovXFxubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00MjUtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MzItI2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTQzNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy00Mzkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ0Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDQzOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NTAtXFxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ1NS1cXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ1Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxcbm1tL2RhbW9uL2NvcmUuYy00NzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00OTktXFx0XFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbm1tL2RhbW9uL2NvcmUuYy01MDgtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzktICovXFxubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MzAtXFxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtNjMyLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxubW0vZGFtb24vY29yZS5jLTY1NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxcbm1tL2RhbW9uL2NvcmUuYzo2NjU6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NzItXFxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY3NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxcbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjc5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02ODItXFxubW0vZGFtb24vY29yZS5jOjY4Mzp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY4NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy02OTAtXFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDUtXFxubW0vZGFtb24vY29yZS5jOjc0NjpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbm1tL2RhbW9uL2NvcmUuYy03NDctXFx0XFx0XFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc4Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03OTgtXFxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MDU6c3RhdGljIHZvaWQgZGFtb25fZGVsX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODQwOnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTYtXFxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg3Mi1cXG5tbS9kYW1vbi9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxcbm1tL2RhbW9uL2NvcmUuYzo4OTc6dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MDEtXFxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTkwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxcbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NjUtXFxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODItXFxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxubW0vZGFtb24vY29yZS5jLTk4NC1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTg5LS8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXFxubW0vZGFtb24vY29yZS5jLTk5MS1cXHRcXHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTk2LS8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXFxubW0vZGFtb24vY29yZS5jLTk5OC1cXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxubW0vZGFtb24vY29yZS5jLTEwMDQtXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwMDktXFxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA1OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMTctICovXFxubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTExMTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNjUtICovXFxubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExNjctXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExOTItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyODAtXFxubW0vZGFtb24vY29yZS5jOjEyODE6c3RhdGljIHN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX250aF9jb3JlX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkyLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMzA2LVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzMjUtXFxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTMyNy1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEzMzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNjItXFxubW0vZGFtb24vY29yZS5jOjEzNjM6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTE0MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MTYtXFxubW0vZGFtb24vY29yZS5jOjE0MTc6c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfcHJvYmVfcGFyYW1zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ2MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ5Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE1MDgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MTgtXFxubW0vZGFtb24vY29yZS5jOjE1MTk6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTQ1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE1NDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1ODEtXFxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTU4My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTYwMTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2MDItXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2MzUtXFxubW0vZGFtb24vY29yZS5jOjE2MzY6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNjYzOnN0YXRpYyB2b2lkIGRhbW9uX3JldmVydF90YXJnZXRfY29tbWl0cyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2NjQtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZmFpbGVkLCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTY3OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDMtXFxubW0vZGFtb24vY29yZS5jOjE3NDQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKmRzdCwgc3RydWN0IGRhbW9uX3ByZXAgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc0OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NzMtXFxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE3NzUtXFx0XFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3ODgtXFxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcXG5tbS9kYW1vbi9jb3JlLmMtMTc5MC1cXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxcbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTgyNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2MjpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTkxOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTk1MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcmVnaW9uX3N6X2xpbWl0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgdW5zaWduZWQgbG9uZyBzel9yKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDAyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX2FwcGx5X21pbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAyMS1cXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XFxubW0vZGFtb24vY29yZS5jLTIwMjMtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMDMzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTEzLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxMTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXFxubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjEzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE0OTpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjozNC4zNjMxMzMxMzZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA5MjA3NzQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBRdW90YSBNYW5hZ2VtZW50IC0gQSBRdWljayBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBlbGVtZW50cyBmb3IgbWFuYWdpbmcgREFNT04gcXVvdGFzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX25ld19zY2hlbWVgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCB0aGVuIHRoZSBxdW90YS1zcGVjaWZpYyBvbmVzIGxpa2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCwgYGRhbW9zX2FkZF9xdW90YV9nb2FsYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIE5lZWQgdG8ga2VlcCB0aG9zZSBzdHJhaWdodC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBEQU1PTmAgaXRzZWxmIGlzIGVuYWJsZWQsIGFuZCBvZiBjb3Vyc2UsIGBEQU1PTl9TWVNGU2Agc2luY2UgdGhhdCdzIHdoYXQgSSBhbSB3b3JraW5nIHdpdGguIEkgbmVlZCB0aGUgdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBtb25pdG9yaW5nIHNldHRpbmdzLCBzbyBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIG11c3QgYmUgc2V0LiBUaGUgc2FtZSBhcHBsaWVzIHRvIGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBiZWNhdXNlIHRoZXNlIGFyZSBuZWNlc3NhcnkgZm9yIHRoZSBqb2IgSSBhbSBkb2luZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGdsYW5jZSBvdmVyIGBtbS9kYW1vbi9LY29uZmlnYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgZXZlbiBpZiB0aGV5IGFyZW4ndCBkaXJlY3RseSBpbXBsaWNhdGVkIGluIHdoYXQgSSdtIGRvaW5nLiBJdCdzIGFsd2F5cyBnb29kIHRvIGhhdmUgdGhlIGJpZyBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjozOC40NTUyMTM3MjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDg0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG4gIDkzOlxcdFxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbiAgOTQ6XFx0XFx0ICB0aG9zZS5cXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxcbiAgOTc6XFx0XFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXFxuICA5ODpcXHRcXHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4gMTEwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTExOlxcdFxcdGhlbHBcXG4gMTEyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIGFjY2VzcyBtb25pdG9yaW5nIHN0YXRpc3RpY3Mgc3Vic3lzdGVtLlxcbiAxMTM6XFx0XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbiAxMTQ6XFx0XFx0ICBtZXRyaWNzLlxcbiAxMTU6XFx0XFxuIDExNjpcXHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG4gMTE3OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NUQVRcXG4gMTE5OlxcdFxcdGRlZmF1bHQgREFNT05fU1RBVFxcbiAxMjA6XFx0XFx0aGVscFxcbiAxMjE6XFx0XFx0ICBXaGV0aGVyIHRvIGVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHQuICBVc2VycyBjYW4gZGlzYWJsZSBpdCBpblxcbiAxMjI6XFx0XFx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICdlbmFibGVkJyBwYXJhbWV0ZXIuXFxuIDEyMzpcXHRcXG4gMTI0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MzguNDU1Mjk5MzY2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQwNTk2OTYzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREFNT04gS2VybmVsIENoYW5nZSBSZXZpZXcqKlxuXG5Pa2F5LCB0aW1lIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgb24gdGhpcyBEQU1PTiBwYXRjaC4gTGV0J3MgcnVuIHRocm91Z2ggaXQgc3lzdGVtYXRpY2FsbHkuIFRoZSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGBlc3ogPSAwYCBpZiBgIXF1b3RhLVx1MDAzZWVzel9icGAuIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwsIGNvcmUtbGV2ZWwga2VybmVsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBEQU1PTiBjYWxjdWxhdGVzIGVmZmVjdGl2ZSBxdW90YXMuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgcXVvdGEgY2FsY3VsYXRpb24gY2hhbmdlcyBjYW4gaGF2ZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIHNvIEkgd2FudCB0byBiZSB0aG9yb3VnaC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBJdCByZWxpZXMgb24gdGhlIHVzdWFsIHN1c3BlY3RzOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1ZBRERSYC4gSSdsbCB3YW50IHRvIGtlZXAgdGhvc2UgaW4gbWluZCBhcyBJIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdC5cblxuTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9uZXdfc2NoZW1lYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAsIGBkYW1vc19hZGRfcXVvdGFfZ29hbGAsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIGludGVyZmFjZXMgYW5kIGRhdGEgcGF0aHMgaW52b2x2ZWQgaW4gdGhpcyBxdW90YSBtYW5hZ2VtZW50IGFuZCB1cGRhdGUgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBmbG93IG9mIGRhdGEgdGhyb3VnaCB0aG9zZS5cblxuRmluYWxseSwgdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIEdvb2QuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGlzIGNoYW5nZSB3YXJyYW50cyByb2J1c3QgZnV6emluZy4gSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZ1enppbmcgcGxhbnMuXG5cbkFscmlnaHQsIHRoYXQncyBldmVyeXRoaW5nLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbG9nIHRoZSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3NzksIk91dHB1dFRva2VucyI6MjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6NDIuNTE0OTk3NzM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0MzQ1NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9uZXdfc2NoZW1lXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9zX25ld19xdW90YV9nb2FsXCIsXG4gICAgXCJkYW1vc19hZGRfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc1wiLFxuICAgIFwiZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fbmV3X3NjaGVtZVwiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vc19uZXdfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3NfYWRkX3F1b3RhX2dvYWxcIixcbiAgICBcImRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXNcIixcbiAgICBcImRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQyLjU5NDQzODIzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MTAzNDA3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo0Mi41OTQ5NjgwNDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjkwOTgwNjI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBlZmZlY3RpdmUgcXVvdGEgKGBlc3pgKSBpbiBEQU1PUyAoYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGluIGBtbS9kYW1vbi9jb3JlLmNgKSBieSByZXNldHRpbmcgYGVzemAgdG8gMCBpZiBgcXVvdGEtXFx1MDAzZWVzel9icGAgaXMgMC4gVGhpcyBpcyBwdXJlbHkgYW4gYXJpdGhtZXRpYyAvIGxvZ2ljIGFkanVzdG1lbnQgZm9yIERBTU9OIHF1b3RhIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgdXNlci1zcGFjZSBjb3B5IG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgzODE4ZmQzNGMwNTNiMTkxNGI1MmNmY2I5MTI2ZmQ4NzM2ZDFkMDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDIzOjQxOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMjUxLDYgKzMyNTEsOSBAQCBzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxuIFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuIFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbiBcbitcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuK1x0XHRlc3ogPSAwO1xuK1xuIFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQyLjU5NDk2ODg0MloiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTYxMTEzNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZyB3aXRoIHRoaXMgREFNT04gcGF0Y2guIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgcmVhbGx5LiBMb29raW5nIGF0IHRoZSBgZGlmZmAsIGl0J3MgY2xlYXIgdGhhdCB0aGUgbWFpbiBmb2N1cyBpcyBhcm91bmQgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgc2ltcGxlIGNoZWNrOiBgaWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApIGVzeiA9IDA7YCAgUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIHZhcmlhYmxlIGBlc3pgIGlzIHNvbWUga2luZCBvZiBlZmZlY3RpdmUgc2l6ZSBjYWxjdWxhdGlvbi4gVGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBjb25zaWRlcnMgYHF1b3RhLVx1MDAzZXN6YCwgZW5zdXJpbmcgdGhlIGVmZmVjdGl2ZSBzaXplIGRvZXNuJ3QgZXhjZWVkIHRoZSBxdW90YSBzaXplLiBUaGlzIG5ldyBjb25kaXRpb24gaXMgcHJvYmFibHkgYSBzYWZlZ3VhcmQsIG1lYW5pbmcgdGhhdCBpZiB0aGUgYmFja2luZyBwb2ludGVyIGZvciBlZmZlY3RpdmUgc2l6ZSBpcyBudWxsLCBpdCBzaG91bGQgYmUgZGVmYXVsdGVkIHRvIHplcm8uXG5cbkkgbmVlZCB0byBkaWcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgYW5kIGhvdyBgZXN6X2JwYCwgYGVzemAsIGFuZCBgcXVvdGFgIGFyZSB1c2VkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUsIGxpa2VseSB0byBjb250cm9sIG1lbW9yeSB1c2FnZSBvciBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBEQU1PTiBjb250ZXh0LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBiYWNraW5nIHBvaW50ZXIgaXMgdXNlZCB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIGVmZmVjdGl2ZSBzaXplLiBXaXRob3V0IGl0LCB0aGUgZWZmZWN0aXZlIHNpemUgc2hvdWxkIGJlIHplcm9lZC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgcXVvdGEtXHUwMDNlZXN6X2JwYCByZXByZXNlbnRzIHRvIGRldGVybWluZSB0aGUgY29tcGxldGUgaW1wYWN0LCBidXQgZnJvbSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgdGhpcyBmZWVscyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo0OC4xNTYwODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjMwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcbjMyNDA6XFx0XFxuMzI0MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZW1zKSB7XFxuMzI0MjpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpXFxuMzI0MzpcXHRcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbjMyNDQ6XFx0XFx0XFx0XFx0XFx0XFx0MTAwMDAwMCwgcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xcbjMyNDU6XFx0XFx0XFx0ZWxzZVxcbjMyNDY6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxuMzI0NzpcXHRcXHRcXHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVxcdTAwM2VtcywgZXN6KTtcXG4zMjQ4OlxcdFxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxuMzI0OTpcXHRcXHR9XFxuMzI1MDpcXHRcXG4zMjUxOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbjMyNTI6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbjMyNTM6XFx0XFxuMzI1NDpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuMzI1NTpcXHRcXHRcXHRlc3ogPSAwO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbjMyNTg6XFx0fVxcbjMyNTk6XFx0XFxuMzI2MDpcXHRzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxcbjMyNjE6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG4zMjYyOlxcdHtcXG4zMjYzOlxcdFxcdHVuc2lnbmVkIGludCBjaWR4ID0gMCwgc2lkeCA9IDA7XFxuMzI2NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xcbjMyNjU6XFx0XFxuMzI2NjpcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcXG4zMjY3OlxcdFxcdFxcdGlmIChzaXRlciA9PSBzKVxcbjMyNjg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzI2OTpcXHRcXHRcXHRzaWR4Kys7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQ4LjE1NjM1MDE3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDc1NTAxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGNvbnRleHQgb2YgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLCBzcGVjaWZpY2FsbHkgc3RhcnRpbmcgYXQgbGluZSAzMjE1LiBMZXQgbWUgZ3JhYiB0aGUgY29kZSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHdob2xlIGZ1bmN0aW9uLiBJJ20gbm90IGp1c3QgaW50ZXJlc3RlZCBpbiB0aGF0IHNwZWNpZmljIGxpbmUsIEkgd2FudCB0byBzZWUgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBhbnkgY2FsbHMgaXQgbWFrZXMsIGhvdyBpdCdzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0gaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3cgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiBpcyBjcml0aWNhbCB0byBncmFzcGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiB0byBkaWFnbm9zZSBvciBtb2RpZnkgaXQgd2l0aCBjb25maWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1MC40MDM5MDM4NDFaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjAwOlxcdFxcbjMyMDE6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IGRhbW9uX2ZlZWRfbG9vcF9uZXh0X2lucHV0KFxcbjMyMDI6XFx0XFx0XFx0XFx0bWF4KHF1b3RhLVxcdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XFxuMzIwMzpcXHR9XFxuMzIwNDpcXHRcXG4zMjA1OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4zMjA2OlxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4zMjA3OlxcdHtcXG4zMjA4OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIwOTpcXHRcXHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XFxuMzIxMDpcXHRcXG4zMjExOlxcdFxcdGlmIChzY29yZSBcXHUwMDNlPSAxMDAwMClcXG4zMjEyOlxcdFxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbjMyMTM6XFx0XFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZXN6KVxcbjMyMTQ6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IHF1b3RhLVxcdTAwM2VzeiAqIDEwMDAwO1xcbjMyMTU6XFx0XFx0ZWxzZVxcbjMyMTY6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcXG4zMjE3OlxcdH1cXG4zMjE4OlxcdFxcbjMyMTk6XFx0LypcXG4zMjIwOlxcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVxcdTAwM2Vtcywgb3IgcXVvdGEtXFx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVxcdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcXG4zMjIxOlxcdCAqL1xcbjMyMjI6XFx0c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG4zMjIzOlxcdHtcXG4zMjI0OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIyNTpcXHRcXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuMzIyNjpcXHRcXHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcXG4zMjI3OlxcdFxcbjMyMjg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlbXMgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSkge1xcbjMyMjk6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1MC40MDQxNjY0NjFaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTEwMDU4NDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbGAgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoZSBgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbGAgZnVuY3Rpb24gaXMgcGxheWluZyB3aXRoIGEgbWVtb3J5IHF1b3RhLCBzcGVjaWZpY2FsbHkgc2V0dGluZyBgcXVvdGEtXHUwMDNlZXN6X2JwYCB0byB6ZXJvIGlmIHRoZSBgc2NvcmVgIGhpdHMgMTAwMDAgb3IgbW9yZS4gVGhlbiwgaXQgbG9va3MgbGlrZSBgcXVvdGEtXHUwMDNlbXNgIGNvbWVzIGludG8gcGxheSwgcG90ZW50aWFsbHkgcmFpc2luZyB0aGUgYGVzemAgdmFsdWUsIGJ1dCB0aGVyZSdzIGEgZ3VhcmRyYWlsOiBpZiBgZXN6X2JwYCBpcyB6ZXJvLCBgZXN6YCBnZXRzIHBpbm5lZCB0byB6ZXJvIGFzIHdlbGwuIFRoYXTigJlzIHRoZSBjb3JlIGxvZ2ljLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXM/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC5cblxuMS4gICoqS2VybmVsLVVzZXIgU3BhY2UgQ29tbXVuaWNhdGlvbjoqKiBOb3BlLiBObyBuZXcga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSBhIHByb2JsZW0uIFRoaXMgaXMgaW50ZXJuYWwga2VybmVsIHN0dWZmLlxuMi4gICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vLCBgcXVvdGEtXHUwMDNlZXN6X2JwYCBpcyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIERBTU9OIHNjaGVtZSBxdW90YSBzZXR1cCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBjYXVzaW5nIGlzc3VlcyBpbiBjb25kaXRpb25hbCBsb2dpYy5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogTm9wZS4gVGhpcyBpc24ndCBhYm91dCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSBhIHByb2JsZW0gbGF0ZXIuXG40LiAgKipCdWZmZXIgQWNjZXNzOioqIE5vdCBoZXJlLiBUaGlzIGlzbid0IGFib3V0IGJvdW5kcyBjaGVja2luZyBvciBhY2Nlc3NpbmcgcGFydHMgb2YgYnVmZmVycyB0aGF0IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZC4gSXQncyBqdXN0IG51bWJlciBjcnVuY2hpbmcuXG5cblNvLCBhbSBJIHNlZWluZyBhbnkgcmVhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uIFRoZSBgcXVvdGFgIGZpZWxkcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIERBTU9OIHN1YnN5c3RlbSwgaW5pdGlhbGl6ZWQgZHVyaW5nIGNyZWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJdCdzIGp1c3QgYXJpdGhtZXRpYyBhbmQgcXVvdGEgY2FsY3VsYXRpb24uIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSB3b3VsZCBmbGFnLCBhbmQgaXQncyBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGBmYWxzZWAuIEkndmUgZG91YmxlLWNoZWNrZWQgZXZlcnl0aGluZywgc28gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyOSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1NS41MDQ3NTMzODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZWZmZWN0aXZlIHF1b3RhIChgZXN6YCkgaW4gREFNT1MgKGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBpbiBgbW0vZGFtb24vY29yZS5jYCkgYnkgcmVzZXR0aW5nIGBlc3pgIHRvIDAgaWYgYHF1b3RhLVxcdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 23:39:40 +0000 UTC FinishedAt: 2026-09-02 23:42:58 +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": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR" ], "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": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR" ], "series_id": "371880e2-7b4a-4bb5-8791-ccbe265e151f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_set_schemes", "damon_new_scheme", "damos_commit_quota_goals", "damos_new_quota_goal", "damos_add_quota_goal", "damos_sysfs_set_quota_scores", "damos_sysfs_update_effective_quotas" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9zX2NvbW1pdF9xdW90YV9nb2FscyYjMzQ7LAogICAgJiMzNDtkYW1vc19uZXdfcXVvdGFfZ29hbCYjMzQ7LAogICAgJiMzNDtkYW1vc19hZGRfcXVvdGFfZ29hbCYjMzQ7LAogICAgJiMzNDtkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBlZmZlY3RpdmUgcXVvdGEgKGBlc3pgKSBpbiBEQU1PUyAoYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGluIGBtbS9kYW1vbi9jb3JlLmNgKSBieSByZXNldHRpbmcgYGVzemAgdG8gMCBpZiBgcXVvdGEtXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFsdGVycyB0aGUgZWZmZWN0aXZlIHF1b3RhIGNhbGN1bGF0aW9uIGxvZ2ljIGluIERBTU9OIChEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29yaykgYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBlZmZlY3RpdmUgc2NoZW1lIHNpemUgcXVvdGEgdG8gMCBpZiBlc3pfYnAgaXMgMC4gVGhpcyBjaGFuZ2VzIERBTU9TIHNjaGVtZSBxdW90YSBlbmZvcmNlbWVudCBhbmQgYXV0b3R1bmluZyBiZWhhdmlvciwgbWFraW5nIGl0IGZ1bmN0aW9uYWxseSBpbXBhY3RmdWwgYW5kIHdvcnRoIGZ1enppbmcgdmlhIHRoZSBEQU1PTiBzeXNmcyAvIGtlcm5lbCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMjUxLDYgJiM0MzszMjUxLDkgQEAgc3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbiBcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbiBcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG4gXG4mIzQzO1x0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG4mIzQzO1x0XHRlc3ogPSAwO1xuJiM0MztcbiBcdHF1b3RhLVx1MDAzZWVzeiA9IGVzejtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9zX25ld19xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX2FkZF9xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MzgxOGZkMzRjMDUzYjE5MTRiNTJjZmNiOTEyNmZkODczNmQxZDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgMiAyMzo0MTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jCkBAIC0zMjUxLDYgJiM0MzszMjUxLDkgQEAgc3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcykKIAlpZiAocXVvdGEtJmd0O3N6ICZhbXA7JmFtcDsgcXVvdGEtJmd0O3N6ICZsdDsgZXN6KQogCQllc3ogPSBxdW90YS0mZ3Q7c3o7CiAKJiM0MzsJaWYgKCFxdW90YS0mZ3Q7ZXN6X2JwKQomIzQzOwkJZXN6ID0gMDsKJiM0MzsKIAlxdW90YS0mZ3Q7ZXN6ID0gZXN6OwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gVGhlIGZvY3VzIGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoIXF1b3RhLSZndDtlc3pfYnApIGVzeiA9IDA7YC4gSG1tLCB0aGlzIHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhbiBlZGdlIGNhc2UgcmVsYXRlZCB0byB0aGUgZXN0aW1hdGVkIHNpemUgKGBlc3pgKSB3aGVuIGBlc3pfYnBgIGlzIG51bGwuIFNvLCBwb3RlbnRpYWxseSBoYW5kbGluZyBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgcXVvdGEgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkLgoKTm93IEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb24gdGhlIGNvbnRleHQgaGVyZS4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBmaXJlIHVwIGBncmVwcGVyYCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFyb3VuZCBsaW5lIDMyNTEuIE5lZWQgdG8gbG9vayBpbnRvIGhvdyBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaXMgdXNlZCB3aXRoaW4gdGhlIERBTU9OIHN1YnN5c3RlbSwgaW52ZXN0aWdhdGUgYW55IHBvdGVudGlhbCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24sIGFuZCBjaGVjayByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciByZWxhdGVkIGNvZGUgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgYGVzemAgY2hlY2sgaXMgdHJ5aW5nIHRvIGFkZHJlc3Mgd2l0aGluIHRoZSBsYXJnZXIgREFNT04gZnJhbWV3b3JrIGFuZCB3aGF0IHRoZSBsaWtlbHkgaW1wbGljYXRpb25zIGFyZS4gSSBzaG91bGQgYWxzbyBjaGVjayBpZiB0aGUgYGVzel9icGAgdmFyaWFibGUgaXMgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyNDA6XHRcbjMyNDE6XHRcdGlmIChxdW90YS1cdTAwM2Vtcykge1xuMzI0MjpcdFx0XHRpZiAocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucylcbjMyNDM6XHRcdFx0XHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3osXG4zMjQ0Olx0XHRcdFx0XHRcdDEwMDAwMDAsIHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xuMzI0NTpcdFx0XHRlbHNlXG4zMjQ2Olx0XHRcdFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XG4zMjQ3Olx0XHRcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXHUwMDNlbXMsIGVzeik7XG4zMjQ4Olx0XHRcdGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcbjMyNDk6XHRcdH1cbjMyNTA6XHRcbjMyNTE6XHRcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbjMyNTI6XHRcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG4zMjUzOlx0XG4zMjU0Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWVzel9icClcbjMyNTU6XHRcdFx0ZXN6ID0gMDtcbjMyNTY6XHRcbjMyNTc6XHRcdHF1b3RhLVx1MDAzZWVzeiA9IGVzejtcbjMyNTg6XHR9XG4zMjU5Olx0XG4zMjYwOlx0c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbjMyNjE6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbjMyNjI6XHR7XG4zMjYzOlx0XHR1bnNpZ25lZCBpbnQgY2lkeCA9IDAsIHNpZHggPSAwO1xuMzI2NDpcdFx0c3RydWN0IGRhbW9zICpzaXRlcjtcbjMyNjU6XHRcbjMyNjY6XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xuMzI2NzpcdFx0XHRpZiAoc2l0ZXIgPT0gcylcbjMyNjg6XHRcdFx0XHRicmVhaztcbjMyNjk6XHRcdFx0c2lkeCYjNDM7JiM0Mzs7XG4zMjcwOlx0XHR9XG4zMjcxOlx0XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbjMyNzI6XHR9XG4zMjczOlx0XG4zMjc0Olx0c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbjMyNzU6XHR7XG4zMjc2Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjMyNzc6XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4zMjc4Olx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xuMzI3OTpcdFx0dW5zaWduZWQgbG9uZyBjdW11bGF0ZWRfc3osIGNhY2hlZF9lc3o7XG4zMjgwOlx0XHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XG4zMjgxOlx0XG4zMjgyOlx0XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiAhcXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKVxuMzI4MzpcdFx0XHRyZXR1cm47XG4zMjg0Olx0XG4zMjg1Olx0XHQvKiBGaXJzdCBjaGFyZ2Ugd2luZG93ICovXG4zMjg2Olx0XHRpZiAoIXF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20pIHtcbjMyODc6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9mcm9tID0gamlmZmllcztcbjMyODg6XHRcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbjMyODk6XHRcdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIERBTU9OIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBwaW5wb2ludCB3aGVyZSB0aGUgREFNT04gY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBNeSBndXQgdGVsbHMgbWUgdGhleSYjMzk7bGwgYmUgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBsaWtlbHkgd2l0aGluIHRoZSBgbW0vZGFtb25gIGRpcmVjdG9yeS4gU28sIGxldCYjMzk7cyBoZWFkIG92ZXIgdG8gYG1tL2RhbW9uL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGZldyBrZXkgdGhpbmdzIHRoZXJlOiB0aGUgbWFpbiBEQU1PTiBzd2l0Y2ggaXRzZWxmLCBwcm9iYWJseSBhIGBib29sYCBvcHRpb24sIGFuZCB0aGVuIG1heWJlIHNvbWUgZ3JhbnVsYXIgb3B0aW9ucyBmb3IgZGlmZmVyZW50IERBTU9OIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMuIEl04oCZcyBhbHdheXMgdGhlIHBsYWNlIHRvIHN0YXJ0IHdoZW4gZmlndXJpbmcgb3V0IGhvdyBhIGZlYXR1cmUgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLiBUaGlzIGBLY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgZmluZXItZ3JhaW5lZCBjb250cm9scy4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9Mz1tZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbm1tL2RhbW9uL0tjb25maWctNC1cbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cbm1tL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xNC1cbm1tL2RhbW9uL0tjb25maWc6MTU6Y29uZmlnIERBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctMzctXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxubW0vZGFtb24vS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy00Ni1cbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vS2NvbmZpZy04Ny1cbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cbm1tL2RhbW9uL0tjb25maWc6MTA4OmNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTE1LVxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9mIGhvdyBEQU1PTiBpcyBzdHJ1Y3R1cmVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciB0aGUganVndWxhciDigJMgdGhlIGNvcmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHBvcmUgb3ZlciBib3RoIGBtbS9kYW1vbi9NYWtlZmlsZWAgYW5kIGBtbS9kYW1vbi9LY29uZmlnYC4gYE1ha2VmaWxlYCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBkZXBlbmRlbmNpZXMsIGFuZCBob3cgYWxsIHRoZSBEQU1PTiBzb3VyY2UgZmlsZXMgZml0IHRvZ2V0aGVyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgbW9kdWxlIGNvbXBpbGF0aW9uLCBjb21waWxhdGlvbiBmbGFncywgYW5kIGhvdyB0aGlzIHBhcnRpY3VsYXIgREFNT04gaW1wbGVtZW50YXRpb24gbGlua3Mgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLgoKVGhlbiwgSSYjMzk7bGwgaGl0IGBtbS9kYW1vbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGxpdmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUga25vYnMgYW5kIGRpYWxzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoYXQmIzM5O3Mgb3B0aW9uYWwsIGFueSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIERBTU9OLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zLiBJIGV4cGVjdCB0byBzZWUgdGhlIHNlbGVjdGlvbiBvZiB0YXJnZXQgc2VsZWN0aW9uIGFsZ29yaXRobXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBpbnN0cnVtZW50YXRpb24gZmVhdHVyZXMuCgpJJiMzOTttIGFpbWluZyBmb3IgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlc2UgdHdvIGZpbGVzLCBzbyBJIGNhbiBzdGFydCB0byBidWlsZCBhIG1lbnRhbCBtb2RlbCBvZiBEQU1PTiYjMzk7cyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjoKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWc6IG1tL2RhbW9uL0tjb25maWcqKgoKT2theSwgdGltZSB0byBjaGVjayBvdXQgYG1tL2RhbW9uL0tjb25maWdgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IERBTU9OIGNhbiBiZSB0d2Vha2VkIGFuZCBpbnRlZ3JhdGVkIGludG8gYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuCgpJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluOgoKKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgc2NvcGU6KiogV2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggcmVxdWlyZSBleHBsaWNpdCBjb25maWd1cmF0aW9uPwoqICAgKipEZXBlbmRlbmNpZXM6KiogQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGUga2VybmVsIGZlYXR1cmVzIG9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSSYjMzk7bSB0aGlua2luZywgZm9yIGluc3RhbmNlLCBhcmUgdGhlcmUgYW55IGludGVyYWN0aW9ucyB3aXRoIE5VTUEsIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCksIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPwoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMqKjogV2hhdCBzcGVjaWZpYyBwYXJhbWV0ZXJzIGNhbiBJIHR1bmUgdG8gbW9kaWZ5IERBTU9OJiMzOTtzIGJlaGF2aW9yPyBBcmUgdGhlcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtb25pdG9yaW5nIGdyYW51bGFyaXR5LCBkYXRhIGNvbGxlY3Rpb24gZnJlcXVlbmN5LCBvciB0aGUgYWN0aW9ucyB0YWtlbiB3aGVuIGRhdGEgYWNjZXNzIHBhdHRlcm5zIGFyZSBkZXRlY3RlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmFkZS1vZmZzIGFyZSBvZmZlcmVkIHZpYSB0aGUgY29uZmlndXJhYmxlIHNldHRpbmdzLgoqICAgKipEb2N1bWVudGF0aW9uIGluIEtjb25maWc6KiogRG9lcyBpdCBoYXZlIGFkZXF1YXRlIGhlbHAgdGV4dCBhbmQgZXhwbGFuYXRpb25zPyBHb29kIGRvY3VtZW50YXRpb24gaW4gdGhlIGBLY29uZmlnYCBmaWxlcyBpcyBjcml0aWNhbC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3MgY2xlYXIgYW5kIGNvbmNpc2UsIHByb3ZpZGluZyBhIGdvb2Qgb3ZlcnZpZXcgb2YgZWFjaCBvcHRpb24mIzM5O3MgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCkJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBEQU1PTi4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gc3RhcnQgZXhwZXJpbWVudGluZyB3aXRoIGl0IG9yIGludGVncmF0aW5nIGl0IGludG8gYSByZWFsLXdvcmxkIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgREFNT05cbiAgIDY6XHRcdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcbiAgIDk6XHRcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXG4gIDEwOlx0XHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxuICAxMzpcdFx0ICBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gREFNT05cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxuICAyMDpcdFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcbiAgMjE6XHRcdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cbiAgMjI6XHRcdCAgb25seSBkZXZlbG9wbWVudCBhbmQgdGVzdCBzZXR1cHMuXG4gIDIzOlx0XG4gIDI0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIERBTU9OX0tVTklUX1RFU1RcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAyODpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxuICAyOTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgMzA6XHRcdGhlbHBcbiAgMzE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDMyOlx0XG4gIDMzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICAzNDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgREFNT05fVkFERFJcbiAgMzk6XHRcdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXCYjMzQ7XG4gIDQwOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbiAgNDE6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuICA0MjpcdFx0ZGVmYXVsdCBEQU1PTlxuICA0MzpcdFx0aGVscFxuICA0NDpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG4gIDQ1Olx0XHQgIHRoYXQgd29yayBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlcy5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgREFNT05fUEFERFJcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgTU1VXG4gIDUwOlx0XHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbiAgNTE6XHRcdGRlZmF1bHQgREFNT05cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxuICA1NDpcdFx0ICB0aGF0IHdvcmtzIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxuICA1NzpcdFx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgNTg6XHRcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbiAgNTk6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDYwOlx0XHRoZWxwXG4gIDYxOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiB2aXJ0dWFsIGFkZHJlc3NlcyBvcGVyYXRpb25zIEt1bml0IHRlc3Qgc3VpdGUuXG4gIDYyOlx0XG4gIDYzOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxuICA2NDpcdFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgREFNT05fU1lTRlNcbiAgNjk6XHRcdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4gIDcwOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xuICA3MTpcdFx0ZGVmYXVsdCBEQU1PTlxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcbiAgNzQ6XHRcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1RcbiAgNzc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgNzg6XHRcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbiAgNzk6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDgwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgS2NvbmZpZyBJbmNsdXNpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYG1tL2RhbW9uL0tjb25maWdgIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkaWZmZXJlbnQgS2NvbmZpZyBmaWxlcywgYW5kIHRoZWlyIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgdGhhdCBtaWdodCBzb3VyY2UgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSB0eXBpY2FsIGluY2x1ZGUgaGllcmFyY2h5IHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSB3aWxsIG5lZWQgdG8gY29uc2lkZXIgdGhlIGltcGFjdCBvZiBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYG1tL2RhbW9uL0tjb25maWdgIGl0c2VsZiBpbnRyb2R1Y2VzLiBUaGlzIGxpbmUgb2YgaW5xdWlyeSBhaW1zIHRvIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgb3IgbW9kdWxlcyB0cmlnZ2VyIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgYnVpbGQsIGFuZCBzdWJzZXF1ZW50bHksIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXQgcHJvdmlkZXMuIFRoaXMgaW5mb3JtYXRpb24gaXMga2V5IHRvIHBpbnBvaW50aW5nIGhvdyBEQU1PTiBpcyBhY3R1YWxseSBjb25maWd1cmVkIGFuZCBob3cgaXRzIHByZXNlbmNlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBGcm9tIHRoZXJlIEkgY2FuIGV4cGxvcmUgYW55IHJlbGF0aW9uc2hpcHMgaXQgaGFzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTE0ODU9Y29uZmlnIExBWllfTU1VX01PREVfS1VOSVRfVEVTVFxuLS1cbm1tL0tjb25maWctMTQ5Ni1cbm1tL0tjb25maWc6MTQ5Nzpzb3VyY2UgXCYjMzQ7bW0vZGFtb24vS2NvbmZpZ1wmIzM0O1xubW0vS2NvbmZpZy0xNDk4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTAwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIEludGVncmF0aW9uIHdpdGggUXVvdGFzOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYENPTkZJR19EQU1PTmAgZGlyZWN0bHkgdGllcyBpbnRvIHRoZSBjb21waWxhdGlvbiBvZiBgbW0vZGFtb24vY29yZS5vYCwgdGhlIGhlYXJ0IG9mIERBTU9OLiBGdXJ0aGVybW9yZSwgYENPTkZJR19EQU1PTl9TWVNGU2AgaXMgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIHRoZSBjcnVjaWFsIHN5c2ZzIGludGVyZmFjZSwgYXMgc2VlbiBpbiBgbW0vZGFtb24vc3lzZnMuY2AsIGBzeXNmcy1zY2hlbWVzLmNgLCBhbmQgYHN5c2ZzLWNvbW1vbi5jYC4gTm93LCBteSBtYWluIGZvY3VzIHNoaWZ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IERBTU9OLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gREFNT1MgcXVvdGFzLCBpcyBpbnRlcmFjdGVkIHdpdGggYXQgYWxsLiBJIGhhdmUgdG8gbG9vayBmb3IgZnVuY3Rpb25zIG9yIGludGVyZmFjZXMgdGhhdCByZWxhdGUgdG8gREFNT1MgUXVvdGFzIGluIFVzZXIgU3BhY2UuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcGVyZm9ybSBhIHRhcmdldGVkIHNlYXJjaC4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgY2FsbHMgdG8gYGRhbW9zX2FkanVzdF9xdW90YWAgYW5kIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdXNlciBzcGFjZSBhbmQga2VybmVsIGNvbnRyb2wgbWVjaGFuaXNtcyBmb3IgREFNT04gYW5kIERBTU9TLiBUaGlzIGV4YW1pbmF0aW9uIHdpbGwgcmV2ZWFsIHRoZSBwb2ludHMgb2YgaW50ZWdyYXRpb24gYW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBvZiB0aGUgcXVvdGEgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19hZGp1c3RfcXVvdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MzI2MD1zdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cbm1tL2RhbW9uL2NvcmUuYzozMzcxOlx0XHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA3NwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgREFNT04mIzM5O3MgQ29uZmlndXJhdGlvbiBhbmQgQ29udHJvbCoqCgpPa2F5LCBzbyBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCBpcyBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBga2RhbW9uZGAgd29ya2VyIHRocmVhZC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB1c2VycyBpbnRlcmFjdCB3aXRoIERBTU9OIOKAkyBob3cgdGhleSBzdGFydCB0aGUgd2hvbGUgdGhpbmcsIGNvbmZpZ3VyZSB0aGUgc2NoZW1lcywgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGV5IHNldCBxdW90YXMuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHVzZXItZmFjaW5nIEFQSXM7IEkgbmVlZCB0byBmaW5kIHRoZSBlbnRyeSBwb2ludHMuIExldCYjMzk7cyBzdGFydCB3aXRoIHN5c2ZzLCBhbmQgc2VlIGlmIHRoZSBzY2hlbWUgcXVvdGEgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCB0aGVyZS4gSWYgbm90LCBJJiMzOTtsbCBicmFuY2ggb3V0IHRvIHNlYXJjaCBmb3IgREFNT04gcXVvdGEtcmVsYXRlZCBmdW5jdGlvbnMuIExldCYjMzk7cyBnZXQgdGhpcyBpbnZlc3RpZ2F0aW9uIHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3F1b3RhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MjQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL2NvcmUuYz02ODM9dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODgtXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYzo2OTA6XHRcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxubW0vZGFtb24vY29yZS5jLTY5MS1cdFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXG5tbS9kYW1vbi9jb3JlLmMtNjkyLXtcbm1tL2RhbW9uL2NvcmUuYzo2OTM6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy02OTQtXG4tLVxubW0vZGFtb24vY29yZS5jLTcwNS1cbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxMC1cbm1tL2RhbW9uL2NvcmUuYzo3MTE6c3RhdGljIHZvaWQgZGFtb3NfZGVsX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzE1LVxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MjIte1xubW0vZGFtb24vY29yZS5jOjcyMzpcdGRhbW9zX2RlbF9xdW90YV9nb2FsKGcpO1xubW0vZGFtb24vY29yZS5jOjcyNDpcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYy03MjUtfVxubW0vZGFtb24vY29yZS5jLTcyNi1cbm1tL2RhbW9uL2NvcmUuYzo3Mjc6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkoc3RydWN0IGRhbW9zX3F1b3RhICpxKVxubW0vZGFtb24vY29yZS5jLTcyOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTczMS1cbm1tL2RhbW9uL2NvcmUuYzo3MzI6LyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG5tbS9kYW1vbi9jb3JlLmM6NzM1Olx0cXVvdGEtXHUwMDNlZXN6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3MzY6XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX3N6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzc6XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzg6XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jOjc0MDpcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmM6NzQxOlx0cXVvdGEtXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmM6NzQyOlx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbm1tL2RhbW9uL2NvcmUuYzo3NDM6XHRyZXR1cm4gcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtNzQ0LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9NzQ2PXN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXG4tLVxubW0vZGFtb24vY29yZS5jLTc0OC1cdFx0XHR1bnNpZ25lZCBsb25nIGFwcGx5X2ludGVydmFsX3VzLFxubW0vZGFtb24vY29yZS5jOjc0OTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxubW0vZGFtb24vY29yZS5jLTc1MC1cdFx0XHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyAqd21hcmtzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03NzQtXG5tbS9kYW1vbi9jb3JlLmM6Nzc1Olx0c2NoZW1lLVx1MDAzZXF1b3RhID0gKihkYW1vc19xdW90YV9pbml0KHF1b3RhKSk7XG5tbS9kYW1vbi9jb3JlLmM6Nzc2Olx0LyogcXVvdGEuZ29hbHMgc2hvdWxkIGJlIHNlcGFyYXRlbHkgc2V0IGJ5IGNhbGxlciAqL1xubW0vZGFtb24vY29yZS5jOjc3NzpcdElOSVRfTElTVF9IRUFEKFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YS5nb2Fscyk7XG5tbS9kYW1vbi9jb3JlLmMtNzc4LVxuLS1cbm1tL2RhbW9uL2NvcmUuYz04MTU9dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbm1tL2RhbW9uL2NvcmUuYzo4MTc6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZywgKmdfbmV4dDtcbm1tL2RhbW9uL2NvcmUuYy04MTgtXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmLCAqbmV4dDtcbm1tL2RhbW9uL2NvcmUuYy04MTktXG5tbS9kYW1vbi9jb3JlLmM6ODIwOlx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGcsIGdfbmV4dCwgXHUwMDI2cy1cdTAwM2VxdW90YSlcbm1tL2RhbW9uL2NvcmUuYzo4MjE6XHRcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYy04MjItXG4tLVxubW0vZGFtb24vY29yZS5jPTExNjY9dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXG4tLVxubW0vZGFtb24vY29yZS5jLTExNzctXG5tbS9kYW1vbi9jb3JlLmM6MTE3ODpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX250aF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jOjExNzk6XHRcdGludCBuLCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXG5tbS9kYW1vbi9jb3JlLmMtMTE4MC17XG5tbS9kYW1vbi9jb3JlLmM6MTE4MTpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xubW0vZGFtb24vY29yZS5jLTExODItXHRpbnQgaSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMTE4My1cbm1tL2RhbW9uL2NvcmUuYzoxMTg0Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTE4NS1cdFx0aWYgKGkmIzQzOyYjNDM7ID09IG4pXG4tLVxubW0vZGFtb24vY29yZS5jLTExOTAtXG5tbS9kYW1vbi9jb3JlLmM6MTE5MTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihcbm1tL2RhbW9uL2NvcmUuYzoxMTkyOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTExOTMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxubW0vZGFtb24vY29yZS5jOjEyMTU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6MTIxNjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIyMS1cdFx0ZHN0LVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXHUwMDNlY3VycmVudF92YWx1ZTtcbm1tL2RhbW9uL2NvcmUuYzoxMjIyOlx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyMjMtfVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjI1LS8qKlxubW0vZGFtb24vY29yZS5jOjEyMjY6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cbm1tL2RhbW9uL2NvcmUuYzoxMjI3OiAqIEBkc3Q6XHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9TIHF1b3RhLlxubW0vZGFtb24vY29yZS5jOjEyMjg6ICogQHNyYzpcdFRoZSBjb21taXQgc291cmNlIERBTU9TIHF1b3RhLlxubW0vZGFtb24vY29yZS5jLTEyMjktICpcbm1tL2RhbW9uL2NvcmUuYzoxMjMwOiAqIENvcGllcyB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzIGZvciBxdW90YSBnb2FscyBmcm9tIEBzcmMgdG8gQGRzdC4gIFVzZXJzXG5tbS9kYW1vbi9jb3JlLmM6MTIzMTogKiBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24gZm9yIHF1b3RhIGdvYWxzLWxldmVsIHBhcmFtZXRlcnMgdXBkYXRlIG9mIHJ1bm5pbmdcbm1tL2RhbW9uL2NvcmUuYy0xMjMyLSAqIERBTU9OIGNvbnRleHRzLCBpbnN0ZWFkIG9mIG1hbnVhbCBpbi1wbGFjZSB1cGRhdGVzLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM2LSAqL1xubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XG5tbS9kYW1vbi9jb3JlLmM6MTIzOTpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3RfZ29hbCwgKm5leHQsICpzcmNfZ29hbCwgKm5ld19nb2FsO1xubW0vZGFtb24vY29yZS5jLTEyNDAtXHRpbnQgaSA9IDAsIGogPSAwO1xubW0vZGFtb24vY29yZS5jLTEyNDEtXG5tbS9kYW1vbi9jb3JlLmM6MTI0MjpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShkc3RfZ29hbCwgbmV4dCwgZHN0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTI0MzpcdFx0c3JjX2dvYWwgPSBkYW1vc19udGhfcXVvdGFfZ29hbChpJiM0MzsmIzQzOywgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjQ0LVx0XHRpZiAoc3JjX2dvYWwpXG5tbS9kYW1vbi9jb3JlLmM6MTI0NTpcdFx0XHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xubW0vZGFtb24vY29yZS5jLTEyNDYtXHRcdGVsc2Vcbm1tL2RhbW9uL2NvcmUuYzoxMjQ3Olx0XHRcdGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChkc3RfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTI0OC1cdH1cbm1tL2RhbW9uL2NvcmUuYzoxMjQ5Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcbm1tL2RhbW9uL2NvcmUuYy0xMjUwLVx0XHRpZiAoaiYjNDM7JiM0MzsgXHUwMDNjIGkpXG5tbS9kYW1vbi9jb3JlLmMtMTI1MS1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL2NvcmUuYzoxMjUyOlx0XHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTEyNTMtXHRcdFx0XHRzcmNfZ29hbC1cdTAwM2VtZXRyaWMsIHNyY19nb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNTUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9jb3JlLmM6MTI1NjpcdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYzoxMjU3Olx0XHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjU4LVx0fVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYxLVxubW0vZGFtb24vY29yZS5jOjEyNjI6c3RhdGljIGludCBkYW1vc19jb21taXRfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyNjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjY4LVx0ZHN0LVx1MDAzZXN6ID0gc3JjLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jOjEyNjk6XHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xubW0vZGFtb24vY29yZS5jLTEyNzAtXHRpZiAoZXJyKVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNTE5PXN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUyNi1cbm1tL2RhbW9uL2NvcmUuYzoxNTI3Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFx1MDAyNmRzdC1cdTAwM2VxdW90YSwgXHUwMDI2c3JjLVx1MDAzZXF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0xNTI4LVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTU0Nj1zdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTY3LVx0XHRcdFx0c3JjX3NjaGVtZS1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyxcbm1tL2RhbW9uL2NvcmUuYzoxNTY4Olx0XHRcdFx0XHUwMDI2c3JjX3NjaGVtZS1cdTAwM2VxdW90YSwgXHUwMDI2c3JjX3NjaGVtZS1cdTAwM2V3bWFya3MsXG5tbS9kYW1vbi9jb3JlLmMtMTU2OS1cdFx0XHRcdE5VTUFfTk9fTk9ERSk7XG4tLVxubW0vZGFtb24vY29yZS5jPTE2Nzk9c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTcwNS1cdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTcwNjpcdFx0XHRcdGlmIChzLVx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XG5tbS9kYW1vbi9jb3JlLmM6MTcwNzpcdFx0XHRcdFx0cy1cdTAwM2VxdW90YS5jaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xubW0vZGFtb24vY29yZS5jOjE3MDg6XHRcdFx0XHRcdHMtXHUwMDNlcXVvdGEuY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMTcwOS1cdFx0XHRcdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTg2Mj1zdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2NS1cdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xubW0vZGFtb24vY29yZS5jOjE4NjY6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xODY3LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODc0LVx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2NoZW1lLCBzcmMpIHtcbm1tL2RhbW9uL2NvcmUuYzoxODc1Olx0XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzY2hlbWUtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMTg3Ni1cbm1tL2RhbW9uL2NvcmUuYzoxODc3Olx0XHRcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcbm1tL2RhbW9uL2NvcmUuYy0xODc4LVx0XHRcdFx0aWYgKGdvYWwtXHUwMDNlbWV0cmljID09XG4tLVxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMzg2LS8qXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0LlxubW0vZGFtb24vY29yZS5jOjIzODg6ICogQHF1b3RhOlx0VGhlIHF1b3RhIHRvIGNoZWNrLlxubW0vZGFtb24vY29yZS5jLTIzODktICpcbm1tL2RhbW9uL2NvcmUuYzoyMzkwOiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVvdGEgaXMgc2V0LCBmYWxzZSBvdGhlcndpc2UuXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jOjIzOTQ6XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xubW0vZGFtb24vY29yZS5jLTI0MDUtXG5tbS9kYW1vbi9jb3JlLmM6MjQwNjpcdHJldHVybiBjLVx1MDAzZW9wcy5nZXRfc2NoZW1lX3Njb3JlKGMsIHIsIHMpIFx1MDAzZT0gcy1cdTAwM2VxdW90YS5taW5fc2NvcmU7XG5tbS9kYW1vbi9jb3JlLmMtMjQwNy19XG4tLVxubW0vZGFtb24vY29yZS5jLTI0MTAtICogZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbigpIC0gQ2hlY2sgaWYgdGhlIGdpdmVuIHJlZ2lvbiBvciBzdGFydGluZyBwYXJ0IG9mXG5tbS9kYW1vbi9jb3JlLmM6MjQxMTogKiBpdCBpcyBhbHJlYWR5IGNoYXJnZWQgZm9yIHRoZSBEQU1PUyBxdW90YS5cbm1tL2RhbW9uL2NvcmUuYy0yNDEyLSAqIEB0Olx0VGhlIHRhcmdldCBvZiB0aGUgcmVnaW9uLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNDE2LSAqXG5tbS9kYW1vbi9jb3JlLmM6MjQxNzogKiBJZiBhIHF1b3RhIG9mIGEgc2NoZW1lIGhhcyBleGNlZWRlZCBpbiBhIHF1b3RhIGNoYXJnZSB3aW5kb3csIHRoZSBzY2hlbWUmIzM5O3Ncbm1tL2RhbW9uL2NvcmUuYy0yNDE4LSAqIGFjdGlvbiB3b3VsZCBhcHBsaWVkIHRvIG9ubHkgYSBwYXJ0IG9mIHRoZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4gZnVsZmlsbGluZ1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNDM0PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XG5tbS9kYW1vbi9jb3JlLmM6MjQzODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTI0MzktXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XG4tLVxubW0vZGFtb24vY29yZS5jLTI0NDEtXHQvKiBTa2lwIHByZXZpb3VzbHkgY2hhcmdlZCByZWdpb25zICovXG5tbS9kYW1vbi9jb3JlLmM6MjQ0MjpcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzoyNDQzOlx0XHRpZiAodCAhPSBxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm1tL2RhbW9uL2NvcmUuYy0yNDQ1LVx0XHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xubW0vZGFtb24vY29yZS5jOjI0NDY6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcbm1tL2RhbW9uL2NvcmUuYzoyNDQ3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jLTI0NDgtXHRcdFx0cmV0dXJuIHRydWU7XG5tbS9kYW1vbi9jb3JlLmMtMjQ0OS1cdFx0fVxubW0vZGFtb24vY29yZS5jOjI0NTA6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFx1MDAyNlx1MDAyNlxubW0vZGFtb24vY29yZS5jOjI0NTE6XHRcdFx0XHRyLVx1MDAzZWFyLmVuZCBcdTAwM2M9IHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20pXG5tbS9kYW1vbi9jb3JlLmMtMjQ1Mi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbm1tL2RhbW9uL2NvcmUuYy0yNDUzLVxubW0vZGFtb24vY29yZS5jOjI0NTQ6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFx1MDAyNlx1MDAyNiByLVx1MDAzZWFyLnN0YXJ0IFx1MDAzY1xubW0vZGFtb24vY29yZS5jOjI0NTU6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjQ1NjpcdFx0XHRzel90b19za2lwID0gQUxJR05fRE9XTihxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIC1cbm1tL2RhbW9uL2NvcmUuYy0yNDU3LVx0XHRcdFx0XHRyLVx1MDAzZWFyLnN0YXJ0LCBtaW5fcmVnaW9uX3N6KTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQ2NS1cdFx0fVxubW0vZGFtb24vY29yZS5jOjI0NjY6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IE5VTEw7XG5tbS9kYW1vbi9jb3JlLmM6MjQ2NzpcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMjQ2OC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTI2MzUtXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy0yNjM3LVx0XHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjQzLVx0ICovXG5tbS9kYW1vbi9jb3JlLmM6MjY0NDpcdGlmICghcXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcdTAwM2Ugc3pfcmVnaW9uKVxubW0vZGFtb24vY29yZS5jOjI2NDU6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X3JlZ2lvbjtcbm1tL2RhbW9uL2NvcmUuYy0yNjQ2LVx0ZWxzZVxubW0vZGFtb24vY29yZS5jOjI2NDc6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X2FwcGxpZWQgJiM0MzsgbXVsdF9mcmFjKFxubW0vZGFtb24vY29yZS5jLTI2NDgtXHRcdFx0XHQoc3pfcmVnaW9uIC0gc3pfYXBwbGllZCksXG5tbS9kYW1vbi9jb3JlLmM6MjY0OTpcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX251bSxcbm1tL2RhbW9uL2NvcmUuYzoyNjUwOlx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xubW0vZGFtb24vY29yZS5jLTI2NTEtfVxubW0vZGFtb24vY29yZS5jLTI2NTItXG5tbS9kYW1vbi9jb3JlLmM6MjY1MzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG5tbS9kYW1vbi9jb3JlLmMtMjY1NC1cdFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxubW0vZGFtb24vY29yZS5jLTI2NTUte1xubW0vZGFtb24vY29yZS5jOjI2NTY6XHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG5tbS9kYW1vbi9jb3JlLmMtMjY1Ny1cdFx0cmV0dXJuIGZhbHNlO1xubW0vZGFtb24vY29yZS5jOjI2NTg6XHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbm1tL2RhbW9uL2NvcmUuYy0yNjU5LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY2MS1cdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXG5tbS9kYW1vbi9jb3JlLmM6MjY2MjpcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxubW0vZGFtb24vY29yZS5jLTI2NjMtXHQgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNjY0Olx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG5tbS9kYW1vbi9jb3JlLmMtMjY2NS19XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njc9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI2Njkte1xubW0vZGFtb24vY29yZS5jOjI2NzA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNjcxLVx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjcwNC1cdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzA1Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbm1tL2RhbW9uL2NvcmUuYzoyNzA2Olx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG5tbS9kYW1vbi9jb3JlLmM6MjcwNzpcdFx0XHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeixcbm1tL2RhbW9uL2NvcmUuYy0yNzA4LVx0XHRcdFx0XHRjLVx1MDAzZW1pbl9yZWdpb25fc3opO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzIyLVx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbm1tL2RhbW9uL2NvcmUuYzoyNzIzOlx0XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zICYjNDM7PSB0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmVuZCkgLVxubW0vZGFtb24vY29yZS5jLTI3MjQtXHRcdFx0dGltZXNwZWM2NF90b19ucyhcdTAwMjZiZWdpbik7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNTpcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNjpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzI3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG5tbS9kYW1vbi9jb3JlLmM6MjcyODpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG5tbS9kYW1vbi9jb3JlLmMtMjcyOS1cdFx0fVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNzM4PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc0NC1cdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XG5tbS9kYW1vbi9jb3JlLmM6Mjc0NTpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc1Mi1cbm1tL2RhbW9uL2NvcmUuYzoyNzUzOlx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzU0Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzc3LSAqXG5tbS9kYW1vbi9jb3JlLmM6Mjc3ODogKiBUaGlzIGZ1bmN0aW9uIGNvdWxkIHNwbGl0IHJlZ2lvbnMgZm9yIGtlZXBpbmcgdGhlIHF1b3RhLiAgVG8gbWluaW1pemVcbm1tL2RhbW9uL2NvcmUuYy0yNzc5LSAqIG92ZXJoZWFkIGZyb20gdGhlIHNwbGl0IG9wZXJhdGlvbnMgaW5jcmVhc2VkIG51bWJlciBvZiByZWdpb25zLCB0aGlzXG4tLVxubW0vZGFtb24vY29yZS5jPTI3OTA9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI4MDAtXHRcdCAqIGRhbW9uX2RvX2FwcGx5X3NjaGVlbXMoKSBjb3VsZCBzcGxpdCB0aGUgcmVnaW9uIGZvciB0aGVcbm1tL2RhbW9uL2NvcmUuYzoyODAxOlx0XHQgKiBxdW90YS4gIEtlZXBpbmcgdGhlIG5ldyBzbGljZXMgaXMgYW4gb3ZlcmhlYWQuICBNZXJnZSBiYWNrXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cdFx0ICogdGhlIHNsaWNlcyBpbnRvIHRoZSBwcmV2aW91cyByZWdpb24gaWYgaXQgZG9lc24mIzM5O3QgbG9zZSBhbnlcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjkwMD1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG5tbS9kYW1vbi9jb3JlLmM6MjkwMTpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMjkwMi17XG4tLVxubW0vZGFtb24vY29yZS5jPTI5Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbm1tL2RhbW9uL2NvcmUuYzoyOTI5Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0yOTMwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzA4Mj1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXG5tbS9kYW1vbi9jb3JlLmM6MzA4MzpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMzA4NC17XG4tLVxubW0vZGFtb24vY29yZS5jPTMwODg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcbm1tL2RhbW9uL2NvcmUuYzozMDg5Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMDkwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzExOT1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMTM0LVxubW0vZGFtb24vY29yZS5jOjMxMzU6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShzdHJ1Y3QgZGFtb25fY3R4ICpjLFxubW0vZGFtb24vY29yZS5jOjMxMzY6XHRcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXG5tbS9kYW1vbi9jb3JlLmMtMzEzNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTMxNzktLyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xubW0vZGFtb24vY29yZS5jOjMxODA6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMxODEte1xubW0vZGFtb24vY29yZS5jOjMxODI6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYzozMTgzOlx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzE4NC1cdHVuc2lnbmVkIGxvbmcgaGlnaGVzdF9zY29yZSA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtMzE4NS1cbm1tL2RhbW9uL2NvcmUuYzozMTg2Olx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxdW90YSkge1xubW0vZGFtb24vY29yZS5jOjMxODc6XHRcdGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoYywgcywgZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMzE4OC1cdFx0aGlnaGVzdF9zY29yZSA9IG1heChoaWdoZXN0X3Njb3JlLFxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMTk2PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzE5Ny17XG5tbS9kYW1vbi9jb3JlLmM6MzE5ODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMxOTk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIwMC1cbm1tL2RhbW9uL2NvcmUuYzozMjAxOlx0cXVvdGEtXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXG5tbS9kYW1vbi9jb3JlLmM6MzIwMjpcdFx0XHRtYXgocXVvdGEtXHUwMDNlZXN6X2JwLCAxMDAwMFVMKSwgc2NvcmUpO1xubW0vZGFtb24vY29yZS5jLTMyMDMtfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMyMDk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cbm1tL2RhbW9uL2NvcmUuYy0zMjExLVx0aWYgKHNjb3JlIFx1MDAzZT0gMTAwMDApXG5tbS9kYW1vbi9jb3JlLmM6MzIxMjpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbm1tL2RhbW9uL2NvcmUuYzozMjEzOlx0ZWxzZSBpZiAocXVvdGEtXHUwMDNlc3opXG5tbS9kYW1vbi9jb3JlLmM6MzIxNDpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gcXVvdGEtXHUwMDNlc3ogKiAxMDAwMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjE1LVx0ZWxzZVxubW0vZGFtb24vY29yZS5jOjMyMTY6XHRcdHF1b3RhLVx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcbm1tL2RhbW9uL2NvcmUuYy0zMjE3LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIxOS0vKlxubW0vZGFtb24vY29yZS5jOjMyMjA6ICogQ2FsbGVkIG9ubHkgaWYgcXVvdGEtXHUwMDNlbXMsIG9yIHF1b3RhLVx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVx1MDAzZWdvYWxzIGlzIG5vdCBlbXB0eVxubW0vZGFtb24vY29yZS5jLTMyMjEtICovXG5tbS9kYW1vbi9jb3JlLmM6MzIyMjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMyMjMte1xubW0vZGFtb24vY29yZS5jOjMyMjQ6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0zMjI1LVx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjI3LVxubW0vZGFtb24vY29yZS5jOjMyMjg6XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xubW0vZGFtb24vY29yZS5jOjMyMjk6XHRcdHF1b3RhLVx1MDAzZWVzeiA9IHF1b3RhLVx1MDAzZXN6O1xubW0vZGFtb24vY29yZS5jLTMyMzAtXHRcdHJldHVybjtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIzMi1cbm1tL2RhbW9uL2NvcmUuYzozMjMzOlx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xubW0vZGFtb24vY29yZS5jOjMyMzQ6XHRcdGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfQ09OU0lTVClcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChjdHgsIHMpO1xubW0vZGFtb24vY29yZS5jOjMyMzY6XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbm1tL2RhbW9uL2NvcmUuYy0zMjM3LVx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoY3R4LCBzKTtcbm1tL2RhbW9uL2NvcmUuYzozMjM4Olx0XHRlc3ogPSBxdW90YS1cdTAwM2Vlc3pfYnAgLyAxMDAwMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVx0fVxubW0vZGFtb24vY29yZS5jLTMyNDAtXG5tbS9kYW1vbi9jb3JlLmM6MzI0MTpcdGlmIChxdW90YS1cdTAwM2Vtcykge1xubW0vZGFtb24vY29yZS5jOjMyNDI6XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxubW0vZGFtb24vY29yZS5jOjMyNDM6XHRcdFx0dGhyb3VnaHB1dCA9IG11bHRfZnJhYyhxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxubW0vZGFtb24vY29yZS5jOjMyNDQ6XHRcdFx0XHRcdDEwMDAwMDAsIHF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xubW0vZGFtb24vY29yZS5jLTMyNDUtXHRcdGVsc2Vcbm1tL2RhbW9uL2NvcmUuYy0zMjQ2LVx0XHRcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xubW0vZGFtb24vY29yZS5jOjMyNDc6XHRcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXHUwMDNlbXMsIGVzeik7XG5tbS9kYW1vbi9jb3JlLmMtMzI0OC1cdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjUwLVxubW0vZGFtb24vY29yZS5jOjMyNTE6XHRpZiAocXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IHF1b3RhLVx1MDAzZXN6IFx1MDAzYyBlc3opXG5tbS9kYW1vbi9jb3JlLmM6MzI1MjpcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI1My1cbm1tL2RhbW9uL2NvcmUuYzozMjU0Olx0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG5tbS9kYW1vbi9jb3JlLmMtMzI1NS1cdFx0ZXN6ID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0zMjU2LVxubW0vZGFtb24vY29yZS5jOjMyNTc6XHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI1OC19XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbm1tL2RhbW9uL2NvcmUuYzozMjYxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTMyNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVx0fVxubW0vZGFtb24vY29yZS5jOjMyNzE6XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbm1tL2RhbW9uL2NvcmUuYzozMjc2Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzI3Ny1cdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyODEtXG5tbS9kYW1vbi9jb3JlLmM6MzI4MjpcdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgbGlzdF9lbXB0eShcdTAwMjZxdW90YS1cdTAwM2Vnb2FscykpXG5tbS9kYW1vbi9jb3JlLmMtMzI4My1cdFx0cmV0dXJuO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjg1LVx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xubW0vZGFtb24vY29yZS5jOjMyODY6XHRpZiAoIXF1b3RhLVx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXHUwMDI2XHUwMDI2ICFxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20pIHtcbm1tL2RhbW9uL2NvcmUuYzozMjg3Olx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xubW0vZGFtb24vY29yZS5jOjMyODg6XHRcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzI4OS1cdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG5tbS9kYW1vbi9jb3JlLmM6MzI5MDpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMyOTEtXHR9XG4tLVxubW0vZGFtb24vY29yZS5jLTMyOTMtXHQvKiBOZXcgY2hhcmdlIHdpbmRvdyBzdGFydHMgKi9cbm1tL2RhbW9uL2NvcmUuYzozMjk0Olx0aWYgKCF0aW1lX2luX3JhbmdlX29wZW4oamlmZmllcywgcXVvdGEtXHUwMDNlY2hhcmdlZF9mcm9tLFxubW0vZGFtb24vY29yZS5jOjMyOTU6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gJiM0Mztcbm1tL2RhbW9uL2NvcmUuYzozMjk2Olx0XHRcdFx0bXNlY3NfdG9famlmZmllcyhxdW90YS1cdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzI5NzpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG5tbS9kYW1vbi9jb3JlLmMtMzI5OC1cdFx0XHRzLVx1MDAzZXN0YXQucXRfZXhjZWVkcyYjNDM7JiM0Mzs7XG5tbS9kYW1vbi9jb3JlLmM6MzI5OTpcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeiAmIzQzOz0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zejtcbm1tL2RhbW9uL2NvcmUuYzozMzAwOlx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xubW0vZGFtb24vY29yZS5jOjMzMDE6XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogPSAwO1xubW0vZGFtb24vY29yZS5jLTMzMDItXHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxubW0vZGFtb24vY29yZS5jOjMzMDM6XHRcdFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVx1MDAzZWVzejtcbm1tL2RhbW9uL2NvcmUuYzozMzA0Olx0XHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jOjMzMDU6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2Vlc3ogIT0gY2FjaGVkX2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMzA2Olx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzMwNy1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzMzMi1cdFx0Y3VtdWxhdGVkX3N6ICYjNDM7PSBjLVx1MDAzZXJlZ2lvbnNfc2NvcmVfaGlzdG9ncmFtW3Njb3JlXTtcbm1tL2RhbW9uL2NvcmUuYzozMzMzOlx0XHRpZiAoY3VtdWxhdGVkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6IHx8ICFzY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0zMzM0LVx0XHRcdGJyZWFrO1xubW0vZGFtb24vY29yZS5jLTMzMzUtXHR9XG5tbS9kYW1vbi9jb3JlLmM6MzMzNjpcdHF1b3RhLVx1MDAzZW1pbl9zY29yZSA9IHNjb3JlO1xubW0vZGFtb24vY29yZS5jLTMzMzctfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMzU1PXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMzcwLVxubW0vZGFtb24vY29yZS5jOjMzNzE6XHRcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMzcyLVx0fVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9Mzk9c3RhdGljIGJvb2wgY29tbWl0X2lucHV0cyBfX3JlYWRfbW9zdGx5O1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDMtICpcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDQ6ICogV2hpbGUga2VlcGluZyB0aGUgY2FwcyB0aGF0IHNldCBieSBvdGhlciBxdW90YXMsIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ1OiAqIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2VzIGFuZCBkZWNyZWFzZXMgdGhlIGVmZmVjdGl2ZSBsZXZlbCBvZiB0aGUgcXVvdGFcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDYtICogYWltaW5nIHRoZSBMUlUgW2RlXXByaW9yaXRpemF0aW9ucyBvZiB0aGUgaG90IGFuZCBjb2xkIG1lbW9yeSByZXN1bHRpbmcgaW5cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTEwND1tb2R1bGVfcGFyYW0oY29sZF9taW5fYWdlLCB1bG9uZywgMDYwMCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNS1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MTA2OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fbHJ1X3NvcnRfcXVvdGEgPSB7XG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNy1cdC8qIFVzZSB1cCB0byAxMCBtcyBwZXIgMSBzZWMsIGJ5IGRlZmF1bHQgKi9cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTExMC1cdC5yZXNldF9pbnRlcnZhbCA9IDEwMDAsXG5tbS9kYW1vbi9scnVfc29ydC5jOjExMTpcdC8qIFdpdGhpbiB0aGUgcXVvdGEsIG1hcmsgaG90dGVyIHJlZ2lvbnMgYWNjZXNzZWQgZmlyc3QuICovXG5tbS9kYW1vbi9scnVfc29ydC5jLTExMi1cdC53ZWlnaHRfc3ogPSAwLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMTE1LX07XG5tbS9kYW1vbi9scnVfc29ydC5jOjExNjpERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19USU1FX1FVT1RBKGRhbW9uX2xydV9zb3J0X3F1b3RhKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTE3LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MTY0PURFRklORV9EQU1PTl9NT0RVTEVTX0RBTU9TX1NUQVRTX1BBUkFNUyhkYW1vbl9scnVfc29ydF9ob3Rfc3RhdCxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTY1LVx0XHRscnVfc29ydF90cmllZF9ob3RfcmVnaW9ucywgbHJ1X3NvcnRlZF9ob3RfcmVnaW9ucyxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTY2Olx0XHRob3RfcXVvdGFfZXhjZWVkcyk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTE2Ny1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTE2OT1ERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19TVEFUU19QQVJBTVMoZGFtb25fbHJ1X3NvcnRfY29sZF9zdGF0LFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xNzAtXHRcdGxydV9zb3J0X3RyaWVkX2NvbGRfcmVnaW9ucywgbHJ1X3NvcnRlZF9jb2xkX3JlZ2lvbnMsXG5tbS9kYW1vbi9scnVfc29ydC5jOjE3MTpcdFx0Y29sZF9xdW90YV9leGNlZWRzKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTcyLVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MTg4PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX2xydV9zb3J0X25ld19zY2hlbWUoXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTAte1xubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTE6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgcXVvdGEgPSBkYW1vbl9scnVfc29ydF9xdW90YTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTkyLVxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTM6XHQvKiBVc2UgaGFsZiBvZiB0b3RhbCBxdW90YSBmb3IgaG90L2NvbGQgcGFnZXMgc29ydGluZyAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTQ6XHRxdW90YS5tcyA9IHF1b3RhLm1zIC8gMjtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTk1LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjAyLVx0XHRcdDAsXG5tbS9kYW1vbi9scnVfc29ydC5jOjIwMzpcdFx0XHQvKiB1bmRlciB0aGUgcXVvdGEuICovXG5tbS9kYW1vbi9scnVfc29ydC5jOjIwNDpcdFx0XHRcdTAwMjZxdW90YSxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjA1LVx0XHRcdC8qIChEZSlhY3RpdmF0ZSB0aGlzIGFjY29yZGluZyB0byB0aGUgd2F0ZXJtYXJrcy4gKi9cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMC1cdFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzkxNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5KioKClJpZ2h0LCBzbyBEQU1PTiwgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IsIGhhcyBhIGZldyBhY2Nlc3Mgcm91dGVzLCBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBGaXJzdCwgYW5kIGxpa2VseSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCwgaXQmIzM5O3MgYWNjZXNzaWJsZSB0aHJvdWdoIHN5c2ZzLiBUaGF0JiMzOTtzIHRoZSBnby10byB1c3VhbGx5LCBhbmQgSSB3b3VsZCBjaGVjayBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCBpZiBgQ09ORklHX0RBTU9OX1NZU0ZTYCBpcyBlbmFibGVkLCBhcyBpdCBwcm9iYWJseSB3aWxsIGJlLiBCdXQgaWYgdGhhdCYjMzk7cyBub3QgYXZhaWxhYmxlLCBvciBJJiMzOTttIGRvaW5nIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLCBpdCBjYW4gYWxzbyBiZSBhY2Nlc3NlZCB0aHJvdWdoIGRlYnVnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHVuZGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGxpa2UgYENPTkZJR19EQU1PTl9SRUNMQUlNYCBvciBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYC4gR29vZCB0byBrbm93IHRoZSBhbHRlcm5hdGl2ZXMuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGludmVzdGlnYXRlIGl0cyBleHBvc3VyZSBpbiBzeXNmcyBmaXJzdC4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCYjMzk7cyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc19zeXNmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQyPXZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTUxPWludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1Nzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2ModW5zaWduZWQgY2hhciBoaXRzKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqcHJvYmU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxPXN0YXRpYyBzc2l6ZV90IGhpdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMy17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDI6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDM6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19wcm9iZV9oaXRzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5LVx0XHRfX0FUVFJfUk9fTU9ERShoaXRzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MjpcdFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2hpdHNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NC19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU1OkFUVFJJQlVURV9HUk9VUFMoZGFtb3Nfc3lzZnNfcHJvYmUpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU4Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZV9yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU5LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYwOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcHJvYmVfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYxLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OnN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2OTpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqKnByb2Jlc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzAtXHRpbnQgbnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpkYW1vc19zeXNmc19wcm9iZXNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzU6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzYtfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc4OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2Jlcylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03OS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODA6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyID0gcHJvYmVzLVx1MDAzZXByb2Jlc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODEtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTA6c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTkxLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtOTMtXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjk0Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICoqcHJvYmVzX2Fycjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05NS1cdGludCBpID0gMDtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA5LVx0ZGFtb25fZm9yX2VhY2hfcHJvYmUocHJvYmUsIGN0eCkge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjExMDpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICpzeXNfcHJvYmU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTExLVx0XHRpbnQgZXJyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTM6XHRcdHN5c19wcm9iZSA9IGRhbW9zX3N5c2ZzX3Byb2JlX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNC1cdFx0XHRcdGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaSwgcmVnaW9uLCBjdHgpKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTUtXHRcdGlmICghc3lzX3Byb2JlKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTE2Olx0XHRcdGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHByb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTE3LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTktXHRcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFx1MDAyNnN5c19wcm9iZS1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMDpcdFx0XHRcdFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlLCBcdTAwMjZwcm9iZXMtXHUwMDNla29iaiwgXCYjMzQ7JWRcJiMzNDssXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxLVx0XHRcdFx0aSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMy1cdFx0XHRrb2JqZWN0X3B1dChcdTAwMjZzeXNfcHJvYmUtXHUwMDNla29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI0Olx0XHRcdGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHByb2Jlcyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI1LVx0XHRcdHJldHVybiBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzY6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI6XHQucmVsZWFzZSA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0My1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUwPXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1LVx0dW5zaWduZWQgbG9uZyBzel9maWx0ZXJfcGFzc2VkO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2Jlcztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTctXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWxsb2MoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzY6c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc3LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2JlcyA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19hbGxvYygpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4Mi1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg2Olx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXHUwMDI2cHJvYmVzLVx1MDAzZWtvYmosIFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODctXHRcdFx0XHUwMDI2cmVnaW9uLVx1MDAzZWtvYmosIFwmIzM0O3Byb2Jlc1wmIzM0Oyk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4OS1cdFx0Z290byBmYWlsO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE5MDpcdGVyciA9IGRhbW9zX3N5c2ZzX3Byb2Jlc19hZGRfZGlycyhwcm9iZXMsIGN0eCwgZHJlZ2lvbik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTkxLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjAxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIwMjpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDMtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjA0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDU6XHRkYW1vc19zeXNmc19wcm9iZXNfcm1fZGlycyhyZWdpb24tXHUwMDNlcHJvYmVzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDYtXHRrb2JqZWN0X3B1dChcdTAwMjZyZWdpb24tXHUwMDNlcHJvYmVzLVx1MDAzZWtvYmopO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMjg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcm1fZGlycyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMzLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHIsIG5leHQsIFx1MDAyNnJlZ2lvbnMtXHUwMDNlcmVnaW9uc19saXN0LCBsaXN0KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzM0Olx0XHRkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhyKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzUtXHRcdGxpc3RfZGVsKFx1MDAyNnItXHUwMDNlbGlzdCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTIwLS8qXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTIxOiAqIGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciAtIExheWVycyBoYW5kbGluZyBmaWx0ZXJzIG9mIGEgZGlyLlxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUyMi0gKi9cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MjM6ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjQtXHREQU1PU19TWVNGU19GSUxURVJfSEFORExFX0xBWUVSX0NPUkUsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyOT1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MzE6XHRlbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIgaGFuZGxlX2xheWVyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMi1cdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTQxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDI6XHRcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDMte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTUyOnN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTMtXHRlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NTc6c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU4OmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTU5LVx0e1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01OTM9c3RhdGljIHNzaXplX3QgdHlwZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjAwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lcyk7IGkmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjAxOlx0XHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSAqdHlwZV9uYW1lO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYwMi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDM6XHRcdHR5cGVfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW2ldO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYwNC1cdFx0aWYgKHR5cGVfbmFtZS1cdTAwM2V0eXBlID09IGZpbHRlci1cdTAwM2V0eXBlKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjEwOnN0YXRpYyBib29sIGRhbW9zX3N5c2ZzX3NjaGVtZV9maWx0ZXJfdmFsaWRfdHlwZShcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTE6XHRcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MTItXHRcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSlcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzKTsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MzY6XHRcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lICp0eXBlX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjM3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzODpcdFx0dHlwZV9uYW1lID0gXHUwMDI2ZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZXNbaV07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjM5LVx0XHRpZiAoc3lzZnNfc3RyZXEoYnVmLCB0eXBlX25hbWUtXHUwMDNlbmFtZSkpIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NDA6XHRcdFx0aWYgKCFkYW1vc19zeXNmc19zY2hlbWVfZmlsdGVyX3ZhbGlkX3R5cGUoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjQxLVx0XHRcdFx0XHRcdGZpbHRlci1cdTAwM2VoYW5kbGVfbGF5ZXIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5Mj1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODk0Olx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGhhbmRsZV9sYXllcjtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTUtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqKmZpbHRlcnNfYXJyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04OTk9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVycyAqXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTAwOmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2FsbG9jKGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05MDEte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDI5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyAqZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19hbGxvYyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA0NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDQ2OnN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA0Ny1cdGVudW0gZGFtb3Nfd21hcmtfbWV0cmljIG1ldHJpYztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA1MC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUyOmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNTMtXHR7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwNjM9c3RhdGljIHNzaXplX3QgbWV0cmljX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA2OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDcwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwNzE6XHRcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA3Mi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDczOlx0XHRtZXRyaWNfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tpXTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDc0LVx0XHRpZiAobWV0cmljX25hbWUtXHUwMDNlbWV0cmljID09IHdhdGVybWFya3MtXHUwMDNlbWV0cmljKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDgwPXN0YXRpYyBzc2l6ZV90IG1ldHJpY19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwODc6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lcyk7IGkmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA4ODpcdFx0Y29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lICptZXRyaWNfbmFtZTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwOTA6XHRcdG1ldHJpY19uYW1lID0gXHUwMDI2ZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVzW2ldO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwOTEtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIG1ldHJpY19uYW1lLVx1MDAzZW5hbWUpKSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE1OnN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjE2LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIyMy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjY6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIyOTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzAtXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIzND1zdGF0aWNcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjM1OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjM2LVx0e1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4MC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cdGludCBpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4NTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzKTsgaSYjNDM7JiM0MzspIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg2Olx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUgKm1ldHJpY19uYW1lO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4ODpcdFx0bWV0cmljX25hbWUgPSBcdTAwMjZkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbaV07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4OS1cdFx0aWYgKG1ldHJpY19uYW1lLVx1MDAzZW1ldHJpYyA9PSBnb2FsLVx1MDAzZW1ldHJpYylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTI5NT1zdGF0aWMgc3NpemVfdCB0YXJnZXRfbWV0cmljX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjk3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjk4Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjk5Olx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzAwLVx0aW50IGk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwMS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzAyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDM6XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzA1Olx0XHRtZXRyaWNfbmFtZSA9IFx1MDAyNmRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lc1tpXTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzA2LVx0XHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBtZXRyaWNfbmFtZS1cdTAwM2VuYW1lKSkge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzE0PXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzE3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE5LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyNS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjc6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNldGFyZ2V0X3ZhbHVlKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMzMz1zdGF0aWMgc3NpemVfdCBjdXJyZW50X3ZhbHVlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMzUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMzY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMzgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNDI9c3RhdGljIHNzaXplX3QgY3VycmVudF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM0NTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0Ny1cdGludCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNjM9c3RhdGljIHNzaXplX3QgbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzY1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzY2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2NzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzY4LVx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFx1MDAyNmdvYWwtXHUwMDNlbmlkKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM3ND1zdGF0aWMgc3NpemVfdCBwYXRoX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzc6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzktXHRpbnQgbGVuO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzg4PXN0YXRpYyBzc2l6ZV90IHBhdGhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTE6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTMtXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMDpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfbWV0cmljX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjAtXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9tZXRyaWMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjMtXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyNC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXHRcdF9fQVRUUl9SV19NT0RFKGN1cnJlbnRfdmFsdWUsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfbmlkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjktXHRcdF9fQVRUUl9SV19NT0RFKG5pZCwgMDYwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzMC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzItXHRcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF9tZXRyaWNfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfbmlkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQxLX07XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XHQucmVsZWFzZSA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQ2LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDc6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQ4LX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ1NDpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FycjtcdC8qIGNvdW50ZWQgYnkgbnIgKi9cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU3LVx0aW50IG5yO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDYyOlx0cmV0dXJuIGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDY1OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscylcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDY4Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnIgPSBnb2Fscy1cdTAwM2Vnb2Fsc19hcnI7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2OS1cdGludCBpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDc5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODA6c3RhdGljIGludCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hZGRfZGlycyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzLCBpbnQgbnJfZ29hbHMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ4Mi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MzpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyLCAqZ29hbDtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg0LVx0aW50IGVyciwgaTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODY6XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg3LVx0aWYgKCFucl9nb2Fscylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2dvYWxzOyBpJiM0MzsmIzQzOykge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0OTc6XHRcdGdvYWwgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2FsbG9jKCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5OC1cdFx0aWYgKCFnb2FsKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ5OTpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAwLVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAzLVx0XHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcdTAwMjZnb2FsLVx1MDAzZWtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwNDpcdFx0XHRcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUsIFx1MDAyNmdvYWxzLVx1MDAzZWtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNS1cdFx0XHRcdFwmIzM0OyVkXCYjMzQ7LCBpKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNy1cdFx0XHRrb2JqZWN0X3B1dChcdTAwMjZnb2FsLVx1MDAzZWtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MDg6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwOS1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNTE4PXN0YXRpYyBzc2l6ZV90IG5yX2dvYWxzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjAte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MjE6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUyMjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1Mjc9c3RhdGljIHNzaXplX3QgbnJfZ29hbHNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1Mjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MzA6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MzEtXHRpbnQgbnIsIGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFx1MDAyNm5yKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUzNy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTM4Olx0Z29hbHMgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTM5LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTQxLVx0XHRyZXR1cm4gLUVCVVNZO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NDI6XHRlcnIgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hZGRfZGlycyhnb2FscywgbnIpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDMtXHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU1MDpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTI6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1My19XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTU1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfbnJfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1Ni1cdFx0X19BVFRSX1JXX01PREUobnJfZ29hbHMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU1ODpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTU5Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfbnJfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjAtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjEtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTYyOkFUVFJJQlVURV9HUk9VUFMoZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTY1Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjYtXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU2NzpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY4LX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2ODQ9c3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODYtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyAqd2VpZ2h0cztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg4LVx0dW5zaWduZWQgbG9uZyBtcztcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTcwMj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3F1b3Rhc19hZGRfZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfcXVvdGFzICpxdW90YXMpXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MDQtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyAqd2VpZ2h0cztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzA1Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2Fscztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzA2LVx0aW50IGVycjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcxOS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzIwOlx0Z29hbHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYygpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjEtXHRpZiAoIWdvYWxzKSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjUtXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcdTAwMjZnb2Fscy1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3MjY6XHRcdFx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUsIFx1MDAyNnF1b3Rhcy1cdTAwM2Vrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MjctXHRcdFx0XCYjMzQ7Z29hbHNcJiMzNDspO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzM4PXN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3F1b3Rhc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMgKnF1b3Rhcylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0MC1cdGtvYmplY3RfcHV0KFx1MDAyNnF1b3Rhcy1cdTAwM2V3ZWlnaHRzLVx1MDAzZWtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NDE6XHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKHF1b3Rhcy1cdTAwM2Vnb2Fscyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0Mi1cdGtvYmplY3RfcHV0KFx1MDAyNnF1b3Rhcy1cdTAwM2Vnb2Fscy1cdTAwM2Vrb2JqKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgwOD1zdGF0aWMgc3NpemVfdCBlZmZlY3RpdmVfYnl0ZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgxNi1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODE3OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODE4LVx0ZW51bSBkYW1vc19xdW90YV9nb2FsX3R1bmVyIHR1bmVyO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODIxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MjI6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIGRhbW9zX3N5c2ZzX3Fnb2FsX3R1bmVyX25hbWVzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMy1cdHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgzMz1zdGF0aWMgc3NpemVfdCBnb2FsX3R1bmVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4MzktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg0MDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfdHVuZXJfbmFtZXMpOyBpJiM0MzsmIzQzOykge1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYCBhbmQgaG93IHRoaXMgc3BlY2lmaWMgY2hhbmdlIGltcGFjdHMgaXRzIGxvZ2ljLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEVzc2VudGlhbGx5LCB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlcyBhbiBlZmZlY3RpdmUgcXVvdGEgc2l6ZSAoYGVzemApIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9ycyB0aWVkIHRvIHRoZSBgZGFtb3NgIHN0cnVjdHVyZSBhbmQgaXRzIGFzc29jaWF0ZWQgYHF1b3RhYC4KCkluaXRpYWxseSwgaWYgbmVpdGhlciBgcXVvdGEtJmd0O21zYCBpcyBzZXQgKmFuZCogdGhlIGdvYWwgbGlzdCBpcyBlbXB0eSwgdGhlbiBgZXN6YCBzaW1wbHkgZGVmYXVsdHMgdG8gYHF1b3RhLSZndDtzemAsIHdoaWNoIG1ha2VzIHNlbnNlLiAgTm93LCBpZiB0aGVyZSAqYXJlKiBnb2FscyBzZXQsIGl0IHVzZXMgb25lIG9mIHRoZSBnb2FsIHR1bmVycyAodGVtcG9yYWwgb3IgY29uc2lzdGVudCkgdG8gYWRqdXN0IGBlc3pfYnBgLiBUaGUga2V5IHBvaW50IGlzOiBpZiB0aGUgZ29hbCB0dW5pbmcgbG9naWMgc2V0cyBgcXVvdGEtJmd0O2Vzel9icGAgdG8gMCAod2hpY2ggSSByZWNhbGwgZnJvbSBteSBwcmV2aW91cyB1bmRlcnN0YW5kaW5nIGlzIHF1aXRlIHBvc3NpYmxlLCBlc3BlY2lhbGx5IHdpdGggYHNjb3JlICZndDs9IDEwMDAwYCksIHRoZW4gdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgc3VidGxlIGZsYXcuCgpIZXJlJiMzOTtzIHdoZXJlIGl0IGdvdCBpbnRlcmVzdGluZy4gIEV2ZW4gaWYgYGVzel9icGAgd2FzIHplcm8gZHVlIHRvIGdvYWwgdHVuaW5nLCBpZiBgcXVvdGEtJmd0O21zYCB3YXMgc3Vic2VxdWVudGx5IHNldCwgdGhlIGNvZGUgd291bGQgY2FsY3VsYXRlIGBlc3pgIGFzIHRoZSBtaW5pbXVtIG9mIHNvbWUgdGhyb3VnaHB1dCB2YWx1ZSBtdWx0aXBsaWVkIGJ5IGBxdW90YS0mZ3Q7bXNgLCAqYW5kKiB0aGUgKG5vdyB6ZXJvKSBgZXN6YCB2YWx1ZS4gIE9mIGNvdXJzZSwgdGhlIG1pbmltdW0gb2YgMCBhbmQgYW55dGhpbmcgaXMgMC4gSG93ZXZlciwgdGhlIG5leHQgbGluZSBgZXN6ID0gbWF4KGN0eC0mZ3Q7bWluX3JlZ2lvbl9zeiwgZXN6KTtgIHdvdWxkIHRoZW4gc2V0IGBlc3pgIHRvIGBjdHgtJmd0O21pbl9yZWdpb25fc3pgLiAgU28sIHlvdSYjMzk7ZCBlbmQgdXAgd2l0aCBhIG5vbi16ZXJvIGBlc3pgIGV2ZW4gdGhvdWdoIGdvYWwgdHVuaW5nIGhhZCBkZWxpYmVyYXRlbHkgemVyb2VkIG91dCBgZXN6X2JwYC4KClRoZSBuZXcgY2hlY2sgYGlmICghcXVvdGEtJmd0O2Vzel9icCkgZXN6ID0gMDtgIGFkZHJlc3NlcyB0aGlzLiAgSXQgKmZvcmNlcyogYGVzemAgdG8gemVybyB3aGVuIGBlc3pfYnBgIGlzIHplcm8sIHdoaWNoIGlzIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBiYXNlZCBvbiB0aGUgZ29hbCB0dW5pbmcuIFByZXZpb3VzbHksIHRoZSBgbWF4YCBmdW5jdGlvbiB3YXMgZWZmZWN0aXZlbHkgb3ZlcnJpZGluZyB0aGUgemVybyB2YWx1ZS4KCkkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGBxdW90YS0mZ3Q7Z29hbHNgIGlzIGVtcHR5LCBidXQgYHF1b3RhLSZndDttc2AgKmlzKiBzZXQuICBJIGtub3cgYGRhbW9zX3F1b3RhX2luaXRgIHNldHMgYHF1b3RhLSZndDtlc3pfYnAgPSAwYCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFNvLCB0aGUgY29uZGl0aW9uIGAhcXVvdGEtJmd0O21zICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO3F1b3RhLSZndDtnb2FscylgIGlzIGZhbHNlLiAgSW4gdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiwgaWYgYCFsaXN0X2VtcHR5KCZhbXA7cXVvdGEtJmd0O2dvYWxzKWAgaXMgZmFsc2UsIGl0IG1lYW5zIHdlIGRvbiYjMzk7dCB1c2UgZ29hbCB0dW5pbmcuICBUaHVzLCBgZXN6YCB3b3VsZCByZW1haW4gdW5pbml0aWFsaXplZC4gIChIYW5nIG9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIGZvciB0aGUgY2FzZSB3aGVyZSBgbGlzdF9lbXB0eSgmYW1wO3F1b3RhLSZndDtnb2FscylgIGFuZCBgcXVvdGEtJmd0O21zICE9IDBgISBMZXQgbWUgcmV2aWV3IHRob3NlIGxpbmVzLi4uKQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIyMDpcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVx1MDAzZW1zLCBvciBxdW90YS1cdTAwM2VzeiBhcmUgc2V0LCBvciBxdW90YS1cdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcbjMyMjE6XHQgKi9cbjMyMjI6XHRzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxuMzIyMzpcdHtcbjMyMjQ6XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xuMzIyNTpcdFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xuMzIyNjpcdFx0dW5zaWduZWQgbG9uZyBlc3ogPSBVTE9OR19NQVg7XG4zMjI3Olx0XG4zMjI4Olx0XHRpZiAoIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIyOTpcdFx0XHRxdW90YS1cdTAwM2Vlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyMzA6XHRcdFx0cmV0dXJuO1xuMzIzMTpcdFx0fVxuMzIzMjpcdFxuMzIzMzpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIzNDpcdFx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG4zMjM1Olx0XHRcdFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XG4zMjM2Olx0XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbjMyMzc6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG4zMjM4Olx0XHRcdGVzeiA9IHF1b3RhLVx1MDAzZWVzel9icCAvIDEwMDAwO1xuMzIzOTpcdFx0fVxuMzI0MDpcdFxuMzI0MTpcdFx0aWYgKHF1b3RhLVx1MDAzZW1zKSB7XG4zMjQyOlx0XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxuMzI0MzpcdFx0XHRcdHRocm91Z2hwdXQgPSBtdWx0X2ZyYWMocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeixcbjMyNDQ6XHRcdFx0XHRcdFx0MTAwMDAwMCwgcXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyk7XG4zMjQ1Olx0XHRcdGVsc2VcbjMyNDY6XHRcdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbjMyNDc6XHRcdFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cdTAwM2VtcywgZXN6KTtcbjMyNDg6XHRcdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuMzI0OTpcdFx0fVxuMzI1MDpcdFxuMzI1MTpcdFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuMzI1MjpcdFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyNTM6XHRcbjMyNTQ6XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuMzI1NTpcdFx0XHRlc3ogPSAwO1xuMzI1NjpcdFxuMzI1NzpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuMzI1ODpcdH1cbjMyNTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0NDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhIERBTU9OIENvcmUgTG9naWMgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIHdoZW4gYHF1b3RhLSZndDtnb2Fsc2AgaXMgZW1wdHksIGBxdW90YS0mZ3Q7ZXN6X2JwYCBzdGF5cyBhdCB6ZXJvLiBUaGF0JiMzOTtzIGZpbmUsIGJ1dCB0aGVuIHRoZSBjb2RlIGdvZXMgb24gdG8gY2hlY2sgYGlmICghcXVvdGEtJmd0O2Vzel9icCkgZXN6ID0gMDtgLiBUaGlzIG1lYW5zIGlmIHNvbWVvbmUgZGVmaW5lcyBhIHRpbWUgcXVvdGEgKGBxdW90YS0mZ3Q7bXNgKSBidXQgKmRvZXNuJiMzOTt0KiBzZXQgYW55IGdvYWxzLCB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIChgcXVvdGEtJmd0O2VzemApIGdldHMgc2V0IHRvIHplcm8hIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IERBTU9OIGZyYW1ld29yay4KClRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggc2VyaW91cyBhdHRlbnRpb24/IEZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KClllcywgREFNT04mIzM5O3Mgc3lzZnMgaW50ZXJmYWNlIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCkgKmlzKiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyBnb29kIG5ld3MuIEFuZCBEQU1PTiByZWNsYWltLCB0aGUgTFJVIHNvcnQsIGFuZCB0aGUgc3lzZnMgc2NoZW1lcyBhcmUgYWxsIHJlYWNoYWJsZSBpbiB1c2VyIHNwYWNlIGFuZCBhcmUgdGVzdGVkIGFscmVhZHkuCgpUaGVyZWZvcmUsIGJlY2F1c2U6CgoqICAgSXQgZGlyZWN0bHkgYWx0ZXJzIGtlcm5lbCBsb2dpYyBpbiBgbW0vZGFtb24vY29yZS5jYCAodGhhdCYjMzk7cyBjb3JlIERBTU9OIGNvZGUpCiogICBJdCYjMzk7cyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4KKiAgIEl0IG1vZGlmaWVzIGhvdyB0aGUgYGVzemAgdmFsdWUgKGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSkgaXMgY2FsY3VsYXRlZAoKSSBjb25jbHVkZSB0aGF0IGBXb3J0aEZ1enppbmcgPSB0cnVlYC4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIHRoaXMgZnVydGhlci4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnV6emluZyBzdHJhdGVneS4gV2UgbmVlZCB0byBpZGVudGlmeSByZWxldmFudDoKCjEuICBgRm9jdXNTeW1ib2xzYAoyLiAgYEVuYWJsZUNvbmZpZ3NgCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBpbiBgbW0vZGFtb24vYCBhbmQgbG9vayBmb3IgZW50cnkgcG9pbnRzLCBleHBvcnRlZCBzeW1ib2xzLCBub24tc3RhdGljIGZ1bmN0aW9ucywgYW5kIGtleSBmdW5jdGlvbnMgdG8gZnV6ei4gV2UmIzM5O2xsIGNvbmNlbnRyYXRlIG9uIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgbW0vZGFtb24vYCBhbmQgdGhlIHN5c2ZzIGludGVyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zXy4qcXVvdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODEwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmM9NjgzPXZvaWQgZGFtb3NfZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxubW0vZGFtb24vY29yZS5jOjY4OTpzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbmV3X3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmM6NjkwOlx0XHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYyxcbm1tL2RhbW9uL2NvcmUuYy02OTEtXHRcdHVuc2lnbmVkIGxvbmcgdGFyZ2V0X3ZhbHVlKVxubW0vZGFtb24vY29yZS5jLTY5Mi17XG5tbS9kYW1vbi9jb3JlLmM6NjkzOlx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9jb3JlLmMtNjk0LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy03MDUtXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MTAtXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxMi17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxNS1cbm1tL2RhbW9uL2NvcmUuYzo3MTY6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcyMC1cbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcbm1tL2RhbW9uL2NvcmUuYzo3MjM6XHRkYW1vc19kZWxfcXVvdGFfZ29hbChnKTtcbm1tL2RhbW9uL2NvcmUuYzo3MjQ6XHRkYW1vc19mcmVlX3F1b3RhX2dvYWwoZyk7XG5tbS9kYW1vbi9jb3JlLmMtNzI1LX1cbm1tL2RhbW9uL2NvcmUuYy03MjYtXG5tbS9kYW1vbi9jb3JlLmM6NzI3OnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MzItLyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG4tLVxubW0vZGFtb24vY29yZS5jPTc0Nj1zdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03NDgtXHRcdFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cyxcbm1tL2RhbW9uL2NvcmUuYzo3NDk6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy03NTAtXHRcdFx0c3RydWN0IGRhbW9zX3dhdGVybWFya3MgKndtYXJrcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzc0LVxubW0vZGFtb24vY29yZS5jOjc3NTpcdHNjaGVtZS1cdTAwM2VxdW90YSA9ICooZGFtb3NfcXVvdGFfaW5pdChxdW90YSkpO1xubW0vZGFtb24vY29yZS5jLTc3Ni1cdC8qIHF1b3RhLmdvYWxzIHNob3VsZCBiZSBzZXBhcmF0ZWx5IHNldCBieSBjYWxsZXIgKi9cbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODE1PXZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNi17XG5tbS9kYW1vbi9jb3JlLmM6ODE3Olx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcsICpnX25leHQ7XG5tbS9kYW1vbi9jb3JlLmMtODE4LVx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZiwgKm5leHQ7XG5tbS9kYW1vbi9jb3JlLmMtODE5LVxubW0vZGFtb24vY29yZS5jOjgyMDpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShnLCBnX25leHQsIFx1MDAyNnMtXHUwMDNlcXVvdGEpXG5tbS9kYW1vbi9jb3JlLmM6ODIxOlx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZyk7XG5tbS9kYW1vbi9jb3JlLmMtODIyLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMTY2PXZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYzoxMTc5Olx0XHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxubW0vZGFtb24vY29yZS5jLTExODAte1xubW0vZGFtb24vY29yZS5jOjExODE6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xMTgyLVx0aW50IGkgPSAwO1xubW0vZGFtb24vY29yZS5jLTExODMtXG5tbS9kYW1vbi9jb3JlLmM6MTE4NDpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcSkge1xubW0vZGFtb24vY29yZS5jLTExODUtXHRcdGlmIChpJiM0MzsmIzQzOyA9PSBuKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG5tbS9kYW1vbi9jb3JlLmM6MTE5MjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMTkzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jOjEyMTY6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyMjEtXHRcdGRzdC1cdTAwM2VjdXJyZW50X3ZhbHVlID0gc3JjLVx1MDAzZWN1cnJlbnRfdmFsdWU7XG5tbS9kYW1vbi9jb3JlLmM6MTIyMjpcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjIzLX1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIyNS0vKipcbm1tL2RhbW9uL2NvcmUuYzoxMjI2OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXG5tbS9kYW1vbi9jb3JlLmMtMTIyNy0gKiBAZHN0Olx0VGhlIGNvbW1pdCBkZXN0aW5hdGlvbiBEQU1PUyBxdW90YS5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMjM3OmludCBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zX3F1b3RhICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTEyMzgte1xubW0vZGFtb24vY29yZS5jOjEyMzk6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0X2dvYWwsICpuZXh0LCAqc3JjX2dvYWwsICpuZXdfZ29hbDtcbm1tL2RhbW9uL2NvcmUuYy0xMjQwLVx0aW50IGkgPSAwLCBqID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0xMjQxLVxubW0vZGFtb24vY29yZS5jOjEyNDI6XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xubW0vZGFtb24vY29yZS5jOjEyNDM6XHRcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSYjNDM7JiM0MzssIHNyYyk7XG5tbS9kYW1vbi9jb3JlLmMtMTI0NC1cdFx0aWYgKHNyY19nb2FsKVxubW0vZGFtb24vY29yZS5jOjEyNDU6XHRcdFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjQ2LVx0XHRlbHNlXG5tbS9kYW1vbi9jb3JlLmM6MTI0NzpcdFx0XHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xubW0vZGFtb24vY29yZS5jLTEyNDgtXHR9XG5tbS9kYW1vbi9jb3JlLmM6MTI0OTpcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWxfc2FmZShzcmNfZ29hbCwgbmV4dCwgc3JjKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTI1MC1cdFx0aWYgKGomIzQzOyYjNDM7IFx1MDAzYyBpKVxubW0vZGFtb24vY29yZS5jLTEyNTEtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9jb3JlLmM6MTI1MjpcdFx0bmV3X2dvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMjUzLVx0XHRcdFx0c3JjX2dvYWwtXHUwMDNlbWV0cmljLCBzcmNfZ29hbC1cdTAwM2V0YXJnZXRfdmFsdWUpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjU1LVx0XHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vY29yZS5jOjEyNTY6XHRcdGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKG5ld19nb2FsLCBzcmNfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmM6MTI1NzpcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoZHN0LCBuZXdfZ29hbCk7XG5tbS9kYW1vbi9jb3JlLmMtMTI1OC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC1cdGRzdC1cdTAwM2VzeiA9IHNyYy1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYzoxMjY5Olx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcbm1tL2RhbW9uL2NvcmUuYy0xMjcwLVx0aWYgKGVycilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTUxOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE1MjYtXG5tbS9kYW1vbi9jb3JlLmM6MTUyNzpcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMTUyOC1cdGlmIChlcnIpXG4tLVxubW0vZGFtb24vY29yZS5jPTE4NjI9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4NjUtXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcbm1tL2RhbW9uL2NvcmUuYzoxODY2Olx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9jb3JlLmMtMTg2Ny1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg3NC1cdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNjaGVtZSwgc3JjKSB7XG5tbS9kYW1vbi9jb3JlLmM6MTg3NTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTE4NzYtXG5tbS9kYW1vbi9jb3JlLmM6MTg3NzpcdFx0XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XG5tbS9kYW1vbi9jb3JlLmMtMTg3OC1cdFx0XHRcdGlmIChnb2FsLVx1MDAzZW1ldHJpYyA9PVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMzcxPXN0YXRpYyBib29sIF9fZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxubW0vZGFtb24vY29yZS5jOjIzODc6ICogZGFtb3NfcXVvdGFfaXNfc2V0KCkgLSBSZXR1cm4gaWYgdGhlIGdpdmVuIHF1b3RhIGlzIGFjdHVhbGx5IHNldC5cbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcdFRoZSBxdW90YSB0byBjaGVjay5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jLTIzOTQtXHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNDM0PXN0YXRpYyBib29sIGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24oc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XG5tbS9kYW1vbi9jb3JlLmM6MjQzODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTI0MzktXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XG4tLVxubW0vZGFtb24vY29yZS5jPTI2MTk9c3RhdGljIHZvaWQgZGFtb3Nfd2Fsa19jYW5jZWwoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjM1LVxubW0vZGFtb24vY29yZS5jOjI2MzY6c3RhdGljIHZvaWQgZGFtb3NfY2hhcmdlX3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cdFx0dW5zaWduZWQgbG9uZyBzel9yZWdpb24sIHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY1Mi1cbm1tL2RhbW9uL2NvcmUuYzoyNjUzOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVx0XHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njc9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI2Njkte1xubW0vZGFtb24vY29yZS5jOjI2NzA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNjcxLVx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjcwNC1cdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzA1Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbm1tL2RhbW9uL2NvcmUuYy0yNzA2LVx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4tLVxubW0vZGFtb24vY29yZS5jLTI3MjQtXHRcdFx0dGltZXNwZWM2NF90b19ucyhcdTAwMjZiZWdpbik7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNTpcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG5tbS9kYW1vbi9jb3JlLmM6MjcyNjpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbm1tL2RhbW9uL2NvcmUuYy0yNzI3LVx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTI3Mzg9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbm1tL2RhbW9uL2NvcmUuYzoyNzQ1Olx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzUzLVx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzU0Olx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yOTAwPXN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcbm1tL2RhbW9uL2NvcmUuYzoyOTAxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0yOTAyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjkyOD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxubW0vZGFtb24vY29yZS5jOjI5Mjk6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxubW0vZGFtb24vY29yZS5jLTI5MzAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDgyPXN0YXRpYyBfX2tlcm5lbF91bG9uZ190IGRhbW9zX2dldF9ub2RlX21lbV9icChcbm1tL2RhbW9uL2NvcmUuYzozMDgzOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMDg0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzA4OD1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19nZXRfbm9kZV9tZW1jZ191c2VkX2JwKFxubW0vZGFtb24vY29yZS5jOjMwODk6XHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxubW0vZGFtb24vY29yZS5jLTMwOTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMTE5PXN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb3NfaHVnZXBhZ2VfbWVtX2JwKHZvaWQpXG4tLVxubW0vZGFtb24vY29yZS5jLTMxMzQtXG5tbS9kYW1vbi9jb3JlLmM6MzEzNTpzdGF0aWMgdm9pZCBkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKHN0cnVjdCBkYW1vbl9jdHggKmMsXG5tbS9kYW1vbi9jb3JlLmM6MzEzNjpcdFx0c3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcbm1tL2RhbW9uL2NvcmUuYy0zMTM3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzE3OS0vKiBSZXR1cm4gdGhlIGhpZ2hlc3Qgc2NvcmUgc2luY2UgaXQgbWFrZXMgc2NoZW1lcyBsZWFzdCBhZ2dyZXNzaXZlICovXG5tbS9kYW1vbi9jb3JlLmM6MzE4MDpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzE4MS17XG5tbS9kYW1vbi9jb3JlLmM6MzE4MjpcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xubW0vZGFtb24vY29yZS5jOjMxODM6XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbm1tL2RhbW9uL2NvcmUuYy0zMTg0LVx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcbm1tL2RhbW9uL2NvcmUuYy0zMTg1LVxubW0vZGFtb24vY29yZS5jOjMxODY6XHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzE4NzpcdFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcbm1tL2RhbW9uL2NvcmUuYy0zMTg4LVx0XHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXG4tLVxubW0vZGFtb24vY29yZS5jPTMxOTY9c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMTk3LXtcbm1tL2RhbW9uL2NvcmUuYzozMTk4Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmM6MzE5OTpcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjAwLVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jOjMyMDk6XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzIyMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozMjIyOnN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMzIyMy17XG5tbS9kYW1vbi9jb3JlLmM6MzIyNDpcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xubW0vZGFtb24vY29yZS5jLTMyMjUtXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcbm1tL2RhbW9uL2NvcmUuYzozMjYxOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTMyNjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVx0fVxubW0vZGFtb24vY29yZS5jOjMyNzE6XHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXHUwMDNlZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxubW0vZGFtb24vY29yZS5jOjMyNzQ6c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcbm1tL2RhbW9uL2NvcmUuYzozMjc2Olx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG5tbS9kYW1vbi9jb3JlLmMtMzI3Ny1cdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyODctXHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfZnJvbSA9IGppZmZpZXM7XG5tbS9kYW1vbi9jb3JlLmM6MzI4ODpcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjg5LVx0XHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSlcbm1tL2RhbW9uL2NvcmUuYzozMjkwOlx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzI5MS1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI5Ni1cdFx0XHRcdG1zZWNzX3RvX2ppZmZpZXMocXVvdGEtXHUwMDNlcmVzZXRfaW50ZXJ2YWwpKSkge1xubW0vZGFtb24vY29yZS5jOjMyOTc6XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxubW0vZGFtb24vY29yZS5jLTMyOTgtXHRcdFx0cy1cdTAwM2VzdGF0LnF0X2V4Y2VlZHMmIzQzOyYjNDM7O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMzAzLVx0XHRcdGNhY2hlZF9lc3ogPSBxdW90YS1cdTAwM2Vlc3o7XG5tbS9kYW1vbi9jb3JlLmM6MzMwNDpcdFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcbm1tL2RhbW9uL2NvcmUuYzozMzA1Olx0XHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXG5tbS9kYW1vbi9jb3JlLmM6MzMwNjpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMzMDctXHR9XG4tLVxubW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMzNzAtXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpcdFx0ZGFtb3NfYWRqdXN0X3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jLTMzNzItXHR9XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0xMDQ9bW9kdWxlX3BhcmFtKGNvbGRfbWluX2FnZSwgdWxvbmcsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDUtXG5tbS9kYW1vbi9scnVfc29ydC5jOjEwNjpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhIGRhbW9uX2xydV9zb3J0X3F1b3RhID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDctXHQvKiBVc2UgdXAgdG8gMTAgbXMgcGVyIDEgc2VjLCBieSBkZWZhdWx0ICovXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0xODg9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbHJ1X3NvcnRfbmV3X3NjaGVtZShcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5MC17XG5tbS9kYW1vbi9scnVfc29ydC5jOjE5MTpcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YSA9IGRhbW9uX2xydV9zb3J0X3F1b3RhO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTItXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMxLXtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjMyOlx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMy1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5tbS9kYW1vbi9scnVfc29ydC5jOjIzODpcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVx0aWYgKCFnb2FsKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDAtXHRcdHJldHVybiAtRU5PTUVNO1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDE6XHRkYW1vc19hZGRfcXVvdGFfZ29hbChcdTAwMjZob3Rfc2NoZW1lLVx1MDAzZXF1b3RhLCBnb2FsKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQyLVx0LyogYWltIDAuMiAlIGdvYWwgY29uZmxpY3QsIHRvIGtlZXAgbGl0dGxlIHBpbmcgcG9uZyAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDM6XHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDQtXHRcdFx0MTAwMDAgLSBhY3RpdmVfbWVtX2JwICYjNDM7IDIpO1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ2LVx0XHRyZXR1cm4gLUVOT01FTTtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjQ3Olx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXHUwMDI2Y29sZF9zY2hlbWUtXHUwMDNlcXVvdGEsIGdvYWwpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDgtXHRyZXR1cm4gMDtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9NDg9bW9kdWxlX3BhcmFtKG1pbl9hZ2UsIHVsb25nLCAwNjAwKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy00OS1cbm1tL2RhbW9uL3JlY2xhaW0uYzo1MDpzdGF0aWMgc3RydWN0IGRhbW9zX3F1b3RhIGRhbW9uX3JlY2xhaW1fcXVvdGEgPSB7XG5tbS9kYW1vbi9yZWNsYWltLmMtNTEtXHQvKiB1c2UgdXAgdG8gMTAgbXMgdGltZSwgcmVjbGFpbSB1cCB0byAxMjggTWlCIHBlciAxIHNlYyBieSBkZWZhdWx0ICovXG4tLVxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0xOTktXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMDA6XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMDEtXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmaWx0ZXI7XG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTIzNS1cdGlmIChxdW90YV9tZW1fcHJlc3N1cmVfdXMpIHtcbm1tL2RhbW9uL3JlY2xhaW0uYzoyMzY6XHRcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9TT01FX01FTV9QU0lfVVMsXG5tbS9kYW1vbi9yZWNsYWltLmMtMjM3LVx0XHRcdFx0cXVvdGFfbWVtX3ByZXNzdXJlX3VzKTtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjM5LVx0XHRcdGdvdG8gb3V0O1xubW0vZGFtb24vcmVjbGFpbS5jOjI0MDpcdFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXHUwMDI2c2NoZW1lLVx1MDAzZXF1b3RhLCBnb2FsKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDEtXHR9XG4tLVxubW0vZGFtb24vcmVjbGFpbS5jLTI0My1cdGlmIChxdW90YV9hdXRvdHVuZV9mZWVkYmFjaykge1xubW0vZGFtb24vcmVjbGFpbS5jOjI0NDpcdFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsIDEwMDAwKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDUtXHRcdGlmICghZ29hbClcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ3LVx0XHRnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUgPSBxdW90YV9hdXRvdHVuZV9mZWVkYmFjaztcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDg6XHRcdGRhbW9zX2FkZF9xdW90YV9nb2FsKFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YSwgZ29hbCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ5LVx0fVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTUxPWludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1Nzp2b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTgtXHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3dhdGVybWFya3Nfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNzpcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTgtXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIyMy1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjY6XHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjI5PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIzMDpcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzEtXHRjaGFyICpuYW1lO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4MC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MjpcdFx0XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cdGludCBpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyOTcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTk6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxNi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMTg6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMyMz1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjUte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMjY6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzI3Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMjgtXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZXRhcmdldF92YWx1ZSk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzMzM9c3RhdGljIHNzaXplX3QgY3VycmVudF92YWx1ZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDQte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3Rcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzQ2Olx0XHRcdGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZWN1cnJlbnRfdmFsdWUpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzUzPXN0YXRpYyBzc2l6ZV90IG5pZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzU1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzU2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM1NzpcdFx0XHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzU4LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzYzPXN0YXRpYyBzc2l6ZV90IG5pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2NjpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XHRcdFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2OC1cdGludCBlcnIgPSBrc3RydG9pbnQoYnVmLCAwLCBcdTAwMjZnb2FsLVx1MDAzZW5pZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc2LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc4Olx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVx0aW50IGxlbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkyOlx0XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVx0Y2hhciAqcGF0aCA9IGttYWxsb2NfYXJyYXkoc2l6ZV9hZGQoY291bnQsIDEpLCBzaXplb2YoKnBhdGgpLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTEte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTM6XHRcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIwLVx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3RhcmdldF92YWx1ZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfdmFsdWUsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyNTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZV9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI2LVx0XHRfX0FUVFJfUldfTU9ERShjdXJyZW50X3ZhbHVlLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDI5LVx0XHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MzAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzMTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcGF0aF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVx0XHRfX0FUVFJfUldfTU9ERShwYXRoLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzQ6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM1Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfbWV0cmljX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM2Olx0XHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF90YXJnZXRfdmFsdWVfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mzc6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mzg6XHRcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzOTpcdFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcGF0aF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0MC1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0MS19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDI6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19xdW90YV9nb2FsKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ1Olx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0Ni1cdC5zeXNmc19vcHMgPSBcdTAwMjZrb2JqX3N5c2ZzX29wcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ3Olx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDUzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2Olx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnI7XHQvKiBjb3VudGVkIGJ5IG5yICovXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cdGludCBucjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDYwOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2MS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjMtfVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NTpzdGF0aWMgdm9pZCBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjY6XHRcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2Ny17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyID0gZ29hbHMtXHUwMDNlZ29hbHNfYXJyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgwOnN0YXRpYyBpbnQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MTpcdFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2FscywgaW50IG5yX2dvYWxzKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDU4CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUXVvdGEgTWFuYWdlbWVudCBDb2RlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLiBTaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgd2lkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgaXQgYW5kIGZpbmQgb3V0IHRoZSBlbnRyeXBvaW50cyBvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGggZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4gRmlyc3QsIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLgoKUmlnaHQsIEkgc2VlIHRoYXQgYGRhbW9zX2FkanVzdF9xdW90YWAgY2FsbHMgaXQuIFRoYXQmIzM5O3MgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFsc28gc3RhdGljLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCBieSBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga3RocmVhZC4gVGhhdCYjMzk7cyBvbmUgcGF0aC4gR290IGl0LiBBbHNvLCBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRoZSBEQU1PTiBjb21taXQgcHJvY2VzcywgYW5kIGR1cmluZyBzeXNmcyBvcGVyYXRpb25zIC0gc3RhcnQsIHVwZGF0ZS4KCk5leHQsIEkmIzM5O2xsIGJyb2FkZW4gbXkgc2VhcmNoLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgZnVuY3Rpb25zIGxpa2UgYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9zY2hlbWVzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAsIGBkYW1vc19hZGRfcXVvdGFfZ29hbGAsIGBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0c2AsIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AsIGBkYW1vbl9zeXNmc19hcHBseV9pbnB1dHNgLiBUaG9zZSBjb3VsZCBiZSBlbnRyeSBwb2ludHMgdGhhdCBldmVudHVhbGx5IHRyaWdnZXIgYSBjYWxsIHRvIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgYWxsIHRoZSBwYXRocy4KCkZpbmFsbHksIHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4gSSYjMzk7bGwgZm9jdXMgb24gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gTXkgYWltIGlzIHRvIGxvb2sgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYWN0IGFzIGludGVyZmFjZXMgb3IgZW50cnkgcG9pbnRzIGludG8gdGhpcyBxdW90YSBtYW5hZ2VtZW50IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV8gXSpcXCo/W2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubW0vZGFtb24vY29yZS5jLTI1LVxubW0vZGFtb24vY29yZS5jOjI2OnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fbG9jayk7XG5tbS9kYW1vbi9jb3JlLmMtMjctc3RhdGljIGludCBucl9ydW5uaW5nX2N0eHM7XG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcbm1tL2RhbW9uL2NvcmUuYy0yOS1cbm1tL2RhbW9uL2NvcmUuYzozMDpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX29wc19sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpkYW1vbl9yZWdpb25fY2FjaGUgX19yb19hZnRlcl9pbml0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNS0vKiBTaG91bGQgYmUgY2FsbGVkIHVuZGVyIGRhbW9uX29wc19sb2NrIHdpdGggaWQgc21hbGxlciB0aGFuIE5SX0RBTU9OX09QUyAqL1xubW0vZGFtb24vY29yZS5jOjM2OnN0YXRpYyBib29sIF9fZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy01MC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTUyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYtXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcbm1tL2RhbW9uL2NvcmUuYy0xMjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzEtXG5tbS9kYW1vbi9jb3JlLmM6MTMyOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTEzMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzNi1cbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTEzOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MS1cbm1tL2RhbW9uL2NvcmUuYzoxNDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxubW0vZGFtb24vY29yZS5jLTE0My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0Ny1cbm1tL2RhbW9uL2NvcmUuYzoxNDg6c3RhdGljIHN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9udGhfcHJlcChpbnQgbiwgc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTE0OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1OS1cbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0xNjEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzEtXG5tbS9kYW1vbi9jb3JlLmM6MTcyOnN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX25ld19maWx0ZXIoZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTE3My1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxubW0vZGFtb24vY29yZS5jOjE4Nzp2b2lkIGRhbW9uX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE4OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MS1cbm1tL2RhbW9uL2NvcmUuYzoxOTI6c3RhdGljIHZvaWQgZGFtb25fZGVsX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE5My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5Ni1cbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xOTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDEtXG5tbS9kYW1vbi9jb3JlLmM6MjAyOnZvaWQgZGFtb25fZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0yMDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDctXG5tbS9kYW1vbi9jb3JlLmM6MjA4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE5LVxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxubW0vZGFtb24vY29yZS5jLTIyMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIzMy1cbm1tL2RhbW9uL2NvcmUuYzoyMzQ6dm9pZCBkYW1vbl9hZGRfcHJvYmUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlKVxubW0vZGFtb24vY29yZS5jLTIzNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIzOC1cbm1tL2RhbW9uL2NvcmUuYzoyMzk6c3RhdGljIHZvaWQgZGFtb25fZGVsX3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNDMtXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTI0NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTI1NS1cbm1tL2RhbW9uL2NvcmUuYzoyNTY6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjU3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjYxLVxubW0vZGFtb24vY29yZS5jOjI2MjpzdGF0aWMgc3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9udGhfcHJvYmUoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNzMtXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXG5tbS9kYW1vbi9jb3JlLmMtMjc1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xubW0vZGFtb24vY29yZS5jOjMwNjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9tdnN1bSh1bnNpZ25lZCBsb25nIGN1cnJlbnRfbnIsXG5tbS9kYW1vbi9jb3JlLmMtMzA3LVx0XHR1bnNpZ25lZCBsb25nIGxhc3RfbnIsIHVuc2lnbmVkIGxvbmcgbGVmdF93aW5kb3dfYnApXG4tLVxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozMjY6dW5zaWduZWQgaW50IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMzI3LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTM0OS1cbm1tL2RhbW9uL2NvcmUuYzozNTA6dW5zaWduZWQgY2hhciBkYW1vbl9wcm9iZV9oaXRzX212c3VtKGludCBwcm9iZV9pZHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMzUxLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vY29yZS5jOjM3NTpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zNzYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNzktI2Vsc2Vcbm1tL2RhbW9uL2NvcmUuYzozODA6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzg5LSAqL1xubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTM5MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTQxNC1cbm1tL2RhbW9uL2NvcmUuYzo0MTU6c3RhdGljIHZvaWQgZGFtb25fYWRkX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQxNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTQyMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MjQ6c3RhdGljIGlubGluZSB2b2lkIGRhbW9uX2luc2VydF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00MjUtXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnByZXYsIHN0cnVjdCBkYW1vbl9yZWdpb24gKm5leHQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQzMi0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxubW0vZGFtb24vY29yZS5jOjQzMzpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQzNC17XG4tLVxubW0vZGFtb24vY29yZS5jLTQzNy0jZWxzZVxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQzOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ0Mi1cbm1tL2RhbW9uL2NvcmUuYzo0NDM6c3RhdGljIHZvaWQgZGFtb25fZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTQ0NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ1MC1cbm1tL2RhbW9uL2NvcmUuYzo0NTE6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy00NTUtXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDU3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00NjItXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDY0LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00NzYtICovXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxubW0vZGFtb24vY29yZS5jLTQ3OC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy00OTctICovXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vY29yZS5jLTQ5OS1cdFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MDYtICovXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxubW0vZGFtb24vY29yZS5jLTUwOC1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNTM5LSAqL1xubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcbm1tL2RhbW9uL2NvcmUuYy01NDEtXHRcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjMwLVxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcbm1tL2RhbW9uL2NvcmUuYy02MzItXHRcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXG4tLVxubW0vZGFtb24vY29yZS5jLTY1Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXG5tbS9kYW1vbi9jb3JlLmMtNjU0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxubW0vZGFtb24vY29yZS5jOjY2NTp2b2lkIGRhbW9zX2FkZF9maWx0ZXIoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY2Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTY3Mi1cbm1tL2RhbW9uL2NvcmUuYzo2NzM6c3RhdGljIHZvaWQgZGFtb3NfZGVsX2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY3NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTY3Ny1cbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy02Nzkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODItXG5tbS9kYW1vbi9jb3JlLmM6NjgzOnZvaWQgZGFtb3NfZGVzdHJveV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy02ODQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02ODgtXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy02OTAtXHRcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03MDUtXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MTAtXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxMi17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxNS1cbm1tL2RhbW9uL2NvcmUuYzo3MTY6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcxNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcyMC1cbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzI2LVxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXG5tbS9kYW1vbi9jb3JlLmMtNzI4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4mIzM5O3Qgc2V0ICovXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03NDUtXG5tbS9kYW1vbi9jb3JlLmM6NzQ2OnN0cnVjdCBkYW1vcyAqZGFtb25fbmV3X3NjaGVtZShzdHJ1Y3QgZGFtb3NfYWNjZXNzX3BhdHRlcm4gKnBhdHRlcm4sXG5tbS9kYW1vbi9jb3JlLmMtNzQ3LVx0XHRcdGVudW0gZGFtb3NfYWN0aW9uIGFjdGlvbixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzg3LVxubW0vZGFtb24vY29yZS5jOjc4ODpzdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzk4LVxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODAwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxubW0vZGFtb24vY29yZS5jOjgwNTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MDYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MDktXG5tbS9kYW1vbi9jb3JlLmM6ODEwOnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfc2NoZW1lKHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MTQtXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NDA6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTg0MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTg1Ni1cbm1tL2RhbW9uL2NvcmUuYzo4NTc6dm9pZCBkYW1vbl9hZGRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04NjQtICovXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxubW0vZGFtb24vY29yZS5jLTg2Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTg3Mi1cbm1tL2RhbW9uL2NvcmUuYzo4NzM6c3RhdGljIHZvaWQgZGFtb25fZGVsX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg3Ny1cbm1tL2RhbW9uL2NvcmUuYzo4Nzg6dm9pZCBkYW1vbl9mcmVlX3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg3OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTg4Ni1cbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtODg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxubW0vZGFtb24vY29yZS5jOjg5Nzp1bnNpZ25lZCBpbnQgZGFtb25fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg5OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTkwMS1cbm1tL2RhbW9uL2NvcmUuYzo5MDI6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxubW0vZGFtb24vY29yZS5jLTkwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTk0MS1cbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy05NDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05NDktXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk1MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTk2NS1cbm1tL2RhbW9uL2NvcmUuYzo5NjY6c3RhdGljIGJvb2wgZGFtb25fYXR0cnNfZXF1YWxzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMxLFxubW0vZGFtb24vY29yZS5jLTk2Ny1cdFx0Y29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczIpXG4tLVxubW0vZGFtb24vY29yZS5jLTk4Mi1cbm1tL2RhbW9uL2NvcmUuYzo5ODM6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9hZ2VfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgYWdlLFxubW0vZGFtb24vY29yZS5jLTk4NC1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05ODktLyogY29udmVydCBzYW1wbGUgcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApIHRvIGNvdW50ICovXG5tbS9kYW1vbi9jb3JlLmM6OTkwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2JwX3RvX2NvdW50KFxubW0vZGFtb24vY29yZS5jLTk5MS1cdFx0dW5zaWduZWQgaW50IGJwLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy05OTYtLyogY29udmVydCBzYW1wbGUgY291bnQgdG8gcmF0aW8gaW4gYnAgKHBlciAxMCwwMDApICovXG5tbS9kYW1vbi9jb3JlLmM6OTk3OnN0YXRpYyB1bnNpZ25lZCBpbnQgZGFtb25fc2FtcGxlX2NvdW50X3RvX2JwKFxubW0vZGFtb24vY29yZS5jLTk5OC1cdFx0dW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDAyLVxubW0vZGFtb24vY29yZS5jOjEwMDM6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9ucl9zYW1wbGVzX2Zvcl9uZXdfYXR0cnModW5zaWduZWQgaW50IG5yLFxubW0vZGFtb24vY29yZS5jLTEwMDQtXHRcdHN0cnVjdCBkYW1vbl9hdHRycyAqb2xkX2F0dHJzLCBzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTAwOS1cbm1tL2RhbW9uL2NvcmUuYzoxMDEwOnN0YXRpYyB2b2lkIGRhbW9uX3VwZGF0ZV9wcm9iZV9oaXRzKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDI5LVxubW0vZGFtb24vY29yZS5jOjEwMzA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDU5LSAqL1xubW0vZGFtb24vY29yZS5jOjEwNjA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX21vbml0b3JpbmdfcmVzdWx0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsIGJvb2wgYWdncmVnYXRpbmcpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwODItICovXG5tbS9kYW1vbi9jb3JlLmM6MTA4MzpzdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxubW0vZGFtb24vY29yZS5jLTEwODQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE3Ny1cbm1tL2RhbW9uL2NvcmUuYzoxMTc4OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cdFx0aW50IG4sIHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE5MC1cbm1tL2RhbW9uL2NvcmUuYzoxMTkxOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxubW0vZGFtb24vY29yZS5jLTExOTItXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTIxNTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjM2LSAqL1xubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNjEtXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTI2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyODAtXG5tbS9kYW1vbi9jb3JlLmM6MTI4MTpzdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX2NvcmVfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMTI4Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyOTItXG5tbS9kYW1vbi9jb3JlLmM6MTI5MzpzdGF0aWMgc3RydWN0IGRhbW9zX2ZpbHRlciAqZGFtb3NfbnRoX29wc19maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTMwNC1cbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxubW0vZGFtb24vY29yZS5jLTEzMDYtXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzI1LVxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcbm1tL2RhbW9uL2NvcmUuYy0xMzI3LVx0XHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTMzNC1cbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTMzNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzNjItXG5tbS9kYW1vbi9jb3JlLmM6MTM2MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9vcHNfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTM2NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzOTUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTM5NjpzdGF0aWMgYm9vbCBkYW1vc19maWx0ZXJzX2RlZmF1bHRfcmVqZWN0KHN0cnVjdCBsaXN0X2hlYWQgKmZpbHRlcnMpXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MDUtXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtMTQwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0MTYtXG5tbS9kYW1vbi9jb3JlLmM6MTQxNzpzdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9wcm9iZV9wYXJhbXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE0MTgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDYxLSAqL1xubW0vZGFtb24vY29yZS5jOjE0NjI6c3RhdGljIGludCBkYW1vc19jb21taXRfZGVzdHMoc3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNDkyLVxubW0vZGFtb24vY29yZS5jOjE0OTM6c3RhdGljIGludCBkYW1vc19jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1MDYtXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTUwOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1MTgtXG5tbS9kYW1vbi9jb3JlLmM6MTUxOTpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTUyMC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1NDUtXG5tbS9kYW1vbi9jb3JlLmM6MTU0NjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE1NDcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNTgxLVxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0xNTgzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxNjAxOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNjAyLVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpzcmMsIHVuc2lnbmVkIGxvbmcgc3JjX21pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jLTE2MzUtXG5tbS9kYW1vbi9jb3JlLmM6MTYzNjpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXQoXG5tbS9kYW1vbi9jb3JlLmMtMTYzNy1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LCBib29sIGRzdF9oYXNfcGlkLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xubW0vZGFtb24vY29yZS5jOjE2NjM6c3RhdGljIHZvaWQgZGFtb25fcmV2ZXJ0X3RhcmdldF9jb21taXRzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNjY0LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpmYWlsZWQsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cbm1tL2RhbW9uL2NvcmUuYzoxNjc5OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXG5tbS9kYW1vbi9jb3JlLmMtMTY4MC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDMtXG5tbS9kYW1vbi9jb3JlLmM6MTc0NDpzdGF0aWMgdm9pZCBkYW1vbl9jb21taXRfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqZHN0LCBzdHJ1Y3QgZGFtb25fcHJlcCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NDUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzQ4LVxubW0vZGFtb24vY29yZS5jOjE3NDk6c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJlcHMoc3RydWN0IGRhbW9uX3Byb2JlICpkc3QsIHN0cnVjdCBkYW1vbl9wcm9iZSAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE3NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzczLVxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXG5tbS9kYW1vbi9jb3JlLmMtMTc3NS1cdFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNzg4LVxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNzkwLVx0XHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTgyMi1cbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xODI0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cbm1tL2RhbW9uL2NvcmUuYzoxODYyOnN0YXRpYyBpbnQgX19kYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4NjMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTE5LVxubW0vZGFtb24vY29yZS5jOjE5MjA6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5NDgtICovXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xOTUwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXG5tbS9kYW1vbi9jb3JlLmM6MTk2NzpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9yZWdpb25fc3pfbGltaXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE5Njgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTg1LVxubW0vZGFtb24vY29yZS5jOjE5ODY6c3RhdGljIGludCBkYW1vbl9zcGxpdF9yZWdpb25fYXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVx0XHRcdFx0ICBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCB1bnNpZ25lZCBsb25nIHN6X3IpO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xubW0vZGFtb24vY29yZS5jOjIwMDI6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fYXBwbHlfbWluX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwMDMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDIxLVxubW0vZGFtb24vY29yZS5jOjIwMjI6c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpO1xubW0vZGFtb24vY29yZS5jLTIwMjMtXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMzEtICovXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIwMzMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xubW0vZGFtb24vY29yZS5jOjIwNjk6aW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG5tbS9kYW1vbi9jb3JlLmMtMjA3MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxMTMtICovXG5tbS9kYW1vbi9jb3JlLmM6MjExNDpzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTIxMTUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTMzLSAqL1xubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTQ5OmJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0OTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqREFNT04gUXVvdGEgTWFuYWdlbWVudCAtIEEgUXVpY2sgUmV2aWV3KioKCk9rYXksIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBlbGVtZW50cyBmb3IgbWFuYWdpbmcgREFNT04gcXVvdGFzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX25ld19zY2hlbWVgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCB0aGVuIHRoZSBxdW90YS1zcGVjaWZpYyBvbmVzIGxpa2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCwgYGRhbW9zX2FkZF9xdW90YV9nb2FsYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIE5lZWQgdG8ga2VlcCB0aG9zZSBzdHJhaWdodC4KCk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCBgREFNT05gIGl0c2VsZiBpcyBlbmFibGVkLCBhbmQgb2YgY291cnNlLCBgREFNT05fU1lTRlNgIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCBJIGFtIHdvcmtpbmcgd2l0aC4gSSBuZWVkIHRoZSB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1vbml0b3Jpbmcgc2V0dGluZ3MsIHNvIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgbXVzdCBiZSBzZXQuIFRoZSBzYW1lIGFwcGxpZXMgdG8gYERBTU9OX1JFQ0xBSU1gIGFuZCBgREFNT05fTFJVX1NPUlRgIGJlY2F1c2UgdGhlc2UgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIGpvYiBJIGFtIGRvaW5nLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2Ugb3ZlciBgbW0vZGFtb24vS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBtaWdodCBiZSByZWxldmFudCBvciB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBldmVuIGlmIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSBpbXBsaWNhdGVkIGluIHdoYXQgSSYjMzk7bSBkb2luZy4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGUgYmlnIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxuICA4MjpcdFxuICA4MzpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcbiAgODQ6XHRcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXG4gIDg1Olx0XG4gIDg2Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDg3Olx0XG4gIDg4Olx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cbiAgODk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG4gIDkzOlx0XHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cbiAgOTQ6XHRcdCAgdGhvc2UuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRoaXMgaXMgc3VnZ2VzdGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9hY3RpdmUgYW5kIGxpZ2h0d2VpZ2h0XG4gIDk3Olx0XHQgIHJlY2xhbWF0aW9uIHVuZGVyIGxpZ2h0IG1lbW9yeSBwcmVzc3VyZSwgd2hpbGUgdGhlIHRyYWRpdGlvbmFsIHBhZ2VcbiAgOTg6XHRcdCAgc2Nhbm5pbmctYmFzZWQgcmVjbGFtYXRpb24gaXMgdXNlZCBmb3IgaGVhdnkgcHJlc3N1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXG4gMTAxOlx0XHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiAxMDI6XHRcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbiAxMDM6XHRcdGhlbHBcbiAxMDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXG4gMTA1Olx0XHQgIHByb3RlY3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAoaG90KSBwYWdlcyB3aGlsZSByYXJlbHkgYWNjZXNzZWQgKGNvbGQpXG4gMTA2Olx0XHQgIHBhZ2VzIHJlY2xhaW1lZCBmaXJzdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuXG4gMTA3Olx0XG4gMTA4Olx0Y29uZmlnIERBTU9OX1NUQVRcbiAxMDk6XHRcdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xuIDExMDpcdFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXG4gMTEzOlx0XHQgIEl0IHJ1bnMgREFNT04gYW5kIGV4cG9zZSBhY2Nlc3MgbW9uaXRvcmluZyByZXN1bHRzIGluIHNpbXBsZSBzdGF0XG4gMTE0Olx0XHQgIG1ldHJpY3MuXG4gMTE1Olx0XG4gMTE2Olx0Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXG4gMTE3Olx0XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiAxMTg6XHRcdGRlcGVuZHMgb24gREFNT05fU1RBVFxuIDExOTpcdFx0ZGVmYXVsdCBEQU1PTl9TVEFUXG4gMTIwOlx0XHRoZWxwXG4gMTIxOlx0XHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXG4gMTIyOlx0XHQgIGJvb3Qgb3IgcnVudGltZSB1c2luZyBpdHMgJiMzOTtlbmFibGVkJiMzOTsgcGFyYW1ldGVyLlxuIDEyMzpcdFxuIDEyNDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3NzkKCQkJCQkJCW91dHB1dDogMjIzCgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIEtlcm5lbCBDaGFuZ2UgUmV2aWV3KioKCk9rYXksIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgb24gdGhpcyBEQU1PTiBwYXRjaC4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIGl0IHN5c3RlbWF0aWNhbGx5LiBUaGUgY2hhbmdlIGlzIGluIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCBgZXN6ID0gMGAgaWYgYCFxdW90YS0mZ3Q7ZXN6X2JwYC4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCwgY29yZS1sZXZlbCBrZXJuZWwgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IERBTU9OIGNhbGN1bGF0ZXMgZWZmZWN0aXZlIHF1b3Rhcy4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgcXVvdGEgY2FsY3VsYXRpb24gY2hhbmdlcyBjYW4gaGF2ZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIHNvIEkgd2FudCB0byBiZSB0aG9yb3VnaC4KCkkgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSXQgcmVsaWVzIG9uIHRoZSB1c3VhbCBzdXNwZWN0czogYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1BBRERSYCwgYW5kIGBEQU1PTl9WQUREUmAuIEkmIzM5O2xsIHdhbnQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgaW1wYWN0LgoKTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fbmV3X3NjaGVtZWAsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgLCBgZGFtb3NfYWRkX3F1b3RhX2dvYWxgLCBgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc2AsIGFuZCBgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBpbnRlcmZhY2VzIGFuZCBkYXRhIHBhdGhzIGludm9sdmVkIGluIHRoaXMgcXVvdGEgbWFuYWdlbWVudCBhbmQgdXBkYXRlIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZGF0YSB0aHJvdWdoIHRob3NlLgoKRmluYWxseSwgdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIEdvb2QuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgdGhpcyBjaGFuZ2Ugd2FycmFudHMgcm9idXN0IGZ1enppbmcuIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBwbGFucy4KCkFscmlnaHQsIHRoYXQmIzM5O3MgZXZlcnl0aGluZy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIGxvZyB0aGUgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fbmV3X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vc19jb21taXRfcXVvdGFfZ29hbHMmIzM0OywKICAgICYjMzQ7ZGFtb3NfbmV3X3F1b3RhX2dvYWwmIzM0OywKICAgICYjMzQ7ZGFtb3NfYWRkX3F1b3RhX2dvYWwmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyYjMzQ7LAogICAgJiMzNDtkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzJiMzNDssCiAgICAmIzM0O2RhbW9zX25ld19xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX2FkZF9xdW90YV9nb2FsJiMzNDssCiAgICAmIzM0O2RhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMmIzM0OywKICAgICYjMzQ7ZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggZGYyMjYyMTc2NTkxMS4uNzNkYzlhNzBmYjEyYiAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMzI1MSw2ICYjNDM7MzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpCiAJaWYgKHF1b3RhLSZndDtzeiAmYW1wOyZhbXA7IHF1b3RhLSZndDtzeiAmbHQ7IGVzeikKIAkJZXN6ID0gcXVvdGEtJmd0O3N6OwogCiYjNDM7CWlmICghcXVvdGEtJmd0O2Vzel9icCkKJiM0MzsJCWVzeiA9IDA7CiYjNDM7CiAJcXVvdGEtJmd0O2VzeiA9IGVzejsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA0OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEQU1PTiBQYXRjaCoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmcgd2l0aCB0aGlzIERBTU9OIHBhdGNoLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCByZWFsbHkuIExvb2tpbmcgYXQgdGhlIGBkaWZmYCwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgbWFpbiBmb2N1cyBpcyBhcm91bmQgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYC4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgYSBzaW1wbGUgY2hlY2s6IGBpZiAoIXF1b3RhLSZndDtlc3pfYnApIGVzeiA9IDA7YCAgUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIHZhcmlhYmxlIGBlc3pgIGlzIHNvbWUga2luZCBvZiBlZmZlY3RpdmUgc2l6ZSBjYWxjdWxhdGlvbi4gVGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBjb25zaWRlcnMgYHF1b3RhLSZndDtzemAsIGVuc3VyaW5nIHRoZSBlZmZlY3RpdmUgc2l6ZSBkb2VzbiYjMzk7dCBleGNlZWQgdGhlIHF1b3RhIHNpemUuIFRoaXMgbmV3IGNvbmRpdGlvbiBpcyBwcm9iYWJseSBhIHNhZmVndWFyZCwgbWVhbmluZyB0aGF0IGlmIHRoZSBiYWNraW5nIHBvaW50ZXIgZm9yIGVmZmVjdGl2ZSBzaXplIGlzIG51bGwsIGl0IHNob3VsZCBiZSBkZWZhdWx0ZWQgdG8gemVyby4KCkkgbmVlZCB0byBkaWcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgYW5kIGhvdyBgZXN6X2JwYCwgYGVzemAsIGFuZCBgcXVvdGFgIGFyZSB1c2VkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUsIGxpa2VseSB0byBjb250cm9sIG1lbW9yeSB1c2FnZSBvciBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBEQU1PTiBjb250ZXh0LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBiYWNraW5nIHBvaW50ZXIgaXMgdXNlZCB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIGVmZmVjdGl2ZSBzaXplLiBXaXRob3V0IGl0LCB0aGUgZWZmZWN0aXZlIHNpemUgc2hvdWxkIGJlIHplcm9lZC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHF1b3RhLSZndDtlc3pfYnBgIHJlcHJlc2VudHMgdG8gZGV0ZXJtaW5lIHRoZSBjb21wbGV0ZSBpbXBhY3QsIGJ1dCBmcm9tIHRoZSBpbW1lZGlhdGUgY29udGV4dCB0aGlzIGZlZWxzIGxpa2UgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMyMzA6XHRcdFx0cmV0dXJuO1xuMzIzMTpcdFx0fVxuMzIzMjpcdFxuMzIzMzpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKSkge1xuMzIzNDpcdFx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG4zMjM1Olx0XHRcdFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XG4zMjM2Olx0XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcbjMyMzc6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG4zMjM4Olx0XHRcdGVzeiA9IHF1b3RhLVx1MDAzZWVzel9icCAvIDEwMDAwO1xuMzIzOTpcdFx0fVxuMzI0MDpcdFxuMzI0MTpcdFx0aWYgKHF1b3RhLVx1MDAzZW1zKSB7XG4zMjQyOlx0XHRcdGlmIChxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxuMzI0MzpcdFx0XHRcdHRocm91Z2hwdXQgPSBtdWx0X2ZyYWMocXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeixcbjMyNDQ6XHRcdFx0XHRcdFx0MTAwMDAwMCwgcXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyk7XG4zMjQ1Olx0XHRcdGVsc2VcbjMyNDY6XHRcdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbjMyNDc6XHRcdFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cdTAwM2VtcywgZXN6KTtcbjMyNDg6XHRcdFx0ZXN6ID0gbWF4KGN0eC1cdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xuMzI0OTpcdFx0fVxuMzI1MDpcdFxuMzI1MTpcdFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuMzI1MjpcdFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbjMyNTM6XHRcbjMyNTQ6XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuMzI1NTpcdFx0XHRlc3ogPSAwO1xuMzI1NjpcdFxuMzI1NzpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuMzI1ODpcdH1cbjMyNTk6XHRcbjMyNjA6XHRzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxuMzI2MTpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxuMzI2MjpcdHtcbjMyNjM6XHRcdHVuc2lnbmVkIGludCBjaWR4ID0gMCwgc2lkeCA9IDA7XG4zMjY0Olx0XHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xuMzI2NTpcdFxuMzI2NjpcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XG4zMjY3Olx0XHRcdGlmIChzaXRlciA9PSBzKVxuMzI2ODpcdFx0XHRcdGJyZWFrO1xuMzI2OTpcdFx0XHRzaWR4JiM0MzsmIzQzOztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBjb250ZXh0IG9mIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCwgc3BlY2lmaWNhbGx5IHN0YXJ0aW5nIGF0IGxpbmUgMzIxNS4gTGV0IG1lIGdyYWIgdGhlIGNvZGUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB3aG9sZSBmdW5jdGlvbi4gSSYjMzk7bSBub3QganVzdCBpbnRlcmVzdGVkIGluIHRoYXQgc3BlY2lmaWMgbGluZSwgSSB3YW50IHRvIHNlZSB0aGUgc3Vycm91bmRpbmcgbG9naWMsIGFueSBjYWxscyBpdCBtYWtlcywgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0gaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3cgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiBpcyBjcml0aWNhbCB0byBncmFzcGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiB0byBkaWFnbm9zZSBvciBtb2RpZnkgaXQgd2l0aCBjb25maWRlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIwMDpcdFxuMzIwMTpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXG4zMjAyOlx0XHRcdFx0bWF4KHF1b3RhLVx1MDAzZWVzel9icCwgMTAwMDBVTCksIHNjb3JlKTtcbjMyMDM6XHR9XG4zMjA0Olx0XG4zMjA1Olx0c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMzIwNjpcdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4zMjA3Olx0e1xuMzIwODpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMjA5Olx0XHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XG4zMjEwOlx0XG4zMjExOlx0XHRpZiAoc2NvcmUgXHUwMDNlPSAxMDAwMClcbjMyMTI6XHRcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gMDtcbjMyMTM6XHRcdGVsc2UgaWYgKHF1b3RhLVx1MDAzZXN6KVxuMzIxNDpcdFx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBxdW90YS1cdTAwM2VzeiAqIDEwMDAwO1xuMzIxNTpcdFx0ZWxzZVxuMzIxNjpcdFx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBVTE9OR19NQVg7XG4zMjE3Olx0fVxuMzIxODpcdFxuMzIxOTpcdC8qXG4zMjIwOlx0ICogQ2FsbGVkIG9ubHkgaWYgcXVvdGEtXHUwMDNlbXMsIG9yIHF1b3RhLVx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVx1MDAzZWdvYWxzIGlzIG5vdCBlbXB0eVxuMzIyMTpcdCAqL1xuMzIyMjpcdHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4zMjIzOlx0e1xuMzIyNDpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4zMjI1Olx0XHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG4zMjI2Olx0XHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcbjMyMjc6XHRcbjMyMjg6XHRcdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG4zMjI5Olx0XHRcdHF1b3RhLVx1MDAzZWVzeiA9IHF1b3RhLVx1MDAzZXN6O1xuMzIzMDpcdFx0XHRyZXR1cm47XG4zMjMxOlx0XHR9XG4zMjMyOlx0XG4zMjMzOlx0XHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG4zMjM0Olx0XHRcdGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfQ09OU0lTVClcbjMyMzU6XHRcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3QoY3R4LCBzKTtcbjMyMzY6XHRcdFx0ZWxzZSBpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxuMzIzNzpcdFx0XHRcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoY3R4LCBzKTtcbjMyMzg6XHRcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlZXN6X2JwIC8gMTAwMDA7XG4zMjM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjkKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsYCBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgYGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWxgIGZ1bmN0aW9uIGlzIHBsYXlpbmcgd2l0aCBhIG1lbW9yeSBxdW90YSwgc3BlY2lmaWNhbGx5IHNldHRpbmcgYHF1b3RhLSZndDtlc3pfYnBgIHRvIHplcm8gaWYgdGhlIGBzY29yZWAgaGl0cyAxMDAwMCBvciBtb3JlLiBUaGVuLCBpdCBsb29rcyBsaWtlIGBxdW90YS0mZ3Q7bXNgIGNvbWVzIGludG8gcGxheSwgcG90ZW50aWFsbHkgcmFpc2luZyB0aGUgYGVzemAgdmFsdWUsIGJ1dCB0aGVyZSYjMzk7cyBhIGd1YXJkcmFpbDogaWYgYGVzel9icGAgaXMgemVybywgYGVzemAgZ2V0cyBwaW5uZWQgdG8gemVybyBhcyB3ZWxsLiBUaGF04oCZcyB0aGUgY29yZSBsb2dpYy4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBEb2VzIHRoaXMgaW50cm9kdWNlIGFueSBtZW1vcnkgc2FmZXR5IGlzc3Vlcz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC4KCjEuICAqKktlcm5lbC1Vc2VyIFNwYWNlIENvbW11bmljYXRpb246KiogTm9wZS4gTm8gbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgYSBwcm9ibGVtLiBUaGlzIGlzIGludGVybmFsIGtlcm5lbCBzdHVmZi4KMi4gICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vLCBgcXVvdGEtJmd0O2Vzel9icGAgaXMgaW5pdGlhbGl6ZWQgZHVyaW5nIHRoZSBEQU1PTiBzY2hlbWUgcXVvdGEgc2V0dXAsIHNvIHdlIGRvbiYjMzk7dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGNhdXNpbmcgaXNzdWVzIGluIGNvbmRpdGlvbmFsIGxvZ2ljLgozLiAgKipDb21wbGV4IERhdGEgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uOioqIE5vcGUuIFRoaXMgaXNuJiMzOTt0IGFib3V0IGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIGEgcHJvYmxlbSBsYXRlci4KNC4gICoqQnVmZmVyIEFjY2VzczoqKiBOb3QgaGVyZS4gVGhpcyBpc24mIzM5O3QgYWJvdXQgYm91bmRzIGNoZWNraW5nIG9yIGFjY2Vzc2luZyBwYXJ0cyBvZiBidWZmZXJzIHRoYXQgaGF2ZW4mIzM5O3QgYmVlbiBpbml0aWFsaXplZC4gSXQmIzM5O3MganVzdCBudW1iZXIgY3J1bmNoaW5nLgoKU28sIGFtIEkgc2VlaW5nIGFueSByZWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gVGhlIGBxdW90YWAgZmllbGRzIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIERBTU9OIHN1YnN5c3RlbSwgaW5pdGlhbGl6ZWQgZHVyaW5nIGNyZWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBqdXN0IGFyaXRobWV0aWMgYW5kIHF1b3RhIGNhbGN1bGF0aW9uLiBUaGlzIGlzIHByZWNpc2VseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgd291bGQgZmxhZywgYW5kIGl0JiMzOTtzIG5vdCBhcHBsaWNhYmxlIGhlcmUuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIGV2ZXJ5dGhpbmcsIHNvIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZWZmZWN0aXZlIHF1b3RhIChgZXN6YCkgaW4gREFNT1MgKGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBpbiBgbW0vZGFtb24vY29yZS5jYCkgYnkgcmVzZXR0aW5nIGBlc3pgIHRvIDAgaWYgYHF1b3RhLVx1MDAzZWVzel9icGAgaXMgMC4gVGhpcyBpcyBwdXJlbHkgYW4gYXJpdGhtZXRpYyAvIGxvZ2ljIGFkanVzdG1lbnQgZm9yIERBTU9OIHF1b3RhIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgdXNlci1zcGFjZSBjb3B5IG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo0MC41NjMxNDQ2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDk0MTY0NDY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fbmV3X3NjaGVtZVwiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vc19uZXdfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3NfYWRkX3F1b3RhX2dvYWxcIixcbiAgICBcImRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXNcIixcbiAgICBcImRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjQwLjU2MzE1MDI1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwODAzNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDIzOjQxOjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xcbmluZGV4IGRmMjI2MjE3NjU5MTEuLjczZGM5YTcwZmIxMmIgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTMyNTEsNiArMzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxuIFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbiBcXHRcXHRlc3ogPSBxdW90YS1cXHUwMDNlc3o7XFxuIFxcbitcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuK1xcdFxcdGVzeiA9IDA7XFxuK1xcbiBcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo0MS4wMDQ2NjE3MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYxNTg5NzcyNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9uZXdfc2NoZW1lXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9zX25ld19xdW90YV9nb2FsXCIsXG4gICAgXCJkYW1vc19hZGRfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc1wiLFxuICAgIFwiZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODM4MThmZDM0YzA1M2IxOTE0YjUyY2ZjYjkxMjZmZDg3MzZkMWQwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMjM6NDE6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGRmMjI2MjE3NjU5MTEuLjczZGM5YTcwZmIxMmIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTMyNTEsNiArMzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4gXHRpZiAocXVvdGEtXHUwMDNlc3ogXHUwMDI2XHUwMDI2IHF1b3RhLVx1MDAzZXN6IFx1MDAzYyBlc3opXG4gXHRcdGVzeiA9IHF1b3RhLVx1MDAzZXN6O1xuIFxuK1x0aWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApXG4rXHRcdGVzeiA9IDA7XG4rXG4gXHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NDEuMDA0NjYzNTkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODY3NDIzNjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gVGhlIGZvY3VzIGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAoIXF1b3RhLVx1MDAzZWVzel9icCkgZXN6ID0gMDtgLiBIbW0sIHRoaXMgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYW4gZWRnZSBjYXNlIHJlbGF0ZWQgdG8gdGhlIGVzdGltYXRlZCBzaXplIChgZXN6YCkgd2hlbiBgZXN6X2JwYCBpcyBudWxsLiBTbywgcG90ZW50aWFsbHkgaGFuZGxpbmcgYSBzaXR1YXRpb24gd2hlcmUgdGhlIHF1b3RhIGlzbid0IHByb3Blcmx5IGluaXRpYWxpemVkLlxuXG5Ob3cgSSBuZWVkIHRvIGdldCBhIGJldHRlciBncmFzcCBvbiB0aGUgY29udGV4dCBoZXJlLiBJJ2xsIHVzZSBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbW0vZGFtb24vY29yZS5jYCBhcm91bmQgbGluZSAzMjUxLiBOZWVkIHRvIGxvb2sgaW50byBob3cgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGlzIHVzZWQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0sIGludmVzdGlnYXRlIGFueSBwb3RlbnRpYWwgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLCBhbmQgY2hlY2sgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgcmVsYXRlZCBjb2RlIHBhdGhzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGBlc3pgIGNoZWNrIGlzIHRyeWluZyB0byBhZGRyZXNzIHdpdGhpbiB0aGUgbGFyZ2VyIERBTU9OIGZyYW1ld29yayBhbmQgd2hhdCB0aGUgbGlrZWx5IGltcGxpY2F0aW9ucyBhcmUuIEkgc2hvdWxkIGFsc28gY2hlY2sgaWYgdGhlIGBlc3pfYnBgIHZhcmlhYmxlIGlzIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NDkuNjc4OTAyNTA3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjQwOlxcdFxcbjMyNDE6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2Vtcykge1xcbjMyNDI6XFx0XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKVxcbjMyNDM6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IG11bHRfZnJhYyhxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeixcXG4zMjQ0OlxcdFxcdFxcdFxcdFxcdFxcdDEwMDAwMDAsIHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKTtcXG4zMjQ1OlxcdFxcdFxcdGVsc2VcXG4zMjQ2OlxcdFxcdFxcdFxcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xcbjMyNDc6XFx0XFx0XFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cXHUwMDNlbXMsIGVzeik7XFxuMzI0ODpcXHRcXHRcXHRlc3ogPSBtYXgoY3R4LVxcdTAwM2VtaW5fcmVnaW9uX3N6LCBlc3opO1xcbjMyNDk6XFx0XFx0fVxcbjMyNTA6XFx0XFxuMzI1MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXN6IFxcdTAwMjZcXHUwMDI2IHF1b3RhLVxcdTAwM2VzeiBcXHUwMDNjIGVzeilcXG4zMjUyOlxcdFxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjUzOlxcdFxcbjMyNTQ6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6X2JwKVxcbjMyNTU6XFx0XFx0XFx0ZXN6ID0gMDtcXG4zMjU2OlxcdFxcbjMyNTc6XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IGVzejtcXG4zMjU4OlxcdH1cXG4zMjU5OlxcdFxcbjMyNjA6XFx0c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG4zMjYxOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuMzI2MjpcXHR7XFxuMzI2MzpcXHRcXHR1bnNpZ25lZCBpbnQgY2lkeCA9IDAsIHNpZHggPSAwO1xcbjMyNjQ6XFx0XFx0c3RydWN0IGRhbW9zICpzaXRlcjtcXG4zMjY1OlxcdFxcbjMyNjY6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XFxuMzI2NzpcXHRcXHRcXHRpZiAoc2l0ZXIgPT0gcylcXG4zMjY4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjMyNjk6XFx0XFx0XFx0c2lkeCsrO1xcbjMyNzA6XFx0XFx0fVxcbjMyNzE6XFx0XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbjMyNzI6XFx0fVxcbjMyNzM6XFx0XFxuMzI3NDpcXHRzdGF0aWMgdm9pZCBkYW1vc19hZGp1c3RfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbjMyNzU6XFx0e1xcbjMyNzY6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG4zMjc3OlxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XFxuMzI3ODpcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xcbjMyNzk6XFx0XFx0dW5zaWduZWQgbG9uZyBjdW11bGF0ZWRfc3osIGNhY2hlZF9lc3o7XFxuMzI4MDpcXHRcXHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XFxuMzI4MTpcXHRcXG4zMjgyOlxcdFxcdGlmICghcXVvdGEtXFx1MDAzZW1zIFxcdTAwMjZcXHUwMDI2ICFxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSlcXG4zMjgzOlxcdFxcdFxcdHJldHVybjtcXG4zMjg0OlxcdFxcbjMyODU6XFx0XFx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xcbjMyODY6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeiBcXHUwMDI2XFx1MDAyNiAhcXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSkge1xcbjMyODc6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IGppZmZpZXM7XFxuMzI4ODpcXHRcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbjMyODk6XFx0XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjQ5LjY3OTA3NDQ2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NzkyMzAzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIERBTU9OIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcGlucG9pbnQgd2hlcmUgdGhlIERBTU9OIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXknbGwgYmUgaW4gdGhlIGBLY29uZmlnYCBmaWxlLCBsaWtlbHkgd2l0aGluIHRoZSBgbW0vZGFtb25gIGRpcmVjdG9yeS4gU28sIGxldCdzIGhlYWQgb3ZlciB0byBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBmZXcga2V5IHRoaW5ncyB0aGVyZTogdGhlIG1haW4gREFNT04gc3dpdGNoIGl0c2VsZiwgcHJvYmFibHkgYSBgYm9vbGAgb3B0aW9uLCBhbmQgdGhlbiBtYXliZSBzb21lIGdyYW51bGFyIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBEQU1PTiBjb21wb25lbnRzIG9yIGZlYXR1cmVzLiBJdOKAmXMgYWx3YXlzIHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIGZpZ3VyaW5nIG91dCBob3cgYSBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpbmVyLWdyYWluZWQgY29udHJvbHMuIFRpbWUgdG8gc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjAwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo1Mi4xNTgzMDcxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2ODI0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mz1tZW51IFxcXCJEYXRhIEFjY2VzcyBNb25pdG9yaW5nXFxcIlxcbm1tL2RhbW9uL0tjb25maWctNC1cXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXFxubW0vZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNDYtXFxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMTUtXFxubW0vZGFtb24vS2NvbmZpZzoxMTY6Y29uZmlnIERBTU9OX1NUQVRfRU5BQkxFRF9ERUZBVUxUXFxubW0vZGFtb24vS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTIuMjA5OTk2NTc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM1MzgwMzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9mIGhvdyBEQU1PTiBpcyBzdHJ1Y3R1cmVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IGZvciB0aGUganVndWxhciDigJMgdGhlIGNvcmUgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gcG9yZSBvdmVyIGJvdGggYG1tL2RhbW9uL01ha2VmaWxlYCBhbmQgYG1tL2RhbW9uL0tjb25maWdgLiBgTWFrZWZpbGVgIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHByb2Nlc3MsIGRlcGVuZGVuY2llcywgYW5kIGhvdyBhbGwgdGhlIERBTU9OIHNvdXJjZSBmaWxlcyBmaXQgdG9nZXRoZXIuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IG1vZHVsZSBjb21waWxhdGlvbiwgY29tcGlsYXRpb24gZmxhZ3MsIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIERBTU9OIGltcGxlbWVudGF0aW9uIGxpbmtzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS5cblxuVGhlbiwgSSdsbCBoaXQgYG1tL2RhbW9uL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbGl2ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBrbm9icyBhbmQgZGlhbHMuIEknbGwgYmUgbG9va2luZyBmb3Igd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0J3Mgb3B0aW9uYWwsIGFueSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIERBTU9OLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnZXR0aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25zLiBJIGV4cGVjdCB0byBzZWUgdGhlIHNlbGVjdGlvbiBvZiB0YXJnZXQgc2VsZWN0aW9uIGFsZ29yaXRobXMsIGFuZCBhbnkgYXNzb2NpYXRlZCBpbnN0cnVtZW50YXRpb24gZmVhdHVyZXMuXG5cbkknbSBhaW1pbmcgZm9yIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZXNlIHR3byBmaWxlcywgc28gSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgREFNT04ncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aCB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTYuNTYzODAyNDk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai15XFx0XFx0XFx0XFx0Oj0gY29yZS5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX0RBTU9OX0xSVV9TT1JUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gbHJ1X3NvcnQub1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1NUQVQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBzdGF0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDE6NTYuNTYzODcwNjQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNDQ0MTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlnOiBtbS9kYW1vbi9LY29uZmlnKipcblxuT2theSwgdGltZSB0byBjaGVjayBvdXQgYG1tL2RhbW9uL0tjb25maWdgLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcikuIFRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IERBTU9OIGNhbiBiZSB0d2Vha2VkIGFuZCBpbnRlZ3JhdGVkIGludG8gYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuXG5cbkknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbjpcblxuKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgc2NvcGU6KiogV2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgd2hpY2ggcmVxdWlyZSBleHBsaWNpdCBjb25maWd1cmF0aW9uP1xuKiAgICoqRGVwZW5kZW5jaWVzOioqIEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlIGtlcm5lbCBmZWF0dXJlcyBvciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0ICptdXN0KiBiZSBlbmFibGVkIGZvciBEQU1PTiB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEknbSB0aGlua2luZywgZm9yIGluc3RhbmNlLCBhcmUgdGhlcmUgYW55IGludGVyYWN0aW9ucyB3aXRoIE5VTUEsIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCksIG9yIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kP1xuKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zKio6IFdoYXQgc3BlY2lmaWMgcGFyYW1ldGVycyBjYW4gSSB0dW5lIHRvIG1vZGlmeSBEQU1PTidzIGJlaGF2aW9yPyBBcmUgdGhlcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtb25pdG9yaW5nIGdyYW51bGFyaXR5LCBkYXRhIGNvbGxlY3Rpb24gZnJlcXVlbmN5LCBvciB0aGUgYWN0aW9ucyB0YWtlbiB3aGVuIGRhdGEgYWNjZXNzIHBhdHRlcm5zIGFyZSBkZXRlY3RlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmFkZS1vZmZzIGFyZSBvZmZlcmVkIHZpYSB0aGUgY29uZmlndXJhYmxlIHNldHRpbmdzLlxuKiAgICoqRG9jdW1lbnRhdGlvbiBpbiBLY29uZmlnOioqIERvZXMgaXQgaGF2ZSBhZGVxdWF0ZSBoZWxwIHRleHQgYW5kIGV4cGxhbmF0aW9ucz8gR29vZCBkb2N1bWVudGF0aW9uIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaXMgY3JpdGljYWwuIEknbSBob3BpbmcgaXQncyBjbGVhciBhbmQgY29uY2lzZSwgcHJvdmlkaW5nIGEgZ29vZCBvdmVydmlldyBvZiBlYWNoIG9wdGlvbidzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cbkJhc2ljYWxseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBEQU1PTi4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gc3RhcnQgZXhwZXJpbWVudGluZyB3aXRoIGl0IG9yIGludGVncmF0aW5nIGl0IGludG8gYSByZWFsLXdvcmxkIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MTo1OS4zNjgzMTU4ODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIERBTU9OXFxuICAgNjpcXHRcXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcXG4gICA5OlxcdFxcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXFxuICAxMDpcXHRcXHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgU2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L21tL2RhbW9uL2luZGV4Lmh0bWwgZm9yXFxuICAxMzpcXHRcXHQgIG1vcmUgaW5mb3JtYXRpb24uXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG4gIDE2OlxcdFxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbiAgMTc6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTlxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBUaGlzIGVuYWJsZXMgYWRkaXRpb25hbCBEQU1PTiBkZWJ1Z2dpbmctcHVycG9zZSBzYW5pdHkgY2hlY2tzIGluXFxuICAyMDpcXHRcXHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxcbiAgMjE6XFx0XFx0ICBhZGRpdGlvbmFsIG92ZXJoZWFkLiAgVGhpcyBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gYmUgZW5hYmxlZCBvblxcbiAgMjI6XFx0XFx0ICBvbmx5IGRldmVsb3BtZW50IGFuZCB0ZXN0IHNldHVwcy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbiAgMjk6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDMwOlxcdFxcdGhlbHBcXG4gIDMxOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXFxuICAzMjpcXHRcXG4gIDMzOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCwgcGxlYXNlIHJlZmVyXFxuICAzNDpcXHRcXHQgIHRvIHRoZSBLVW5pdCBkb2N1bWVudGF0aW9uLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBEQU1PTl9WQUREUlxcbiAgMzk6XFx0XFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDQxOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNDI6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA0NTpcXHRcXHQgIHRoYXQgd29yayBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlcy5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIERBTU9OX1BBRERSXFxuICA0ODpcXHRcXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBNTVVcXG4gIDUwOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbiAgNTE6XFx0XFx0ZGVmYXVsdCBEQU1PTlxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXFxuICA1NDpcXHRcXHQgIHRoYXQgd29ya3MgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbiAgNTc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxuICA1OTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgNjA6XFx0XFx0aGVscFxcbiAgNjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04gdmlydHVhbCBhZGRyZXNzZXMgb3BlcmF0aW9ucyBLdW5pdCB0ZXN0IHN1aXRlLlxcbiAgNjI6XFx0XFxuICA2MzpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEtVbml0IGFuZCB1bml0IHRlc3RzIGluIGdlbmVyYWwsIHBsZWFzZSByZWZlclxcbiAgNjQ6XFx0XFx0ICB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbi5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgREFNT05fU1lTRlNcXG4gIDY5OlxcdFxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgU1lTRlNcXG4gIDcxOlxcdFxcdGRlZmF1bHQgREFNT05cXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIHN5c2ZzIGludGVyZmFjZSBmb3IgREFNT04uICBUaGUgdXNlciBzcGFjZSBjYW4gdXNlXFxuICA3NDpcXHRcXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxcbiAgNzU6XFx0XFxuICA3NjpcXHRjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbiAgNzc6XFx0XFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDc5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuICA4MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQxOjU5LjM2ODQyNjMzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3NzA0NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgS2NvbmZpZyBJbmNsdXNpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBtbS9kYW1vbi9LY29uZmlnYCB3aXRoaW4gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGluY2x1c2lvbiBwYXRoLiBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGRpZmZlcmVudCBLY29uZmlnIGZpbGVzLCBhbmQgdGhlaXIgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCB0aGF0IG1pZ2h0IHNvdXJjZSB0aGlzIHNwZWNpZmljIGZpbGUuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBpbmNsdWRlIGhpZXJhcmNoeSB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb2YgYW55IGRlcGVuZGVuY2llcyB0aGF0IGBtbS9kYW1vbi9LY29uZmlnYCBpdHNlbGYgaW50cm9kdWNlcy4gVGhpcyBsaW5lIG9mIGlucXVpcnkgYWltcyB0byB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIG9yIG1vZHVsZXMgdHJpZ2dlciBpdHMgaW52b2x2ZW1lbnQgaW4gdGhlIGJ1aWxkLCBhbmQgc3Vic2VxdWVudGx5LCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGl0IHByb3ZpZGVzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGtleSB0byBwaW5wb2ludGluZyBob3cgREFNT04gaXMgYWN0dWFsbHkgY29uZmlndXJlZCBhbmQgaG93IGl0cyBwcmVzZW5jZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gRnJvbSB0aGVyZSBJIGNhbiBleHBsb3JlIGFueSByZWxhdGlvbnNoaXBzIGl0IGhhcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjAxLjU3NjEzNDI2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxOTIzNTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTQ4NT1jb25maWcgTEFaWV9NTVVfTU9ERV9LVU5JVF9URVNUXFxuLS1cXG5tbS9LY29uZmlnLTE0OTYtXFxubW0vS2NvbmZpZzoxNDk3OnNvdXJjZSBcXFwibW0vZGFtb24vS2NvbmZpZ1xcXCJcXG5tbS9LY29uZmlnLTE0OTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjAzLjQ5NTM3NjAzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE5NzMyMTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEludGVncmF0aW9uIHdpdGggUXVvdGFzOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBDT05GSUdfREFNT05gIGRpcmVjdGx5IHRpZXMgaW50byB0aGUgY29tcGlsYXRpb24gb2YgYG1tL2RhbW9uL2NvcmUub2AsIHRoZSBoZWFydCBvZiBEQU1PTi4gRnVydGhlcm1vcmUsIGBDT05GSUdfREFNT05fU1lTRlNgIGlzIHJlc3BvbnNpYmxlIGZvciBidWlsZGluZyB0aGUgY3J1Y2lhbCBzeXNmcyBpbnRlcmZhY2UsIGFzIHNlZW4gaW4gYG1tL2RhbW9uL3N5c2ZzLmNgLCBgc3lzZnMtc2NoZW1lcy5jYCwgYW5kIGBzeXNmcy1jb21tb24uY2AuIE5vdywgbXkgbWFpbiBmb2N1cyBzaGlmdHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBEQU1PTiwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIERBTU9TIHF1b3RhcywgaXMgaW50ZXJhY3RlZCB3aXRoIGF0IGFsbC4gSSBoYXZlIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyBvciBpbnRlcmZhY2VzIHRoYXQgcmVsYXRlIHRvIERBTU9TIFF1b3RhcyBpbiBVc2VyIFNwYWNlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcGVyZm9ybSBhIHRhcmdldGVkIHNlYXJjaC4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBjYWxscyB0byBgZGFtb3NfYWRqdXN0X3F1b3RhYCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB1c2VyIHNwYWNlIGFuZCBrZXJuZWwgY29udHJvbCBtZWNoYW5pc21zIGZvciBEQU1PTiBhbmQgREFNT1MuIFRoaXMgZXhhbWluYXRpb24gd2lsbCByZXZlYWwgdGhlIHBvaW50cyBvZiBpbnRlZ3JhdGlvbiBhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIHRoZSBxdW90YSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDUuODE1MTEwOTk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczNDU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vc19hZGp1c3RfcXVvdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxcbm1tL2RhbW9uL2NvcmUuYzozMjc0OnN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyNzUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNTU9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM3MC1cXG5tbS9kYW1vbi9jb3JlLmM6MzM3MTpcXHRcXHRkYW1vc19hZGp1c3RfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMzNzItXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjowNS44NjM4NDkzODVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxNzg2NDc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERBTU9OJ3MgQ29uZmlndXJhdGlvbiBhbmQgQ29udHJvbCoqXG5cbk9rYXksIHNvIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBrZGFtb25kYCB3b3JrZXIgdGhyZWFkLiBOb3csIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHVzZXJzIGludGVyYWN0IHdpdGggREFNT04g4oCTIGhvdyB0aGV5IHN0YXJ0IHRoZSB3aG9sZSB0aGluZywgY29uZmlndXJlIHRoZSBzY2hlbWVzLCBhbmQsIGNydWNpYWxseSwgaG93IHRoZXkgc2V0IHF1b3Rhcy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSB1c2VyLWZhY2luZyBBUElzOyBJIG5lZWQgdG8gZmluZCB0aGUgZW50cnkgcG9pbnRzLiBMZXQncyBzdGFydCB3aXRoIHN5c2ZzLCBhbmQgc2VlIGlmIHRoZSBzY2hlbWUgcXVvdGEgYXR0cmlidXRlcyBhcmUgZXhwb3NlZCB0aGVyZS4gSWYgbm90LCBJJ2xsIGJyYW5jaCBvdXQgdG8gc2VhcmNoIGZvciBEQU1PTiBxdW90YS1yZWxhdGVkIGZ1bmN0aW9ucy4gTGV0J3MgZ2V0IHRoaXMgaW52ZXN0aWdhdGlvbiBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDc3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDcuNzgxNzE2NzQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUzNDgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdW90YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MjQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL2NvcmUuYz02ODM9dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTY4OC1cXG5tbS9kYW1vbi9jb3JlLmM6Njg5OnN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19uZXdfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6NjkwOlxcdFxcdGVudW0gZGFtb3NfcXVvdGFfZ29hbF9tZXRyaWMgbWV0cmljLFxcbm1tL2RhbW9uL2NvcmUuYy02OTEtXFx0XFx0dW5zaWduZWQgbG9uZyB0YXJnZXRfdmFsdWUpXFxubW0vZGFtb24vY29yZS5jLTY5Mi17XFxubW0vZGFtb24vY29yZS5jOjY5MzpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtNjk0LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTcwNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzA2OnZvaWQgZGFtb3NfYWRkX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhICpxLCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzA3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MTAtXFxubW0vZGFtb24vY29yZS5jOjcxMTpzdGF0aWMgdm9pZCBkYW1vc19kZWxfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MTUtXFxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTcxNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxcbm1tL2RhbW9uL2NvcmUuYzo3MjE6dm9pZCBkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXFxubW0vZGFtb24vY29yZS5jLTcyMi17XFxubW0vZGFtb24vY29yZS5jOjcyMzpcXHRkYW1vc19kZWxfcXVvdGFfZ29hbChnKTtcXG5tbS9kYW1vbi9jb3JlLmM6NzI0OlxcdGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChnKTtcXG5tbS9kYW1vbi9jb3JlLmMtNzI1LX1cXG5tbS9kYW1vbi9jb3JlLmMtNzI2LVxcbm1tL2RhbW9uL2NvcmUuYzo3Mjc6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkoc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTczMS1cXG5tbS9kYW1vbi9jb3JlLmM6NzMyOi8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG5tbS9kYW1vbi9jb3JlLmM6NzM1OlxcdHF1b3RhLVxcdTAwM2Vlc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3MzY6XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzc6XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzg6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3Mzk6XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSA9IDA7XFxubW0vZGFtb24vY29yZS5jOjc0MDpcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQxOlxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQyOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzo3NDM6XFx0cmV0dXJuIHF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy03NDQtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTc0Nj1zdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc0OC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFwcGx5X2ludGVydmFsX3VzLFxcbm1tL2RhbW9uL2NvcmUuYzo3NDk6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtNzUwLVxcdFxcdFxcdHN0cnVjdCBkYW1vc193YXRlcm1hcmtzICp3bWFya3MsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzc0LVxcbm1tL2RhbW9uL2NvcmUuYzo3NzU6XFx0c2NoZW1lLVxcdTAwM2VxdW90YSA9ICooZGFtb3NfcXVvdGFfaW5pdChxdW90YSkpO1xcbm1tL2RhbW9uL2NvcmUuYzo3NzY6XFx0LyogcXVvdGEuZ29hbHMgc2hvdWxkIGJlIHNlcGFyYXRlbHkgc2V0IGJ5IGNhbGxlciAqL1xcbm1tL2RhbW9uL2NvcmUuYzo3Nzc6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnNjaGVtZS1cXHUwMDNlcXVvdGEuZ29hbHMpO1xcbm1tL2RhbW9uL2NvcmUuYy03NzgtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODE1PXZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbm1tL2RhbW9uL2NvcmUuYzo4MTc6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcsICpnX25leHQ7XFxubW0vZGFtb24vY29yZS5jLTgxOC1cXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmLCAqbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtODE5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MjA6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGcsIGdfbmV4dCwgXFx1MDAyNnMtXFx1MDAzZXF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYzo4MjE6XFx0XFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYy04MjItXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTE2Nj12b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTc4OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZGFtb3NfbnRoX3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jOjExNzk6XFx0XFx0aW50IG4sIHN0cnVjdCBkYW1vc19xdW90YSAqcSlcXG5tbS9kYW1vbi9jb3JlLmMtMTE4MC17XFxubW0vZGFtb24vY29yZS5jOjExODE6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxubW0vZGFtb24vY29yZS5jLTExODItXFx0aW50IGkgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy0xMTgzLVxcbm1tL2RhbW9uL2NvcmUuYzoxMTg0OlxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcSkge1xcbm1tL2RhbW9uL2NvcmUuYy0xMTg1LVxcdFxcdGlmIChpKysgPT0gbilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxcbm1tL2RhbW9uL2NvcmUuYzoxMTkxOnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsX3VuaW9uKFxcbm1tL2RhbW9uL2NvcmUuYzoxMTkyOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTExOTMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMTQtXFxubW0vZGFtb24vY29yZS5jOjEyMTU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jOjEyMTY6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIxNy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIyMS1cXHRcXHRkc3QtXFx1MDAzZWN1cnJlbnRfdmFsdWUgPSBzcmMtXFx1MDAzZWN1cnJlbnRfdmFsdWU7XFxubW0vZGFtb24vY29yZS5jOjEyMjI6XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjIzLX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjI1LS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxMjI2OiAqIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscygpIC0gQ29tbWl0IERBTU9TIHF1b3RhIGdvYWxzIHRvIGFub3RoZXIgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jOjEyMjc6ICogQGRzdDpcXHRUaGUgY29tbWl0IGRlc3RpbmF0aW9uIERBTU9TIHF1b3RhLlxcbm1tL2RhbW9uL2NvcmUuYzoxMjI4OiAqIEBzcmM6XFx0VGhlIGNvbW1pdCBzb3VyY2UgREFNT1MgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jLTEyMjktICpcXG5tbS9kYW1vbi9jb3JlLmM6MTIzMDogKiBDb3BpZXMgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVycyBmb3IgcXVvdGEgZ29hbHMgZnJvbSBAc3JjIHRvIEBkc3QuICBVc2Vyc1xcbm1tL2RhbW9uL2NvcmUuYzoxMjMxOiAqIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiBmb3IgcXVvdGEgZ29hbHMtbGV2ZWwgcGFyYW1ldGVycyB1cGRhdGUgb2YgcnVubmluZ1xcbm1tL2RhbW9uL2NvcmUuYy0xMjMyLSAqIERBTU9OIGNvbnRleHRzLCBpbnN0ZWFkIG9mIG1hbnVhbCBpbi1wbGFjZSB1cGRhdGVzLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMzYtICovXFxubW0vZGFtb24vY29yZS5jOjEyMzc6aW50IGRhbW9zX2NvbW1pdF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyMzgte1xcbm1tL2RhbW9uL2NvcmUuYzoxMjM5OlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3RfZ29hbCwgKm5leHQsICpzcmNfZ29hbCwgKm5ld19nb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQwLVxcdGludCBpID0gMCwgaiA9IDA7XFxubW0vZGFtb24vY29yZS5jLTEyNDEtXFxubW0vZGFtb24vY29yZS5jOjEyNDI6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKGRzdF9nb2FsLCBuZXh0LCBkc3QpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MTI0MzpcXHRcXHRzcmNfZ29hbCA9IGRhbW9zX250aF9xdW90YV9nb2FsKGkrKywgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0NC1cXHRcXHRpZiAoc3JjX2dvYWwpXFxubW0vZGFtb24vY29yZS5jOjEyNDU6XFx0XFx0XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwoZHN0X2dvYWwsIHNyY19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0Ni1cXHRcXHRlbHNlXFxubW0vZGFtb24vY29yZS5jOjEyNDc6XFx0XFx0XFx0ZGFtb3NfZGVzdHJveV9xdW90YV9nb2FsKGRzdF9nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0OC1cXHR9XFxubW0vZGFtb24vY29yZS5jOjEyNDk6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbF9zYWZlKHNyY19nb2FsLCBuZXh0LCBzcmMpIHtcXG5tbS9kYW1vbi9jb3JlLmMtMTI1MC1cXHRcXHRpZiAoaisrIFxcdTAwM2MgaSlcXG5tbS9kYW1vbi9jb3JlLmMtMTI1MS1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1MjpcXHRcXHRuZXdfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjUzLVxcdFxcdFxcdFxcdHNyY19nb2FsLVxcdTAwM2VtZXRyaWMsIHNyY19nb2FsLVxcdTAwM2V0YXJnZXRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNTUtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vY29yZS5jOjEyNTY6XFx0XFx0ZGFtb3NfY29tbWl0X3F1b3RhX2dvYWwobmV3X2dvYWwsIHNyY19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1NzpcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChkc3QsIG5ld19nb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI1OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNjgtXFx0ZHN0LVxcdTAwM2VzeiA9IHNyYy1cXHUwMDNlc3o7XFxubW0vZGFtb24vY29yZS5jOjEyNjk6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKGRzdCwgc3JjKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTI3MC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE1MTk9c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MjYtXFxubW0vZGFtb24vY29yZS5jOjE1Mjc6XFx0ZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKFxcdTAwMjZkc3QtXFx1MDAzZXF1b3RhLCBcXHUwMDI2c3JjLVxcdTAwM2VxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTE1MjgtXFx0aWYgKGVycilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNTQ2PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU2Ny1cXHRcXHRcXHRcXHRzcmNfc2NoZW1lLVxcdTAwM2VhcHBseV9pbnRlcnZhbF91cyxcXG5tbS9kYW1vbi9jb3JlLmM6MTU2ODpcXHRcXHRcXHRcXHRcXHUwMDI2c3JjX3NjaGVtZS1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmNfc2NoZW1lLVxcdTAwM2V3bWFya3MsXFxubW0vZGFtb24vY29yZS5jLTE1NjktXFx0XFx0XFx0XFx0TlVNQV9OT19OT0RFKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjc5PXN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldHMoXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTcwNS1cXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgZHN0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MDY6XFx0XFx0XFx0XFx0aWYgKHMtXFx1MDAzZXF1b3RhLmNoYXJnZV90YXJnZXRfZnJvbSA9PSBkc3RfdGFyZ2V0KSB7XFxubW0vZGFtb24vY29yZS5jOjE3MDc6XFx0XFx0XFx0XFx0XFx0cy1cXHUwMDNlcXVvdGEuY2hhcmdlX3RhcmdldF9mcm9tID0gTlVMTDtcXG5tbS9kYW1vbi9jb3JlLmM6MTcwODpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VxdW90YS5jaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMTcwOS1cXHRcXHRcXHRcXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTg2Mj1zdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODY1LVxcdHN0cnVjdCBkYW1vcyAqc2NoZW1lO1xcbm1tL2RhbW9uL2NvcmUuYzoxODY2OlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy0xODY3LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE4NzQtXFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNjaGVtZSwgc3JjKSB7XFxubW0vZGFtb24vY29yZS5jOjE4NzU6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzY2hlbWUtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0xODc2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc3OlxcdFxcdFxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcXG5tbS9kYW1vbi9jb3JlLmMtMTg3OC1cXHRcXHRcXHRcXHRpZiAoZ29hbC1cXHUwMDNlbWV0cmljID09XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjM3MT1zdGF0aWMgYm9vbCBfX2RhbW9zX3ZhbGlkX3RhcmdldChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxcbm1tL2RhbW9uL2NvcmUuYzoyMzg3OiAqIGRhbW9zX3F1b3RhX2lzX3NldCgpIC0gUmV0dXJuIGlmIHRoZSBnaXZlbiBxdW90YSBpcyBhY3R1YWxseSBzZXQuXFxubW0vZGFtb24vY29yZS5jOjIzODg6ICogQHF1b3RhOlxcdFRoZSBxdW90YSB0byBjaGVjay5cXG5tbS9kYW1vbi9jb3JlLmMtMjM4OS0gKlxcbm1tL2RhbW9uL2NvcmUuYzoyMzkwOiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVvdGEgaXMgc2V0LCBmYWxzZSBvdGhlcndpc2UuXFxubW0vZGFtb24vY29yZS5jLTIzOTEtICovXFxubW0vZGFtb24vY29yZS5jOjIzOTI6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfc2V0KHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxubW0vZGFtb24vY29yZS5jLTIzOTMte1xcbm1tL2RhbW9uL2NvcmUuYzoyMzk0OlxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IHx8IHF1b3RhLVxcdTAwM2VzeiB8fCBxdW90YS1cXHUwMDNlbXMgfHxcXG5tbS9kYW1vbi9jb3JlLmM6MjM5NTpcXHRcXHQhZGFtb3NfcXVvdGFfZ29hbHNfZW1wdHkocXVvdGEpO1xcbm1tL2RhbW9uL2NvcmUuYy0yMzk2LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMzk4PXN0YXRpYyBib29sIGRhbW9zX3ZhbGlkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MDItXFxubW0vZGFtb24vY29yZS5jOjI0MDM6XFx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcXHUwMDI2cy1cXHUwMDNlcXVvdGEpIHx8ICFjLVxcdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjQwNC1cXHRcXHRyZXR1cm4gcmV0O1xcbm1tL2RhbW9uL2NvcmUuYy0yNDA1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNDA2OlxcdHJldHVybiBjLVxcdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZShjLCByLCBzKSBcXHUwMDNlPSBzLVxcdTAwM2VxdW90YS5taW5fc2NvcmU7XFxubW0vZGFtb24vY29yZS5jLTI0MDctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MTAtICogZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbigpIC0gQ2hlY2sgaWYgdGhlIGdpdmVuIHJlZ2lvbiBvciBzdGFydGluZyBwYXJ0IG9mXFxubW0vZGFtb24vY29yZS5jOjI0MTE6ICogaXQgaXMgYWxyZWFkeSBjaGFyZ2VkIGZvciB0aGUgREFNT1MgcXVvdGEuXFxubW0vZGFtb24vY29yZS5jLTI0MTItICogQHQ6XFx0VGhlIHRhcmdldCBvZiB0aGUgcmVnaW9uLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0MTYtICpcXG5tbS9kYW1vbi9jb3JlLmM6MjQxNzogKiBJZiBhIHF1b3RhIG9mIGEgc2NoZW1lIGhhcyBleGNlZWRlZCBpbiBhIHF1b3RhIGNoYXJnZSB3aW5kb3csIHRoZSBzY2hlbWUnc1xcbm1tL2RhbW9uL2NvcmUuYy0yNDE4LSAqIGFjdGlvbiB3b3VsZCBhcHBsaWVkIHRvIG9ubHkgYSBwYXJ0IG9mIHRoZSB0YXJnZXQgYWNjZXNzIHBhdHRlcm4gZnVsZmlsbGluZ1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI0MzQ9c3RhdGljIGJvb2wgZGFtb3Nfc2tpcF9jaGFyZ2VkX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0Mzcte1xcbm1tL2RhbW9uL2NvcmUuYzoyNDM4OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI0MzktXFx0dW5zaWduZWQgbG9uZyBzel90b19za2lwO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0NDEtXFx0LyogU2tpcCBwcmV2aW91c2x5IGNoYXJnZWQgcmVnaW9ucyAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQyOlxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tKSB7XFxubW0vZGFtb24vY29yZS5jOjI0NDM6XFx0XFx0aWYgKHQgIT0gcXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSlcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NC1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0NS1cXHRcXHRpZiAociA9PSBkYW1vbl9sYXN0X3JlZ2lvbih0KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQ2OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYzoyNDQ3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0OC1cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ0OS1cXHRcXHR9XFxubW0vZGFtb24vY29yZS5jOjI0NTA6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tIFxcdTAwMjZcXHUwMDI2XFxubW0vZGFtb24vY29yZS5jOjI0NTE6XFx0XFx0XFx0XFx0ci1cXHUwMDNlYXIuZW5kIFxcdTAwM2M9IHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUyLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbm1tL2RhbW9uL2NvcmUuYy0yNDUzLVxcbm1tL2RhbW9uL2NvcmUuYzoyNDU0OlxcdFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSBcXHUwMDI2XFx1MDAyNiByLVxcdTAwM2Vhci5zdGFydCBcXHUwMDNjXFxubW0vZGFtb24vY29yZS5jOjI0NTU6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV9hZGRyX2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjQ1NjpcXHRcXHRcXHRzel90b19za2lwID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSAtXFxubW0vZGFtb24vY29yZS5jLTI0NTctXFx0XFx0XFx0XFx0XFx0ci1cXHUwMDNlYXIuc3RhcnQsIG1pbl9yZWdpb25fc3opO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0NjUtXFx0XFx0fVxcbm1tL2RhbW9uL2NvcmUuYzoyNDY2OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSBOVUxMO1xcbm1tL2RhbW9uL2NvcmUuYzoyNDY3OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMjQ2OC1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYzNS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cXHRcXHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NDMtXFx0ICovXFxubW0vZGFtb24vY29yZS5jOjI2NDQ6XFx0aWYgKCFxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcXHUwMDNlIHN6X3JlZ2lvbilcXG5tbS9kYW1vbi9jb3JlLmM6MjY0NTpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9yZWdpb247XFxubW0vZGFtb24vY29yZS5jLTI2NDYtXFx0ZWxzZVxcbm1tL2RhbW9uL2NvcmUuYzoyNjQ3OlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X2FwcGxpZWQgKyBtdWx0X2ZyYWMoXFxubW0vZGFtb24vY29yZS5jLTI2NDgtXFx0XFx0XFx0XFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxcbm1tL2RhbW9uL2NvcmUuYzoyNjQ5OlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VmYWlsX2NoYXJnZV9udW0sXFxubW0vZGFtb24vY29yZS5jOjI2NTA6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjY1MS19XFxubW0vZGFtb24vY29yZS5jLTI2NTItXFxubW0vZGFtb24vY29yZS5jOjI2NTM6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XFxubW0vZGFtb24vY29yZS5jOjI2NTY6XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVxcdFxcdHJldHVybiBmYWxzZTtcXG5tbS9kYW1vbi9jb3JlLmM6MjY1ODpcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1OS1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNjYxLVxcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFxcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xcbm1tL2RhbW9uL2NvcmUuYzoyNjYyOlxcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxcbm1tL2RhbW9uL2NvcmUuYy0yNjYzLVxcdCAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNjY0OlxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xcbm1tL2RhbW9uL2NvcmUuYy0yNjY1LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjY3PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2Njkte1xcbm1tL2RhbW9uL2NvcmUuYzoyNjcwOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI2NzEtXFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzA0LVxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxubW0vZGFtb24vY29yZS5jOjI3MDU6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9kYW1vbi9jb3JlLmM6MjcwNjpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzA3OlxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxubW0vZGFtb24vY29yZS5jLTI3MDgtXFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjcyMi1cXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxubW0vZGFtb24vY29yZS5jOjI3MjM6XFx0XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgKz0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2ZW5kKSAtXFxubW0vZGFtb24vY29yZS5jLTI3MjQtXFx0XFx0XFx0dGltZXNwZWM2NF90b19ucyhcXHUwMDI2YmVnaW4pO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI1OlxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI2OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI4OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbm1tL2RhbW9uL2NvcmUuYy0yNzI5LVxcdFxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzM4PXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzQ0LVxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxubW0vZGFtb24vY29yZS5jOjI3NDU6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMjc0Ni1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzUyLVxcbm1tL2RhbW9uL2NvcmUuYzoyNzUzOlxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyNzU0OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSlcXG5tbS9kYW1vbi9jb3JlLmMtMjc1NS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzc3LSAqXFxubW0vZGFtb24vY29yZS5jOjI3Nzg6ICogVGhpcyBmdW5jdGlvbiBjb3VsZCBzcGxpdCByZWdpb25zIGZvciBrZWVwaW5nIHRoZSBxdW90YS4gIFRvIG1pbmltaXplXFxubW0vZGFtb24vY29yZS5jLTI3NzktICogb3ZlcmhlYWQgZnJvbSB0aGUgc3BsaXQgb3BlcmF0aW9ucyBpbmNyZWFzZWQgbnVtYmVyIG9mIHJlZ2lvbnMsIHRoaXNcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzkwPXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI4MDAtXFx0XFx0ICogZGFtb25fZG9fYXBwbHlfc2NoZWVtcygpIGNvdWxkIHNwbGl0IHRoZSByZWdpb24gZm9yIHRoZVxcbm1tL2RhbW9uL2NvcmUuYzoyODAxOlxcdFxcdCAqIHF1b3RhLiAgS2VlcGluZyB0aGUgbmV3IHNsaWNlcyBpcyBhbiBvdmVyaGVhZC4gIE1lcmdlIGJhY2tcXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cXHRcXHQgKiB0aGUgc2xpY2VzIGludG8gdGhlIHByZXZpb3VzIHJlZ2lvbiBpZiBpdCBkb2Vzbid0IGxvc2UgYW55XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjkwMD1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jOjI5MDE6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTI5MDIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI5Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG5tbS9kYW1vbi9jb3JlLmM6MjkyOTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG5tbS9kYW1vbi9jb3JlLmMtMjkzMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzA4Mj1zdGF0aWMgX19rZXJuZWxfdWxvbmdfdCBkYW1vc19nZXRfbm9kZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jOjMwODM6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMwODg9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfbWVtY2dfdXNlZF9icChcXG5tbS9kYW1vbi9jb3JlLmM6MzA4OTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbClcXG5tbS9kYW1vbi9jb3JlLmMtMzA5MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzExOT1zdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2h1Z2VwYWdlX21lbV9icCh2b2lkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMxMzQtXFxubW0vZGFtb24vY29yZS5jOjMxMzU6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbm1tL2RhbW9uL2NvcmUuYzozMTM2OlxcdFxcdHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMxMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMxNzktLyogUmV0dXJuIHRoZSBoaWdoZXN0IHNjb3JlIHNpbmNlIGl0IG1ha2VzIHNjaGVtZXMgbGVhc3QgYWdncmVzc2l2ZSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMTgwOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3F1b3RhX3Njb3JlKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzE4MS17XFxubW0vZGFtb24vY29yZS5jOjMxODI6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWw7XFxubW0vZGFtb24vY29yZS5jOjMxODM6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4NC1cXHR1bnNpZ25lZCBsb25nIGhpZ2hlc3Rfc2NvcmUgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy0zMTg1LVxcbm1tL2RhbW9uL2NvcmUuYzozMTg2OlxcdGRhbW9zX2Zvcl9lYWNoX3F1b3RhX2dvYWwoZ29hbCwgcXVvdGEpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzE4NzpcXHRcXHRkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKGMsIHMsIGdvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMTg4LVxcdFxcdGhpZ2hlc3Rfc2NvcmUgPSBtYXgoaGlnaGVzdF9zY29yZSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMTk2PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMxOTcte1xcbm1tL2RhbW9uL2NvcmUuYzozMTk4OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jOjMxOTk6XFx0dW5zaWduZWQgbG9uZyBzY29yZSA9IGRhbW9zX3F1b3RhX3Njb3JlKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjAwLVxcbm1tL2RhbW9uL2NvcmUuYzozMjAxOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dChcXG5tbS9kYW1vbi9jb3JlLmM6MzIwMjpcXHRcXHRcXHRtYXgocXVvdGEtXFx1MDAzZWVzel9icCwgMTAwMDBVTCksIHNjb3JlKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMy19XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzIwNT1zdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIwNy17XFxubW0vZGFtb24vY29yZS5jOjMyMDg6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmM6MzIwOTpcXHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyMTAtXFxubW0vZGFtb24vY29yZS5jLTMyMTEtXFx0aWYgKHNjb3JlIFxcdTAwM2U9IDEwMDAwKVxcbm1tL2RhbW9uL2NvcmUuYzozMjEyOlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYzozMjEzOlxcdGVsc2UgaWYgKHF1b3RhLVxcdTAwM2VzeilcXG5tbS9kYW1vbi9jb3JlLmM6MzIxNDpcXHRcXHRxdW90YS1cXHUwMDNlZXN6X2JwID0gcXVvdGEtXFx1MDAzZXN6ICogMTAwMDA7XFxubW0vZGFtb24vY29yZS5jLTMyMTUtXFx0ZWxzZVxcbm1tL2RhbW9uL2NvcmUuYzozMjE2OlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBVTE9OR19NQVg7XFxubW0vZGFtb24vY29yZS5jLTMyMTctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMTktLypcXG5tbS9kYW1vbi9jb3JlLmM6MzIyMDogKiBDYWxsZWQgb25seSBpZiBxdW90YS1cXHUwMDNlbXMsIG9yIHF1b3RhLVxcdTAwM2VzeiBhcmUgc2V0LCBvciBxdW90YS1cXHUwMDNlZ29hbHMgaXMgbm90IGVtcHR5XFxubW0vZGFtb24vY29yZS5jLTMyMjEtICovXFxubW0vZGFtb24vY29yZS5jOjMyMjI6c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMy17XFxubW0vZGFtb24vY29yZS5jOjMyMjQ6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyNS1cXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIyNy1cXG5tbS9kYW1vbi9jb3JlLmM6MzIyODpcXHRpZiAoIXF1b3RhLVxcdTAwM2VtcyBcXHUwMDI2XFx1MDAyNiBsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyMjk6XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzIzMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIzMi1cXG5tbS9kYW1vbi9jb3JlLmM6MzIzMzpcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVxcdFxcdFxcdGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfY29uc2lzdChjdHgsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMjM2OlxcdFxcdGVsc2UgaWYgKHF1b3RhLVxcdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfVEVNUE9SQUwpXFxubW0vZGFtb24vY29yZS5jLTMyMzctXFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMjM4OlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2Vlc3pfYnAgLyAxMDAwMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIzOS1cXHR9XFxubW0vZGFtb24vY29yZS5jLTMyNDAtXFxubW0vZGFtb24vY29yZS5jOjMyNDE6XFx0aWYgKHF1b3RhLVxcdTAwM2Vtcykge1xcbm1tL2RhbW9uL2NvcmUuYzozMjQyOlxcdFxcdGlmIChxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucylcXG5tbS9kYW1vbi9jb3JlLmM6MzI0MzpcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbm1tL2RhbW9uL2NvcmUuYzozMjQ0OlxcdFxcdFxcdFxcdFxcdDEwMDAwMDAsIHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX25zKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI0NS1cXHRcXHRlbHNlXFxubW0vZGFtb24vY29yZS5jLTMyNDYtXFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxubW0vZGFtb24vY29yZS5jOjMyNDc6XFx0XFx0ZXN6ID0gbWluKHRocm91Z2hwdXQgKiBxdW90YS1cXHUwMDNlbXMsIGVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNDgtXFx0XFx0ZXN6ID0gbWF4KGN0eC1cXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjUwLVxcbm1tL2RhbW9uL2NvcmUuYzozMjUxOlxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1NDpcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxubW0vZGFtb24vY29yZS5jLTMyNTUtXFx0XFx0ZXN6ID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1NzpcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjU4LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjYwPXN0YXRpYyB2b2lkIGRhbW9zX3RyYWNlX2VzeihzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMsXFxubW0vZGFtb24vY29yZS5jOjMyNjE6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMzI2Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3MC1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMyNzE6XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjcyLX1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3My1cXG5tbS9kYW1vbi9jb3JlLmM6MzI3NDpzdGF0aWMgdm9pZCBkYW1vc19hZGp1c3RfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjc1LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzI3NjpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjc3LVxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4MS1cXG5tbS9kYW1vbi9jb3JlLmM6MzI4MjpcXHRpZiAoIXF1b3RhLVxcdTAwM2VtcyBcXHUwMDI2XFx1MDAyNiAhcXVvdGEtXFx1MDAzZXN6IFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpXFxubW0vZGFtb24vY29yZS5jLTMyODMtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyODUtXFx0LyogRmlyc3QgY2hhcmdlIHdpbmRvdyAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMjg2OlxcdGlmICghcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfc3ogXFx1MDAyNlxcdTAwMjYgIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20pIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzI4NzpcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9mcm9tID0gamlmZmllcztcXG5tbS9kYW1vbi9jb3JlLmM6MzI4ODpcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjg5LVxcdFxcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxcbm1tL2RhbW9uL2NvcmUuYzozMjkwOlxcdFxcdFxcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTMyOTEtXFx0fVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyOTMtXFx0LyogTmV3IGNoYXJnZSB3aW5kb3cgc3RhcnRzICovXFxubW0vZGFtb24vY29yZS5jOjMyOTQ6XFx0aWYgKCF0aW1lX2luX3JhbmdlX29wZW4oamlmZmllcywgcXVvdGEtXFx1MDAzZWNoYXJnZWRfZnJvbSxcXG5tbS9kYW1vbi9jb3JlLmM6MzI5NTpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9mcm9tICtcXG5tbS9kYW1vbi9jb3JlLmM6MzI5NjpcXHRcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKHF1b3RhLVxcdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyOTc6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjk4LVxcdFxcdFxcdHMtXFx1MDAzZXN0YXQucXRfZXhjZWVkcysrO1xcbm1tL2RhbW9uL2NvcmUuYzozMjk5OlxcdFxcdHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6ICs9IHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6O1xcbm1tL2RhbW9uL2NvcmUuYzozMzAwOlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xcbm1tL2RhbW9uL2NvcmUuYzozMzAxOlxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwMi1cXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSlcXG5tbS9kYW1vbi9jb3JlLmM6MzMwMzpcXHRcXHRcXHRjYWNoZWRfZXN6ID0gcXVvdGEtXFx1MDAzZWVzejtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNDpcXHRcXHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYzozMzA1OlxcdFxcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IHF1b3RhLVxcdTAwM2Vlc3ogIT0gY2FjaGVkX2VzeilcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNjpcXHRcXHRcXHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzA3LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzMyLVxcdFxcdGN1bXVsYXRlZF9zeiArPSBjLVxcdTAwM2VyZWdpb25zX3Njb3JlX2hpc3RvZ3JhbVtzY29yZV07XFxubW0vZGFtb24vY29yZS5jOjMzMzM6XFx0XFx0aWYgKGN1bXVsYXRlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6IHx8ICFzY29yZSlcXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cXHRcXHRcXHRicmVhaztcXG5tbS9kYW1vbi9jb3JlLmMtMzMzNS1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMzMzY6XFx0cXVvdGEtXFx1MDAzZW1pbl9zY29yZSA9IHNjb3JlO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzM3LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMzU1PXN0YXRpYyB2b2lkIGtkYW1vbmRfYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMzNzAtXFxubW0vZGFtb24vY29yZS5jOjMzNzE6XFx0XFx0ZGFtb3NfYWRqdXN0X3F1b3RhKGMsIHMpO1xcbm1tL2RhbW9uL2NvcmUuYy0zMzcyLVxcdH1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9Mzk9c3RhdGljIGJvb2wgY29tbWl0X2lucHV0cyBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00My0gKlxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDQ6ICogV2hpbGUga2VlcGluZyB0aGUgY2FwcyB0aGF0IHNldCBieSBvdGhlciBxdW90YXMsIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0NTogKiBhdXRvbWF0aWNhbGx5IGluY3JlYXNlcyBhbmQgZGVjcmVhc2VzIHRoZSBlZmZlY3RpdmUgbGV2ZWwgb2YgdGhlIHF1b3RhXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00Ni0gKiBhaW1pbmcgdGhlIExSVSBbZGVdcHJpb3JpdGl6YXRpb25zIG9mIHRoZSBob3QgYW5kIGNvbGQgbWVtb3J5IHJlc3VsdGluZyBpblxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0xMDQ9bW9kdWxlX3BhcmFtKGNvbGRfbWluX2FnZSwgdWxvbmcsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTA1LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTA2OnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fbHJ1X3NvcnRfcXVvdGEgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDctXFx0LyogVXNlIHVwIHRvIDEwIG1zIHBlciAxIHNlYywgYnkgZGVmYXVsdCAqL1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMTAtXFx0LnJlc2V0X2ludGVydmFsID0gMTAwMCxcXG5tbS9kYW1vbi9scnVfc29ydC5jOjExMTpcXHQvKiBXaXRoaW4gdGhlIHF1b3RhLCBtYXJrIGhvdHRlciByZWdpb25zIGFjY2Vzc2VkIGZpcnN0LiAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTEyLVxcdC53ZWlnaHRfc3ogPSAwLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMTUtfTtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjExNjpERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19USU1FX1FVT1RBKGRhbW9uX2xydV9zb3J0X3F1b3RhKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTExNy1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MTY0PURFRklORV9EQU1PTl9NT0RVTEVTX0RBTU9TX1NUQVRTX1BBUkFNUyhkYW1vbl9scnVfc29ydF9ob3Rfc3RhdCxcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE2NS1cXHRcXHRscnVfc29ydF90cmllZF9ob3RfcmVnaW9ucywgbHJ1X3NvcnRlZF9ob3RfcmVnaW9ucyxcXG5tbS9kYW1vbi9scnVfc29ydC5jOjE2NjpcXHRcXHRob3RfcXVvdGFfZXhjZWVkcyk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xNjctXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTE2OT1ERUZJTkVfREFNT05fTU9EVUxFU19EQU1PU19TVEFUU19QQVJBTVMoZGFtb25fbHJ1X3NvcnRfY29sZF9zdGF0LFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTcwLVxcdFxcdGxydV9zb3J0X3RyaWVkX2NvbGRfcmVnaW9ucywgbHJ1X3NvcnRlZF9jb2xkX3JlZ2lvbnMsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxNzE6XFx0XFx0Y29sZF9xdW90YV9leGNlZWRzKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE3Mi1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MTg4PXN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX2xydV9zb3J0X25ld19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5MC17XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTE6XFx0c3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhID0gZGFtb25fbHJ1X3NvcnRfcXVvdGE7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTItXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxOTM6XFx0LyogVXNlIGhhbGYgb2YgdG90YWwgcXVvdGEgZm9yIGhvdC9jb2xkIHBhZ2VzIHNvcnRpbmcgKi9cXG5tbS9kYW1vbi9scnVfc29ydC5jOjE5NDpcXHRxdW90YS5tcyA9IHF1b3RhLm1zIC8gMjtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTE5NS1cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjAyLVxcdFxcdFxcdDAsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMDM6XFx0XFx0XFx0LyogdW5kZXIgdGhlIHF1b3RhLiAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjA0OlxcdFxcdFxcdFxcdTAwMjZxdW90YSxcXG5tbS9kYW1vbi9scnVfc29ydC5jLTIwNS1cXHRcXHRcXHQvKiAoRGUpYWN0aXZhdGUgdGhpcyBhY2NvcmRpbmcgdG8gdGhlIHdhdGVybWFya3MuICovXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTIyOC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzAtXFx0XFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MDcuODI5MjU3MDc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTYwMzM0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBBY2Nlc3NpYmlsaXR5KipcblxuUmlnaHQsIHNvIERBTU9OLCB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciwgaGFzIGEgZmV3IGFjY2VzcyByb3V0ZXMsIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBhbmQgbGlrZWx5IG1vc3Qgc3RyYWlnaHRmb3J3YXJkLCBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCBzeXNmcy4gVGhhdCdzIHRoZSBnby10byB1c3VhbGx5LCBhbmQgSSB3b3VsZCBjaGVjayBgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCBpZiBgQ09ORklHX0RBTU9OX1NZU0ZTYCBpcyBlbmFibGVkLCBhcyBpdCBwcm9iYWJseSB3aWxsIGJlLiBCdXQgaWYgdGhhdCdzIG5vdCBhdmFpbGFibGUsIG9yIEknbSBkb2luZyBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYywgaXQgY2FuIGFsc28gYmUgYWNjZXNzZWQgdGhyb3VnaCBkZWJ1Z2ZzIG9yIG1vZHVsZSBwYXJhbWV0ZXJzLCB1bmRlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaWtlIGBDT05GSUdfREFNT05fUkVDTEFJTWAgb3IgYENPTkZJR19EQU1PTl9MUlVfU09SVGAuIEdvb2QgdG8ga25vdyB0aGUgYWx0ZXJuYXRpdmVzLlxuXG5Ob3csIEknbSB0aGlua2luZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGV4cG9zdXJlIGluIHN5c2ZzIGZpcnN0LiBMZXQncyBzZWUgaG93IHRoYXQncyBzdHJ1Y3R1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzkxNCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjEwLjg4NTI5Mjk4NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1Nzg4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3Nfc3lzZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4MDIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQyPXZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTE9aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU6c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjA6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2ModW5zaWduZWQgY2hhciBoaXRzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIyOlxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqcHJvYmU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxPXN0YXRpYyBzc2l6ZV90IGhpdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlICpwcm9iZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKnByb2JlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3Byb2JlX2hpdHNfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5LVxcdFxcdF9fQVRUUl9ST19NT0RFKGhpdHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3Byb2JlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOlxcdFxcdTAwMjZkYW1vc19zeXNmc19wcm9iZV9oaXRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19wcm9iZSk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZV9rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTg6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZV9yZWxlYXNlLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OS1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19wcm9iZV9ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OnN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02OC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2OTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MC1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpkYW1vc19zeXNmc19wcm9iZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2Jlcyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2LX1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc4OnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3Byb2Jlc19ybV9kaXJzKHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMgKnByb2JlcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo4MDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyID0gcHJvYmVzLVxcdTAwM2Vwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04MS1cXHRpbnQgaTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTA6c3RhdGljIGludCBkYW1vc19zeXNmc19wcm9iZXNfYWRkX2RpcnMoc3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05MS1cXHRcXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnJlZ2lvbilcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05My1cXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnByb2JlO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo5NDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmUgKipwcm9iZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy05NS1cXHRpbnQgaSA9IDA7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA5LVxcdGRhbW9uX2Zvcl9lYWNoX3Byb2JlKHByb2JlLCBjdHgpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTEwOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZSAqc3lzX3Byb2JlO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMTEtXFx0XFx0aW50IGVycjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTEyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTM6XFx0XFx0c3lzX3Byb2JlID0gZGFtb3Nfc3lzZnNfcHJvYmVfYWxsb2MoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNC1cXHRcXHRcXHRcXHRkYW1vbl9wcm9iZV9oaXRzX212c3VtKGksIHJlZ2lvbiwgY3R4KSk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExNS1cXHRcXHRpZiAoIXN5c19wcm9iZSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMTY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocHJvYmVzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTE3LVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTExOS1cXHRcXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcXHUwMDI2c3lzX3Byb2JlLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjA6XFx0XFx0XFx0XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2JlX2t0eXBlLCBcXHUwMDI2cHJvYmVzLVxcdTAwM2Vrb2JqLCBcXFwiJWRcXFwiLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjEtXFx0XFx0XFx0XFx0aSk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIzLVxcdFxcdFxcdGtvYmplY3RfcHV0KFxcdTAwMjZzeXNfcHJvYmUtXFx1MDAzZWtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjQ6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocHJvYmVzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI1LVxcdFxcdFxcdHJldHVybiBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzM6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcHJvYmVzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTM2OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19wcm9iZXMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDI6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19wcm9iZXNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQzLVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUwPXN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTUtXFx0dW5zaWduZWQgbG9uZyBzel9maWx0ZXJfcGFzc2VkO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Byb2JlcyAqcHJvYmVzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTctXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWxsb2MoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzY6c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE4MC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE4MTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcHJvYmVzICpwcm9iZXMgPSBkYW1vc19zeXNmc19wcm9iZXNfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyLVxcdGludCBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTg1LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODY6XFx0ZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoXFx1MDAyNnByb2Jlcy1cXHUwMDNla29iaiwgXFx1MDAyNmRhbW9zX3N5c2ZzX3Byb2Jlc19rdHlwZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTg3LVxcdFxcdFxcdFxcdTAwMjZyZWdpb24tXFx1MDAzZWtvYmosIFxcXCJwcm9iZXNcXFwiKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODktXFx0XFx0Z290byBmYWlsO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTA6XFx0ZXJyID0gZGFtb3Nfc3lzZnNfcHJvYmVzX2FkZF9kaXJzKHByb2JlcywgY3R4LCBkcmVnaW9uKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTkxLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjAxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDI6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcmVnaW9uX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwMy1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMDU6XFx0ZGFtb3Nfc3lzZnNfcHJvYmVzX3JtX2RpcnMocmVnaW9uLVxcdTAwM2Vwcm9iZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMDYtXFx0a29iamVjdF9wdXQoXFx1MDAyNnJlZ2lvbi1cXHUwMDNlcHJvYmVzLVxcdTAwM2Vrb2JqKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMjg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcm1fZGlycyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzMtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHIsIG5leHQsIFxcdTAwMjZyZWdpb25zLVxcdTAwM2VyZWdpb25zX2xpc3QsIGxpc3QpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzM0OlxcdFxcdGRhbW9zX3N5c2ZzX3JlZ2lvbl9ybV9kaXJzKHIpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMzUtXFx0XFx0bGlzdF9kZWwoXFx1MDAyNnItXFx1MDAzZWxpc3QpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUxMD1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zdGF0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjAtLypcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTIxOiAqIGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciAtIExheWVycyBoYW5kbGluZyBmaWx0ZXJzIG9mIGEgZGlyLlxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjItICovXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyMzplbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjQtXFx0REFNT1NfU1lTRlNfRklMVEVSX0hBTkRMRV9MQVlFUl9DT1JFLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyOT1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MzE6XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGhhbmRsZV9sYXllcjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMyLVxcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01NDE9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDI6XFx0XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NDMte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1MS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTUyOnN0cnVjdCBkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTUzLVxcdGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01NTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU1NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTU4OmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU1OS1cXHR7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYwMDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19maWx0ZXJfdHlwZV9uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDE6XFx0XFx0Y29uc3Qgc3RydWN0IGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUgKnR5cGVfbmFtZTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjAyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MDM6XFx0XFx0dHlwZV9uYW1lID0gXFx1MDAyNmRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MDQtXFx0XFx0aWYgKHR5cGVfbmFtZS1cXHUwMDNldHlwZSA9PSBmaWx0ZXItXFx1MDAzZXR5cGUpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTA6c3RhdGljIGJvb2wgZGFtb3Nfc3lzZnNfc2NoZW1lX2ZpbHRlcl92YWxpZF90eXBlKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2MTE6XFx0XFx0ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIGxheWVyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MTItXFx0XFx0ZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTYyNz1zdGF0aWMgc3NpemVfdCB0eXBlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWVzKTsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzNjpcXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSAqdHlwZV9uYW1lO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02MzctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzODpcXHRcXHR0eXBlX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfZmlsdGVyX3R5cGVfbmFtZXNbaV07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYzOS1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCB0eXBlX25hbWUtXFx1MDAzZW5hbWUpKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY0MDpcXHRcXHRcXHRpZiAoIWRhbW9zX3N5c2ZzX3NjaGVtZV9maWx0ZXJfdmFsaWRfdHlwZShcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjQxLVxcdFxcdFxcdFxcdFxcdFxcdGZpbHRlci1cXHUwMDNlaGFuZGxlX2xheWVyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5Mj1zdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6ODk0OlxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBoYW5kbGVfbGF5ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5NS1cXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqKmZpbHRlcnNfYXJyO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTg5OT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzICpcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6OTAwOmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2FsbG9jKGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtOTAxLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDI5PXN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyAqZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19hbGxvYyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDQ1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDQ2OnN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNDctXFx0ZW51bSBkYW1vc193bWFya19tZXRyaWMgbWV0cmljO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwNTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwNTE6c3RhdGljIGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDUyOmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tdID0ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDUzLVxcdHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDYzPXN0YXRpYyBzc2l6ZV90IG1ldHJpY19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA2OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA3MDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZXMpOyBpKyspIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTA3MTpcXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWUgKm1ldHJpY19uYW1lO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDcyLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDczOlxcdFxcdG1ldHJpY19uYW1lID0gXFx1MDAyNmRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lc1tpXTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTA3NC1cXHRcXHRpZiAobWV0cmljX25hbWUtXFx1MDAzZW1ldHJpYyA9PSB3YXRlcm1hcmtzLVxcdTAwM2VtZXRyaWMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTA4MD1zdGF0aWMgc3NpemVfdCBtZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDg2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDg3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3dtYXJrX21ldHJpY19uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMDg4OlxcdFxcdGNvbnN0IHN0cnVjdCBkYW1vc19zeXNmc193bWFya19tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwODktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwOTA6XFx0XFx0bWV0cmljX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfd21hcmtfbWV0cmljX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDkxLVxcdFxcdGlmIChzeXNmc19zdHJlcShidWYsIG1ldHJpY19uYW1lLVxcdTAwM2VuYW1lKSkge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMDU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2F0ZXJtYXJrc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjE0LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjE1OnN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMjQ6c3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI2OlxcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMjctfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI5OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzAtXFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTIzND1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIzNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWUgZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzYtXFx0e1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyNzg9c3RhdGljIHNzaXplX3QgdGFyZ2V0X21ldHJpY19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjgxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyODI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjgzLVxcdGludCBpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjg0LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lcyk7IGkrKykge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjg2OlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSAqbWV0cmljX25hbWU7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyODctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyODg6XFx0XFx0bWV0cmljX25hbWUgPSBcXHUwMDI2ZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzW2ldO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjg5LVxcdFxcdGlmIChtZXRyaWNfbmFtZS1cXHUwMDNlbWV0cmljID09IGdvYWwtXFx1MDAzZW1ldHJpYylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI5Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI5OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXFx0aW50IGk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZGFtb3Nfc3lzZnNfcWdvYWxfbWV0cmljX25hbWVzKTsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzMDM6XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lICptZXRyaWNfbmFtZTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMwNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMwNTpcXHRcXHRtZXRyaWNfbmFtZSA9IFxcdTAwMjZkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbaV07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDYtXFx0XFx0aWYgKHN5c2ZzX3N0cmVxKGJ1ZiwgbWV0cmljX25hbWUtXFx1MDAzZW5hbWUpKSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzMzPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMzOC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXFx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXFx1MDAyNmdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM1NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBuaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNjgtXFx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2VuaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVxcdGludCBsZW47XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVxcdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDEwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMC1cXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXFx0XFx0X19BVFRSX1JXX01PREUoY3VycmVudF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyOS1cXHRcXHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVxcdFxcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM0OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9uaWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5OlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3BhdGhfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVxcdE5VTEwsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDEtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDYtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NzpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyO1xcdC8qIGNvdW50ZWQgYnkgbnIgKi9cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MDpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjU6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FyciA9IGdvYWxzLVxcdTAwM2Vnb2Fsc19hcnI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MDpzdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMsIGludCBucl9nb2FscylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ4Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODM6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKipnb2Fsc19hcnIsICpnb2FsO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDg0LVxcdGludCBlcnIsIGk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0ODUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0ODY6XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0ODctXFx0aWYgKCFucl9nb2FscylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDk2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9nb2FsczsgaSsrKSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0OTc6XFx0XFx0Z29hbCA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5OC1cXHRcXHRpZiAoIWdvYWwpIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ5OTpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ybV9kaXJzKGdvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwMC1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTAzLVxcdFxcdGVyciA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKFxcdTAwMjZnb2FsLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA0OlxcdFxcdFxcdFxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX2t0eXBlLCBcXHUwMDI2Z29hbHMtXFx1MDAzZWtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MDUtXFx0XFx0XFx0XFx0XFxcIiVkXFxcIiwgaSk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUwNy1cXHRcXHRcXHRrb2JqZWN0X3B1dChcXHUwMDI2Z29hbC1cXHUwMDNla29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MDg6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhnb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MDktXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNTE4PXN0YXRpYyBzc2l6ZV90IG5yX2dvYWxzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUyMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1MjE6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpnb2FscyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MjMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTUyNz1zdGF0aWMgc3NpemVfdCBucl9nb2Fsc19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUzMDpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTMxLVxcdGludCBuciwgZXJyID0ga3N0cnRvaW50KGJ1ZiwgMCwgXFx1MDAyNm5yKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTM3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTM4OlxcdGdvYWxzID0gY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2Fscywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MzktXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU0MS1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTQyOlxcdGVyciA9IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKGdvYWxzLCBucik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NDMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTUwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTUyOlxcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMsIGtvYmopKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19ucl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU1Ni1cXHRcXHRfX0FUVFJfUldfTU9ERShucl9nb2FscywgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NTctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTg6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NTk6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX25yX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU2MC1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTYxLX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjI6QVRUUklCVVRFX0dST1VQUyhkYW1vc19zeXNmc19xdW90YV9nb2Fscyk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NjMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1NjU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19yZWxlYXNlLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY2LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE1Njc6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTY4LX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTY4ND1zdHJ1Y3QgZGFtb25fc3lzZnNfcXVvdGFzIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg2LVxcdHN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzICp3ZWlnaHRzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODgtXFx0dW5zaWduZWQgbG9uZyBtcztcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzAyPXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfcXVvdGFzX2FkZF9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMgKnF1b3RhcylcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzA0LVxcdHN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzICp3ZWlnaHRzO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzA1OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3MDYtXFx0aW50IGVycjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzE5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNzIwOlxcdGdvYWxzID0gZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfYWxsb2MoKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcyMS1cXHRpZiAoIWdvYWxzKSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTcyNS1cXHRlcnIgPSBrb2JqZWN0X2luaXRfYW5kX2FkZChcXHUwMDI2Z29hbHMtXFx1MDAzZWtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3MjY6XFx0XFx0XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2t0eXBlLCBcXHUwMDI2cXVvdGFzLVxcdTAwM2Vrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzI3LVxcdFxcdFxcdFxcXCJnb2Fsc1xcXCIpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE3Mzg9c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfcXVvdGFzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3F1b3RhcyAqcXVvdGFzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3NDAtXFx0a29iamVjdF9wdXQoXFx1MDAyNnF1b3Rhcy1cXHUwMDNld2VpZ2h0cy1cXHUwMDNla29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NDE6XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhxdW90YXMtXFx1MDAzZWdvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTc0Mi1cXHRrb2JqZWN0X3B1dChcXHUwMDI2cXVvdGFzLVxcdTAwM2Vnb2Fscy1cXHUwMDNla29iaik7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgwOD1zdGF0aWMgc3NpemVfdCBlZmZlY3RpdmVfYnl0ZXNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xODE2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxODE3OnN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgxOC1cXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfdHVuZXIgdHVuZXI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTgyMjpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX3R1bmVyX25hbWUgZGFtb3Nfc3lzZnNfcWdvYWxfdHVuZXJfbmFtZXNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgyMy1cXHR7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTgzMz1zdGF0aWMgc3NpemVfdCBnb2FsX3R1bmVyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTgzOS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTg0MDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkYW1vc19zeXNmc19xZ29hbF90dW5lcl9uYW1lcyk7IGkrKykge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjoxMC45MzE4NzY1MzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjcyOTk3OTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgZnVuY3Rpb24gaW4gYG1tL2RhbW9uL2NvcmUuY2AgYW5kIGhvdyB0aGlzIHNwZWNpZmljIGNoYW5nZSBpbXBhY3RzIGl0cyBsb2dpYy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBFc3NlbnRpYWxseSwgdGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUgKGBlc3pgKSBiYXNlZCBvbiBzZXZlcmFsIGZhY3RvcnMgdGllZCB0byB0aGUgYGRhbW9zYCBzdHJ1Y3R1cmUgYW5kIGl0cyBhc3NvY2lhdGVkIGBxdW90YWAuXG5cbkluaXRpYWxseSwgaWYgbmVpdGhlciBgcXVvdGEtXHUwMDNlbXNgIGlzIHNldCAqYW5kKiB0aGUgZ29hbCBsaXN0IGlzIGVtcHR5LCB0aGVuIGBlc3pgIHNpbXBseSBkZWZhdWx0cyB0byBgcXVvdGEtXHUwMDNlc3pgLCB3aGljaCBtYWtlcyBzZW5zZS4gIE5vdywgaWYgdGhlcmUgKmFyZSogZ29hbHMgc2V0LCBpdCB1c2VzIG9uZSBvZiB0aGUgZ29hbCB0dW5lcnMgKHRlbXBvcmFsIG9yIGNvbnNpc3RlbnQpIHRvIGFkanVzdCBgZXN6X2JwYC4gVGhlIGtleSBwb2ludCBpczogaWYgdGhlIGdvYWwgdHVuaW5nIGxvZ2ljIHNldHMgYHF1b3RhLVx1MDAzZWVzel9icGAgdG8gMCAod2hpY2ggSSByZWNhbGwgZnJvbSBteSBwcmV2aW91cyB1bmRlcnN0YW5kaW5nIGlzIHF1aXRlIHBvc3NpYmxlLCBlc3BlY2lhbGx5IHdpdGggYHNjb3JlIFx1MDAzZT0gMTAwMDBgKSwgdGhlbiB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdy5cblxuSGVyZSdzIHdoZXJlIGl0IGdvdCBpbnRlcmVzdGluZy4gIEV2ZW4gaWYgYGVzel9icGAgd2FzIHplcm8gZHVlIHRvIGdvYWwgdHVuaW5nLCBpZiBgcXVvdGEtXHUwMDNlbXNgIHdhcyBzdWJzZXF1ZW50bHkgc2V0LCB0aGUgY29kZSB3b3VsZCBjYWxjdWxhdGUgYGVzemAgYXMgdGhlIG1pbmltdW0gb2Ygc29tZSB0aHJvdWdocHV0IHZhbHVlIG11bHRpcGxpZWQgYnkgYHF1b3RhLVx1MDAzZW1zYCwgKmFuZCogdGhlIChub3cgemVybykgYGVzemAgdmFsdWUuICBPZiBjb3Vyc2UsIHRoZSBtaW5pbXVtIG9mIDAgYW5kIGFueXRoaW5nIGlzIDAuIEhvd2V2ZXIsIHRoZSBuZXh0IGxpbmUgYGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtgIHdvdWxkIHRoZW4gc2V0IGBlc3pgIHRvIGBjdHgtXHUwMDNlbWluX3JlZ2lvbl9zemAuICBTbywgeW91J2QgZW5kIHVwIHdpdGggYSBub24temVybyBgZXN6YCBldmVuIHRob3VnaCBnb2FsIHR1bmluZyBoYWQgZGVsaWJlcmF0ZWx5IHplcm9lZCBvdXQgYGVzel9icGAuXG5cblRoZSBuZXcgY2hlY2sgYGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKSBlc3ogPSAwO2AgYWRkcmVzc2VzIHRoaXMuICBJdCAqZm9yY2VzKiBgZXN6YCB0byB6ZXJvIHdoZW4gYGVzel9icGAgaXMgemVybywgd2hpY2ggaXMgdGhlIGludGVuZGVkIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBnb2FsIHR1bmluZy4gUHJldmlvdXNseSwgdGhlIGBtYXhgIGZ1bmN0aW9uIHdhcyBlZmZlY3RpdmVseSBvdmVycmlkaW5nIHRoZSB6ZXJvIHZhbHVlLlxuXG5JIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgcXVvdGEtXHUwMDNlZ29hbHNgIGlzIGVtcHR5LCBidXQgYHF1b3RhLVx1MDAzZW1zYCAqaXMqIHNldC4gIEkga25vdyBgZGFtb3NfcXVvdGFfaW5pdGAgc2V0cyBgcXVvdGEtXHUwMDNlZXN6X2JwID0gMGAgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBTbywgdGhlIGNvbmRpdGlvbiBgIXF1b3RhLVx1MDAzZW1zIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNnF1b3RhLVx1MDAzZWdvYWxzKWAgaXMgZmFsc2UuICBJbiB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGZ1bmN0aW9uLCBpZiBgIWxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpYCBpcyBmYWxzZSwgaXQgbWVhbnMgd2UgZG9uJ3QgdXNlIGdvYWwgdHVuaW5nLiAgVGh1cywgYGVzemAgd291bGQgcmVtYWluIHVuaW5pdGlhbGl6ZWQuICAoSGFuZyBvbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgdGhlIGNhc2Ugd2hlcmUgYGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpYCBhbmQgYHF1b3RhLVx1MDAzZW1zICE9IDBgISBMZXQgbWUgcmV2aWV3IHRob3NlIGxpbmVzLi4uKVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjoxNy42NjE4NTkwODRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjIwOlxcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVxcdTAwM2Vtcywgb3IgcXVvdGEtXFx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVxcdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcXG4zMjIxOlxcdCAqL1xcbjMyMjI6XFx0c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG4zMjIzOlxcdHtcXG4zMjI0OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIyNTpcXHRcXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuMzIyNjpcXHRcXHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcXG4zMjI3OlxcdFxcbjMyMjg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlbXMgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSkge1xcbjMyMjk6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcbjMyNDA6XFx0XFxuMzI0MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZW1zKSB7XFxuMzI0MjpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpXFxuMzI0MzpcXHRcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbjMyNDQ6XFx0XFx0XFx0XFx0XFx0XFx0MTAwMDAwMCwgcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xcbjMyNDU6XFx0XFx0XFx0ZWxzZVxcbjMyNDY6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxuMzI0NzpcXHRcXHRcXHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVxcdTAwM2VtcywgZXN6KTtcXG4zMjQ4OlxcdFxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxuMzI0OTpcXHRcXHR9XFxuMzI1MDpcXHRcXG4zMjUxOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbjMyNTI6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbjMyNTM6XFx0XFxuMzI1NDpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuMzI1NTpcXHRcXHRcXHRlc3ogPSAwO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbjMyNTg6XFx0fVxcbjMyNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjE3LjY2MjEwNTE1NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzEwNDgwMzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgYSBEQU1PTiBDb3JlIExvZ2ljIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2Ugd2hlbiBgcXVvdGEtXHUwMDNlZ29hbHNgIGlzIGVtcHR5LCBgcXVvdGEtXHUwMDNlZXN6X2JwYCBzdGF5cyBhdCB6ZXJvLiBUaGF0J3MgZmluZSwgYnV0IHRoZW4gdGhlIGNvZGUgZ29lcyBvbiB0byBjaGVjayBgaWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApIGVzeiA9IDA7YC4gVGhpcyBtZWFucyBpZiBzb21lb25lIGRlZmluZXMgYSB0aW1lIHF1b3RhIChgcXVvdGEtXHUwMDNlbXNgKSBidXQgKmRvZXNuJ3QqIHNldCBhbnkgZ29hbHMsIHRoZSBlZmZlY3RpdmUgc2NoZW1lIHNpemUgKGBxdW90YS1cdTAwM2Vlc3pgKSBnZXRzIHNldCB0byB6ZXJvISBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBEQU1PTiBmcmFtZXdvcmsuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgd29ydGggc2VyaW91cyBhdHRlbnRpb24/IEZpcnN0LCBsZXQncyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgdGhpcyBjb25kaXRpb24gaW4gYSB0ZXN0IGVudmlyb25tZW50LlxuXG5ZZXMsIERBTU9OJ3Mgc3lzZnMgaW50ZXJmYWNlIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4vLi4uYCkgKmlzKiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVS4gVGhhdCdzIGdvb2QgbmV3cy4gQW5kIERBTU9OIHJlY2xhaW0sIHRoZSBMUlUgc29ydCwgYW5kIHRoZSBzeXNmcyBzY2hlbWVzIGFyZSBhbGwgcmVhY2hhYmxlIGluIHVzZXIgc3BhY2UgYW5kIGFyZSB0ZXN0ZWQgYWxyZWFkeS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlOlxuXG4qICAgSXQgZGlyZWN0bHkgYWx0ZXJzIGtlcm5lbCBsb2dpYyBpbiBgbW0vZGFtb24vY29yZS5jYCAodGhhdCdzIGNvcmUgREFNT04gY29kZSlcbiogICBJdCdzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuKiAgIEl0IG1vZGlmaWVzIGhvdyB0aGUgYGVzemAgdmFsdWUgKGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSkgaXMgY2FsY3VsYXRlZFxuXG5JIGNvbmNsdWRlIHRoYXQgYFdvcnRoRnV6emluZyA9IHRydWVgLiBXZSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBmdXJ0aGVyLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZnV6emluZyBzdHJhdGVneS4gV2UgbmVlZCB0byBpZGVudGlmeSByZWxldmFudDpcblxuMS4gIGBGb2N1c1N5bWJvbHNgXG4yLiAgYEVuYWJsZUNvbmZpZ3NgXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGluIGBtbS9kYW1vbi9gIGFuZCBsb29rIGZvciBlbnRyeSBwb2ludHMsIGV4cG9ydGVkIHN5bWJvbHMsIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCBhbmQga2V5IGZ1bmN0aW9ucyB0byBmdXp6LiBXZSdsbCBjb25jZW50cmF0ZSBvbiB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2AgYW5kIHRoZSBzeXNmcyBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ0NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjIxLjk3MjU4ODc0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4NTY5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb3NfLipxdW90YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgxMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jPTY4Mz12b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYzo2OTA6XFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxubW0vZGFtb24vY29yZS5jLTY5MS1cXHRcXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZSlcXG5tbS9kYW1vbi9jb3JlLmMtNjkyLXtcXG5tbS9kYW1vbi9jb3JlLmM6NjkzOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYy02OTQtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG5tbS9kYW1vbi9jb3JlLmM6NzIzOlxcdGRhbW9zX2RlbF9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYzo3MjQ6XFx0ZGFtb3NfZnJlZV9xdW90YV9nb2FsKGcpO1xcbm1tL2RhbW9uL2NvcmUuYy03MjUtfVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz03NDY9c3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcHBseV9pbnRlcnZhbF91cyxcXG5tbS9kYW1vbi9jb3JlLmM6NzQ5OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxubW0vZGFtb24vY29yZS5jLTc1MC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyAqd21hcmtzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc3NC1cXG5tbS9kYW1vbi9jb3JlLmM6Nzc1OlxcdHNjaGVtZS1cXHUwMDNlcXVvdGEgPSAqKGRhbW9zX3F1b3RhX2luaXQocXVvdGEpKTtcXG5tbS9kYW1vbi9jb3JlLmMtNzc2LVxcdC8qIHF1b3RhLmdvYWxzIHNob3VsZCBiZSBzZXBhcmF0ZWx5IHNldCBieSBjYWxsZXIgKi9cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz04MTU9dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgxNi17XFxubW0vZGFtb24vY29yZS5jOjgxNzpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZywgKmdfbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtODE4LVxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmYsICpuZXh0O1xcbm1tL2RhbW9uL2NvcmUuYy04MTktXFxubW0vZGFtb24vY29yZS5jOjgyMDpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZywgZ19uZXh0LCBcXHUwMDI2cy1cXHUwMDNlcXVvdGEpXFxubW0vZGFtb24vY29yZS5jOjgyMTpcXHRcXHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZyk7XFxubW0vZGFtb24vY29yZS5jLTgyMi1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xMTY2PXZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6MTE3OTpcXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTgwLXtcXG5tbS9kYW1vbi9jb3JlLmM6MTE4MTpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtMTE4Mi1cXHRpbnQgaSA9IDA7XFxubW0vZGFtb24vY29yZS5jLTExODMtXFxubW0vZGFtb24vY29yZS5jOjExODQ6XFx0ZGFtb3NfZm9yX2VhY2hfcXVvdGFfZ29hbChnb2FsLCBxKSB7XFxubW0vZGFtb24vY29yZS5jLTExODUtXFx0XFx0aWYgKGkrKyA9PSBuKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jOjExOTI6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTIxNTpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmM6MTIxNjpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjIxLVxcdFxcdGRzdC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IHNyYy1cXHUwMDNlY3VycmVudF92YWx1ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTIyMjpcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbF91bmlvbihkc3QsIHNyYyk7XFxubW0vZGFtb24vY29yZS5jLTEyMjMtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyMjUtLyoqXFxubW0vZGFtb24vY29yZS5jOjEyMjY6ICogZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKCkgLSBDb21taXQgREFNT1MgcXVvdGEgZ29hbHMgdG8gYW5vdGhlciBxdW90YS5cXG5tbS9kYW1vbi9jb3JlLmMtMTIyNy0gKiBAZHN0OlxcdFRoZSBjb21taXQgZGVzdGluYXRpb24gREFNT1MgcXVvdGEuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxubW0vZGFtb24vY29yZS5jOjEyMzk6XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdF9nb2FsLCAqbmV4dCwgKnNyY19nb2FsLCAqbmV3X2dvYWw7XFxubW0vZGFtb24vY29yZS5jLTEyNDAtXFx0aW50IGkgPSAwLCBqID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMTI0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI0MjpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoZHN0X2dvYWwsIG5leHQsIGRzdCkge1xcbm1tL2RhbW9uL2NvcmUuYzoxMjQzOlxcdFxcdHNyY19nb2FsID0gZGFtb3NfbnRoX3F1b3RhX2dvYWwoaSsrLCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ0LVxcdFxcdGlmIChzcmNfZ29hbClcXG5tbS9kYW1vbi9jb3JlLmM6MTI0NTpcXHRcXHRcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChkc3RfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ2LVxcdFxcdGVsc2VcXG5tbS9kYW1vbi9jb3JlLmM6MTI0NzpcXHRcXHRcXHRkYW1vc19kZXN0cm95X3F1b3RhX2dvYWwoZHN0X2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjQ4LVxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MTI0OTpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsX3NhZmUoc3JjX2dvYWwsIG5leHQsIHNyYykge1xcbm1tL2RhbW9uL2NvcmUuYy0xMjUwLVxcdFxcdGlmIChqKysgXFx1MDAzYyBpKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjUxLVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjUyOlxcdFxcdG5ld19nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXFxubW0vZGFtb24vY29yZS5jLTEyNTMtXFx0XFx0XFx0XFx0c3JjX2dvYWwtXFx1MDAzZW1ldHJpYywgc3JjX2dvYWwtXFx1MDAzZXRhcmdldF92YWx1ZSk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI1NS1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9jb3JlLmM6MTI1NjpcXHRcXHRkYW1vc19jb21taXRfcXVvdGFfZ29hbChuZXdfZ29hbCwgc3JjX2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYzoxMjU3OlxcdFxcdGRhbW9zX2FkZF9xdW90YV9nb2FsKGRzdCwgbmV3X2dvYWwpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjU4LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTI2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2OC1cXHRkc3QtXFx1MDAzZXN6ID0gc3JjLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmM6MTI2OTpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGFfZ29hbHMoZHN0LCBzcmMpO1xcbm1tL2RhbW9uL2NvcmUuYy0xMjcwLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTUxOT1zdGF0aWMgaW50IGRhbW9zX2NvbW1pdChzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUyNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUyNzpcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXFx1MDAyNmRzdC1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmMtXFx1MDAzZXF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMTUyOC1cXHRpZiAoZXJyKVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTE4NjI9c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2NS1cXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcXG5tbS9kYW1vbi9jb3JlLmM6MTg2NjpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZ29hbDtcXG5tbS9kYW1vbi9jb3JlLmMtMTg2Ny1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODc0LVxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzY2hlbWUsIHNyYykge1xcbm1tL2RhbW9uL2NvcmUuYzoxODc1OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMTg3Ni1cXG5tbS9kYW1vbi9jb3JlLmM6MTg3NzpcXHRcXHRcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XFxubW0vZGFtb24vY29yZS5jLTE4NzgtXFx0XFx0XFx0XFx0aWYgKGdvYWwtXFx1MDAzZW1ldHJpYyA9PVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzODYtLypcXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0Llxcbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcXHRUaGUgcXVvdGEgdG8gY2hlY2suXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjM5MjpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19zZXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM5My17XFxubW0vZGFtb24vY29yZS5jLTIzOTQtXFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogfHwgcXVvdGEtXFx1MDAzZXN6IHx8IHF1b3RhLVxcdTAwM2VtcyB8fFxcbm1tL2RhbW9uL2NvcmUuYzoyMzk1OlxcdFxcdCFkYW1vc19xdW90YV9nb2Fsc19lbXB0eShxdW90YSk7XFxubW0vZGFtb24vY29yZS5jLTIzOTYtfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzOTg9c3RhdGljIGJvb2wgZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MjQwMzpcXHRpZiAoIXJldCB8fCAhZGFtb3NfcXVvdGFfaXNfc2V0KFxcdTAwMjZzLVxcdTAwM2VxdW90YSkgfHwgIWMtXFx1MDAzZW9wcy5nZXRfc2NoZW1lX3Njb3JlKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjQzND1zdGF0aWMgYm9vbCBkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjQzNy17XFxubW0vZGFtb24vY29yZS5jOjI0Mzg6XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG5tbS9kYW1vbi9jb3JlLmMtMjQzOS1cXHR1bnNpZ25lZCBsb25nIHN6X3RvX3NraXA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjYxOT1zdGF0aWMgdm9pZCBkYW1vc193YWxrX2NhbmNlbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjYzNS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYzNjpzdGF0aWMgdm9pZCBkYW1vc19jaGFyZ2VfcXVvdGEoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG5tbS9kYW1vbi9jb3JlLmMtMjYzNy1cXHRcXHR1bnNpZ25lZCBsb25nIHN6X3JlZ2lvbiwgdW5zaWduZWQgbG9uZyBzel9hcHBsaWVkKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NTItXFxubW0vZGFtb24vY29yZS5jOjI2NTM6c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbm1tL2RhbW9uL2NvcmUuYy0yNjU0LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XFxubW0vZGFtb24vY29yZS5jOjI2NTY6XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjY3PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2Njkte1xcbm1tL2RhbW9uL2NvcmUuYzoyNjcwOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTI2NzEtXFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNzA0LVxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxubW0vZGFtb24vY29yZS5jOjI3MDU6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG5tbS9kYW1vbi9jb3JlLmMtMjcwNi1cXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3MjQtXFx0XFx0XFx0dGltZXNwZWM2NF90b19ucyhcXHUwMDI2YmVnaW4pO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI1OlxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbm1tL2RhbW9uL2NvcmUuYzoyNzI2OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbm1tL2RhbW9uL2NvcmUuYy0yNzI3LVxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3Mzg9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NDQtXFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG5tbS9kYW1vbi9jb3JlLmM6Mjc0NTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYy0yNzQ2LVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NTMtXFx0XFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXFxubW0vZGFtb24vY29yZS5jOjI3NTQ6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0yNzU1LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI5MDA9c3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxcbm1tL2RhbW9uL2NvcmUuYzoyOTAxOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0yOTAyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yOTI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxubW0vZGFtb24vY29yZS5jOjI5Mjk6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTI5MzAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMwODI9c3RhdGljIF9fa2VybmVsX3Vsb25nX3QgZGFtb3NfZ2V0X25vZGVfbWVtX2JwKFxcbm1tL2RhbW9uL2NvcmUuYzozMDgzOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0zMDg0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMDg4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX21lbWNnX3VzZWRfYnAoXFxubW0vZGFtb24vY29yZS5jOjMwODk6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmdvYWwpXFxubW0vZGFtb24vY29yZS5jLTMwOTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxMTk9c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19odWdlcGFnZV9tZW1fYnAodm9pZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTM0LVxcbm1tL2RhbW9uL2NvcmUuYzozMTM1OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG5tbS9kYW1vbi9jb3JlLmM6MzEzNjpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsKVxcbm1tL2RhbW9uL2NvcmUuYy0zMTM3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMTc5LS8qIFJldHVybiB0aGUgaGlnaGVzdCBzY29yZSBzaW5jZSBpdCBtYWtlcyBzY2hlbWVzIGxlYXN0IGFnZ3Jlc3NpdmUgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzE4MDpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMxODEte1xcbm1tL2RhbW9uL2NvcmUuYzozMTgyOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2NvcmUuYzozMTgzOlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMxODQtXFx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X3Njb3JlID0gMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MzE4NjpcXHRkYW1vc19mb3JfZWFjaF9xdW90YV9nb2FsKGdvYWwsIHF1b3RhKSB7XFxubW0vZGFtb24vY29yZS5jOjMxODc6XFx0XFx0ZGFtb3Nfc2V0X3F1b3RhX2dvYWxfY3VycmVudF92YWx1ZShjLCBzLCBnb2FsKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzE4OC1cXHRcXHRoaWdoZXN0X3Njb3JlID0gbWF4KGhpZ2hlc3Rfc2NvcmUsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzE5Nj1zdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3Qoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0zMTk3LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzE5ODpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYzozMTk5OlxcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMC1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjA1PXN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjA3LXtcXG5tbS9kYW1vbi9jb3JlLmM6MzIwODpcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbm1tL2RhbW9uL2NvcmUuYzozMjA5OlxcdHVuc2lnbmVkIGxvbmcgc2NvcmUgPSBkYW1vc19xdW90YV9zY29yZShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzIxMC1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjIxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMjIyOnN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyMjMte1xcbm1tL2RhbW9uL2NvcmUuYzozMjI0OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMyMjUtXFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMyNjA9c3RhdGljIHZvaWQgZGFtb3NfdHJhY2VfZXN6KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcyxcXG5tbS9kYW1vbi9jb3JlLmM6MzI2MTpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjYyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjcwLVxcdH1cXG5tbS9kYW1vbi9jb3JlLmM6MzI3MTpcXHR0cmFjZV9kYW1vc19lc3ooY2lkeCwgc2lkeCwgcXVvdGEtXFx1MDAzZWVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNzItfVxcbm1tL2RhbW9uL2NvcmUuYy0zMjczLVxcbm1tL2RhbW9uL2NvcmUuYzozMjc0OnN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTMyNzUte1xcbm1tL2RhbW9uL2NvcmUuYzozMjc2OlxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxubW0vZGFtb24vY29yZS5jLTMyNzctXFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjg3LVxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX2Zyb20gPSBqaWZmaWVzO1xcbm1tL2RhbW9uL2NvcmUuYzozMjg4OlxcdFxcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyODktXFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMyOTA6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI5MS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI5Ni1cXHRcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKHF1b3RhLVxcdTAwM2VyZXNldF9pbnRlcnZhbCkpKSB7XFxubW0vZGFtb24vY29yZS5jOjMyOTc6XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbm1tL2RhbW9uL2NvcmUuYy0zMjk4LVxcdFxcdFxcdHMtXFx1MDAzZXN0YXQucXRfZXhjZWVkcysrO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTMzMDMtXFx0XFx0XFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVxcdTAwM2Vlc3o7XFxubW0vZGFtb24vY29yZS5jOjMzMDQ6XFx0XFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNTpcXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcXHUwMDI2XFx1MDAyNiBxdW90YS1cXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXFxubW0vZGFtb24vY29yZS5jOjMzMDY6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwNy1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzM1NT1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMzcwLVxcbm1tL2RhbW9uL2NvcmUuYzozMzcxOlxcdFxcdGRhbW9zX2FkanVzdF9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzM3Mi1cXHR9XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTEwND1tb2R1bGVfcGFyYW0oY29sZF9taW5fYWdlLCB1bG9uZywgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xMDUtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoxMDY6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSBkYW1vbl9scnVfc29ydF9xdW90YSA9IHtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTEwNy1cXHQvKiBVc2UgdXAgdG8gMTAgbXMgcGVyIDEgc2VjLCBieSBkZWZhdWx0ICovXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTE4OD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfc2NoZW1lKFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0xOTAte1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MTkxOlxcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YSA9IGRhbW9uX2xydV9zb3J0X3F1b3RhO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMTkyLVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzEte1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjMyOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMzLVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzg6XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVxcdGlmICghZ29hbClcXG5tbS9kYW1vbi9scnVfc29ydC5jLTI0MC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjI0MTpcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChcXHUwMDI2aG90X3NjaGVtZS1cXHUwMDNlcXVvdGEsIGdvYWwpO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQyLVxcdC8qIGFpbSAwLjIgJSBnb2FsIGNvbmZsaWN0LCB0byBrZWVwIGxpdHRsZSBwaW5nIHBvbmcgKi9cXG5tbS9kYW1vbi9scnVfc29ydC5jOjI0MzpcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ0LVxcdFxcdFxcdDEwMDAwIC0gYWN0aXZlX21lbV9icCArIDIpO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDYtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDc6XFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXFx1MDAyNmNvbGRfc2NoZW1lLVxcdTAwM2VxdW90YSwgZ29hbCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDgtXFx0cmV0dXJuIDA7XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9NDg9bW9kdWxlX3BhcmFtKG1pbl9hZ2UsIHVsb25nLCAwNjAwKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtNDktXFxubW0vZGFtb24vcmVjbGFpbS5jOjUwOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgZGFtb25fcmVjbGFpbV9xdW90YSA9IHtcXG5tbS9kYW1vbi9yZWNsYWltLmMtNTEtXFx0LyogdXNlIHVwIHRvIDEwIG1zIHRpbWUsIHJlY2xhaW0gdXAgdG8gMTI4IE1pQiBwZXIgMSBzZWMgYnkgZGVmYXVsdCAqL1xcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jPTE5ND1zdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTE5OS1cXHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZTtcXG5tbS9kYW1vbi9yZWNsYWltLmM6MjAwOlxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnb2FsO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMDEtXFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZmlsdGVyO1xcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTIzNS1cXHRpZiAocXVvdGFfbWVtX3ByZXNzdXJlX3VzKSB7XFxubW0vZGFtb24vcmVjbGFpbS5jOjIzNjpcXHRcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfU09NRV9NRU1fUFNJX1VTLFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMzctXFx0XFx0XFx0XFx0cXVvdGFfbWVtX3ByZXNzdXJlX3VzKTtcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yMzktXFx0XFx0XFx0Z290byBvdXQ7XFxubW0vZGFtb24vcmVjbGFpbS5jOjI0MDpcXHRcXHRkYW1vc19hZGRfcXVvdGFfZ29hbChcXHUwMDI2c2NoZW1lLVxcdTAwM2VxdW90YSwgZ29hbCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTI0MS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQzLVxcdGlmIChxdW90YV9hdXRvdHVuZV9mZWVkYmFjaykge1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDQ6XFx0XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX1VTRVJfSU5QVVQsIDEwMDAwKTtcXG5tbS9kYW1vbi9yZWNsYWltLmMtMjQ1LVxcdFxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDctXFx0XFx0Z29hbC1cXHUwMDNlY3VycmVudF92YWx1ZSA9IHF1b3RhX2F1dG90dW5lX2ZlZWRiYWNrO1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNDg6XFx0XFx0ZGFtb3NfYWRkX3F1b3RhX2dvYWwoXFx1MDAyNnNjaGVtZS1cXHUwMDNlcXVvdGEsIGdvYWwpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yNDktXFx0fVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTE9aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjU0OmludCBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTc6dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjA1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3dhdGVybWFya3Nfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxNC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNTpzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMTYtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIxNzpcXHRlbnVtIGRhbW9zX3F1b3RhX2dvYWxfbWV0cmljIG1ldHJpYztcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTIxOC1cXHR1bnNpZ25lZCBsb25nIHRhcmdldF92YWx1ZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjIzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjI0OnN0YXRpYyBzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTIyNjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjI3LX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjI5PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyMzA6XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWM7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyMzEtXFx0Y2hhciAqbmFtZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjc4PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjgwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI4MTpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMjgyOlxcdFxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI4My1cXHRpbnQgaTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjk1PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9tZXRyaWNfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI5Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyOTg6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI5OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzMDAtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTMxND1zdGF0aWMgc3NpemVfdCB0YXJnZXRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzE2LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxNzpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMxODpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMxOS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzIzPXN0YXRpYyBzc2l6ZV90IHRhcmdldF92YWx1ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzI1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMyNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMyOC1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2Z29hbC1cXHUwMDNldGFyZ2V0X3ZhbHVlKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzMzPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzM1LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNjpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqZ29hbCA9IGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3RcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTMzNzpcXHRcXHRcXHRkYW1vc19zeXNmc19xdW90YV9nb2FsLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTMzOC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMzQyPXN0YXRpYyBzc2l6ZV90IGN1cnJlbnRfdmFsdWVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM0NC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDU6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNDY6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNDctXFx0aW50IGVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwgXFx1MDAyNmdvYWwtXFx1MDAzZWN1cnJlbnRfdmFsdWUpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNTM9c3RhdGljIHNzaXplX3QgbmlkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM1NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNTc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM2Mz1zdGF0aWMgc3NpemVfdCBuaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTM2NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjY6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNjc6XFx0XFx0XFx0ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNjgtXFx0aW50IGVyciA9IGtzdHJ0b2ludChidWYsIDAsIFxcdTAwMjZnb2FsLVxcdTAwM2VuaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEzNzQ9c3RhdGljIHNzaXplX3QgcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzNzYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzc3OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzNzg6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzc5LVxcdGludCBsZW47XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTM4OD1zdGF0aWMgc3NpemVfdCBwYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEzOTAte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxMzkxOlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICpnb2FsID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEzOTI6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMzkzLVxcdGNoYXIgKnBhdGggPSBrbWFsbG9jX2FycmF5KHNpemVfYWRkKGNvdW50LCAxKSwgc2l6ZW9mKCpwYXRoKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDEwOnN0YXRpYyB2b2lkIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxMS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MTI6XFx0c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwgKmdvYWwgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxMzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQxOC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQxOTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMC1cXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbWV0cmljLCAwNjAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyMS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQyMjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDIzLVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWVfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjYtXFx0XFx0X19BVFRSX1JXX01PREUoY3VycmVudF92YWx1ZSwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0MjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0Mjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vc19zeXNmc19xdW90YV9nb2FsX25pZF9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQyOS1cXHRcXHRfX0FUVFJfUldfTU9ERShuaWQsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMwLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDMxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9wYXRoX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMyLVxcdFxcdF9fQVRUUl9SV19NT0RFKHBhdGgsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDMzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM0OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vc19zeXNmc19xdW90YV9nb2FsX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzU6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X21ldHJpY19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0MzY6XFx0XFx1MDAyNmRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfdGFyZ2V0X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzNzpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQzODpcXHRcXHUwMDI2ZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbF9uaWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDM5OlxcdFxcdTAwMjZkYW1vc19zeXNmc19xdW90YV9nb2FsX3BhdGhfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQwLVxcdE5VTEwsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDEtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0MjpBVFRSSUJVVEVfR1JPVVBTKGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWwpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDQzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NDU6XFx0LnJlbGVhc2UgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NDYtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ0NzpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vc19zeXNmc19xdW90YV9nb2FsX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ0OC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NTMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NTQ6c3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDU2OlxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FsICoqZ29hbHNfYXJyO1xcdC8qIGNvdW50ZWQgYnkgbnIgKi9cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1Ny1cXHRpbnQgbnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ1OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MDpzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzICpkYW1vc19zeXNmc19xdW90YV9nb2Fsc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDYxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2MjpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ2My19XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE0NjU6c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2NjpcXHRcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHMgKmdvYWxzKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDY3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ2ODpcXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbCAqKmdvYWxzX2FyciA9IGdvYWxzLVxcdTAwM2Vnb2Fsc19hcnI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0NjktXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ3OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTQ4MDpzdGF0aWMgaW50IGRhbW9zX3N5c2ZzX3F1b3RhX2dvYWxzX2FkZF9kaXJzKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNDgxOlxcdFxcdHN0cnVjdCBkYW1vc19zeXNmc19xdW90YV9nb2FscyAqZ29hbHMsIGludCBucl9nb2FscylcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MjIuMDI1NDUxNDYyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMTc1ODUxOTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUXVvdGEgTWFuYWdlbWVudCBDb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYC4gU2luY2UgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgd2lkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgaXQgYW5kIGZpbmQgb3V0IHRoZSBlbnRyeXBvaW50cyBvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGggZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4gRmlyc3QsIEknbGwgZXhhbWluZSB0aGUgY2FsbGVycyBvZiBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAuXG5cblJpZ2h0LCBJIHNlZSB0aGF0IGBkYW1vc19hZGp1c3RfcXVvdGFgIGNhbGxzIGl0LiBUaGF0J3MgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AsIGFsc28gc3RhdGljLiBBbmQgKnRoYXQqIGlzIGNhbGxlZCBieSBga2RhbW9uZF9mbmAsIHdoaWNoIGlzIGEga3RocmVhZC4gVGhhdCdzIG9uZSBwYXRoLiBHb3QgaXQuIEFsc28sIEkgc2VlIGl0J3MgY2FsbGVkIGR1cmluZyB0aGUgREFNT04gY29tbWl0IHByb2Nlc3MsIGFuZCBkdXJpbmcgc3lzZnMgb3BlcmF0aW9ucyAtIHN0YXJ0LCB1cGRhdGUuXG5cbk5leHQsIEknbGwgYnJvYWRlbiBteSBzZWFyY2guIEknbGwgbmVlZCB0byBsb29rIGF0IGZ1bmN0aW9ucyBsaWtlIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vc19jb21taXRfcXVvdGFfZ29hbHNgLCBgZGFtb3NfbmV3X3F1b3RhX2dvYWxgLCBgZGFtb3NfYWRkX3F1b3RhX2dvYWxgLCBgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHNgLCBgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNgLCBgZGFtb25fc3lzZnNfYXBwbHlfaW5wdXRzYC4gVGhvc2UgY291bGQgYmUgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSB0cmlnZ2VyIGEgY2FsbCB0byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGFsbCB0aGUgcGF0aHMuXG5cbkZpbmFsbHksIHRvIGJlIHRob3JvdWdoLCBJJ2xsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJ2xsIGZvY3VzIG9uIGBtbS9kYW1vbi9jb3JlLmNgIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIE15IGFpbSBpcyB0byBsb29rIGZvciBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGFjdCBhcyBpbnRlcmZhY2VzIG9yIGVudHJ5IHBvaW50cyBpbnRvIHRoaXMgcXVvdGEgbWFuYWdlbWVudCBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNTgsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MzQuMjAxMzA2NTQ4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MjA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfIF0qXFxcXCo/W2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jLTI1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNjpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmMtMjktXFxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUtLyogU2hvdWxkIGJlIGNhbGxlZCB1bmRlciBkYW1vbl9vcHNfbG9jayB3aXRoIGlkIHNtYWxsZXIgdGhhbiBOUl9EQU1PTl9PUFMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy01Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXFxubW0vZGFtb24vY29yZS5jOjcyOmludCBkYW1vbl9yZWdpc3Rlcl9vcHMoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgKm9wcylcXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTk4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYtXFxubW0vZGFtb24vY29yZS5jOjEyNzp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXFxubW0vZGFtb24vY29yZS5jLTEzMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQyOnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDctXFxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxubW0vZGFtb24vY29yZS5jLTE0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxcbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMTYxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTEtXFxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA3LVxcbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTktXFxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzMy1cXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzgtXFxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0My1cXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI1NS1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3My1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxubW0vZGFtb24vY29yZS5jLTI3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMDY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fbXZzdW0odW5zaWduZWQgbG9uZyBjdXJyZW50X25yLFxcbm1tL2RhbW9uL2NvcmUuYy0zMDctXFx0XFx0dW5zaWduZWQgbG9uZyBsYXN0X25yLCB1bnNpZ25lZCBsb25nIGxlZnRfd2luZG93X2JwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzI2OnVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0OS1cXG5tbS9kYW1vbi9jb3JlLmM6MzUwOnVuc2lnbmVkIGNoYXIgZGFtb25fcHJvYmVfaGl0c19tdnN1bShpbnQgcHJvYmVfaWR4LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYzozNzU6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM3Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzc5LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODktICovXFxubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNC1cXG5tbS9kYW1vbi9jb3JlLmM6NDE1OnN0YXRpYyB2b2lkIGRhbW9uX2FkZF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MjMtICovXFxubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00MjUtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MzItI2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTQzNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy00Mzkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ0Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDQzOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NTAtXFxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ1NS1cXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ1Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxcbm1tL2RhbW9uL2NvcmUuYy00NzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00OTktXFx0XFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbm1tL2RhbW9uL2NvcmUuYy01MDgtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzktICovXFxubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MzAtXFxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtNjMyLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxubW0vZGFtb24vY29yZS5jLTY1NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxcbm1tL2RhbW9uL2NvcmUuYzo2NjU6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NzItXFxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY3NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxcbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjc5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02ODItXFxubW0vZGFtb24vY29yZS5jOjY4Mzp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY4NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy02OTAtXFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDUtXFxubW0vZGFtb24vY29yZS5jOjc0NjpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbm1tL2RhbW9uL2NvcmUuYy03NDctXFx0XFx0XFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc4Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03OTgtXFxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MDU6c3RhdGljIHZvaWQgZGFtb25fZGVsX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODQwOnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTYtXFxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg3Mi1cXG5tbS9kYW1vbi9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxcbm1tL2RhbW9uL2NvcmUuYzo4OTc6dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MDEtXFxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTkwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxcbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NjUtXFxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODItXFxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxubW0vZGFtb24vY29yZS5jLTk4NC1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTg5LS8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXFxubW0vZGFtb24vY29yZS5jLTk5MS1cXHRcXHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTk2LS8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXFxubW0vZGFtb24vY29yZS5jLTk5OC1cXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxubW0vZGFtb24vY29yZS5jLTEwMDQtXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwMDktXFxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA1OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMTctICovXFxubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTExMTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNjUtICovXFxubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExNjctXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExOTItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyODAtXFxubW0vZGFtb24vY29yZS5jOjEyODE6c3RhdGljIHN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX250aF9jb3JlX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkyLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMzA2LVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzMjUtXFxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTMyNy1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEzMzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNjItXFxubW0vZGFtb24vY29yZS5jOjEzNjM6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTE0MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MTYtXFxubW0vZGFtb24vY29yZS5jOjE0MTc6c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfcHJvYmVfcGFyYW1zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ2MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ5Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE1MDgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MTgtXFxubW0vZGFtb24vY29yZS5jOjE1MTk6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTQ1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE1NDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1ODEtXFxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTU4My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTYwMTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2MDItXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2MzUtXFxubW0vZGFtb24vY29yZS5jOjE2MzY6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNjYzOnN0YXRpYyB2b2lkIGRhbW9uX3JldmVydF90YXJnZXRfY29tbWl0cyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2NjQtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZmFpbGVkLCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTY3OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDMtXFxubW0vZGFtb24vY29yZS5jOjE3NDQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKmRzdCwgc3RydWN0IGRhbW9uX3ByZXAgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc0OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NzMtXFxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE3NzUtXFx0XFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3ODgtXFxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcXG5tbS9kYW1vbi9jb3JlLmMtMTc5MC1cXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxcbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTgyNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2MjpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTkxOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTk1MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcmVnaW9uX3N6X2xpbWl0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgdW5zaWduZWQgbG9uZyBzel9yKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDAyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX2FwcGx5X21pbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAyMS1cXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XFxubW0vZGFtb24vY29yZS5jLTIwMjMtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMDMzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTEzLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxMTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXFxubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjEzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE0OTpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjozNC4zNjMxMzMxMzZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA5MjA3NzQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEQU1PTiBRdW90YSBNYW5hZ2VtZW50IC0gQSBRdWljayBSZXZpZXcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBlbGVtZW50cyBmb3IgbWFuYWdpbmcgREFNT04gcXVvdGFzLiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX25ld19zY2hlbWVgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCB0aGVuIHRoZSBxdW90YS1zcGVjaWZpYyBvbmVzIGxpa2UgYGRhbW9zX25ld19xdW90YV9nb2FsYCwgYGRhbW9zX2FkZF9xdW90YV9nb2FsYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIE5lZWQgdG8ga2VlcCB0aG9zZSBzdHJhaWdodC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0IGBEQU1PTmAgaXRzZWxmIGlzIGVuYWJsZWQsIGFuZCBvZiBjb3Vyc2UsIGBEQU1PTl9TWVNGU2Agc2luY2UgdGhhdCdzIHdoYXQgSSBhbSB3b3JraW5nIHdpdGguIEkgbmVlZCB0aGUgdmlydHVhbCBhbmQgcGh5c2ljYWwgYWRkcmVzcyBtb25pdG9yaW5nIHNldHRpbmdzLCBzbyBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIG11c3QgYmUgc2V0LiBUaGUgc2FtZSBhcHBsaWVzIHRvIGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBiZWNhdXNlIHRoZXNlIGFyZSBuZWNlc3NhcnkgZm9yIHRoZSBqb2IgSSBhbSBkb2luZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGdsYW5jZSBvdmVyIGBtbS9kYW1vbi9LY29uZmlnYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgZXZlbiBpZiB0aGV5IGFyZW4ndCBkaXJlY3RseSBpbXBsaWNhdGVkIGluIHdoYXQgSSdtIGRvaW5nLiBJdCdzIGFsd2F5cyBnb29kIHRvIGhhdmUgdGhlIGJpZyBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQ5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0MjozOC40NTUyMTM3MjZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MCxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgS3VuaXQgdGVzdCBzdWl0ZS5cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsLCBwbGVhc2UgcmVmZXJcXG4gIDg0OlxcdFxcdCAgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24uXFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG4gIDkzOlxcdFxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbiAgOTQ6XFx0XFx0ICB0aG9zZS5cXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxcbiAgOTc6XFx0XFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXFxuICA5ODpcXHRcXHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWcgREFNT05fTFJVX1NPUlRcXG4gMTAxOlxcdFxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuIDEwMjpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xcbiAxMDU6XFx0XFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbiAxMDY6XFx0XFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxcbiAxMDc6XFx0XFxuIDEwODpcXHRjb25maWcgREFNT05fU1RBVFxcbiAxMDk6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVxcXCJcXG4gMTEwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gMTExOlxcdFxcdGhlbHBcXG4gMTEyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIGFjY2VzcyBtb25pdG9yaW5nIHN0YXRpc3RpY3Mgc3Vic3lzdGVtLlxcbiAxMTM6XFx0XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbiAxMTQ6XFx0XFx0ICBtZXRyaWNzLlxcbiAxMTU6XFx0XFxuIDExNjpcXHRjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG4gMTE3OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcXFwiXFxuIDExODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1NUQVRcXG4gMTE5OlxcdFxcdGRlZmF1bHQgREFNT05fU1RBVFxcbiAxMjA6XFx0XFx0aGVscFxcbiAxMjE6XFx0XFx0ICBXaGV0aGVyIHRvIGVuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHQuICBVc2VycyBjYW4gZGlzYWJsZSBpdCBpblxcbiAxMjI6XFx0XFx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICdlbmFibGVkJyBwYXJhbWV0ZXIuXFxuIDEyMzpcXHRcXG4gMTI0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6MzguNDU1Mjk5MzY2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQwNTk2OTYzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqREFNT04gS2VybmVsIENoYW5nZSBSZXZpZXcqKlxuXG5Pa2F5LCB0aW1lIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgb24gdGhpcyBEQU1PTiBwYXRjaC4gTGV0J3MgcnVuIHRocm91Z2ggaXQgc3lzdGVtYXRpY2FsbHkuIFRoZSBjaGFuZ2UgaXMgaW4gYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGBlc3ogPSAwYCBpZiBgIXF1b3RhLVx1MDAzZWVzel9icGAuIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwsIGNvcmUtbGV2ZWwga2VybmVsIGNoYW5nZSByZWxhdGVkIHRvIGhvdyBEQU1PTiBjYWxjdWxhdGVzIGVmZmVjdGl2ZSBxdW90YXMuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgcXVvdGEgY2FsY3VsYXRpb24gY2hhbmdlcyBjYW4gaGF2ZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIHNvIEkgd2FudCB0byBiZSB0aG9yb3VnaC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBJdCByZWxpZXMgb24gdGhlIHVzdWFsIHN1c3BlY3RzOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fUEFERFJgLCBhbmQgYERBTU9OX1ZBRERSYC4gSSdsbCB3YW50IHRvIGtlZXAgdGhvc2UgaW4gbWluZCBhcyBJIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdC5cblxuTmV4dCwgdGhlIGZvY3VzIHN5bWJvbHMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9uZXdfc2NoZW1lYCwgYGRhbW9zX2NvbW1pdF9xdW90YV9nb2Fsc2AsIGBkYW1vc19uZXdfcXVvdGFfZ29hbGAsIGBkYW1vc19hZGRfcXVvdGFfZ29hbGAsIGBkYW1vc19zeXNmc19zZXRfcXVvdGFfc2NvcmVzYCwgYW5kIGBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhc2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIGludGVyZmFjZXMgYW5kIGRhdGEgcGF0aHMgaW52b2x2ZWQgaW4gdGhpcyBxdW90YSBtYW5hZ2VtZW50IGFuZCB1cGRhdGUgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBmbG93IG9mIGRhdGEgdGhyb3VnaCB0aG9zZS5cblxuRmluYWxseSwgdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIEdvb2QuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGlzIGNoYW5nZSB3YXJyYW50cyByb2J1c3QgZnV6emluZy4gSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZ1enppbmcgcGxhbnMuXG5cbkFscmlnaHQsIHRoYXQncyBldmVyeXRoaW5nLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbG9nIHRoZSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3NzksIk91dHB1dFRva2VucyI6MjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjM6NDI6NDIuNTE0OTk3NzM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0MzQ1NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX2NvbW1pdF9jdHhcIixcbiAgICBcImRhbW9uX3NldF9zY2hlbWVzXCIsXG4gICAgXCJkYW1vbl9uZXdfc2NoZW1lXCIsXG4gICAgXCJkYW1vc19jb21taXRfcXVvdGFfZ29hbHNcIixcbiAgICBcImRhbW9zX25ld19xdW90YV9nb2FsXCIsXG4gICAgXCJkYW1vc19hZGRfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3Jlc1wiLFxuICAgIFwiZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgdGhlIGVmZmVjdGl2ZSBxdW90YSBjYWxjdWxhdGlvbiBsb2dpYyBpbiBEQU1PTiAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmspIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgZWZmZWN0aXZlIHNjaGVtZSBzaXplIHF1b3RhIHRvIDAgaWYgZXN6X2JwIGlzIDAuIFRoaXMgY2hhbmdlcyBEQU1PUyBzY2hlbWUgcXVvdGEgZW5mb3JjZW1lbnQgYW5kIGF1dG90dW5pbmcgYmVoYXZpb3IsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nIHZpYSB0aGUgREFNT04gc3lzZnMgLyBrZXJuZWwgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9WQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zZXRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fbmV3X3NjaGVtZVwiLFxuICAgIFwiZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzXCIsXG4gICAgXCJkYW1vc19uZXdfcXVvdGFfZ29hbFwiLFxuICAgIFwiZGFtb3NfYWRkX3F1b3RhX2dvYWxcIixcbiAgICBcImRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXNcIixcbiAgICBcImRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIHRoZSBlZmZlY3RpdmUgcXVvdGEgY2FsY3VsYXRpb24gbG9naWMgaW4gREFNT04gKERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrKSBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGVmZmVjdGl2ZSBzY2hlbWUgc2l6ZSBxdW90YSB0byAwIGlmIGVzel9icCBpcyAwLiBUaGlzIGNoYW5nZXMgREFNT1Mgc2NoZW1lIHF1b3RhIGVuZm9yY2VtZW50IGFuZCBhdXRvdHVuaW5nIGJlaGF2aW9yLCBtYWtpbmcgaXQgZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZyB2aWEgdGhlIERBTU9OIHN5c2ZzIC8ga2VybmVsIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQyLjU5NDQzODIzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MTAzNDA3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo0Mi41OTQ5NjgwNDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjkwOTgwNjI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBlZmZlY3RpdmUgcXVvdGEgKGBlc3pgKSBpbiBEQU1PUyAoYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgIGluIGBtbS9kYW1vbi9jb3JlLmNgKSBieSByZXNldHRpbmcgYGVzemAgdG8gMCBpZiBgcXVvdGEtXFx1MDAzZWVzel9icGAgaXMgMC4gVGhpcyBpcyBwdXJlbHkgYW4gYXJpdGhtZXRpYyAvIGxvZ2ljIGFkanVzdG1lbnQgZm9yIERBTU9OIHF1b3RhIG1hbmFnZW1lbnQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgdXNlci1zcGFjZSBjb3B5IG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgzODE4ZmQzNGMwNTNiMTkxNGI1MmNmY2I5MTI2ZmQ4NzM2ZDFkMDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDIzOjQxOjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCBkZjIyNjIxNzY1OTExLi43M2RjOWE3MGZiMTJiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0zMjUxLDYgKzMyNTEsOSBAQCBzdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxuIFx0aWYgKHF1b3RhLVx1MDAzZXN6IFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2VzeiBcdTAwM2MgZXN6KVxuIFx0XHRlc3ogPSBxdW90YS1cdTAwM2VzejtcbiBcbitcdGlmICghcXVvdGEtXHUwMDNlZXN6X2JwKVxuK1x0XHRlc3ogPSAwO1xuK1xuIFx0cXVvdGEtXHUwMDNlZXN6ID0gZXN6O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQyLjU5NDk2ODg0MloiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTYxMTEzNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZyB3aXRoIHRoaXMgREFNT04gcGF0Y2guIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgcmVhbGx5LiBMb29raW5nIGF0IHRoZSBgZGlmZmAsIGl0J3MgY2xlYXIgdGhhdCB0aGUgbWFpbiBmb2N1cyBpcyBhcm91bmQgdGhlIGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBmdW5jdGlvbiBpbiBgbW0vZGFtb24vY29yZS5jYC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgc2ltcGxlIGNoZWNrOiBgaWYgKCFxdW90YS1cdTAwM2Vlc3pfYnApIGVzeiA9IDA7YCAgUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIHZhcmlhYmxlIGBlc3pgIGlzIHNvbWUga2luZCBvZiBlZmZlY3RpdmUgc2l6ZSBjYWxjdWxhdGlvbi4gVGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBjb25zaWRlcnMgYHF1b3RhLVx1MDAzZXN6YCwgZW5zdXJpbmcgdGhlIGVmZmVjdGl2ZSBzaXplIGRvZXNuJ3QgZXhjZWVkIHRoZSBxdW90YSBzaXplLiBUaGlzIG5ldyBjb25kaXRpb24gaXMgcHJvYmFibHkgYSBzYWZlZ3VhcmQsIG1lYW5pbmcgdGhhdCBpZiB0aGUgYmFja2luZyBwb2ludGVyIGZvciBlZmZlY3RpdmUgc2l6ZSBpcyBudWxsLCBpdCBzaG91bGQgYmUgZGVmYXVsdGVkIHRvIHplcm8uXG5cbkkgbmVlZCB0byBkaWcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgYW5kIGhvdyBgZXN6X2JwYCwgYGVzemAsIGFuZCBgcXVvdGFgIGFyZSB1c2VkIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYW4gZWZmZWN0aXZlIHF1b3RhIHNpemUsIGxpa2VseSB0byBjb250cm9sIG1lbW9yeSB1c2FnZSBvciBzb21lIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBEQU1PTiBjb250ZXh0LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBiYWNraW5nIHBvaW50ZXIgaXMgdXNlZCB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIGVmZmVjdGl2ZSBzaXplLiBXaXRob3V0IGl0LCB0aGUgZWZmZWN0aXZlIHNpemUgc2hvdWxkIGJlIHplcm9lZC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgcXVvdGEtXHUwMDNlZXN6X2JwYCByZXByZXNlbnRzIHRvIGRldGVybWluZSB0aGUgY29tcGxldGUgaW1wYWN0LCBidXQgZnJvbSB0aGUgaW1tZWRpYXRlIGNvbnRleHQgdGhpcyBmZWVscyBsaWtlIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo0OC4xNTYwODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjMwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcbjMyNDA6XFx0XFxuMzI0MTpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZW1zKSB7XFxuMzI0MjpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpXFxuMzI0MzpcXHRcXHRcXHRcXHR0aHJvdWdocHV0ID0gbXVsdF9mcmFjKHF1b3RhLVxcdTAwM2V0b3RhbF9jaGFyZ2VkX3N6LFxcbjMyNDQ6XFx0XFx0XFx0XFx0XFx0XFx0MTAwMDAwMCwgcXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMpO1xcbjMyNDU6XFx0XFx0XFx0ZWxzZVxcbjMyNDY6XFx0XFx0XFx0XFx0dGhyb3VnaHB1dCA9IFBBR0VfU0laRSAqIDEwMjQ7XFxuMzI0NzpcXHRcXHRcXHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVxcdTAwM2VtcywgZXN6KTtcXG4zMjQ4OlxcdFxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxuMzI0OTpcXHRcXHR9XFxuMzI1MDpcXHRcXG4zMjUxOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbjMyNTI6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbjMyNTM6XFx0XFxuMzI1NDpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3pfYnApXFxuMzI1NTpcXHRcXHRcXHRlc3ogPSAwO1xcbjMyNTY6XFx0XFxuMzI1NzpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbjMyNTg6XFx0fVxcbjMyNTk6XFx0XFxuMzI2MDpcXHRzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxcbjMyNjE6XFx0XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG4zMjYyOlxcdHtcXG4zMjYzOlxcdFxcdHVuc2lnbmVkIGludCBjaWR4ID0gMCwgc2lkeCA9IDA7XFxuMzI2NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xcbjMyNjU6XFx0XFxuMzI2NjpcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcXG4zMjY3OlxcdFxcdFxcdGlmIChzaXRlciA9PSBzKVxcbjMyNjg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzI2OTpcXHRcXHRcXHRzaWR4Kys7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIzOjQyOjQ4LjE1NjM1MDE3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDc1NTAxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGNvbnRleHQgb2YgYGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGFgLCBzcGVjaWZpY2FsbHkgc3RhcnRpbmcgYXQgbGluZSAzMjE1LiBMZXQgbWUgZ3JhYiB0aGUgY29kZSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHdob2xlIGZ1bmN0aW9uLiBJJ20gbm90IGp1c3QgaW50ZXJlc3RlZCBpbiB0aGF0IHNwZWNpZmljIGxpbmUsIEkgd2FudCB0byBzZWUgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBhbnkgY2FsbHMgaXQgbWFrZXMsIGhvdyBpdCdzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IGl0cyBvdmVyYWxsIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0gaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGZsb3cgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiBpcyBjcml0aWNhbCB0byBncmFzcGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIGFuZCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gS25vd2luZyB0aGlzLCBJIGNhbiBiZWdpbiB0byBkaWFnbm9zZSBvciBtb2RpZnkgaXQgd2l0aCBjb25maWRlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1MC40MDM5MDM4NDFaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjAwOlxcdFxcbjMyMDE6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IGRhbW9uX2ZlZWRfbG9vcF9uZXh0X2lucHV0KFxcbjMyMDI6XFx0XFx0XFx0XFx0bWF4KHF1b3RhLVxcdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XFxuMzIwMzpcXHR9XFxuMzIwNDpcXHRcXG4zMjA1OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG4zMjA2OlxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4zMjA3OlxcdHtcXG4zMjA4OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIwOTpcXHRcXHR1bnNpZ25lZCBsb25nIHNjb3JlID0gZGFtb3NfcXVvdGFfc2NvcmUoYywgcyk7XFxuMzIxMDpcXHRcXG4zMjExOlxcdFxcdGlmIChzY29yZSBcXHUwMDNlPSAxMDAwMClcXG4zMjEyOlxcdFxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbjMyMTM6XFx0XFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZXN6KVxcbjMyMTQ6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IHF1b3RhLVxcdTAwM2VzeiAqIDEwMDAwO1xcbjMyMTU6XFx0XFx0ZWxzZVxcbjMyMTY6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcXG4zMjE3OlxcdH1cXG4zMjE4OlxcdFxcbjMyMTk6XFx0LypcXG4zMjIwOlxcdCAqIENhbGxlZCBvbmx5IGlmIHF1b3RhLVxcdTAwM2Vtcywgb3IgcXVvdGEtXFx1MDAzZXN6IGFyZSBzZXQsIG9yIHF1b3RhLVxcdTAwM2Vnb2FscyBpcyBub3QgZW1wdHlcXG4zMjIxOlxcdCAqL1xcbjMyMjI6XFx0c3RhdGljIHZvaWQgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcXG4zMjIzOlxcdHtcXG4zMjI0OlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMzIyNTpcXHRcXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XFxuMzIyNjpcXHRcXHR1bnNpZ25lZCBsb25nIGVzeiA9IFVMT05HX01BWDtcXG4zMjI3OlxcdFxcbjMyMjg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlbXMgXFx1MDAyNlxcdTAwMjYgbGlzdF9lbXB0eShcXHUwMDI2cXVvdGEtXFx1MDAzZWdvYWxzKSkge1xcbjMyMjk6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG4zMjMwOlxcdFxcdFxcdHJldHVybjtcXG4zMjMxOlxcdFxcdH1cXG4zMjMyOlxcdFxcbjMyMzM6XFx0XFx0aWYgKCFsaXN0X2VtcHR5KFxcdTAwMjZxdW90YS1cXHUwMDNlZ29hbHMpKSB7XFxuMzIzNDpcXHRcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9DT05TSVNUKVxcbjMyMzU6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxuMzIzNjpcXHRcXHRcXHRlbHNlIGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX1RFTVBPUkFMKVxcbjMyMzc6XFx0XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbChjdHgsIHMpO1xcbjMyMzg6XFx0XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbjMyMzk6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1MC40MDQxNjY0NjFaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTEwMDU4NDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbGAgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIHRoZSBgZGFtb3NfZ29hbF90dW5lX2Vzel9icF90ZW1wb3JhbGAgZnVuY3Rpb24gaXMgcGxheWluZyB3aXRoIGEgbWVtb3J5IHF1b3RhLCBzcGVjaWZpY2FsbHkgc2V0dGluZyBgcXVvdGEtXHUwMDNlZXN6X2JwYCB0byB6ZXJvIGlmIHRoZSBgc2NvcmVgIGhpdHMgMTAwMDAgb3IgbW9yZS4gVGhlbiwgaXQgbG9va3MgbGlrZSBgcXVvdGEtXHUwMDNlbXNgIGNvbWVzIGludG8gcGxheSwgcG90ZW50aWFsbHkgcmFpc2luZyB0aGUgYGVzemAgdmFsdWUsIGJ1dCB0aGVyZSdzIGEgZ3VhcmRyYWlsOiBpZiBgZXN6X2JwYCBpcyB6ZXJvLCBgZXN6YCBnZXRzIHBpbm5lZCB0byB6ZXJvIGFzIHdlbGwuIFRoYXTigJlzIHRoZSBjb3JlIGxvZ2ljLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgbWVtb3J5IHNhZmV0eSBpc3N1ZXM/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdC5cblxuMS4gICoqS2VybmVsLVVzZXIgU3BhY2UgQ29tbXVuaWNhdGlvbjoqKiBOb3BlLiBObyBuZXcga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSBhIHByb2JsZW0uIFRoaXMgaXMgaW50ZXJuYWwga2VybmVsIHN0dWZmLlxuMi4gICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vLCBgcXVvdGEtXHUwMDNlZXN6X2JwYCBpcyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIERBTU9OIHNjaGVtZSBxdW90YSBzZXR1cCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBjYXVzaW5nIGlzc3VlcyBpbiBjb25kaXRpb25hbCBsb2dpYy5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogTm9wZS4gVGhpcyBpc24ndCBhYm91dCBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSBhIHByb2JsZW0gbGF0ZXIuXG40LiAgKipCdWZmZXIgQWNjZXNzOioqIE5vdCBoZXJlLiBUaGlzIGlzbid0IGFib3V0IGJvdW5kcyBjaGVja2luZyBvciBhY2Nlc3NpbmcgcGFydHMgb2YgYnVmZmVycyB0aGF0IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZC4gSXQncyBqdXN0IG51bWJlciBjcnVuY2hpbmcuXG5cblNvLCBhbSBJIHNlZWluZyBhbnkgcmVhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uIFRoZSBgcXVvdGFgIGZpZWxkcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIERBTU9OIHN1YnN5c3RlbSwgaW5pdGlhbGl6ZWQgZHVyaW5nIGNyZWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLiBJdCdzIGp1c3QgYXJpdGhtZXRpYyBhbmQgcXVvdGEgY2FsY3VsYXRpb24uIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSB3b3VsZCBmbGFnLCBhbmQgaXQncyBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGBmYWxzZWAuIEkndmUgZG91YmxlLWNoZWNrZWQgZXZlcnl0aGluZywgc28gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyOSwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMzo0Mjo1NS41MDQ3NTMzODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgZWZmZWN0aXZlIHF1b3RhIChgZXN6YCkgaW4gREFNT1MgKGBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhYCBpbiBgbW0vZGFtb24vY29yZS5jYCkgYnkgcmVzZXR0aW5nIGBlc3pgIHRvIDAgaWYgYHF1b3RhLVxcdTAwM2Vlc3pfYnBgIGlzIDAuIFRoaXMgaXMgcHVyZWx5IGFuIGFyaXRobWV0aWMgLyBsb2dpYyBhZGp1c3RtZW50IGZvciBEQU1PTiBxdW90YSBtYW5hZ2VtZW50LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIHVzZXItc3BhY2UgY29weSBvcGVyYXRpb25zIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGVmZmVjdGl2ZSBxdW90YSAoYGVzemApIGluIERBTU9TIChgZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YWAgaW4gYG1tL2RhbW9uL2NvcmUuY2ApIGJ5IHJlc2V0dGluZyBgZXN6YCB0byAwIGlmIGBxdW90YS1cXHUwMDNlZXN6X2JwYCBpcyAwLiBUaGlzIGlzIHB1cmVseSBhbiBhcml0aG1ldGljIC8gbG9naWMgYWRqdXN0bWVudCBmb3IgREFNT04gcXVvdGEgbWFuYWdlbWVudC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciB1c2VyLXNwYWNlIGNvcHkgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[1] Phase: Succeeded StartedAt: 2026-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-02 23:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-02 23:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2] Phase: Succeeded StartedAt: 2026-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-02 23:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:07 +0000 UTC FinishedAt: 2026-09-02 23:43:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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-workflowrg6cc/series-workflowrg6cc-convert-artifact-2158415783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:17 +0000 UTC FinishedAt: 2026-09-02 23:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:17 +0000 UTC FinishedAt: 2026-09-02 23:59:15 +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:*7b3a1ed9-4275-42d4-8e84-dca3e2fd97ca,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-workflowrg6cc/series-workflowrg6cc-convert-artifact-2158415783/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": "5b0646fd-c505-4a85-a0b7-05f0b5bc3455", "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-workflowrg6cc/series-workflowrg6cc-build-action-1335828285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:43:17 +0000 UTC FinishedAt: 2026-09-02 23:59:05 +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:*7b3a1ed9-4275-42d4-8e84-dca3e2fd97ca,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-workflowrg6cc/series-workflowrg6cc-convert-artifact-2158415783/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": "5b0646fd-c505-4a85-a0b7-05f0b5bc3455", "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-workflowrg6cc/series-workflowrg6cc-build-action-1335828285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:15 +0000 UTC FinishedAt: 2026-09-02 23:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:15 +0000 UTC FinishedAt: 2026-09-02 23:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:15 +0000 UTC FinishedAt: 2026-09-02 23:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:15 +0000 UTC FinishedAt: 2026-09-02 23:59:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-workflowrg6cc/series-workflowrg6cc-convert-artifact-3709163606/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:26 +0000 UTC FinishedAt: 2026-09-03 00:01:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-02 23:59:26 +0000 UTC FinishedAt: 2026-09-03 00:01:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5b0646fd-c505-4a85-a0b7-05f0b5bc3455,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-workflowrg6cc/series-workflowrg6cc-build-action-1335828285/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-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:01:30 +0000 UTC FinishedAt: 2026-09-03 00:01:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:01:30 +0000 UTC FinishedAt: 2026-09-03 00:01:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:01:30 +0000 UTC FinishedAt: 2026-09-03 00:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:01:30 +0000 UTC FinishedAt: 2026-09-03 00:18:28 +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:*7b3a1ed9-4275-42d4-8e84-dca3e2fd97ca,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-workflowrg6cc/series-workflowrg6cc-convert-artifact-3709163606/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": "59a53b55-68d0-4dc3-a03c-c6cda7592548", "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-workflowrg6cc/series-workflowrg6cc-build-action-231341658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:01:30 +0000 UTC FinishedAt: 2026-09-03 00:18:18 +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:*7b3a1ed9-4275-42d4-8e84-dca3e2fd97ca,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-workflowrg6cc/series-workflowrg6cc-convert-artifact-3709163606/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": "59a53b55-68d0-4dc3-a03c-c6cda7592548", "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-workflowrg6cc/series-workflowrg6cc-build-action-231341658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:18:28 +0000 UTC FinishedAt: 2026-09-03 00:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:18:28 +0000 UTC FinishedAt: 2026-09-03 00:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:18:28 +0000 UTC FinishedAt: 2026-09-03 00:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:18:28 +0000 UTC FinishedAt: 2026-09-03 00:20:23 +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:*59a53b55-68d0-4dc3-a03c-c6cda7592548,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-workflowrg6cc/series-workflowrg6cc-build-action-231341658/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-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"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:*5b0646fd-c505-4a85-a0b7-05f0b5bc3455,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*59a53b55-68d0-4dc3-a03c-c6cda7592548,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-workflowrg6cc/series-workflowrg6cc-build-action-1335828285/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-workflowrg6cc/series-workflowrg6cc-build-action-231341658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 00:20:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 00:20:37 +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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"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-workflowrg6cc/series-workflowrg6cc-convert-artifact-3855841019/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 00:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 00:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:32 +0000 UTC FinishedAt: 2026-09-03 00:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:42 +0000 UTC FinishedAt: 2026-09-03 03:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg6cc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"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":["damon_start","damon_commit_ctx","damon_set_schemes","damon_new_scheme","damos_commit_quota_goals","damos_new_quota_goal","damos_add_quota_goal","damos_sysfs_set_quota_scores","damos_sysfs_update_effective_quotas"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR"],"series_id":"371880e2-7b4a-4bb5-8791-ccbe265e151f","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-09-03 00:20:42 +0000 UTC FinishedAt: 2026-09-03 03:21:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5b0646fd-c505-4a85-a0b7-05f0b5bc3455,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*59a53b55-68d0-4dc3-a03c-c6cda7592548,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-workflowrg6cc/series-workflowrg6cc-build-action-1335828285/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-workflowrg6cc/series-workflowrg6cc-build-action-231341658/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-workflowrg6cc/series-workflowrg6cc-convert-artifact-3855841019/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,}