Name: series-workflowsfh5c Phase: Succeeded StartedAt: 2026-08-05 06:12:47 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[0] Phase: Succeeded StartedAt: 2026-08-05 06:12:47 +0000 UTC FinishedAt: 2026-08-05 07:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 06:12:47 +0000 UTC FinishedAt: 2026-08-05 07:06:50 +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": "4ae2eacd28f540ce15d4f60b523eb9ddc5149047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE" ], "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": "4ae2eacd28f540ce15d4f60b523eb9ddc5149047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE" ], "series_id": "c73ae511-8bc9-41c3-89fa-9b68c386b76c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__thp_vma_allowable_orders" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDc6MDU6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDU4Y2FiZTZhZjMzZDAuLjZkZmVmNTUwMGEwNTQgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMTM5LDggJiM0MzsxMzksMTIgQEAgdW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdGlmICh0aHBfZGlzYWJsZWRfYnlfaHcoKSB8fCB2bWFfdGhwX2Rpc2FibGVkKHZtYSwgdm1fZmxhZ3MsIGZvcmNlZF9jb2xsYXBzZSkpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Lyoga2h1Z2VwYWdlZCBkb2VzbiYjMzk7dCBjb2xsYXBzZSBEQVggdm1hLCBidXQgcGFnZSBmYXVsdCBpcyBmaW5lLiAqL1xuLVx0aWYgKHZtYV9pc19kYXgodm1hKSlcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGtodWdlcGFnZWQgZG9lc24mIzM5O3QgY29sbGFwc2UgREFYIG9yIHNwZWNpYWwgaHVnZSBWTUFzLCBidXQgcGFnZVxuJiM0MztcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcbiYjNDM7XHQgKiBwb2xpY3kgaXMgaXJyZWxldmFudCBmb3IgdGhlbS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbiBcdFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcbiBcbiBcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDc6MDU6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCA1OGNhYmU2YWYzM2QwLi42ZGZlZjU1MDBhMDU0IDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTEzOSw4ICYjNDM7MTM5LDEyIEBAIHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJaWYgKHRocF9kaXNhYmxlZF9ieV9odygpIHx8IHZtYV90aHBfZGlzYWJsZWQodm1hLCB2bV9mbGFncywgZm9yY2VkX2NvbGxhcHNlKSkKIAkJcmV0dXJuIDA7CiAKLQkvKiBraHVnZXBhZ2VkIGRvZXNuJiMzOTt0IGNvbGxhcHNlIERBWCB2bWEsIGJ1dCBwYWdlIGZhdWx0IGlzIGZpbmUuICovCi0JaWYgKHZtYV9pc19kYXgodm1hKSkKJiM0MzsJLyoKJiM0MzsJICoga2h1Z2VwYWdlZCBkb2VzbiYjMzk7dCBjb2xsYXBzZSBEQVggb3Igc3BlY2lhbCBodWdlIFZNQXMsIGJ1dCBwYWdlCiYjNDM7CSAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFAKJiM0MzsJICogcG9saWN5IGlzIGlycmVsZXZhbnQgZm9yIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSkKIAkJcmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDsKIAogCS8qCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVEhQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vaHVnZV9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpYCB0byB0aGUgYGlmICh2bWFfaXNfZGF4KHZtYSkpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIOKAkyBhbmQgY29uZmlybSDigJMgdGhhdCBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGRlYWxzIHdpdGggVHJhbnNwYXJlbnQgSHVnZSBQYWdlcywgc3BlY2lmaWNhbGx5IGRldGVybWluaW5nIHdoaWNoIGh1Z2UgcGFnZSBvcmRlcnMgYXJlIGFjY2VwdGFibGUgZm9yIGEgcGFydGljdWxhciBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb25zIGFyaXNlLiBXaGF0IGV4YWN0bHkgKmlzKiBgdm1hX2lzX3NwZWNpYWxfaHVnZWA/IEl0JiMzOTtzIGNsZWFybHkgaW1wb3J0YW50IGVub3VnaCB0byBiZSBhZGRlZCB0byB0aGlzIGNyaXRpY2FsIGNvbmRpdGlvbmFsIHN0YXRlbWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIERBWCBWTUFzLiBXaHkgYXJlIHdlIHRyZWF0aW5nIHNwZWNpYWwgaHVnZSBWTUFzIGluIHRoZSBzYW1lIHdheSB3ZSYjMzk7cmUgaGFuZGxpbmcgREFYIFZNQXM/IFdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIGRvZXMgdGhpcyBwYXRjaCBhZGRyZXNzPyBXaGF0IGFyZSB0aGUgcHJhY3RpY2FsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agc28gSSBjYW4gc2VlIGhvdyB0aGlzIG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmM9MTA3PXN0YXRpYyBib29sIHZtYV9pc19zcGVjaWFsX2h1Z2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xMTMtXG5tbS9odWdlX21lbW9yeS5jOjExNDp1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxubW0vaHVnZV9tZW1vcnkuYy0xMTUtXHRcdFx0XHRcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUga2VybmVsIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHBpbnBvaW50IGFsbCB0aGUgY2FsbCBzaXRlcyDigJMgbW9zdCBsaWtlbHkgYSBjb21iaW5hdGlvbiBvZiBgZ3JlcGAsIHBvdGVudGlhbGx5IGBjc2NvcGVgIG9yIGBjc2VhcmNoYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBgcGVyZmAgYW5hbHlzaXMgaWYgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLCBidXQgY29uZmlybWluZyB0aGUgY29udGV4dCBpcyBlc3NlbnRpYWwgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMuIFRoaXMgc2VhcmNoIHNob3VsZCBxdWlja2x5IHJldmVhbCB0aGUgY3JpdGljYWwgcGF0aHMgYW5kIGFueSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgaXQgaW50ZXJhY3RzIHdpdGgsIGFsbG93aW5nIG1lIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBUSFAgYWxsb2NhdGlvbiBkZWNpc2lvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBidWlsZCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVuY3Rpb25zIHJvbGUsIGFuZCBwb3NzaWJsZSBlZGdlIGNhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmg9Mjc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHBfdm1hX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0yOTctXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoyOTg6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTI5OS1cdFx0XHRcdFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9MzE5PXVuc2lnbmVkIGxvbmcgdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTM0MS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjM0MjpcdHJldHVybiBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZtX2ZsYWdzLCB0eXBlLCBvcmRlcnMpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMzQzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjY2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBmdW5jdGlvbiwgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AsIGFuZCBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gVGhlIGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgY3J1Y2lhbCB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGxhcmdlciBmbG93IG9mIGxvZ2ljIGl0JiMzOTtzIGVtYmVkZGVkIHdpdGhpbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBmb3JtIGEgc29saWQgbWVudGFsIG1vZGVsLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgdGhvc2UgdXNhZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RocF92bWFfYWxsb3dhYmxlX29yZGVycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTEwNz1zdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMTEzLVxubW0vaHVnZV9tZW1vcnkuYzoxMTQ6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2VfbWVtb3J5LmMtMTE1LVx0XHRcdFx0XHQgdm1fZmxhZ3NfdCB2bV9mbGFncyxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTE5Mi1cdFx0ICogRW5mb3JjZSBUSFAgY29sbGFwc2UgcmVxdWlyZW1lbnRzIGFzIG5lY2Vzc2FyeS4gQW5vbnltb3VzIHZtYXNcbm1tL2h1Z2VfbWVtb3J5LmM6MTkzOlx0XHQgKiB3ZXJlIGFscmVhZHkgaGFuZGxlZCBpbiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKS5cbm1tL2h1Z2VfbWVtb3J5LmMtMTk0LVx0XHQgKi9cbi0tXG5tbS9raHVnZXBhZ2VkLmM9NTcyPXN0YXRpYyB1bnNpZ25lZCBsb25nIGNvbGxhcHNlX3Bvc3NpYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9raHVnZXBhZ2VkLmMtNTgyLVxubW0va2h1Z2VwYWdlZC5jOjU4MzpcdHJldHVybiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bV9mbGFncywgdHZhX2ZsYWdzLCBvcmRlcnMpO1xubW0va2h1Z2VwYWdlZC5jLTU4NC19XG4tLVxubW0va2h1Z2VwYWdlZC5jPTEwNTI9c3RhdGljIGVudW0gc2Nhbl9yZXN1bHQgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbi0tXG5tbS9raHVnZXBhZ2VkLmMtMTA3NS1cdFx0cmV0dXJuIFNDQU5fQUREUkVTU19SQU5HRTtcbm1tL2todWdlcGFnZWQuYzoxMDc2Olx0aWYgKCF0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXHUwMDNldm1fZmxhZ3MsIHR5cGUsIEJJVChvcmRlcikpKVxubW0va2h1Z2VwYWdlZC5jLTEwNzctXHRcdHJldHVybiBTQ0FOX1ZNQV9DSEVDSztcbi0tXG5tbS9raHVnZXBhZ2VkLmMtMTA4MS1cdCAqXG5tbS9raHVnZXBhZ2VkLmM6MTA4MjpcdCAqIHRocF92bWFfYWxsb3dhYmxlX29yZGVycyBtYXkgcmV0dXJuIHRydWUgZm9yIHF1YWxpZmllZCBmaWxlXG5tbS9raHVnZXBhZ2VkLmMtMTA4My1cdCAqIHZtYXMuXG4tLVxubW0vbWVtb3J5LmM9NDY2MT1zdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy00NjkwLVx0ICovXG5tbS9tZW1vcnkuYzo0NjkxOlx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxubW0vbWVtb3J5LmMtNDY5Mi1cdFx0XHRcdFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xuLS1cbm1tL21lbW9yeS5jPTUxNjE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYW5vbl9mb2xpbyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy01MTgzLVx0ICovXG5tbS9tZW1vcnkuYzo1MTg0Olx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxubW0vbWVtb3J5LmMtNTE4NS1cdFx0XHRcdFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRIUC1SZWxhdGVkIEtlcm5lbCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBzZWVuIGl0IHVzZWQgaW4gYSBmZXcga2V5IGFyZWFzOiBgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzYCwgYGh1Z2VwYWdlX3ZtYV9yZXZhbGlkYXRlYCwgYHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzYCwgYW5kIGBhbGxvY19hbm9uX2ZvbGlvYC4gVGhhdCYjMzk7cyBhIHNvbGlkIHNwcmVhZCwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBHaXZlbiBpdHMgcmVhY2ggYW5kIGZ1bmN0aW9uLCB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiBhcmVhIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBIaWdoLXZhbHVlIHRhcmdldCwgZnVuY3Rpb25hbGx5IHJlbGV2YW50LCBhbmQgcG90ZW50aWFsbHkgY29tcGxleC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBsdXJraW5nIGhlcmUuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSByZXF1aXJlZCBrZXJuZWwgY29uZmlndXJhdGlvbnMgZm9yIFRIUC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgaXMgYWN0aXZlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbiBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdGVzdGluZyB0aGUgcmlnaHQgdGhpbmdzIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxuLS1cbm1tL0tjb25maWctODY5LVxubW0vS2NvbmZpZzo4NzA6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXG5tbS9LY29uZmlnLTg3MS1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg3Ni1cbm1tL0tjb25maWc6ODc3Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0Vcbm1tL0tjb25maWctODc4LVx0XHRib29sIFwmIzM0O21hZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4NS1cbm1tL0tjb25maWc6ODg2Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXG5tbS9LY29uZmlnLTg4Ny1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODkzPWNob2ljZVxuLS1cbm1tL0tjb25maWctOTAyLVxubW0vS2NvbmZpZzo5MDM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy05MDQtXHRcdGJvb2wgXCYjMzQ7bmV2ZXJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkxMi1cbm1tL0tjb25maWc6OTEzOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXG5tbS9LY29uZmlnLTkxNC1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyMC1cbm1tL0tjb25maWc6OTIxOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcbm1tL0tjb25maWctOTIyLVx0XHRib29sIFwmIzM0O3dpdGhpbl9zaXplXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05MjgtXG5tbS9LY29uZmlnOjkyOTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxubW0vS2NvbmZpZy05MzAtXHRcdGJvb2wgXCYjMzQ7YWR2aXNlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05NDctXG5tbS9LY29uZmlnOjk0ODpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0OS1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTU2LVxubW0vS2NvbmZpZzo5NTc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTU4LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTY0LVxubW0vS2NvbmZpZzo5NjU6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05NjYtXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk3Mi1cbm1tL0tjb25maWc6OTczOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTk3NC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYW5kIGB2bWFfaXNfc3BlY2lhbF9odWdlYCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgY2xlYXI6IHdlJiMzOTtyZSB0aGlua2luZyBhYm91dCBUcmFuc3BhcmVudCBIdWdlcGFnZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIG5lZWQgZm9yIHRoZW0uIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBUaGUgdW5kZXJseWluZyBhc3N1bXB0aW9uIGlzIHdlIGFyZSBmYWNpbmcgc29tZSBwZXJmb3JtYW5jZSBjaGFsbGVuZ2Ugb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5IHRoYXQgd2UgYmVsaWV2ZSBjYW4gYmUgYWRkcmVzc2VkIGJ5IGxldmVyYWdpbmcgbGFyZ2VyIG1lbW9yeSBwYWdlcy4gVGhlIGNvbnRleHQgaXNuJiMzOTt0IGV4cGxpY2l0LCBidXQgdGhlIGltcGxpZWQgdXJnZW5jeSBzdWdnZXN0cyB0aGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGNvbnNpZGVyYXRpb24uCgpUaGUgbmV4dCB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gYSBzcGVjaWZpYyBmdW5jdGlvbiB0aGF0IG11c3QgYmUgcGVydGluZW50IHRvIHRoaXMgaXNzdWUuIEl0IG11c3QgYmUgd29ydGggaW52ZXN0aWdhdGluZywgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byBgdm1hX2lzX3NwZWNpYWxfaHVnZWAuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZm9jdXMgaXMgb24gYSBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGFuZCBkZXRlcm1pbmluZyB3aGV0aGVyIGl0JiMzOTtzIHNvbWVob3cgYXNzb2NpYXRlZCB3aXRoIGh1Z2UgcGFnZXMgaW4gYSAmIzM0O3NwZWNpYWwmIzM0OyBvciBub24tc3RhbmRhcmQgd2F5LiBXZSBhcmUgY2xlYXJseSBhdHRlbXB0aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIG9yIG1hbmFnZXMgVk1BcyBpbiByZWxhdGlvbiB0byBodWdlIHBhZ2VzLiBUaGlzIG11c3QgYmUgYW4gaW1wb3J0YW50IGZhY3RvciB0byBjb25zaWRlciBhbmQgZnVydGhlciBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1hX2lzX3NwZWNpYWxfaHVnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTg4PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX3RocF9lbmFibGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMTA2LS8qIElmIHJldHVybnMgdHJ1ZSwgd2UgYXJlIHVuYWJsZSB0byBhY2Nlc3MgdGhlIFZNQSYjMzk7cyBmb2xpb3MuICovXG5tbS9odWdlX21lbW9yeS5jOjEwNzpzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxubW0vaHVnZV9tZW1vcnkuYy0xMDgte1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9MTE0PXVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xMjYtXHRcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9BTk9OO1xubW0vaHVnZV9tZW1vcnkuYzoxMjc6XHRlbHNlIGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxubW0vaHVnZV9tZW1vcnkuYy0xMjgtXHRcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9TUEVDSUFMX0RBWDtcbi0tXG5tbS9odWdlX21lbW9yeS5jLTE0Ni1cdCAqL1xubW0vaHVnZV9tZW1vcnkuYzoxNDc6XHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ4LVx0XHRyZXR1cm4gaW5fcGYgPyBvcmRlcnMgOiAwO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9MjkwMD1pbnQgemFwX2h1Z2VfcHVkKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMjkxMi1cdHRsYl9yZW1vdmVfcHVkX3RsYl9lbnRyeSh0bGIsIHB1ZCwgYWRkcik7XG5tbS9odWdlX21lbW9yeS5jOjI5MTM6XHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKSB7XG5tbS9odWdlX21lbW9yeS5jLTI5MTQtXHRcdHNwaW5fdW5sb2NrKHB0bCk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zMDM0PXN0YXRpYyB2b2lkIF9fc3BsaXRfaHVnZV9wbWRfbG9ja2VkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzA2My1cdFx0XHR6YXBfZGVwb3NpdGVkX3RhYmxlKG1tLCBwbWQpO1xubW0vaHVnZV9tZW1vcnkuYzozMDY0Olx0XHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxubW0vaHVnZV9tZW1vcnkuYy0zMDY1LVx0XHRcdHJldHVybjtcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ1OTQ9c3RhdGljIGlubGluZSBib29sIHZtYV9ub3Rfc3VpdGFibGVfZm9yX3RocF9zcGxpdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQ1OTctXHRcdHJldHVybiB0cnVlO1xubW0vaHVnZV9tZW1vcnkuYzo0NTk4Olx0aWYgKHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbm1tL2h1Z2VfbWVtb3J5LmMtNDU5OS1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMzcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgdm1hX2lzX3NwZWNpYWxfaHVnZWAqKgoKQWxyaWdodCwgSSYjMzk7bSBlbmNvdW50ZXJpbmcgYHZtYV9pc19zcGVjaWFsX2h1Z2VgIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBwaW4gZG93biBleGFjdGx5IHdoYXQgdGhpcyBmdW5jdGlvbiBzaWduaWZpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IGZyYW1ld29yay4gVGhlIG5hbWUgaXRzZWxmIGhpbnRzIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIHNwZWNpYWwgb3IgbGFyZ2UgcGFnZXMgKGh1Z2UgcGFnZXMpLiBTbywgSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyAmIzM0O29rYXksIHRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBnaXZlbiBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGh1Z2UgcGFnZSwgb3Igc29tZSAqc3BlY2lhbCogZmxhdm9yIG9mIGh1Z2UgcGFnZS4mIzM0OyBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdG8gcXVpY2tseSByZWZlcmVuY2UgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIGhlYWRlciBmaWxlcyByZWxhdGVkIHRvIFZNQXMgYW5kIGh1Z2VwYWdlcy4gVGhhdCYjMzk7cyBteSBpbW1lZGlhdGUgbmV4dCBzdGVwOyBnZXQgdGhlIHByZWNpc2UgZGVmaW5pdGlvbiwgdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgYW5kIHNlZSBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIGFueSBzcGVjaWZpYywgcXVpcmt5IHVzZS1jYXNlcyBmb3IgaHVnZSBwYWdlcy4gSSYjMzk7bGwgbmVlZCB0byBrbm93OiBJcyBpdCBjaGVja2luZyBmb3IgZ2VuZXJhbCBodWdlIHBhZ2UgYWxsb2NhdGlvbj8gRG9lcyBpdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBodWdlIHBhZ2VzPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgZmxhZ3MgaW52b2x2ZWQ/IEl0JiMzOTtzIGFsbCBhYm91dCBwcmVjaXNpb24gaGVyZSwgbm8gcm9vbSBmb3IgZ3Vlc3N3b3JrLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0XHRpZiAoIW1hcHBpbmdfcG1kX2ZvbGlvX3N1cHBvcnQodm1hLVx1MDAzZXZtX2ZpbGUtXHUwMDNlZl9tYXBwaW5nKSlcbiAxMDE6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDEwMjpcdFxuIDEwMzpcdFx0cmV0dXJuIFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiAxMDQ6XHR9XG4gMTA1Olx0XG4gMTA2Olx0LyogSWYgcmV0dXJucyB0cnVlLCB3ZSBhcmUgdW5hYmxlIHRvIGFjY2VzcyB0aGUgVk1BJiMzOTtzIGZvbGlvcy4gKi9cbiAxMDc6XHRzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDEwODpcdHtcbiAxMDk6XHRcdGlmICh2bWFfaXNfZGF4KHZtYSkpXG4gMTEwOlx0XHRcdHJldHVybiBmYWxzZTtcbiAxMTE6XHRcdHJldHVybiB2bWFfdGVzdF9hbnkodm1hLCBWTUFfUEZOTUFQX0JJVCwgVk1BX01JWEVETUFQX0JJVCk7XG4gMTEyOlx0fVxuIDExMzpcdFxuIDExNDpcdHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gMTE1Olx0XHRcdFx0XHRcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxuIDExNjpcdFx0XHRcdFx0XHQgZW51bSB0dmFfdHlwZSB0eXBlLFxuIDExNzpcdFx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyBvcmRlcnMpXG4gMTE4Olx0e1xuIDExOTpcdFx0Y29uc3QgYm9vbCBzbWFwcyA9IHR5cGUgPT0gVFZBX1NNQVBTO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODc0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgTU0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgdm1hX2lzX3NwZWNpYWxfaHVnZWAganVtcHMgb3V0LiBSaWdodCwgaXQmIzM5O3MgY2hlY2tpbmcgZm9yIHRob3NlIFZNQXMgdGhhdCBhcmUgZWl0aGVyIGBWTV9QRk5NQVBgIG9yIGBWTV9NSVhFRE1BUGAuLi4gKmJ1dCogbm90IERBWC4gVGhlIGNydXggb2YgdGhpcyBjaGFuZ2UgaXMgYWxsb3dpbmcgVEhQIOKAkyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIOKAkyBvbiB0aGVzZSBWTUFzICpkdXJpbmcqIGEgcGFnZSBmYXVsdC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIHRoaXMgd2FycmFudHMgYSBkZWVwIGRpdmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQmIzM5O3Mgbm90IGp1c3QgYSBtaW5vciB0d2Vhay4KCk15IG5leHQgcG9pbnQgaXMgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaXMgZXhwb3J0ZWQgb3IgdXNlZCBpbiBoZWFkZXJzLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBkaWdnaW5nIGFyb3VuZCBpbiBgaW5jbHVkZS9saW51eC9odWdlX21tLmhgLiBUaGF0IGhlYWRlciB3aWxsIGxpa2VseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBuZXcgYWxsb3dhbmNlIHRpZXMgaW50byB0aGUgZXhpc3RpbmcgaHVnZSBwYWdlIGluZnJhc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIHRob3JvdWdobHksIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGl0IHJlbGllcyBvbiwgYW5kIHdoYXQgZGF0YSBpdCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBnb2luZyB0byBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjkwOlx0XHRcdGlmICh0aHBfdm1hX3N1aXRhYmxlX29yZGVyKHZtYSwgYWRkciwgb3JkZXIpKVxuIDI5MTpcdFx0XHRcdGJyZWFrO1xuIDI5MjpcdFx0XHRvcmRlciA9IG5leHRfb3JkZXIoXHUwMDI2b3JkZXJzLCBvcmRlcik7XG4gMjkzOlx0XHR9XG4gMjk0Olx0XG4gMjk1Olx0XHRyZXR1cm4gb3JkZXJzO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiAyOTg6XHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIDI5OTpcdFx0XHRcdFx0XHQgdm1fZmxhZ3NfdCB2bV9mbGFncyxcbiAzMDA6XHRcdFx0XHRcdFx0IGVudW0gdHZhX3R5cGUgdHlwZSxcbiAzMDE6XHRcdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKTtcbiAzMDI6XHRcbiAzMDM6XHQvKipcbiAzMDQ6XHQgKiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMgLSBkZXRlcm1pbmUgaHVnZXBhZ2Ugb3JkZXJzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHZtYVxuIDMwNTpcdCAqIEB2bWE6ICB0aGUgdm0gYXJlYSB0byBjaGVja1xuIDMwNjpcdCAqIEB2bV9mbGFnczogdXNlIHRoZXNlIHZtX2ZsYWdzIGluc3RlYWQgb2Ygdm1hLVx1MDAzZXZtX2ZsYWdzXG4gMzA3Olx0ICogQHR5cGU6IFRWQSB0eXBlXG4gMzA4Olx0ICogQG9yZGVyczogYml0ZmllbGQgb2YgYWxsIG9yZGVycyB0byBjb25zaWRlclxuIDMwOTpcdCAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgT3JkZXIgQWxsb3dhbmNlcyoqCgpPa2F5LCBzbyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGlzbiYjMzk7dCBzb21lIG9ic2N1cmUgc3RhdGljIHZhcmlhYmxlOyBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIGRlY2xhcmVkIGluIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAuIFRoYXQgbWFrZXMgaXQgYSBzb2xpZCBmb2N1cyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIGZvciBib3RoIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgYW5kIGB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdXNlZC4gSSYjMzk7dmUgZm91bmQgYSBmZXc6IGBjb2xsYXBzZV9wb3NzaWJsZV9vcmRlcnNgIGFuZCBgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGVgIHdpdGhpbiBgbW0va2h1Z2VwYWdlZC5jYCwgYHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzYCBpbiBgbW0vbWVtb3J5LmNgLCBhbmQgYGFsbG9jX2Fub25fZm9saW9gIGFsc28gaW4gYG1tL21lbW9yeS5jYC4KClNpbmNlIGl0IGxvb2tzIGxpa2UgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpcyB0aGUgb25lIHRoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQsIEkmIzM5O2xsIHN0aWNrIHdpdGggdGhhdCBhcyB0aGUgbWFpbiBmb2N1cy4gSXQmIzM5O2xsIHNpbXBsaWZ5IHRoaW5ncyBhbmQga2VlcCBtZSBvbiB0cmFjay4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBzdXJyb3VuZGluZyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxuLS1cbm1tL0tjb25maWctODY5LVxubW0vS2NvbmZpZzo4NzA6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXG5tbS9LY29uZmlnLTg3MS1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg3Ni1cbm1tL0tjb25maWc6ODc3Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0Vcbm1tL0tjb25maWctODc4LVx0XHRib29sIFwmIzM0O21hZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4NS1cbm1tL0tjb25maWc6ODg2Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXG5tbS9LY29uZmlnLTg4Ny1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODkzPWNob2ljZVxuLS1cbm1tL0tjb25maWctOTAyLVxubW0vS2NvbmZpZzo5MDM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy05MDQtXHRcdGJvb2wgXCYjMzQ7bmV2ZXJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkxMi1cbm1tL0tjb25maWc6OTEzOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXG5tbS9LY29uZmlnLTkxNC1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyMC1cbm1tL0tjb25maWc6OTIxOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcbm1tL0tjb25maWctOTIyLVx0XHRib29sIFwmIzM0O3dpdGhpbl9zaXplXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05MjgtXG5tbS9LY29uZmlnOjkyOTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxubW0vS2NvbmZpZy05MzAtXHRcdGJvb2wgXCYjMzQ7YWR2aXNlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05NDctXG5tbS9LY29uZmlnOjk0ODpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0OS1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTU2LVxubW0vS2NvbmZpZzo5NTc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTU4LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTY0LVxubW0vS2NvbmZpZzo5NjU6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05NjYtXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk3Mi1cbm1tL0tjb25maWc6OTczOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTk3NC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIEkga25vdyBJJiMzOTt2ZSBiZWVuIGhlcmUgYmVmb3JlLCBhbmQgdGhlIGJlc3Qgd2F5IHRvIHVudGFuZ2xlIHRoaXMgbWVzcyBpcyB1c3VhbGx5IHRvIGRpZyBpbnRvIHRoZSBgbW0vS2NvbmZpZ2AgZmlsZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZSBpbXBvcnRhbnQgc3R1ZmYgaXMgY2x1c3RlcmVkIGFyb3VuZCBsaW5lIDg0Niwgc28gdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBzdGFydC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgdGhpcyBvbmUgdG8gd29yayBjb3JyZWN0bHkuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG15IGV4cGVydCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbCBjb25maWcgc3lzdGVtIHRvIHdvcmsgYW5kIHVucmF2ZWwgdGhpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NDA6XHRcdCAgU2F5IFkgaWYgeW91ciBzeXN0ZW0gaGFzIGxvdHMgb2YgbWVtb3J5LiBTYXkgTiBpZiB5b3UgYXJlXG4gODQxOlx0XHQgIG1lbW9yeSBjb25zdHJhaW5lZC5cbiA4NDI6XHRcbiA4NDM6XHRjb25maWcgTU1fSURcbiA4NDQ6XHRcdGRlZl9ib29sIG5cbiA4NDU6XHRcbiA4NDY6XHRtZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4gODQ3Olx0XHRib29sIFwmIzM0O1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcJiMzNDtcbiA4NDg6XHRcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFx1MDAyNlx1MDAyNiAhUFJFRU1QVF9SVFxuIDg0OTpcdFx0c2VsZWN0IENPTVBBQ1RJT05cbiA4NTA6XHRcdHNlbGVjdCBYQVJSQVlfTVVMVElcbiA4NTE6XHRcdHNlbGVjdCBNTV9JRFxuIDg1MjpcdFx0aGVscFxuIDg1MzpcdFx0ICBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdXNlIGh1Z2UgcGFnZXMgYW5kXG4gODU0Olx0XHQgIGh1Z2UgdGxiIHRyYW5zcGFyZW50bHkgdG8gdGhlIGFwcGxpY2F0aW9ucyB3aGVuZXZlciBwb3NzaWJsZS5cbiA4NTU6XHRcdCAgVGhpcyBmZWF0dXJlIGNhbiBpbXByb3ZlIGNvbXB1dGluZyBwZXJmb3JtYW5jZSB0byBjZXJ0YWluXG4gODU2Olx0XHQgIGFwcGxpY2F0aW9ucyBieSBzcGVlZGluZyB1cCBwYWdlIGZhdWx0cyBkdXJpbmcgbWVtb3J5XG4gODU3Olx0XHQgIGFsbG9jYXRpb24sIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgdGxiIG1pc3NlcyBhbmQgYnkgc3BlZWRpbmdcbiA4NTg6XHRcdCAgdXAgdGhlIHBhZ2V0YWJsZSB3YWxraW5nLlxuIDg1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk1CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogQSBEZWVwIERpdmUgaW50byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgY29uZmlnIGNhdGNoZXMgbXkgZXllLiBUaGF0JiMzOTtzIHRoZSBrZXksIHJpZ2h0PyBBbmQgdGhlIHBhdGNoIGZvY3VzZXMgb24gYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCB3aXRoaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLiBUaGF0JiMzOTtzICpkZWZpbml0ZWx5KiBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIFRIUCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSB2aWEgYG1tYXBgIGFuZCBwYWdlIGZhdWx0cy4uLiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgc2lnbmlmaWNhbnQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIHF1aWNrbHkgY29uZmlybWluZyBpZiBhbnkgKm90aGVyKiBjb25maWdzIGFyZSBuZWVkZWQsIGJ1dCBpdCBzZWVtcyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIHRoZSBvbmx5IG1ham9yIG9uZSB0aGF0JiMzOTtzIHJlbGV2YW50LgoKTXkgZm9jdXMgaXMgZmlybWx5IHNldCBvbiBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGFuZCB0aGUgY29udGV4dCBvZiB0aG9zZSBzcGVjaWFsIGh1Z2UgVk1BcyBsaWtlIGBQRk5NQVBgIG9yIGBNSVhFRE1BUGAgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGhhcyB0aGUgaGFsbG1hcmtzIG9mIHNvbWV0aGluZyByaXBlIGZvciBleHBsb3JhdGlvbi4gSSYjMzk7bGwgZ2V0IHRoZSByZXN1bHRzIHNldCB1cCBhcyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTEuMDUyMjAxNDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5OTI5MDY3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIHRvIGFsbG93IFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgZm9yIHNwZWNpYWwgaHVnZSBWTUFzIChsaWtlIFBGTk1BUCBvciBNSVhFRE1BUCkgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTEuMDUyMjA5OTA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEyNzcyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDA3OjA1OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXFxuaW5kZXggNThjYWJlNmFmMzNkMC4uNmRmZWY1NTAwYTA1NCAxMDA2NDRcXG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXFxuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xcbkBAIC0xMzksOCArMTM5LDEyIEBAIHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdGlmICh0aHBfZGlzYWJsZWRfYnlfaHcoKSB8fCB2bWFfdGhwX2Rpc2FibGVkKHZtYSwgdm1fZmxhZ3MsIGZvcmNlZF9jb2xsYXBzZSkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0Lyoga2h1Z2VwYWdlZCBkb2Vzbid0IGNvbGxhcHNlIERBWCB2bWEsIGJ1dCBwYWdlIGZhdWx0IGlzIGZpbmUuICovXFxuLVxcdGlmICh2bWFfaXNfZGF4KHZtYSkpXFxuK1xcdC8qXFxuK1xcdCAqIGtodWdlcGFnZWQgZG9lc24ndCBjb2xsYXBzZSBEQVggb3Igc3BlY2lhbCBodWdlIFZNQXMsIGJ1dCBwYWdlXFxuK1xcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcXG4rXFx0ICogcG9saWN5IGlzIGlycmVsZXZhbnQgZm9yIHRoZW0uXFxuK1xcdCAqL1xcbitcXHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcXG4gXFx0XFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcXG4gXFxuIFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA1OjUyLjI2NjA2Mzg0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2Nzc5MDMxMzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczZGM0NmU4ZGY0YzU0ODE0MjFjMDg0ZWM4NTRlZWFhYWM1ZDdmZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA3OjA1OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDU4Y2FiZTZhZjMzZDAuLjZkZmVmNTUwMGEwNTQgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMTM5LDggKzEzOSwxMiBAQCB1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0aWYgKHRocF9kaXNhYmxlZF9ieV9odygpIHx8IHZtYV90aHBfZGlzYWJsZWQodm1hLCB2bV9mbGFncywgZm9yY2VkX2NvbGxhcHNlKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBraHVnZXBhZ2VkIGRvZXNuJ3QgY29sbGFwc2UgREFYIHZtYSwgYnV0IHBhZ2UgZmF1bHQgaXMgZmluZS4gKi9cbi1cdGlmICh2bWFfaXNfZGF4KHZtYSkpXG4rXHQvKlxuK1x0ICoga2h1Z2VwYWdlZCBkb2Vzbid0IGNvbGxhcHNlIERBWCBvciBzcGVjaWFsIGh1Z2UgVk1BcywgYnV0IHBhZ2VcbitcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcbitcdCAqIHBvbGljeSBpcyBpcnJlbGV2YW50IGZvciB0aGVtLlxuK1x0ICovXG4rXHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbiBcdFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcbiBcbiBcdC8qXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNTo1Mi4yNjYwNjU3OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDUwMzAzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRIUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS9odWdlX21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGB8fCB2bWFfaXNfc3BlY2lhbF9odWdlKHZtYSlgIHRvIHRoZSBgaWYgKHZtYV9pc19kYXgodm1hKSlgIGNvbmRpdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiDigJMgYW5kIGNvbmZpcm0g4oCTIHRoYXQgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBkZWFscyB3aXRoIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMsIHNwZWNpZmljYWxseSBkZXRlcm1pbmluZyB3aGljaCBodWdlIHBhZ2Ugb3JkZXJzIGFyZSBhY2NlcHRhYmxlIGZvciBhIHBhcnRpY3VsYXIgVmlydHVhbCBNZW1vcnkgQXJlYSAoVk1BKS4gVGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGVyZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbnMgYXJpc2UuIFdoYXQgZXhhY3RseSAqaXMqIGB2bWFfaXNfc3BlY2lhbF9odWdlYD8gSXQncyBjbGVhcmx5IGltcG9ydGFudCBlbm91Z2ggdG8gYmUgYWRkZWQgdG8gdGhpcyBjcml0aWNhbCBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBEQVggVk1Bcy4gV2h5IGFyZSB3ZSB0cmVhdGluZyBzcGVjaWFsIGh1Z2UgVk1BcyBpbiB0aGUgc2FtZSB3YXkgd2UncmUgaGFuZGxpbmcgREFYIFZNQXM/IFdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIGRvZXMgdGhpcyBwYXRjaCBhZGRyZXNzPyBXaGF0IGFyZSB0aGUgcHJhY3RpY2FsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agc28gSSBjYW4gc2VlIGhvdyB0aGlzIG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTcuMzE2MzcxMDQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjE2NjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0xMDc9c3RhdGljIGJvb2wgdm1hX2lzX3NwZWNpYWxfaHVnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTEzLVxcbm1tL2h1Z2VfbWVtb3J5LmM6MTE0OnVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxubW0vaHVnZV9tZW1vcnkuYy0xMTUtXFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA1OjU3LjgyMjU0MjU5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTAxMTcyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUga2VybmVsIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gcGlucG9pbnQgYWxsIHRoZSBjYWxsIHNpdGVzIOKAkyBtb3N0IGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIGBncmVwYCwgcG90ZW50aWFsbHkgYGNzY29wZWAgb3IgYGNzZWFyY2hgLCBhbmQgbWF5YmUgZXZlbiBzb21lIGBwZXJmYCBhbmFseXNpcyBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIGlzIHJlbGF0ZWQgdG8gVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSwgYnV0IGNvbmZpcm1pbmcgdGhlIGNvbnRleHQgaXMgZXNzZW50aWFsIGJlZm9yZSBtYWtpbmcgYW55IGFzc3VtcHRpb25zLiBUaGlzIHNlYXJjaCBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBhbnkgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGludGVyYWN0cyB3aXRoLCBhbGxvd2luZyBtZSB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgVEhQIGFsbG9jYXRpb24gZGVjaXNpb25zLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgYnVpbGQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmN0aW9ucyByb2xlLCBhbmQgcG9zc2libGUgZWRnZSBjYXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjAyLjMxMjY2MjQ1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzAxNDg3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9Mjc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHBfdm1hX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTI5Ny1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoyOTg6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0yOTktXFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zMTk9dW5zaWduZWQgbG9uZyB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0zNDEtXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MzQyOlxcdHJldHVybiBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZtX2ZsYWdzLCB0eXBlLCBvcmRlcnMpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTM0My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjAzLjA4MjgyMjUxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODY1NzE0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGZ1bmN0aW9uLCBgdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCwgYW5kIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIFRoZSBmaXJzdCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIGl0J3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgY3J1Y2lhbCB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGxhcmdlciBmbG93IG9mIGxvZ2ljIGl0J3MgZW1iZWRkZWQgd2l0aGluLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGZvcm0gYSBzb2xpZCBtZW50YWwgbW9kZWwuIExldCdzIGdldCB0byB3b3JrIGFuZCBmaW5kIHRob3NlIHVzYWdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjA3LjA2OTQwMDE5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTc3NjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmM9MTA3PXN0YXRpYyBib29sIHZtYV9pc19zcGVjaWFsX2h1Z2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTExMy1cXG5tbS9odWdlX21lbW9yeS5jOjExNDp1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMTE1LVxcdFxcdFxcdFxcdFxcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0xOTItXFx0XFx0ICogRW5mb3JjZSBUSFAgY29sbGFwc2UgcmVxdWlyZW1lbnRzIGFzIG5lY2Vzc2FyeS4gQW5vbnltb3VzIHZtYXNcXG5tbS9odWdlX21lbW9yeS5jOjE5MzpcXHRcXHQgKiB3ZXJlIGFscmVhZHkgaGFuZGxlZCBpbiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKS5cXG5tbS9odWdlX21lbW9yeS5jLTE5NC1cXHRcXHQgKi9cXG4tLVxcbm1tL2todWdlcGFnZWQuYz01NzI9c3RhdGljIHVuc2lnbmVkIGxvbmcgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0va2h1Z2VwYWdlZC5jLTU4Mi1cXG5tbS9raHVnZXBhZ2VkLmM6NTgzOlxcdHJldHVybiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bV9mbGFncywgdHZhX2ZsYWdzLCBvcmRlcnMpO1xcbm1tL2todWdlcGFnZWQuYy01ODQtfVxcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTEwNTI9c3RhdGljIGVudW0gc2Nhbl9yZXN1bHQgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbm1tL2todWdlcGFnZWQuYy0xMDc1LVxcdFxcdHJldHVybiBTQ0FOX0FERFJFU1NfUkFOR0U7XFxubW0va2h1Z2VwYWdlZC5jOjEwNzY6XFx0aWYgKCF0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXFx1MDAzZXZtX2ZsYWdzLCB0eXBlLCBCSVQob3JkZXIpKSlcXG5tbS9raHVnZXBhZ2VkLmMtMTA3Ny1cXHRcXHRyZXR1cm4gU0NBTl9WTUFfQ0hFQ0s7XFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMTA4MS1cXHQgKlxcbm1tL2todWdlcGFnZWQuYzoxMDgyOlxcdCAqIHRocF92bWFfYWxsb3dhYmxlX29yZGVycyBtYXkgcmV0dXJuIHRydWUgZm9yIHF1YWxpZmllZCBmaWxlXFxubW0va2h1Z2VwYWdlZC5jLTEwODMtXFx0ICogdm1hcy5cXG4tLVxcbm1tL21lbW9yeS5jPTQ2NjE9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00NjkwLVxcdCAqL1xcbm1tL21lbW9yeS5jOjQ2OTE6XFx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVxcdTAwM2V2bV9mbGFncywgVFZBX1BBR0VGQVVMVCxcXG5tbS9tZW1vcnkuYy00NjkyLVxcdFxcdFxcdFxcdFxcdCAgQklUKFBNRF9PUkRFUikgLSAxKTtcXG4tLVxcbm1tL21lbW9yeS5jPTUxNjE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYW5vbl9mb2xpbyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbm1tL21lbW9yeS5jLTUxODMtXFx0ICovXFxubW0vbWVtb3J5LmM6NTE4NDpcXHRvcmRlcnMgPSB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXFx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxcbm1tL21lbW9yeS5jLTUxODUtXFx0XFx0XFx0XFx0XFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjowNy4xNDExODIxMDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODMyNTcwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVEhQLVJlbGF0ZWQgS2VybmVsIExvZ2ljKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIHNlZW4gaXQgdXNlZCBpbiBhIGZldyBrZXkgYXJlYXM6IGBjb2xsYXBzZV9wb3NzaWJsZV9vcmRlcnNgLCBgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGVgLCBgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnNgLCBhbmQgYGFsbG9jX2Fub25fZm9saW9gLiBUaGF0J3MgYSBzb2xpZCBzcHJlYWQsIGFuZCBpdCdzIGRlZmluaXRlbHkgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBHaXZlbiBpdHMgcmVhY2ggYW5kIGZ1bmN0aW9uLCB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiBhcmVhIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBIaWdoLXZhbHVlIHRhcmdldCwgZnVuY3Rpb25hbGx5IHJlbGV2YW50LCBhbmQgcG90ZW50aWFsbHkgY29tcGxleC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBsdXJraW5nIGhlcmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgVEhQLiBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGZ1enppbmcgZW52aXJvbm1lbnQgYWNjdXJhdGVseSByZWZsZWN0cyB0aGUgc2NlbmFyaW9zIHdoZXJlIHRoaXMgY29kZSBpcyBhY3RpdmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGNhbXBhaWduLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHRlc3RpbmcgdGhlIHJpZ2h0IHRoaW5ncyB1bmRlciB0aGUgcmlnaHQgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjEwLjk3Mzc1NjEzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTczNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcXG4tLVxcbm1tL0tjb25maWctODQ1LVxcbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTg0Ny1cXHRib29sIFxcXCJUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XFxcIlxcbi0tXFxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTg2OS1cXG5tbS9LY29uZmlnOjg3MDpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXFxubW0vS2NvbmZpZy04NzEtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04NzYtXFxubW0vS2NvbmZpZzo4Nzc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0VcXG5tbS9LY29uZmlnLTg3OC1cXHRcXHRib29sIFxcXCJtYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04ODUtXFxubW0vS2NvbmZpZzo4ODY6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXFxubW0vS2NvbmZpZy04ODctXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg5Mz1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTAyLVxcbm1tL0tjb25maWc6OTAzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05MDQtXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkxMi1cXG5tbS9LY29uZmlnOjkxMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTkxNC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyMC1cXG5tbS9LY29uZmlnOjkyMTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTIyLVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjgtXFxubW0vS2NvbmZpZzo5Mjk6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05MzAtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MTEuMDQwMDIwMzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTQxNTUwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgYHZtYV9pc19zcGVjaWFsX2h1Z2VgKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgaW1wdWxzZSBoZXJlIGlzIGNsZWFyOiB3ZSdyZSB0aGlua2luZyBhYm91dCBUcmFuc3BhcmVudCBIdWdlcGFnZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIG5lZWQgZm9yIHRoZW0uIFRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb24gaXMgd2UgYXJlIGZhY2luZyBzb21lIHBlcmZvcm1hbmNlIGNoYWxsZW5nZSBvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCB3ZSBiZWxpZXZlIGNhbiBiZSBhZGRyZXNzZWQgYnkgbGV2ZXJhZ2luZyBsYXJnZXIgbWVtb3J5IHBhZ2VzLiBUaGUgY29udGV4dCBpc24ndCBleHBsaWNpdCwgYnV0IHRoZSBpbXBsaWVkIHVyZ2VuY3kgc3VnZ2VzdHMgdGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNvbnNpZGVyYXRpb24uXG5cblRoZSBuZXh0IHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byBhIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgbXVzdCBiZSBwZXJ0aW5lbnQgdG8gdGhpcyBpc3N1ZS4gSXQgbXVzdCBiZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLCBzbyBsZXQncyBzdGFydCBieSBsb29raW5nIGludG8gYHZtYV9pc19zcGVjaWFsX2h1Z2VgLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIGZvY3VzIGlzIG9uIGEgVmlydHVhbCBNZW1vcnkgQXJlYSAoVk1BKSBhbmQgZGV0ZXJtaW5pbmcgd2hldGhlciBpdCdzIHNvbWVob3cgYXNzb2NpYXRlZCB3aXRoIGh1Z2UgcGFnZXMgaW4gYSBcInNwZWNpYWxcIiBvciBub24tc3RhbmRhcmQgd2F5LiBXZSBhcmUgY2xlYXJseSBhdHRlbXB0aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIG9yIG1hbmFnZXMgVk1BcyBpbiByZWxhdGlvbiB0byBodWdlIHBhZ2VzLiBUaGlzIG11c3QgYmUgYW4gaW1wb3J0YW50IGZhY3RvciB0byBjb25zaWRlciBhbmQgZnVydGhlciBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjE0LjgzNDE3NzI1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTExNjc3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1hX2lzX3NwZWNpYWxfaHVnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz04OD1zdGF0aWMgaW5saW5lIGJvb2wgZmlsZV90aHBfZW5hYmxlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTA2LS8qIElmIHJldHVybnMgdHJ1ZSwgd2UgYXJlIHVuYWJsZSB0byBhY2Nlc3MgdGhlIFZNQSdzIGZvbGlvcy4gKi9cXG5tbS9odWdlX21lbW9yeS5jOjEwNzpzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTA4LXtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MTE0PXVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTEyNi1cXHRcXHRzdXBwb3J0ZWRfb3JkZXJzID0gVEhQX09SREVSU19BTExfQU5PTjtcXG5tbS9odWdlX21lbW9yeS5jOjEyNzpcXHRlbHNlIGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTI4LVxcdFxcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9TUEVDSUFMX0RBWDtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ2LVxcdCAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6MTQ3OlxcdGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ4LVxcdFxcdHJldHVybiBpbl9wZiA/IG9yZGVycyA6IDA7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTI5MDA9aW50IHphcF9odWdlX3B1ZChzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMjkxMi1cXHR0bGJfcmVtb3ZlX3B1ZF90bGJfZW50cnkodGxiLCBwdWQsIGFkZHIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MjkxMzpcXHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKSB7XFxubW0vaHVnZV9tZW1vcnkuYy0yOTE0LVxcdFxcdHNwaW5fdW5sb2NrKHB0bCk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTMwMzQ9c3RhdGljIHZvaWQgX19zcGxpdF9odWdlX3BtZF9sb2NrZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90ICpwbWQsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTMwNjMtXFx0XFx0XFx0emFwX2RlcG9zaXRlZF90YWJsZShtbSwgcG1kKTtcXG5tbS9odWdlX21lbW9yeS5jOjMwNjQ6XFx0XFx0aWYgKHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcXG5tbS9odWdlX21lbW9yeS5jLTMwNjUtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00NTk0PXN0YXRpYyBpbmxpbmUgYm9vbCB2bWFfbm90X3N1aXRhYmxlX2Zvcl90aHBfc3BsaXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ1OTctXFx0XFx0cmV0dXJuIHRydWU7XFxubW0vaHVnZV9tZW1vcnkuYzo0NTk4OlxcdGlmICh2bWFfaXNfc3BlY2lhbF9odWdlKHZtYSkpXFxubW0vaHVnZV9tZW1vcnkuYy00NTk5LVxcdFxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjoxNC45MjUzNDkxMjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MTk3MjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgdm1hX2lzX3NwZWNpYWxfaHVnZWAqKlxuXG5BbHJpZ2h0LCBJJ20gZW5jb3VudGVyaW5nIGB2bWFfaXNfc3BlY2lhbF9odWdlYCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcGluIGRvd24gZXhhY3RseSB3aGF0IHRoaXMgZnVuY3Rpb24gc2lnbmlmaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBmcmFtZXdvcmsuIFRoZSBuYW1lIGl0c2VsZiBoaW50cyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBzcGVjaWFsIG9yIGxhcmdlIHBhZ2VzIChodWdlIHBhZ2VzKS4gU28sIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBcIm9rYXksIHRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBnaXZlbiBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGh1Z2UgcGFnZSwgb3Igc29tZSAqc3BlY2lhbCogZmxhdm9yIG9mIGh1Z2UgcGFnZS5cIiBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdG8gcXVpY2tseSByZWZlcmVuY2UgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIGhlYWRlciBmaWxlcyByZWxhdGVkIHRvIFZNQXMgYW5kIGh1Z2VwYWdlcy4gVGhhdCdzIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXA7IGdldCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uLCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBhbmQgc2VlIGlmIGl0J3MgcmVsYXRlZCB0byBhbnkgc3BlY2lmaWMsIHF1aXJreSB1c2UtY2FzZXMgZm9yIGh1Z2UgcGFnZXMuIEknbGwgbmVlZCB0byBrbm93OiBJcyBpdCBjaGVja2luZyBmb3IgZ2VuZXJhbCBodWdlIHBhZ2UgYWxsb2NhdGlvbj8gRG9lcyBpdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBodWdlIHBhZ2VzPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgZmxhZ3MgaW52b2x2ZWQ/IEl0J3MgYWxsIGFib3V0IHByZWNpc2lvbiBoZXJlLCBubyByb29tIGZvciBndWVzc3dvcmsuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjM3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MTguMTg3MzI0NDMyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9odWdlX21lbW9yeS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRcXHRpZiAoIW1hcHBpbmdfcG1kX2ZvbGlvX3N1cHBvcnQodm1hLVxcdTAwM2V2bV9maWxlLVxcdTAwM2VmX21hcHBpbmcpKVxcbiAxMDE6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHRyZXR1cm4gU19JU1JFRyhpbm9kZS1cXHUwMDNlaV9tb2RlKTtcXG4gMTA0OlxcdH1cXG4gMTA1OlxcdFxcbiAxMDY6XFx0LyogSWYgcmV0dXJucyB0cnVlLCB3ZSBhcmUgdW5hYmxlIHRvIGFjY2VzcyB0aGUgVk1BJ3MgZm9saW9zLiAqL1xcbiAxMDc6XFx0c3RhdGljIGJvb2wgdm1hX2lzX3NwZWNpYWxfaHVnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gMTA4OlxcdHtcXG4gMTA5OlxcdFxcdGlmICh2bWFfaXNfZGF4KHZtYSkpXFxuIDExMDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDExMTpcXHRcXHRyZXR1cm4gdm1hX3Rlc3RfYW55KHZtYSwgVk1BX1BGTk1BUF9CSVQsIFZNQV9NSVhFRE1BUF9CSVQpO1xcbiAxMTI6XFx0fVxcbiAxMTM6XFx0XFxuIDExNDpcXHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiAxMTU6XFx0XFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuIDExNjpcXHRcXHRcXHRcXHRcXHRcXHQgZW51bSB0dmFfdHlwZSB0eXBlLFxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKVxcbiAxMTg6XFx0e1xcbiAxMTk6XFx0XFx0Y29uc3QgYm9vbCBzbWFwcyA9IHR5cGUgPT0gVFZBX1NNQVBTO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjoxOC4xODc1NjkxNDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjAxMjg1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIE1NIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGB2bWFfaXNfc3BlY2lhbF9odWdlYCBqdW1wcyBvdXQuIFJpZ2h0LCBpdCdzIGNoZWNraW5nIGZvciB0aG9zZSBWTUFzIHRoYXQgYXJlIGVpdGhlciBgVk1fUEZOTUFQYCBvciBgVk1fTUlYRURNQVBgLi4uICpidXQqIG5vdCBEQVguIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIGlzIGFsbG93aW5nIFRIUCDigJMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyDigJMgb24gdGhlc2UgVk1BcyAqZHVyaW5nKiBhIHBhZ2UgZmF1bHQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIHRoaXMgd2FycmFudHMgYSBkZWVwIGRpdmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyBub3QganVzdCBhIG1pbm9yIHR3ZWFrLlxuXG5NeSBuZXh0IHBvaW50IGlzIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGV0aGVyIHRoZSBmdW5jdGlvbiBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGlzIGV4cG9ydGVkIG9yIHVzZWQgaW4gaGVhZGVycy4gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgZGlnZ2luZyBhcm91bmQgaW4gYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYC4gVGhhdCBoZWFkZXIgd2lsbCBsaWtlbHkgaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgbmV3IGFsbG93YW5jZSB0aWVzIGludG8gdGhlIGV4aXN0aW5nIGh1Z2UgcGFnZSBpbmZyYXN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB0aG9yb3VnaGx5LCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGl0IHJlbGllcyBvbiwgYW5kIHdoYXQgZGF0YSBpdCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBnb2luZyB0byBiZSBpbnRlcmVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjIzLjMxOTU4NTIzOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcdFxcdGlmICh0aHBfdm1hX3N1aXRhYmxlX29yZGVyKHZtYSwgYWRkciwgb3JkZXIpKVxcbiAyOTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI5MjpcXHRcXHRcXHRvcmRlciA9IG5leHRfb3JkZXIoXFx1MDAyNm9yZGVycywgb3JkZXIpO1xcbiAyOTM6XFx0XFx0fVxcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHRyZXR1cm4gb3JkZXJzO1xcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiAyOTk6XFx0XFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuIDMwMDpcXHRcXHRcXHRcXHRcXHRcXHQgZW51bSB0dmFfdHlwZSB0eXBlLFxcbiAzMDE6XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKTtcXG4gMzAyOlxcdFxcbiAzMDM6XFx0LyoqXFxuIDMwNDpcXHQgKiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMgLSBkZXRlcm1pbmUgaHVnZXBhZ2Ugb3JkZXJzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHZtYVxcbiAzMDU6XFx0ICogQHZtYTogIHRoZSB2bSBhcmVhIHRvIGNoZWNrXFxuIDMwNjpcXHQgKiBAdm1fZmxhZ3M6IHVzZSB0aGVzZSB2bV9mbGFncyBpbnN0ZWFkIG9mIHZtYS1cXHUwMDNldm1fZmxhZ3NcXG4gMzA3OlxcdCAqIEB0eXBlOiBUVkEgdHlwZVxcbiAzMDg6XFx0ICogQG9yZGVyczogYml0ZmllbGQgb2YgYWxsIG9yZGVycyB0byBjb25zaWRlclxcbiAzMDk6XFx0ICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MjMuMzE5NjkxNjQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzI4MTA1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgT3JkZXIgQWxsb3dhbmNlcyoqXG5cbk9rYXksIHNvIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaXNuJ3Qgc29tZSBvYnNjdXJlIHN0YXRpYyB2YXJpYWJsZTsgaXQncyByaWdodCB0aGVyZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIGRlY2xhcmVkIGluIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAuIFRoYXQgbWFrZXMgaXQgYSBzb2xpZCBmb2N1cyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgZm9yIGJvdGggYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBhbmQgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1c2VkLiBJJ3ZlIGZvdW5kIGEgZmV3OiBgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzYCBhbmQgYGh1Z2VwYWdlX3ZtYV9yZXZhbGlkYXRlYCB3aXRoaW4gYG1tL2todWdlcGFnZWQuY2AsIGB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVyc2AgaW4gYG1tL21lbW9yeS5jYCwgYW5kIGBhbGxvY19hbm9uX2ZvbGlvYCBhbHNvIGluIGBtbS9tZW1vcnkuY2AuXG5cblNpbmNlIGl0IGxvb2tzIGxpa2UgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpcyB0aGUgb25lIHRoYXQncyBiZWluZyBtb2RpZmllZCwgSSdsbCBzdGljayB3aXRoIHRoYXQgYXMgdGhlIG1haW4gZm9jdXMuIEl0J2xsIHNpbXBsaWZ5IHRoaW5ncyBhbmQga2VlcCBtZSBvbiB0cmFjay5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgc3Vycm91bmRpbmcgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjI5LjA1MjUwNTYyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NDAzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXFxuLS1cXG5tbS9LY29uZmlnLTg0NS1cXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04NDctXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODY0PWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy04NjktXFxubW0vS2NvbmZpZzo4NzA6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xcbm1tL0tjb25maWctODcxLVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctODc2LVxcbm1tL0tjb25maWc6ODc3OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9NQURWSVNFXFxubW0vS2NvbmZpZy04NzgtXFx0XFx0Ym9vbCBcXFwibWFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWctODg1LVxcbm1tL0tjb25maWc6ODg2OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9ORVZFUlxcbm1tL0tjb25maWctODg3LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTkwMi1cXG5tbS9LY29uZmlnOjkwMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTA0LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MTItXFxubW0vS2NvbmZpZzo5MTM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05MTQtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjAtXFxubW0vS2NvbmZpZzo5MjE6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTkyMi1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTI4LVxcbm1tL0tjb25maWc6OTI5OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTMwLVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTM4PWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy05NDctXFxubW0vS2NvbmZpZzo5NDg6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTk0OS1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWctOTU2LVxcbm1tL0tjb25maWc6OTU3OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xcbm1tL0tjb25maWctOTU4LVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctOTY0LVxcbm1tL0tjb25maWc6OTY1OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXFxubW0vS2NvbmZpZy05NjYtXFx0XFx0Ym9vbCBcXFwid2l0aGluX3NpemVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk3Mi1cXG5tbS9LY29uZmlnOjk3MzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0VcXG5tbS9LY29uZmlnLTk3NC1cXHRcXHRib29sIFxcXCJhZHZpc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjI5LjIxMDkxNDExMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwNzI3OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBrbm93IEkndmUgYmVlbiBoZXJlIGJlZm9yZSwgYW5kIHRoZSBiZXN0IHdheSB0byB1bnRhbmdsZSB0aGlzIG1lc3MgaXMgdXN1YWxseSB0byBkaWcgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEkgc2VlbSB0byByZWNhbGwgdGhhdCB0aGUgaW1wb3J0YW50IHN0dWZmIGlzIGNsdXN0ZXJlZCBhcm91bmQgbGluZSA4NDYsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIHN0YXJ0LiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG90aGVyIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciB0aGlzIG9uZSB0byB3b3JrIGNvcnJlY3RseS4gSXQncyB0aW1lIHRvIHB1dCBteSBleHBlcnQga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgY29uZmlnIHN5c3RlbSB0byB3b3JrIGFuZCB1bnJhdmVsIHRoaXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjozMi42MTE2NDQ2NTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NDA6XFx0XFx0ICBTYXkgWSBpZiB5b3VyIHN5c3RlbSBoYXMgbG90cyBvZiBtZW1vcnkuIFNheSBOIGlmIHlvdSBhcmVcXG4gODQxOlxcdFxcdCAgbWVtb3J5IGNvbnN0cmFpbmVkLlxcbiA4NDI6XFx0XFxuIDg0MzpcXHRjb25maWcgTU1fSURcXG4gODQ0OlxcdFxcdGRlZl9ib29sIG5cXG4gODQ1OlxcdFxcbiA4NDY6XFx0bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbiA4NDc6XFx0XFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4gODQ4OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFxcdTAwMjZcXHUwMDI2ICFQUkVFTVBUX1JUXFxuIDg0OTpcXHRcXHRzZWxlY3QgQ09NUEFDVElPTlxcbiA4NTA6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbiA4NTE6XFx0XFx0c2VsZWN0IE1NX0lEXFxuIDg1MjpcXHRcXHRoZWxwXFxuIDg1MzpcXHRcXHQgIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbGxvd3MgdGhlIGtlcm5lbCB0byB1c2UgaHVnZSBwYWdlcyBhbmRcXG4gODU0OlxcdFxcdCAgaHVnZSB0bGIgdHJhbnNwYXJlbnRseSB0byB0aGUgYXBwbGljYXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiA4NTU6XFx0XFx0ICBUaGlzIGZlYXR1cmUgY2FuIGltcHJvdmUgY29tcHV0aW5nIHBlcmZvcm1hbmNlIHRvIGNlcnRhaW5cXG4gODU2OlxcdFxcdCAgYXBwbGljYXRpb25zIGJ5IHNwZWVkaW5nIHVwIHBhZ2UgZmF1bHRzIGR1cmluZyBtZW1vcnlcXG4gODU3OlxcdFxcdCAgYWxsb2NhdGlvbiwgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiB0bGIgbWlzc2VzIGFuZCBieSBzcGVlZGluZ1xcbiA4NTg6XFx0XFx0ICB1cCB0aGUgcGFnZXRhYmxlIHdhbGtpbmcuXFxuIDg1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MzIuNjExNzQyMjkyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTg0ODI4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IEEgRGVlcCBEaXZlIGludG8gVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBjb25maWcgY2F0Y2hlcyBteSBleWUuIFRoYXQncyB0aGUga2V5LCByaWdodD8gQW5kIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agd2l0aGluIGBtbS9odWdlX21lbW9yeS5jYC4gVGhhdCdzICpkZWZpbml0ZWx5KiBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIFRIUCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSB2aWEgYG1tYXBgIGFuZCBwYWdlIGZhdWx0cy4uLiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgc2lnbmlmaWNhbnQuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBxdWlja2x5IGNvbmZpcm1pbmcgaWYgYW55ICpvdGhlciogY29uZmlncyBhcmUgbmVlZGVkLCBidXQgaXQgc2VlbXMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyB0aGUgb25seSBtYWpvciBvbmUgdGhhdCdzIHJlbGV2YW50LlxuXG5NeSBmb2N1cyBpcyBmaXJtbHkgc2V0IG9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgYW5kIHRoZSBjb250ZXh0IG9mIHRob3NlIHNwZWNpYWwgaHVnZSBWTUFzIGxpa2UgYFBGTk1BUGAgb3IgYE1JWEVETUFQYCBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaGFzIHRoZSBoYWxsbWFya3Mgb2Ygc29tZXRoaW5nIHJpcGUgZm9yIGV4cGxvcmF0aW9uLiBJJ2xsIGdldCB0aGUgcmVzdWx0cyBzZXQgdXAgYXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NSwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjozOC45MTAyMjcxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ4NjM3NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIHRvIGFsbG93IFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgZm9yIHNwZWNpYWwgaHVnZSBWTUFzIChsaWtlIFBGTk1BUCBvciBNSVhFRE1BUCkgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsfh5c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 06:12:47 +0000 UTC FinishedAt: 2026-08-05 07:06:40 +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": "4ae2eacd28f540ce15d4f60b523eb9ddc5149047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE" ], "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": "4ae2eacd28f540ce15d4f60b523eb9ddc5149047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TRANSPARENT_HUGEPAGE" ], "series_id": "c73ae511-8bc9-41c3-89fa-9b68c386b76c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__thp_vma_allowable_orders" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDc6MDU6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDU4Y2FiZTZhZjMzZDAuLjZkZmVmNTUwMGEwNTQgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMTM5LDggJiM0MzsxMzksMTIgQEAgdW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdGlmICh0aHBfZGlzYWJsZWRfYnlfaHcoKSB8fCB2bWFfdGhwX2Rpc2FibGVkKHZtYSwgdm1fZmxhZ3MsIGZvcmNlZF9jb2xsYXBzZSkpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Lyoga2h1Z2VwYWdlZCBkb2VzbiYjMzk7dCBjb2xsYXBzZSBEQVggdm1hLCBidXQgcGFnZSBmYXVsdCBpcyBmaW5lLiAqL1xuLVx0aWYgKHZtYV9pc19kYXgodm1hKSlcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGtodWdlcGFnZWQgZG9lc24mIzM5O3QgY29sbGFwc2UgREFYIG9yIHNwZWNpYWwgaHVnZSBWTUFzLCBidXQgcGFnZVxuJiM0MztcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcbiYjNDM7XHQgKiBwb2xpY3kgaXMgaXJyZWxldmFudCBmb3IgdGhlbS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbiBcdFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcbiBcbiBcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDc6MDU6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCA1OGNhYmU2YWYzM2QwLi42ZGZlZjU1MDBhMDU0IDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTEzOSw4ICYjNDM7MTM5LDEyIEBAIHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJaWYgKHRocF9kaXNhYmxlZF9ieV9odygpIHx8IHZtYV90aHBfZGlzYWJsZWQodm1hLCB2bV9mbGFncywgZm9yY2VkX2NvbGxhcHNlKSkKIAkJcmV0dXJuIDA7CiAKLQkvKiBraHVnZXBhZ2VkIGRvZXNuJiMzOTt0IGNvbGxhcHNlIERBWCB2bWEsIGJ1dCBwYWdlIGZhdWx0IGlzIGZpbmUuICovCi0JaWYgKHZtYV9pc19kYXgodm1hKSkKJiM0MzsJLyoKJiM0MzsJICoga2h1Z2VwYWdlZCBkb2VzbiYjMzk7dCBjb2xsYXBzZSBEQVggb3Igc3BlY2lhbCBodWdlIFZNQXMsIGJ1dCBwYWdlCiYjNDM7CSAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFAKJiM0MzsJICogcG9saWN5IGlzIGlycmVsZXZhbnQgZm9yIHRoZW0uCiYjNDM7CSAqLwomIzQzOwlpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSkKIAkJcmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDsKIAogCS8qCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVEhQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vaHVnZV9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpYCB0byB0aGUgYGlmICh2bWFfaXNfZGF4KHZtYSkpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIOKAkyBhbmQgY29uZmlybSDigJMgdGhhdCBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGRlYWxzIHdpdGggVHJhbnNwYXJlbnQgSHVnZSBQYWdlcywgc3BlY2lmaWNhbGx5IGRldGVybWluaW5nIHdoaWNoIGh1Z2UgcGFnZSBvcmRlcnMgYXJlIGFjY2VwdGFibGUgZm9yIGEgcGFydGljdWxhciBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb25zIGFyaXNlLiBXaGF0IGV4YWN0bHkgKmlzKiBgdm1hX2lzX3NwZWNpYWxfaHVnZWA/IEl0JiMzOTtzIGNsZWFybHkgaW1wb3J0YW50IGVub3VnaCB0byBiZSBhZGRlZCB0byB0aGlzIGNyaXRpY2FsIGNvbmRpdGlvbmFsIHN0YXRlbWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIERBWCBWTUFzLiBXaHkgYXJlIHdlIHRyZWF0aW5nIHNwZWNpYWwgaHVnZSBWTUFzIGluIHRoZSBzYW1lIHdheSB3ZSYjMzk7cmUgaGFuZGxpbmcgREFYIFZNQXM/IFdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIGRvZXMgdGhpcyBwYXRjaCBhZGRyZXNzPyBXaGF0IGFyZSB0aGUgcHJhY3RpY2FsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agc28gSSBjYW4gc2VlIGhvdyB0aGlzIG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmM9MTA3PXN0YXRpYyBib29sIHZtYV9pc19zcGVjaWFsX2h1Z2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xMTMtXG5tbS9odWdlX21lbW9yeS5jOjExNDp1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxubW0vaHVnZV9tZW1vcnkuYy0xMTUtXHRcdFx0XHRcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUga2VybmVsIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHBpbnBvaW50IGFsbCB0aGUgY2FsbCBzaXRlcyDigJMgbW9zdCBsaWtlbHkgYSBjb21iaW5hdGlvbiBvZiBgZ3JlcGAsIHBvdGVudGlhbGx5IGBjc2NvcGVgIG9yIGBjc2VhcmNoYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBgcGVyZmAgYW5hbHlzaXMgaWYgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLCBidXQgY29uZmlybWluZyB0aGUgY29udGV4dCBpcyBlc3NlbnRpYWwgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMuIFRoaXMgc2VhcmNoIHNob3VsZCBxdWlja2x5IHJldmVhbCB0aGUgY3JpdGljYWwgcGF0aHMgYW5kIGFueSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgaXQgaW50ZXJhY3RzIHdpdGgsIGFsbG93aW5nIG1lIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBUSFAgYWxsb2NhdGlvbiBkZWNpc2lvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBidWlsZCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZnVuY3Rpb25zIHJvbGUsIGFuZCBwb3NzaWJsZSBlZGdlIGNhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmg9Mjc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHBfdm1hX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0yOTctXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoyOTg6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTI5OS1cdFx0XHRcdFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9MzE5PXVuc2lnbmVkIGxvbmcgdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTM0MS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjM0MjpcdHJldHVybiBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZtX2ZsYWdzLCB0eXBlLCBvcmRlcnMpO1xuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMzQzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjY2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBmdW5jdGlvbiwgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AsIGFuZCBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gVGhlIGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgY3J1Y2lhbCB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGxhcmdlciBmbG93IG9mIGxvZ2ljIGl0JiMzOTtzIGVtYmVkZGVkIHdpdGhpbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBmb3JtIGEgc29saWQgbWVudGFsIG1vZGVsLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgdGhvc2UgdXNhZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RocF92bWFfYWxsb3dhYmxlX29yZGVycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTEwNz1zdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMTEzLVxubW0vaHVnZV9tZW1vcnkuYzoxMTQ6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2VfbWVtb3J5LmMtMTE1LVx0XHRcdFx0XHQgdm1fZmxhZ3NfdCB2bV9mbGFncyxcbi0tXG5tbS9odWdlX21lbW9yeS5jLTE5Mi1cdFx0ICogRW5mb3JjZSBUSFAgY29sbGFwc2UgcmVxdWlyZW1lbnRzIGFzIG5lY2Vzc2FyeS4gQW5vbnltb3VzIHZtYXNcbm1tL2h1Z2VfbWVtb3J5LmM6MTkzOlx0XHQgKiB3ZXJlIGFscmVhZHkgaGFuZGxlZCBpbiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKS5cbm1tL2h1Z2VfbWVtb3J5LmMtMTk0LVx0XHQgKi9cbi0tXG5tbS9raHVnZXBhZ2VkLmM9NTcyPXN0YXRpYyB1bnNpZ25lZCBsb25nIGNvbGxhcHNlX3Bvc3NpYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9raHVnZXBhZ2VkLmMtNTgyLVxubW0va2h1Z2VwYWdlZC5jOjU4MzpcdHJldHVybiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bV9mbGFncywgdHZhX2ZsYWdzLCBvcmRlcnMpO1xubW0va2h1Z2VwYWdlZC5jLTU4NC19XG4tLVxubW0va2h1Z2VwYWdlZC5jPTEwNTI9c3RhdGljIGVudW0gc2Nhbl9yZXN1bHQgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbi0tXG5tbS9raHVnZXBhZ2VkLmMtMTA3NS1cdFx0cmV0dXJuIFNDQU5fQUREUkVTU19SQU5HRTtcbm1tL2todWdlcGFnZWQuYzoxMDc2Olx0aWYgKCF0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXHUwMDNldm1fZmxhZ3MsIHR5cGUsIEJJVChvcmRlcikpKVxubW0va2h1Z2VwYWdlZC5jLTEwNzctXHRcdHJldHVybiBTQ0FOX1ZNQV9DSEVDSztcbi0tXG5tbS9raHVnZXBhZ2VkLmMtMTA4MS1cdCAqXG5tbS9raHVnZXBhZ2VkLmM6MTA4MjpcdCAqIHRocF92bWFfYWxsb3dhYmxlX29yZGVycyBtYXkgcmV0dXJuIHRydWUgZm9yIHF1YWxpZmllZCBmaWxlXG5tbS9raHVnZXBhZ2VkLmMtMTA4My1cdCAqIHZtYXMuXG4tLVxubW0vbWVtb3J5LmM9NDY2MT1zdGF0aWMgdW5zaWduZWQgbG9uZyB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy00NjkwLVx0ICovXG5tbS9tZW1vcnkuYzo0NjkxOlx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxubW0vbWVtb3J5LmMtNDY5Mi1cdFx0XHRcdFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xuLS1cbm1tL21lbW9yeS5jPTUxNjE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYW5vbl9mb2xpbyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9tZW1vcnkuYy01MTgzLVx0ICovXG5tbS9tZW1vcnkuYzo1MTg0Olx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxubW0vbWVtb3J5LmMtNTE4NS1cdFx0XHRcdFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRIUC1SZWxhdGVkIEtlcm5lbCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBzZWVuIGl0IHVzZWQgaW4gYSBmZXcga2V5IGFyZWFzOiBgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzYCwgYGh1Z2VwYWdlX3ZtYV9yZXZhbGlkYXRlYCwgYHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzYCwgYW5kIGBhbGxvY19hbm9uX2ZvbGlvYC4gVGhhdCYjMzk7cyBhIHNvbGlkIHNwcmVhZCwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBHaXZlbiBpdHMgcmVhY2ggYW5kIGZ1bmN0aW9uLCB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiBhcmVhIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBIaWdoLXZhbHVlIHRhcmdldCwgZnVuY3Rpb25hbGx5IHJlbGV2YW50LCBhbmQgcG90ZW50aWFsbHkgY29tcGxleC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBsdXJraW5nIGhlcmUuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSByZXF1aXJlZCBrZXJuZWwgY29uZmlndXJhdGlvbnMgZm9yIFRIUC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIGNvZGUgaXMgYWN0aXZlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbiBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdGVzdGluZyB0aGUgcmlnaHQgdGhpbmdzIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxuLS1cbm1tL0tjb25maWctODY5LVxubW0vS2NvbmZpZzo4NzA6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXG5tbS9LY29uZmlnLTg3MS1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg3Ni1cbm1tL0tjb25maWc6ODc3Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0Vcbm1tL0tjb25maWctODc4LVx0XHRib29sIFwmIzM0O21hZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4NS1cbm1tL0tjb25maWc6ODg2Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXG5tbS9LY29uZmlnLTg4Ny1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODkzPWNob2ljZVxuLS1cbm1tL0tjb25maWctOTAyLVxubW0vS2NvbmZpZzo5MDM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy05MDQtXHRcdGJvb2wgXCYjMzQ7bmV2ZXJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkxMi1cbm1tL0tjb25maWc6OTEzOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXG5tbS9LY29uZmlnLTkxNC1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyMC1cbm1tL0tjb25maWc6OTIxOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcbm1tL0tjb25maWctOTIyLVx0XHRib29sIFwmIzM0O3dpdGhpbl9zaXplXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05MjgtXG5tbS9LY29uZmlnOjkyOTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxubW0vS2NvbmZpZy05MzAtXHRcdGJvb2wgXCYjMzQ7YWR2aXNlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05NDctXG5tbS9LY29uZmlnOjk0ODpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0OS1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTU2LVxubW0vS2NvbmZpZzo5NTc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTU4LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTY0LVxubW0vS2NvbmZpZzo5NjU6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05NjYtXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk3Mi1cbm1tL0tjb25maWc6OTczOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTk3NC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYW5kIGB2bWFfaXNfc3BlY2lhbF9odWdlYCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBpbXB1bHNlIGhlcmUgaXMgY2xlYXI6IHdlJiMzOTtyZSB0aGlua2luZyBhYm91dCBUcmFuc3BhcmVudCBIdWdlcGFnZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIG5lZWQgZm9yIHRoZW0uIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBUaGUgdW5kZXJseWluZyBhc3N1bXB0aW9uIGlzIHdlIGFyZSBmYWNpbmcgc29tZSBwZXJmb3JtYW5jZSBjaGFsbGVuZ2Ugb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5IHRoYXQgd2UgYmVsaWV2ZSBjYW4gYmUgYWRkcmVzc2VkIGJ5IGxldmVyYWdpbmcgbGFyZ2VyIG1lbW9yeSBwYWdlcy4gVGhlIGNvbnRleHQgaXNuJiMzOTt0IGV4cGxpY2l0LCBidXQgdGhlIGltcGxpZWQgdXJnZW5jeSBzdWdnZXN0cyB0aGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGNvbnNpZGVyYXRpb24uCgpUaGUgbmV4dCB0aG91Z2h0IGlzIHRvIGRlbHZlIGludG8gYSBzcGVjaWZpYyBmdW5jdGlvbiB0aGF0IG11c3QgYmUgcGVydGluZW50IHRvIHRoaXMgaXNzdWUuIEl0IG11c3QgYmUgd29ydGggaW52ZXN0aWdhdGluZywgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgaW50byBgdm1hX2lzX3NwZWNpYWxfaHVnZWAuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZm9jdXMgaXMgb24gYSBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGFuZCBkZXRlcm1pbmluZyB3aGV0aGVyIGl0JiMzOTtzIHNvbWVob3cgYXNzb2NpYXRlZCB3aXRoIGh1Z2UgcGFnZXMgaW4gYSAmIzM0O3NwZWNpYWwmIzM0OyBvciBub24tc3RhbmRhcmQgd2F5LiBXZSBhcmUgY2xlYXJseSBhdHRlbXB0aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIG9yIG1hbmFnZXMgVk1BcyBpbiByZWxhdGlvbiB0byBodWdlIHBhZ2VzLiBUaGlzIG11c3QgYmUgYW4gaW1wb3J0YW50IGZhY3RvciB0byBjb25zaWRlciBhbmQgZnVydGhlciBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1hX2lzX3NwZWNpYWxfaHVnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTg4PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlX3RocF9lbmFibGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMTA2LS8qIElmIHJldHVybnMgdHJ1ZSwgd2UgYXJlIHVuYWJsZSB0byBhY2Nlc3MgdGhlIFZNQSYjMzk7cyBmb2xpb3MuICovXG5tbS9odWdlX21lbW9yeS5jOjEwNzpzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxubW0vaHVnZV9tZW1vcnkuYy0xMDgte1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9MTE0PXVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0xMjYtXHRcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9BTk9OO1xubW0vaHVnZV9tZW1vcnkuYzoxMjc6XHRlbHNlIGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxubW0vaHVnZV9tZW1vcnkuYy0xMjgtXHRcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9TUEVDSUFMX0RBWDtcbi0tXG5tbS9odWdlX21lbW9yeS5jLTE0Ni1cdCAqL1xubW0vaHVnZV9tZW1vcnkuYzoxNDc6XHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ4LVx0XHRyZXR1cm4gaW5fcGYgPyBvcmRlcnMgOiAwO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9MjkwMD1pbnQgemFwX2h1Z2VfcHVkKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMjkxMi1cdHRsYl9yZW1vdmVfcHVkX3RsYl9lbnRyeSh0bGIsIHB1ZCwgYWRkcik7XG5tbS9odWdlX21lbW9yeS5jOjI5MTM6XHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKSB7XG5tbS9odWdlX21lbW9yeS5jLTI5MTQtXHRcdHNwaW5fdW5sb2NrKHB0bCk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zMDM0PXN0YXRpYyB2b2lkIF9fc3BsaXRfaHVnZV9wbWRfbG9ja2VkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBwbWRfdCAqcG1kLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzA2My1cdFx0XHR6YXBfZGVwb3NpdGVkX3RhYmxlKG1tLCBwbWQpO1xubW0vaHVnZV9tZW1vcnkuYzozMDY0Olx0XHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxubW0vaHVnZV9tZW1vcnkuYy0zMDY1LVx0XHRcdHJldHVybjtcbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ1OTQ9c3RhdGljIGlubGluZSBib29sIHZtYV9ub3Rfc3VpdGFibGVfZm9yX3RocF9zcGxpdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQ1OTctXHRcdHJldHVybiB0cnVlO1xubW0vaHVnZV9tZW1vcnkuYzo0NTk4Olx0aWYgKHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbm1tL2h1Z2VfbWVtb3J5LmMtNDU5OS1cdFx0cmV0dXJuIHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMzcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgdm1hX2lzX3NwZWNpYWxfaHVnZWAqKgoKQWxyaWdodCwgSSYjMzk7bSBlbmNvdW50ZXJpbmcgYHZtYV9pc19zcGVjaWFsX2h1Z2VgIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBwaW4gZG93biBleGFjdGx5IHdoYXQgdGhpcyBmdW5jdGlvbiBzaWduaWZpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IGZyYW1ld29yay4gVGhlIG5hbWUgaXRzZWxmIGhpbnRzIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIHNwZWNpYWwgb3IgbGFyZ2UgcGFnZXMgKGh1Z2UgcGFnZXMpLiBTbywgSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyAmIzM0O29rYXksIHRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBnaXZlbiBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGh1Z2UgcGFnZSwgb3Igc29tZSAqc3BlY2lhbCogZmxhdm9yIG9mIGh1Z2UgcGFnZS4mIzM0OyBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdG8gcXVpY2tseSByZWZlcmVuY2UgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIGhlYWRlciBmaWxlcyByZWxhdGVkIHRvIFZNQXMgYW5kIGh1Z2VwYWdlcy4gVGhhdCYjMzk7cyBteSBpbW1lZGlhdGUgbmV4dCBzdGVwOyBnZXQgdGhlIHByZWNpc2UgZGVmaW5pdGlvbiwgdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgYW5kIHNlZSBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIGFueSBzcGVjaWZpYywgcXVpcmt5IHVzZS1jYXNlcyBmb3IgaHVnZSBwYWdlcy4gSSYjMzk7bGwgbmVlZCB0byBrbm93OiBJcyBpdCBjaGVja2luZyBmb3IgZ2VuZXJhbCBodWdlIHBhZ2UgYWxsb2NhdGlvbj8gRG9lcyBpdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBodWdlIHBhZ2VzPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgZmxhZ3MgaW52b2x2ZWQ/IEl0JiMzOTtzIGFsbCBhYm91dCBwcmVjaXNpb24gaGVyZSwgbm8gcm9vbSBmb3IgZ3Vlc3N3b3JrLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0XHRpZiAoIW1hcHBpbmdfcG1kX2ZvbGlvX3N1cHBvcnQodm1hLVx1MDAzZXZtX2ZpbGUtXHUwMDNlZl9tYXBwaW5nKSlcbiAxMDE6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDEwMjpcdFxuIDEwMzpcdFx0cmV0dXJuIFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKTtcbiAxMDQ6XHR9XG4gMTA1Olx0XG4gMTA2Olx0LyogSWYgcmV0dXJucyB0cnVlLCB3ZSBhcmUgdW5hYmxlIHRvIGFjY2VzcyB0aGUgVk1BJiMzOTtzIGZvbGlvcy4gKi9cbiAxMDc6XHRzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDEwODpcdHtcbiAxMDk6XHRcdGlmICh2bWFfaXNfZGF4KHZtYSkpXG4gMTEwOlx0XHRcdHJldHVybiBmYWxzZTtcbiAxMTE6XHRcdHJldHVybiB2bWFfdGVzdF9hbnkodm1hLCBWTUFfUEZOTUFQX0JJVCwgVk1BX01JWEVETUFQX0JJVCk7XG4gMTEyOlx0fVxuIDExMzpcdFxuIDExNDpcdHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gMTE1Olx0XHRcdFx0XHRcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxuIDExNjpcdFx0XHRcdFx0XHQgZW51bSB0dmFfdHlwZSB0eXBlLFxuIDExNzpcdFx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyBvcmRlcnMpXG4gMTE4Olx0e1xuIDExOTpcdFx0Y29uc3QgYm9vbCBzbWFwcyA9IHR5cGUgPT0gVFZBX1NNQVBTO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODc0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgTU0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgdm1hX2lzX3NwZWNpYWxfaHVnZWAganVtcHMgb3V0LiBSaWdodCwgaXQmIzM5O3MgY2hlY2tpbmcgZm9yIHRob3NlIFZNQXMgdGhhdCBhcmUgZWl0aGVyIGBWTV9QRk5NQVBgIG9yIGBWTV9NSVhFRE1BUGAuLi4gKmJ1dCogbm90IERBWC4gVGhlIGNydXggb2YgdGhpcyBjaGFuZ2UgaXMgYWxsb3dpbmcgVEhQIOKAkyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIOKAkyBvbiB0aGVzZSBWTUFzICpkdXJpbmcqIGEgcGFnZSBmYXVsdC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIHRoaXMgd2FycmFudHMgYSBkZWVwIGRpdmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQmIzM5O3Mgbm90IGp1c3QgYSBtaW5vciB0d2Vhay4KCk15IG5leHQgcG9pbnQgaXMgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaXMgZXhwb3J0ZWQgb3IgdXNlZCBpbiBoZWFkZXJzLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBkaWdnaW5nIGFyb3VuZCBpbiBgaW5jbHVkZS9saW51eC9odWdlX21tLmhgLiBUaGF0IGhlYWRlciB3aWxsIGxpa2VseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBuZXcgYWxsb3dhbmNlIHRpZXMgaW50byB0aGUgZXhpc3RpbmcgaHVnZSBwYWdlIGluZnJhc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIHRob3JvdWdobHksIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGl0IHJlbGllcyBvbiwgYW5kIHdoYXQgZGF0YSBpdCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBnb2luZyB0byBiZSBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjkwOlx0XHRcdGlmICh0aHBfdm1hX3N1aXRhYmxlX29yZGVyKHZtYSwgYWRkciwgb3JkZXIpKVxuIDI5MTpcdFx0XHRcdGJyZWFrO1xuIDI5MjpcdFx0XHRvcmRlciA9IG5leHRfb3JkZXIoXHUwMDI2b3JkZXJzLCBvcmRlcik7XG4gMjkzOlx0XHR9XG4gMjk0Olx0XG4gMjk1Olx0XHRyZXR1cm4gb3JkZXJzO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiAyOTg6XHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIDI5OTpcdFx0XHRcdFx0XHQgdm1fZmxhZ3NfdCB2bV9mbGFncyxcbiAzMDA6XHRcdFx0XHRcdFx0IGVudW0gdHZhX3R5cGUgdHlwZSxcbiAzMDE6XHRcdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKTtcbiAzMDI6XHRcbiAzMDM6XHQvKipcbiAzMDQ6XHQgKiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMgLSBkZXRlcm1pbmUgaHVnZXBhZ2Ugb3JkZXJzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHZtYVxuIDMwNTpcdCAqIEB2bWE6ICB0aGUgdm0gYXJlYSB0byBjaGVja1xuIDMwNjpcdCAqIEB2bV9mbGFnczogdXNlIHRoZXNlIHZtX2ZsYWdzIGluc3RlYWQgb2Ygdm1hLVx1MDAzZXZtX2ZsYWdzXG4gMzA3Olx0ICogQHR5cGU6IFRWQSB0eXBlXG4gMzA4Olx0ICogQG9yZGVyczogYml0ZmllbGQgb2YgYWxsIG9yZGVycyB0byBjb25zaWRlclxuIDMwOTpcdCAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgT3JkZXIgQWxsb3dhbmNlcyoqCgpPa2F5LCBzbyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGlzbiYjMzk7dCBzb21lIG9ic2N1cmUgc3RhdGljIHZhcmlhYmxlOyBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIGRlY2xhcmVkIGluIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAuIFRoYXQgbWFrZXMgaXQgYSBzb2xpZCBmb2N1cyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIGZvciBib3RoIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgYW5kIGB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdXNlZC4gSSYjMzk7dmUgZm91bmQgYSBmZXc6IGBjb2xsYXBzZV9wb3NzaWJsZV9vcmRlcnNgIGFuZCBgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGVgIHdpdGhpbiBgbW0va2h1Z2VwYWdlZC5jYCwgYHRocF9zd2FwaW5fc3VpdGFibGVfb3JkZXJzYCBpbiBgbW0vbWVtb3J5LmNgLCBhbmQgYGFsbG9jX2Fub25fZm9saW9gIGFsc28gaW4gYG1tL21lbW9yeS5jYC4KClNpbmNlIGl0IGxvb2tzIGxpa2UgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpcyB0aGUgb25lIHRoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQsIEkmIzM5O2xsIHN0aWNrIHdpdGggdGhhdCBhcyB0aGUgbWFpbiBmb2N1cy4gSXQmIzM5O2xsIHNpbXBsaWZ5IHRoaW5ncyBhbmQga2VlcCBtZSBvbiB0cmFjay4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBzdXJyb3VuZGluZyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXG4tLVxubW0vS2NvbmZpZy04NDUtXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG5tbS9LY29uZmlnLTg0Ny1cdGJvb2wgXCYjMzQ7VHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODY0PWNob2ljZVxuLS1cbm1tL0tjb25maWctODY5LVxubW0vS2NvbmZpZzo4NzA6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXG5tbS9LY29uZmlnLTg3MS1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg3Ni1cbm1tL0tjb25maWc6ODc3Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0Vcbm1tL0tjb25maWctODc4LVx0XHRib29sIFwmIzM0O21hZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTg4NS1cbm1tL0tjb25maWc6ODg2Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXG5tbS9LY29uZmlnLTg4Ny1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWc9ODkzPWNob2ljZVxuLS1cbm1tL0tjb25maWctOTAyLVxubW0vS2NvbmZpZzo5MDM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxubW0vS2NvbmZpZy05MDQtXHRcdGJvb2wgXCYjMzQ7bmV2ZXJcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkxMi1cbm1tL0tjb25maWc6OTEzOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXG5tbS9LY29uZmlnLTkxNC1cdFx0Ym9vbCBcJiMzNDthbHdheXNcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyMC1cbm1tL0tjb25maWc6OTIxOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcbm1tL0tjb25maWctOTIyLVx0XHRib29sIFwmIzM0O3dpdGhpbl9zaXplXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05MjgtXG5tbS9LY29uZmlnOjkyOTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxubW0vS2NvbmZpZy05MzAtXHRcdGJvb2wgXCYjMzQ7YWR2aXNlXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05NDctXG5tbS9LY29uZmlnOjk0ODpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXG5tbS9LY29uZmlnLTk0OS1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTU2LVxubW0vS2NvbmZpZzo5NTc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTU4LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTY0LVxubW0vS2NvbmZpZzo5NjU6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05NjYtXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTk3Mi1cbm1tL0tjb25maWc6OTczOlx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTk3NC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIEkga25vdyBJJiMzOTt2ZSBiZWVuIGhlcmUgYmVmb3JlLCBhbmQgdGhlIGJlc3Qgd2F5IHRvIHVudGFuZ2xlIHRoaXMgbWVzcyBpcyB1c3VhbGx5IHRvIGRpZyBpbnRvIHRoZSBgbW0vS2NvbmZpZ2AgZmlsZS4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZSBpbXBvcnRhbnQgc3R1ZmYgaXMgY2x1c3RlcmVkIGFyb3VuZCBsaW5lIDg0Niwgc28gdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBzdGFydC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgdGhpcyBvbmUgdG8gd29yayBjb3JyZWN0bHkuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG15IGV4cGVydCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbCBjb25maWcgc3lzdGVtIHRvIHdvcmsgYW5kIHVucmF2ZWwgdGhpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NDA6XHRcdCAgU2F5IFkgaWYgeW91ciBzeXN0ZW0gaGFzIGxvdHMgb2YgbWVtb3J5LiBTYXkgTiBpZiB5b3UgYXJlXG4gODQxOlx0XHQgIG1lbW9yeSBjb25zdHJhaW5lZC5cbiA4NDI6XHRcbiA4NDM6XHRjb25maWcgTU1fSURcbiA4NDQ6XHRcdGRlZl9ib29sIG5cbiA4NDU6XHRcbiA4NDY6XHRtZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4gODQ3Olx0XHRib29sIFwmIzM0O1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcJiMzNDtcbiA4NDg6XHRcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFx1MDAyNlx1MDAyNiAhUFJFRU1QVF9SVFxuIDg0OTpcdFx0c2VsZWN0IENPTVBBQ1RJT05cbiA4NTA6XHRcdHNlbGVjdCBYQVJSQVlfTVVMVElcbiA4NTE6XHRcdHNlbGVjdCBNTV9JRFxuIDg1MjpcdFx0aGVscFxuIDg1MzpcdFx0ICBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdXNlIGh1Z2UgcGFnZXMgYW5kXG4gODU0Olx0XHQgIGh1Z2UgdGxiIHRyYW5zcGFyZW50bHkgdG8gdGhlIGFwcGxpY2F0aW9ucyB3aGVuZXZlciBwb3NzaWJsZS5cbiA4NTU6XHRcdCAgVGhpcyBmZWF0dXJlIGNhbiBpbXByb3ZlIGNvbXB1dGluZyBwZXJmb3JtYW5jZSB0byBjZXJ0YWluXG4gODU2Olx0XHQgIGFwcGxpY2F0aW9ucyBieSBzcGVlZGluZyB1cCBwYWdlIGZhdWx0cyBkdXJpbmcgbWVtb3J5XG4gODU3Olx0XHQgIGFsbG9jYXRpb24sIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgdGxiIG1pc3NlcyBhbmQgYnkgc3BlZWRpbmdcbiA4NTg6XHRcdCAgdXAgdGhlIHBhZ2V0YWJsZSB3YWxraW5nLlxuIDg1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjk1CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogQSBEZWVwIERpdmUgaW50byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgY29uZmlnIGNhdGNoZXMgbXkgZXllLiBUaGF0JiMzOTtzIHRoZSBrZXksIHJpZ2h0PyBBbmQgdGhlIHBhdGNoIGZvY3VzZXMgb24gYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCB3aXRoaW4gYG1tL2h1Z2VfbWVtb3J5LmNgLiBUaGF0JiMzOTtzICpkZWZpbml0ZWx5KiBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIFRIUCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSB2aWEgYG1tYXBgIGFuZCBwYWdlIGZhdWx0cy4uLiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgc2lnbmlmaWNhbnQuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIHF1aWNrbHkgY29uZmlybWluZyBpZiBhbnkgKm90aGVyKiBjb25maWdzIGFyZSBuZWVkZWQsIGJ1dCBpdCBzZWVtcyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIHRoZSBvbmx5IG1ham9yIG9uZSB0aGF0JiMzOTtzIHJlbGV2YW50LgoKTXkgZm9jdXMgaXMgZmlybWx5IHNldCBvbiBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGFuZCB0aGUgY29udGV4dCBvZiB0aG9zZSBzcGVjaWFsIGh1Z2UgVk1BcyBsaWtlIGBQRk5NQVBgIG9yIGBNSVhFRE1BUGAgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGhhcyB0aGUgaGFsbG1hcmtzIG9mIHNvbWV0aGluZyByaXBlIGZvciBleHBsb3JhdGlvbi4gSSYjMzk7bGwgZ2V0IHRoZSByZXN1bHRzIHNldCB1cCBhcyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpbiBgbW0vaHVnZV9tZW1vcnkuY2AgdG8gYWxsb3cgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSBmb3Igc3BlY2lhbCBodWdlIFZNQXMgKGxpa2UgUEZOTUFQIG9yIE1JWEVETUFQKSBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTEuMDUyMjAxNDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5OTI5MDY3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIHRvIGFsbG93IFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgZm9yIHNwZWNpYWwgaHVnZSBWTUFzIChsaWtlIFBGTk1BUCBvciBNSVhFRE1BUCkgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTEuMDUyMjA5OTA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEyNzcyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNkYzQ2ZThkZjRjNTQ4MTQyMWMwODRlYzg1NGVlYWFhYzVkN2ZlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDA3OjA1OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXFxuaW5kZXggNThjYWJlNmFmMzNkMC4uNmRmZWY1NTAwYTA1NCAxMDA2NDRcXG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXFxuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xcbkBAIC0xMzksOCArMTM5LDEyIEBAIHVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdGlmICh0aHBfZGlzYWJsZWRfYnlfaHcoKSB8fCB2bWFfdGhwX2Rpc2FibGVkKHZtYSwgdm1fZmxhZ3MsIGZvcmNlZF9jb2xsYXBzZSkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0Lyoga2h1Z2VwYWdlZCBkb2Vzbid0IGNvbGxhcHNlIERBWCB2bWEsIGJ1dCBwYWdlIGZhdWx0IGlzIGZpbmUuICovXFxuLVxcdGlmICh2bWFfaXNfZGF4KHZtYSkpXFxuK1xcdC8qXFxuK1xcdCAqIGtodWdlcGFnZWQgZG9lc24ndCBjb2xsYXBzZSBEQVggb3Igc3BlY2lhbCBodWdlIFZNQXMsIGJ1dCBwYWdlXFxuK1xcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcXG4rXFx0ICogcG9saWN5IGlzIGlycmVsZXZhbnQgZm9yIHRoZW0uXFxuK1xcdCAqL1xcbitcXHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcXG4gXFx0XFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcXG4gXFxuIFxcdC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA1OjUyLjI2NjA2Mzg0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2Nzc5MDMxMzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczZGM0NmU4ZGY0YzU0ODE0MjFjMDg0ZWM4NTRlZWFhYWM1ZDdmZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA3OjA1OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcbmluZGV4IDU4Y2FiZTZhZjMzZDAuLjZkZmVmNTUwMGEwNTQgMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMTM5LDggKzEzOSwxMiBAQCB1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0aWYgKHRocF9kaXNhYmxlZF9ieV9odygpIHx8IHZtYV90aHBfZGlzYWJsZWQodm1hLCB2bV9mbGFncywgZm9yY2VkX2NvbGxhcHNlKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBraHVnZXBhZ2VkIGRvZXNuJ3QgY29sbGFwc2UgREFYIHZtYSwgYnV0IHBhZ2UgZmF1bHQgaXMgZmluZS4gKi9cbi1cdGlmICh2bWFfaXNfZGF4KHZtYSkpXG4rXHQvKlxuK1x0ICoga2h1Z2VwYWdlZCBkb2Vzbid0IGNvbGxhcHNlIERBWCBvciBzcGVjaWFsIGh1Z2UgVk1BcywgYnV0IHBhZ2VcbitcdCAqIGZhdWx0IGlzIGZpbmUuIFRoZXNlIG1hcCBwaHlzaWNhbCBhZGRyZXNzZXMgZGlyZWN0bHkg4oCUIHRoZSBUSFBcbitcdCAqIHBvbGljeSBpcyBpcnJlbGV2YW50IGZvciB0aGVtLlxuK1x0ICovXG4rXHRpZiAodm1hX2lzX2RheCh2bWEpIHx8IHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcbiBcdFx0cmV0dXJuIGluX3BmID8gb3JkZXJzIDogMDtcbiBcbiBcdC8qXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNTo1Mi4yNjYwNjU3OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDUwMzAzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRIUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS9odWdlX21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGB8fCB2bWFfaXNfc3BlY2lhbF9odWdlKHZtYSlgIHRvIHRoZSBgaWYgKHZtYV9pc19kYXgodm1hKSlgIGNvbmRpdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiDigJMgYW5kIGNvbmZpcm0g4oCTIHRoYXQgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBkZWFscyB3aXRoIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMsIHNwZWNpZmljYWxseSBkZXRlcm1pbmluZyB3aGljaCBodWdlIHBhZ2Ugb3JkZXJzIGFyZSBhY2NlcHRhYmxlIGZvciBhIHBhcnRpY3VsYXIgVmlydHVhbCBNZW1vcnkgQXJlYSAoVk1BKS4gVGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGVyZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbnMgYXJpc2UuIFdoYXQgZXhhY3RseSAqaXMqIGB2bWFfaXNfc3BlY2lhbF9odWdlYD8gSXQncyBjbGVhcmx5IGltcG9ydGFudCBlbm91Z2ggdG8gYmUgYWRkZWQgdG8gdGhpcyBjcml0aWNhbCBjb25kaXRpb25hbCBzdGF0ZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBEQVggVk1Bcy4gV2h5IGFyZSB3ZSB0cmVhdGluZyBzcGVjaWFsIGh1Z2UgVk1BcyBpbiB0aGUgc2FtZSB3YXkgd2UncmUgaGFuZGxpbmcgREFYIFZNQXM/IFdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIGRvZXMgdGhpcyBwYXRjaCBhZGRyZXNzPyBXaGF0IGFyZSB0aGUgcHJhY3RpY2FsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IG1hbmFnZW1lbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agc28gSSBjYW4gc2VlIGhvdyB0aGlzIG1vZGlmaWNhdGlvbiBhZmZlY3RzIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDU6NTcuMzE2MzcxMDQ1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjE2NjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0xMDc9c3RhdGljIGJvb2wgdm1hX2lzX3NwZWNpYWxfaHVnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTEzLVxcbm1tL2h1Z2VfbWVtb3J5LmM6MTE0OnVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxubW0vaHVnZV9tZW1vcnkuYy0xMTUtXFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA1OjU3LjgyMjU0MjU5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTAxMTcyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgdGhlIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgZnVuY3Rpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUga2VybmVsIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gcGlucG9pbnQgYWxsIHRoZSBjYWxsIHNpdGVzIOKAkyBtb3N0IGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIGBncmVwYCwgcG90ZW50aWFsbHkgYGNzY29wZWAgb3IgYGNzZWFyY2hgLCBhbmQgbWF5YmUgZXZlbiBzb21lIGBwZXJmYCBhbmFseXNpcyBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIGlzIHJlbGF0ZWQgdG8gVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyAoVEhQKSwgYnV0IGNvbmZpcm1pbmcgdGhlIGNvbnRleHQgaXMgZXNzZW50aWFsIGJlZm9yZSBtYWtpbmcgYW55IGFzc3VtcHRpb25zLiBUaGlzIHNlYXJjaCBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGNyaXRpY2FsIHBhdGhzIGFuZCBhbnkgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGludGVyYWN0cyB3aXRoLCBhbGxvd2luZyBtZSB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgVEhQIGFsbG9jYXRpb24gZGVjaXNpb25zLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgYnVpbGQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmN0aW9ucyByb2xlLCBhbmQgcG9zc2libGUgZWRnZSBjYXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjAyLjMxMjY2MjQ1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzAxNDg3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9Mjc1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHBfdm1hX3N1aXRhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTI5Ny1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoyOTg6dW5zaWduZWQgbG9uZyBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0yOTktXFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0zMTk9dW5zaWduZWQgbG9uZyB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0zNDEtXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MzQyOlxcdHJldHVybiBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVycyh2bWEsIHZtX2ZsYWdzLCB0eXBlLCBvcmRlcnMpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTM0My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjAzLjA4MjgyMjUxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODY1NzE0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGZ1bmN0aW9uLCBgdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCwgYW5kIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIFRoZSBmaXJzdCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIGl0J3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgY3J1Y2lhbCB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgdGhlIGxhcmdlciBmbG93IG9mIGxvZ2ljIGl0J3MgZW1iZWRkZWQgd2l0aGluLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGZvcm0gYSBzb2xpZCBtZW50YWwgbW9kZWwuIExldCdzIGdldCB0byB3b3JrIGFuZCBmaW5kIHRob3NlIHVzYWdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjA3LjA2OTQwMDE5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTc3NjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmM9MTA3PXN0YXRpYyBib29sIHZtYV9pc19zcGVjaWFsX2h1Z2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTExMy1cXG5tbS9odWdlX21lbW9yeS5jOjExNDp1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMTE1LVxcdFxcdFxcdFxcdFxcdCB2bV9mbGFnc190IHZtX2ZsYWdzLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0xOTItXFx0XFx0ICogRW5mb3JjZSBUSFAgY29sbGFwc2UgcmVxdWlyZW1lbnRzIGFzIG5lY2Vzc2FyeS4gQW5vbnltb3VzIHZtYXNcXG5tbS9odWdlX21lbW9yeS5jOjE5MzpcXHRcXHQgKiB3ZXJlIGFscmVhZHkgaGFuZGxlZCBpbiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKS5cXG5tbS9odWdlX21lbW9yeS5jLTE5NC1cXHRcXHQgKi9cXG4tLVxcbm1tL2todWdlcGFnZWQuYz01NzI9c3RhdGljIHVuc2lnbmVkIGxvbmcgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0va2h1Z2VwYWdlZC5jLTU4Mi1cXG5tbS9raHVnZXBhZ2VkLmM6NTgzOlxcdHJldHVybiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bV9mbGFncywgdHZhX2ZsYWdzLCBvcmRlcnMpO1xcbm1tL2todWdlcGFnZWQuYy01ODQtfVxcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTEwNTI9c3RhdGljIGVudW0gc2Nhbl9yZXN1bHQgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbm1tL2todWdlcGFnZWQuYy0xMDc1LVxcdFxcdHJldHVybiBTQ0FOX0FERFJFU1NfUkFOR0U7XFxubW0va2h1Z2VwYWdlZC5jOjEwNzY6XFx0aWYgKCF0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXFx1MDAzZXZtX2ZsYWdzLCB0eXBlLCBCSVQob3JkZXIpKSlcXG5tbS9raHVnZXBhZ2VkLmMtMTA3Ny1cXHRcXHRyZXR1cm4gU0NBTl9WTUFfQ0hFQ0s7XFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMTA4MS1cXHQgKlxcbm1tL2todWdlcGFnZWQuYzoxMDgyOlxcdCAqIHRocF92bWFfYWxsb3dhYmxlX29yZGVycyBtYXkgcmV0dXJuIHRydWUgZm9yIHF1YWxpZmllZCBmaWxlXFxubW0va2h1Z2VwYWdlZC5jLTEwODMtXFx0ICogdm1hcy5cXG4tLVxcbm1tL21lbW9yeS5jPTQ2NjE9c3RhdGljIHVuc2lnbmVkIGxvbmcgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnMoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5tbS9tZW1vcnkuYy00NjkwLVxcdCAqL1xcbm1tL21lbW9yeS5jOjQ2OTE6XFx0b3JkZXJzID0gdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHZtYSwgdm1hLVxcdTAwM2V2bV9mbGFncywgVFZBX1BBR0VGQVVMVCxcXG5tbS9tZW1vcnkuYy00NjkyLVxcdFxcdFxcdFxcdFxcdCAgQklUKFBNRF9PUkRFUikgLSAxKTtcXG4tLVxcbm1tL21lbW9yeS5jPTUxNjE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYW5vbl9mb2xpbyhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbm1tL21lbW9yeS5jLTUxODMtXFx0ICovXFxubW0vbWVtb3J5LmM6NTE4NDpcXHRvcmRlcnMgPSB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnModm1hLCB2bWEtXFx1MDAzZXZtX2ZsYWdzLCBUVkFfUEFHRUZBVUxULFxcbm1tL21lbW9yeS5jLTUxODUtXFx0XFx0XFx0XFx0XFx0ICBCSVQoUE1EX09SREVSKSAtIDEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjowNy4xNDExODIxMDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODMyNTcwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVEhQLVJlbGF0ZWQgS2VybmVsIExvZ2ljKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIHNlZW4gaXQgdXNlZCBpbiBhIGZldyBrZXkgYXJlYXM6IGBjb2xsYXBzZV9wb3NzaWJsZV9vcmRlcnNgLCBgaHVnZXBhZ2Vfdm1hX3JldmFsaWRhdGVgLCBgdGhwX3N3YXBpbl9zdWl0YWJsZV9vcmRlcnNgLCBhbmQgYGFsbG9jX2Fub25fZm9saW9gLiBUaGF0J3MgYSBzb2xpZCBzcHJlYWQsIGFuZCBpdCdzIGRlZmluaXRlbHkgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBHaXZlbiBpdHMgcmVhY2ggYW5kIGZ1bmN0aW9uLCB0aGlzIGlzICpleGFjdGx5KiB0aGUga2luZCBvZiBhcmVhIHdlIHNob3VsZCBiZSBmdXp6aW5nLiBIaWdoLXZhbHVlIHRhcmdldCwgZnVuY3Rpb25hbGx5IHJlbGV2YW50LCBhbmQgcG90ZW50aWFsbHkgY29tcGxleC4gTXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBsdXJraW5nIGhlcmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgVEhQLiBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGZ1enppbmcgZW52aXJvbm1lbnQgYWNjdXJhdGVseSByZWZsZWN0cyB0aGUgc2NlbmFyaW9zIHdoZXJlIHRoaXMgY29kZSBpcyBhY3RpdmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGNhbXBhaWduLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHRlc3RpbmcgdGhlIHJpZ2h0IHRoaW5ncyB1bmRlciB0aGUgcmlnaHQgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjEwLjk3Mzc1NjEzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTczNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcXG4tLVxcbm1tL0tjb25maWctODQ1LVxcbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5tbS9LY29uZmlnLTg0Ny1cXHRib29sIFxcXCJUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XFxcIlxcbi0tXFxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTg2OS1cXG5tbS9LY29uZmlnOjg3MDpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTXFxubW0vS2NvbmZpZy04NzEtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04NzYtXFxubW0vS2NvbmZpZzo4Nzc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX01BRFZJU0VcXG5tbS9LY29uZmlnLTg3OC1cXHRcXHRib29sIFxcXCJtYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy04ODUtXFxubW0vS2NvbmZpZzo4ODY6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX05FVkVSXFxubW0vS2NvbmZpZy04ODctXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg5Mz1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTAyLVxcbm1tL0tjb25maWc6OTAzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05MDQtXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkxMi1cXG5tbS9LY29uZmlnOjkxMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTkxNC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyMC1cXG5tbS9LY29uZmlnOjkyMTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTIyLVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjgtXFxubW0vS2NvbmZpZzo5Mjk6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05MzAtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZz05Mzg9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTk0Ny1cXG5tbS9LY29uZmlnOjk0ODpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTQ5LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NTYtXFxubW0vS2NvbmZpZzo5NTc6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05NTgtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NjQtXFxubW0vS2NvbmZpZzo5NjU6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTk2Ni1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTcyLVxcbm1tL0tjb25maWc6OTczOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTc0LVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MTEuMDQwMDIwMzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTQxNTUwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgYHZtYV9pc19zcGVjaWFsX2h1Z2VgKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgaW1wdWxzZSBoZXJlIGlzIGNsZWFyOiB3ZSdyZSB0aGlua2luZyBhYm91dCBUcmFuc3BhcmVudCBIdWdlcGFnZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIG5lZWQgZm9yIHRoZW0uIFRoYXQncyBvdXIgc3RhcnRpbmcgcG9pbnQuIFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb24gaXMgd2UgYXJlIGZhY2luZyBzb21lIHBlcmZvcm1hbmNlIGNoYWxsZW5nZSBvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdHkgdGhhdCB3ZSBiZWxpZXZlIGNhbiBiZSBhZGRyZXNzZWQgYnkgbGV2ZXJhZ2luZyBsYXJnZXIgbWVtb3J5IHBhZ2VzLiBUaGUgY29udGV4dCBpc24ndCBleHBsaWNpdCwgYnV0IHRoZSBpbXBsaWVkIHVyZ2VuY3kgc3VnZ2VzdHMgdGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNvbnNpZGVyYXRpb24uXG5cblRoZSBuZXh0IHRob3VnaHQgaXMgdG8gZGVsdmUgaW50byBhIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgbXVzdCBiZSBwZXJ0aW5lbnQgdG8gdGhpcyBpc3N1ZS4gSXQgbXVzdCBiZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLCBzbyBsZXQncyBzdGFydCBieSBsb29raW5nIGludG8gYHZtYV9pc19zcGVjaWFsX2h1Z2VgLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIGZvY3VzIGlzIG9uIGEgVmlydHVhbCBNZW1vcnkgQXJlYSAoVk1BKSBhbmQgZGV0ZXJtaW5pbmcgd2hldGhlciBpdCdzIHNvbWVob3cgYXNzb2NpYXRlZCB3aXRoIGh1Z2UgcGFnZXMgaW4gYSBcInNwZWNpYWxcIiBvciBub24tc3RhbmRhcmQgd2F5LiBXZSBhcmUgY2xlYXJseSBhdHRlbXB0aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIG9yIG1hbmFnZXMgVk1BcyBpbiByZWxhdGlvbiB0byBodWdlIHBhZ2VzLiBUaGlzIG11c3QgYmUgYW4gaW1wb3J0YW50IGZhY3RvciB0byBjb25zaWRlciBhbmQgZnVydGhlciBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjE0LjgzNDE3NzI1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTExNjc3OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1hX2lzX3NwZWNpYWxfaHVnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz04OD1zdGF0aWMgaW5saW5lIGJvb2wgZmlsZV90aHBfZW5hYmxlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTA2LS8qIElmIHJldHVybnMgdHJ1ZSwgd2UgYXJlIHVuYWJsZSB0byBhY2Nlc3MgdGhlIFZNQSdzIGZvbGlvcy4gKi9cXG5tbS9odWdlX21lbW9yeS5jOjEwNzpzdGF0aWMgYm9vbCB2bWFfaXNfc3BlY2lhbF9odWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTA4LXtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MTE0PXVuc2lnbmVkIGxvbmcgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTEyNi1cXHRcXHRzdXBwb3J0ZWRfb3JkZXJzID0gVEhQX09SREVSU19BTExfQU5PTjtcXG5tbS9odWdlX21lbW9yeS5jOjEyNzpcXHRlbHNlIGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTI4LVxcdFxcdHN1cHBvcnRlZF9vcmRlcnMgPSBUSFBfT1JERVJTX0FMTF9TUEVDSUFMX0RBWDtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ2LVxcdCAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6MTQ3OlxcdGlmICh2bWFfaXNfZGF4KHZtYSkgfHwgdm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKVxcbm1tL2h1Z2VfbWVtb3J5LmMtMTQ4LVxcdFxcdHJldHVybiBpbl9wZiA/IG9yZGVycyA6IDA7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTI5MDA9aW50IHphcF9odWdlX3B1ZChzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMjkxMi1cXHR0bGJfcmVtb3ZlX3B1ZF90bGJfZW50cnkodGxiLCBwdWQsIGFkZHIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MjkxMzpcXHRpZiAodm1hX2lzX3NwZWNpYWxfaHVnZSh2bWEpKSB7XFxubW0vaHVnZV9tZW1vcnkuYy0yOTE0LVxcdFxcdHNwaW5fdW5sb2NrKHB0bCk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTMwMzQ9c3RhdGljIHZvaWQgX19zcGxpdF9odWdlX3BtZF9sb2NrZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90ICpwbWQsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTMwNjMtXFx0XFx0XFx0emFwX2RlcG9zaXRlZF90YWJsZShtbSwgcG1kKTtcXG5tbS9odWdlX21lbW9yeS5jOjMwNjQ6XFx0XFx0aWYgKHZtYV9pc19zcGVjaWFsX2h1Z2Uodm1hKSlcXG5tbS9odWdlX21lbW9yeS5jLTMwNjUtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00NTk0PXN0YXRpYyBpbmxpbmUgYm9vbCB2bWFfbm90X3N1aXRhYmxlX2Zvcl90aHBfc3BsaXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ1OTctXFx0XFx0cmV0dXJuIHRydWU7XFxubW0vaHVnZV9tZW1vcnkuYzo0NTk4OlxcdGlmICh2bWFfaXNfc3BlY2lhbF9odWdlKHZtYSkpXFxubW0vaHVnZV9tZW1vcnkuYy00NTk5LVxcdFxcdHJldHVybiB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjoxNC45MjUzNDkxMjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MTk3MjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgdm1hX2lzX3NwZWNpYWxfaHVnZWAqKlxuXG5BbHJpZ2h0LCBJJ20gZW5jb3VudGVyaW5nIGB2bWFfaXNfc3BlY2lhbF9odWdlYCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcGluIGRvd24gZXhhY3RseSB3aGF0IHRoaXMgZnVuY3Rpb24gc2lnbmlmaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBmcmFtZXdvcmsuIFRoZSBuYW1lIGl0c2VsZiBoaW50cyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBzcGVjaWFsIG9yIGxhcmdlIHBhZ2VzIChodWdlIHBhZ2VzKS4gU28sIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBcIm9rYXksIHRoaXMgaXMgbGlrZWx5IGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSBnaXZlbiBWaXJ0dWFsIE1lbW9yeSBBcmVhIChWTUEpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGh1Z2UgcGFnZSwgb3Igc29tZSAqc3BlY2lhbCogZmxhdm9yIG9mIGh1Z2UgcGFnZS5cIiBNeSBleHBlcnRpc2UgdGVsbHMgbWUgdG8gcXVpY2tseSByZWZlcmVuY2UgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIG9yIGhlYWRlciBmaWxlcyByZWxhdGVkIHRvIFZNQXMgYW5kIGh1Z2VwYWdlcy4gVGhhdCdzIG15IGltbWVkaWF0ZSBuZXh0IHN0ZXA7IGdldCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uLCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBhbmQgc2VlIGlmIGl0J3MgcmVsYXRlZCB0byBhbnkgc3BlY2lmaWMsIHF1aXJreSB1c2UtY2FzZXMgZm9yIGh1Z2UgcGFnZXMuIEknbGwgbmVlZCB0byBrbm93OiBJcyBpdCBjaGVja2luZyBmb3IgZ2VuZXJhbCBodWdlIHBhZ2UgYWxsb2NhdGlvbj8gRG9lcyBpdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCB0eXBlcyBvZiBodWdlIHBhZ2VzPyBBcmUgdGhlcmUgYW55IHNwZWNpYWwgZmxhZ3MgaW52b2x2ZWQ/IEl0J3MgYWxsIGFib3V0IHByZWNpc2lvbiBoZXJlLCBubyByb29tIGZvciBndWVzc3dvcmsuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjM3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MTguMTg3MzI0NDMyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9odWdlX21lbW9yeS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRcXHRpZiAoIW1hcHBpbmdfcG1kX2ZvbGlvX3N1cHBvcnQodm1hLVxcdTAwM2V2bV9maWxlLVxcdTAwM2VmX21hcHBpbmcpKVxcbiAxMDE6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHRyZXR1cm4gU19JU1JFRyhpbm9kZS1cXHUwMDNlaV9tb2RlKTtcXG4gMTA0OlxcdH1cXG4gMTA1OlxcdFxcbiAxMDY6XFx0LyogSWYgcmV0dXJucyB0cnVlLCB3ZSBhcmUgdW5hYmxlIHRvIGFjY2VzcyB0aGUgVk1BJ3MgZm9saW9zLiAqL1xcbiAxMDc6XFx0c3RhdGljIGJvb2wgdm1hX2lzX3NwZWNpYWxfaHVnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gMTA4OlxcdHtcXG4gMTA5OlxcdFxcdGlmICh2bWFfaXNfZGF4KHZtYSkpXFxuIDExMDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDExMTpcXHRcXHRyZXR1cm4gdm1hX3Rlc3RfYW55KHZtYSwgVk1BX1BGTk1BUF9CSVQsIFZNQV9NSVhFRE1BUF9CSVQpO1xcbiAxMTI6XFx0fVxcbiAxMTM6XFx0XFxuIDExNDpcXHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiAxMTU6XFx0XFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuIDExNjpcXHRcXHRcXHRcXHRcXHRcXHQgZW51bSB0dmFfdHlwZSB0eXBlLFxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKVxcbiAxMTg6XFx0e1xcbiAxMTk6XFx0XFx0Y29uc3QgYm9vbCBzbWFwcyA9IHR5cGUgPT0gVFZBX1NNQVBTO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjoxOC4xODc1NjkxNDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjAxMjg1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIE1NIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGB2bWFfaXNfc3BlY2lhbF9odWdlYCBqdW1wcyBvdXQuIFJpZ2h0LCBpdCdzIGNoZWNraW5nIGZvciB0aG9zZSBWTUFzIHRoYXQgYXJlIGVpdGhlciBgVk1fUEZOTUFQYCBvciBgVk1fTUlYRURNQVBgLi4uICpidXQqIG5vdCBEQVguIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIGlzIGFsbG93aW5nIFRIUCDigJMgVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyDigJMgb24gdGhlc2UgVk1BcyAqZHVyaW5nKiBhIHBhZ2UgZmF1bHQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIHRoaXMgd2FycmFudHMgYSBkZWVwIGRpdmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQncyBub3QganVzdCBhIG1pbm9yIHR3ZWFrLlxuXG5NeSBuZXh0IHBvaW50IGlzIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGV0aGVyIHRoZSBmdW5jdGlvbiBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGlzIGV4cG9ydGVkIG9yIHVzZWQgaW4gaGVhZGVycy4gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgZGlnZ2luZyBhcm91bmQgaW4gYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYC4gVGhhdCBoZWFkZXIgd2lsbCBsaWtlbHkgaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgbmV3IGFsbG93YW5jZSB0aWVzIGludG8gdGhlIGV4aXN0aW5nIGh1Z2UgcGFnZSBpbmZyYXN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB0aG9yb3VnaGx5LCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aGF0IGl0IHJlbGllcyBvbiwgYW5kIHdoYXQgZGF0YSBpdCBpbnRlcmFjdHMgd2l0aC4gVGhpcyBpcyBnb2luZyB0byBiZSBpbnRlcmVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjIzLjMxOTU4NTIzOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcdFxcdGlmICh0aHBfdm1hX3N1aXRhYmxlX29yZGVyKHZtYSwgYWRkciwgb3JkZXIpKVxcbiAyOTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI5MjpcXHRcXHRcXHRvcmRlciA9IG5leHRfb3JkZXIoXFx1MDAyNm9yZGVycywgb3JkZXIpO1xcbiAyOTM6XFx0XFx0fVxcbiAyOTQ6XFx0XFxuIDI5NTpcXHRcXHRyZXR1cm4gb3JkZXJzO1xcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHR1bnNpZ25lZCBsb25nIF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiAyOTk6XFx0XFx0XFx0XFx0XFx0XFx0IHZtX2ZsYWdzX3Qgdm1fZmxhZ3MsXFxuIDMwMDpcXHRcXHRcXHRcXHRcXHRcXHQgZW51bSB0dmFfdHlwZSB0eXBlLFxcbiAzMDE6XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgb3JkZXJzKTtcXG4gMzAyOlxcdFxcbiAzMDM6XFx0LyoqXFxuIDMwNDpcXHQgKiB0aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMgLSBkZXRlcm1pbmUgaHVnZXBhZ2Ugb3JkZXJzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHZtYVxcbiAzMDU6XFx0ICogQHZtYTogIHRoZSB2bSBhcmVhIHRvIGNoZWNrXFxuIDMwNjpcXHQgKiBAdm1fZmxhZ3M6IHVzZSB0aGVzZSB2bV9mbGFncyBpbnN0ZWFkIG9mIHZtYS1cXHUwMDNldm1fZmxhZ3NcXG4gMzA3OlxcdCAqIEB0eXBlOiBUVkEgdHlwZVxcbiAzMDg6XFx0ICogQG9yZGVyczogYml0ZmllbGQgb2YgYWxsIG9yZGVycyB0byBjb25zaWRlclxcbiAzMDk6XFx0ICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MjMuMzE5NjkxNjQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzI4MTA1NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgT3JkZXIgQWxsb3dhbmNlcyoqXG5cbk9rYXksIHNvIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaXNuJ3Qgc29tZSBvYnNjdXJlIHN0YXRpYyB2YXJpYWJsZTsgaXQncyByaWdodCB0aGVyZSBpbiBgbW0vaHVnZV9tZW1vcnkuY2AsIGRlY2xhcmVkIGluIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAuIFRoYXQgbWFrZXMgaXQgYSBzb2xpZCBmb2N1cyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgZm9yIGJvdGggYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBhbmQgYHRocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgdG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHdoZXJlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1c2VkLiBJJ3ZlIGZvdW5kIGEgZmV3OiBgY29sbGFwc2VfcG9zc2libGVfb3JkZXJzYCBhbmQgYGh1Z2VwYWdlX3ZtYV9yZXZhbGlkYXRlYCB3aXRoaW4gYG1tL2todWdlcGFnZWQuY2AsIGB0aHBfc3dhcGluX3N1aXRhYmxlX29yZGVyc2AgaW4gYG1tL21lbW9yeS5jYCwgYW5kIGBhbGxvY19hbm9uX2ZvbGlvYCBhbHNvIGluIGBtbS9tZW1vcnkuY2AuXG5cblNpbmNlIGl0IGxvb2tzIGxpa2UgYF9fdGhwX3ZtYV9hbGxvd2FibGVfb3JkZXJzYCBpcyB0aGUgb25lIHRoYXQncyBiZWluZyBtb2RpZmllZCwgSSdsbCBzdGljayB3aXRoIHRoYXQgYXMgdGhlIG1haW4gZm9jdXMuIEl0J2xsIHNpbXBsaWZ5IHRoaW5ncyBhbmQga2VlcCBtZSBvbiB0cmFjay5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgc3Vycm91bmRpbmcgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGlzIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjI5LjA1MjUwNTYyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NDAzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz04NDM9Y29uZmlnIE1NX0lEXFxuLS1cXG5tbS9LY29uZmlnLTg0NS1cXG5tbS9LY29uZmlnOjg0NjptZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxubW0vS2NvbmZpZy04NDctXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODY0PWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy04NjktXFxubW0vS2NvbmZpZzo4NzA6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZU1xcbm1tL0tjb25maWctODcxLVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctODc2LVxcbm1tL0tjb25maWc6ODc3OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9NQURWSVNFXFxubW0vS2NvbmZpZy04NzgtXFx0XFx0Ym9vbCBcXFwibWFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWctODg1LVxcbm1tL0tjb25maWc6ODg2OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9ORVZFUlxcbm1tL0tjb25maWctODg3LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXFxuLS1cXG5tbS9LY29uZmlnLTkwMi1cXG5tbS9LY29uZmlnOjkwMzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9ORVZFUlxcbm1tL0tjb25maWctOTA0LVxcdFxcdGJvb2wgXFxcIm5ldmVyXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MTItXFxubW0vS2NvbmZpZzo5MTM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQUxXQVlTXFxubW0vS2NvbmZpZy05MTQtXFx0XFx0Ym9vbCBcXFwiYWx3YXlzXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05MjAtXFxubW0vS2NvbmZpZzo5MjE6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfV0lUSElOX1NJWkVcXG5tbS9LY29uZmlnLTkyMi1cXHRcXHRib29sIFxcXCJ3aXRoaW5fc2l6ZVxcXCJcXG4tLVxcbm1tL0tjb25maWctOTI4LVxcbm1tL0tjb25maWc6OTI5OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FEVklTRVxcbm1tL0tjb25maWctOTMwLVxcdFxcdGJvb2wgXFxcImFkdmlzZVxcXCJcXG4tLVxcbm1tL0tjb25maWc9OTM4PWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy05NDctXFxubW0vS2NvbmZpZzo5NDg6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTk0OS1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWctOTU2LVxcbm1tL0tjb25maWc6OTU3OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xcbm1tL0tjb25maWctOTU4LVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctOTY0LVxcbm1tL0tjb25maWc6OTY1OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXFxubW0vS2NvbmZpZy05NjYtXFx0XFx0Ym9vbCBcXFwid2l0aGluX3NpemVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk3Mi1cXG5tbS9LY29uZmlnOjk3MzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0VcXG5tbS9LY29uZmlnLTk3NC1cXHRcXHRib29sIFxcXCJhZHZpc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA3OjA2OjI5LjIxMDkxNDExMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAwNzI3OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBrbm93IEkndmUgYmVlbiBoZXJlIGJlZm9yZSwgYW5kIHRoZSBiZXN0IHdheSB0byB1bnRhbmdsZSB0aGlzIG1lc3MgaXMgdXN1YWxseSB0byBkaWcgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIEkgc2VlbSB0byByZWNhbGwgdGhhdCB0aGUgaW1wb3J0YW50IHN0dWZmIGlzIGNsdXN0ZXJlZCBhcm91bmQgbGluZSA4NDYsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIHN0YXJ0LiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG90aGVyIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciB0aGlzIG9uZSB0byB3b3JrIGNvcnJlY3RseS4gSXQncyB0aW1lIHRvIHB1dCBteSBleHBlcnQga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwgY29uZmlnIHN5c3RlbSB0byB3b3JrIGFuZCB1bnJhdmVsIHRoaXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjozMi42MTE2NDQ2NTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NDA6XFx0XFx0ICBTYXkgWSBpZiB5b3VyIHN5c3RlbSBoYXMgbG90cyBvZiBtZW1vcnkuIFNheSBOIGlmIHlvdSBhcmVcXG4gODQxOlxcdFxcdCAgbWVtb3J5IGNvbnN0cmFpbmVkLlxcbiA4NDI6XFx0XFxuIDg0MzpcXHRjb25maWcgTU1fSURcXG4gODQ0OlxcdFxcdGRlZl9ib29sIG5cXG4gODQ1OlxcdFxcbiA4NDY6XFx0bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbiA4NDc6XFx0XFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4gODQ4OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFxcdTAwMjZcXHUwMDI2ICFQUkVFTVBUX1JUXFxuIDg0OTpcXHRcXHRzZWxlY3QgQ09NUEFDVElPTlxcbiA4NTA6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbiA4NTE6XFx0XFx0c2VsZWN0IE1NX0lEXFxuIDg1MjpcXHRcXHRoZWxwXFxuIDg1MzpcXHRcXHQgIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbGxvd3MgdGhlIGtlcm5lbCB0byB1c2UgaHVnZSBwYWdlcyBhbmRcXG4gODU0OlxcdFxcdCAgaHVnZSB0bGIgdHJhbnNwYXJlbnRseSB0byB0aGUgYXBwbGljYXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiA4NTU6XFx0XFx0ICBUaGlzIGZlYXR1cmUgY2FuIGltcHJvdmUgY29tcHV0aW5nIHBlcmZvcm1hbmNlIHRvIGNlcnRhaW5cXG4gODU2OlxcdFxcdCAgYXBwbGljYXRpb25zIGJ5IHNwZWVkaW5nIHVwIHBhZ2UgZmF1bHRzIGR1cmluZyBtZW1vcnlcXG4gODU3OlxcdFxcdCAgYWxsb2NhdGlvbiwgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiB0bGIgbWlzc2VzIGFuZCBieSBzcGVlZGluZ1xcbiA4NTg6XFx0XFx0ICB1cCB0aGUgcGFnZXRhYmxlIHdhbGtpbmcuXFxuIDg1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDc6MDY6MzIuNjExNzQyMjkyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTg0ODI4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IEEgRGVlcCBEaXZlIGludG8gVHJhbnNwYXJlbnQgSHVnZSBQYWdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBjb25maWcgY2F0Y2hlcyBteSBleWUuIFRoYXQncyB0aGUga2V5LCByaWdodD8gQW5kIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2Agd2l0aGluIGBtbS9odWdlX21lbW9yeS5jYC4gVGhhdCdzICpkZWZpbml0ZWx5KiBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIFRIUCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdXNlciBzcGFjZSB2aWEgYG1tYXBgIGFuZCBwYWdlIGZhdWx0cy4uLiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgc2lnbmlmaWNhbnQuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBxdWlja2x5IGNvbmZpcm1pbmcgaWYgYW55ICpvdGhlciogY29uZmlncyBhcmUgbmVlZGVkLCBidXQgaXQgc2VlbXMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyB0aGUgb25seSBtYWpvciBvbmUgdGhhdCdzIHJlbGV2YW50LlxuXG5NeSBmb2N1cyBpcyBmaXJtbHkgc2V0IG9uIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgYW5kIHRoZSBjb250ZXh0IG9mIHRob3NlIHNwZWNpYWwgaHVnZSBWTUFzIGxpa2UgYFBGTk1BUGAgb3IgYE1JWEVETUFQYCBkdXJpbmcgcGFnZSBmYXVsdHMuIFRoaXMgaGFzIHRoZSBoYWxsbWFya3Mgb2Ygc29tZXRoaW5nIHJpcGUgZm9yIGV4cGxvcmF0aW9uLiBJJ2xsIGdldCB0aGUgcmVzdWx0cyBzZXQgdXAgYXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5NSwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwNzowNjozOC45MTAyMjcxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ4NjM3NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnNgIGluIGBtbS9odWdlX21lbW9yeS5jYCB0byBhbGxvdyBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApIGZvciBzcGVjaWFsIGh1Z2UgVk1BcyAobGlrZSBQRk5NQVAgb3IgTUlYRURNQVApIGR1cmluZyBwYWdlIGZhdWx0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RocF92bWFfYWxsb3dhYmxlX29yZGVyc2AgaW4gYG1tL2h1Z2VfbWVtb3J5LmNgIHRvIGFsbG93IFRyYW5zcGFyZW50IEh1Z2UgUGFnZXMgKFRIUCkgZm9yIHNwZWNpYWwgaHVnZSBWTUFzIChsaWtlIFBGTk1BUCBvciBNSVhFRE1BUCkgZHVyaW5nIHBhZ2UgZmF1bHRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsfh5c[1] Phase: Succeeded StartedAt: 2026-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 07:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 07:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2] Phase: Succeeded StartedAt: 2026-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 07:07:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:06:50 +0000 UTC FinishedAt: 2026-08-05 07:06:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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-workflowsfh5c/series-workflowsfh5c-convert-artifact-2387404679/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:07:00 +0000 UTC FinishedAt: 2026-08-05 07:28:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:07:00 +0000 UTC FinishedAt: 2026-08-05 07:28:03 +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:*4351c145-b321-4fa3-99b1-d6fcbae0f8ed,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-workflowsfh5c/series-workflowsfh5c-convert-artifact-2387404679/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": "8ab59a8f-bf36-48ec-9a1f-07f1aab762fb", "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-workflowsfh5c/series-workflowsfh5c-build-action-1446917661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:07:00 +0000 UTC FinishedAt: 2026-08-05 07:27:52 +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:*4351c145-b321-4fa3-99b1-d6fcbae0f8ed,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-workflowsfh5c/series-workflowsfh5c-convert-artifact-2387404679/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": "8ab59a8f-bf36-48ec-9a1f-07f1aab762fb", "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-workflowsfh5c/series-workflowsfh5c-build-action-1446917661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:03 +0000 UTC FinishedAt: 2026-08-05 07:28:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:03 +0000 UTC FinishedAt: 2026-08-05 07:28:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:03 +0000 UTC FinishedAt: 2026-08-05 07:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:03 +0000 UTC FinishedAt: 2026-08-05 07:28:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-workflowsfh5c/series-workflowsfh5c-convert-artifact-1032792246/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:14 +0000 UTC FinishedAt: 2026-08-05 07:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:28:14 +0000 UTC FinishedAt: 2026-08-05 07:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8ab59a8f-bf36-48ec-9a1f-07f1aab762fb,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-workflowsfh5c/series-workflowsfh5c-build-action-1446917661/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-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:30:17 +0000 UTC FinishedAt: 2026-08-05 07:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:30:17 +0000 UTC FinishedAt: 2026-08-05 07:30:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:30:17 +0000 UTC FinishedAt: 2026-08-05 07:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:30:17 +0000 UTC FinishedAt: 2026-08-05 07:50:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4351c145-b321-4fa3-99b1-d6fcbae0f8ed,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-workflowsfh5c/series-workflowsfh5c-convert-artifact-1032792246/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": "f1511704-06d1-4cc3-8014-a785468e528a", "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-workflowsfh5c/series-workflowsfh5c-build-action-2676452794/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:30:17 +0000 UTC FinishedAt: 2026-08-05 07:50:02 +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:*4351c145-b321-4fa3-99b1-d6fcbae0f8ed,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-workflowsfh5c/series-workflowsfh5c-convert-artifact-1032792246/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": "f1511704-06d1-4cc3-8014-a785468e528a", "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-workflowsfh5c/series-workflowsfh5c-build-action-2676452794/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:50:13 +0000 UTC FinishedAt: 2026-08-05 07:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:50:13 +0000 UTC FinishedAt: 2026-08-05 07:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:50:13 +0000 UTC FinishedAt: 2026-08-05 07:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:50:14 +0000 UTC FinishedAt: 2026-08-05 07:52:07 +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:*f1511704-06d1-4cc3-8014-a785468e528a,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-workflowsfh5c/series-workflowsfh5c-build-action-2676452794/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-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +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":["__thp_vma_allowable_orders"],"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:*8ab59a8f-bf36-48ec-9a1f-07f1aab762fb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1511704-06d1-4cc3-8014-a785468e528a,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-workflowsfh5c/series-workflowsfh5c-build-action-1446917661/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-workflowsfh5c/series-workflowsfh5c-build-action-2676452794/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 07:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 07:52:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__thp_vma_allowable_orders"],"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-workflowsfh5c/series-workflowsfh5c-convert-artifact-954903003/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 07:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 07:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:17 +0000 UTC FinishedAt: 2026-08-05 07:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:27 +0000 UTC FinishedAt: 2026-08-05 10:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsfh5c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"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":["__thp_vma_allowable_orders"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"4ae2eacd28f540ce15d4f60b523eb9ddc5149047","config_name":"upstream-apparmor-kasan.config","enable_configs":["TRANSPARENT_HUGEPAGE"],"series_id":"c73ae511-8bc9-41c3-89fa-9b68c386b76c","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-08-05 07:52:27 +0000 UTC FinishedAt: 2026-08-05 10:55:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8ab59a8f-bf36-48ec-9a1f-07f1aab762fb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1511704-06d1-4cc3-8014-a785468e528a,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-workflowsfh5c/series-workflowsfh5c-build-action-1446917661/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-workflowsfh5c/series-workflowsfh5c-build-action-2676452794/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-workflowsfh5c/series-workflowsfh5c-convert-artifact-954903003/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,}