Name: series-workflowg6b4k Phase: Succeeded StartedAt: 2026-08-15 13:36:20 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[0] Phase: Succeeded StartedAt: 2026-08-15 13:36:20 +0000 UTC FinishedAt: 2026-08-15 14:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 13:36:20 +0000 UTC FinishedAt: 2026-08-15 14:18:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS" ], "series_id": "5db6f018-131b-4ee3-8804-5deb18967b77" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "btrfs_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI0NmRlMjllMDgzYzgxYmVmYzBjYjBlNTYyNjc5OGZmNGM2YmMwN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDoxNzo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuY1xuaW5kZXggNzJiYzlkNGY3NzA4Ny4uNjA3MzI5ZGVkZDUwMyAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL2lvY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL2lvY3RsLmNcbkBAIC0yNDU4LDcgJiM0MzsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4mIzQzO1x0XHQgICAgaW5vZGVfcGVybWlzc2lvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIE1BWV9XUklURSkpIHtcbiBcdFx0XHRyZXQgPSAtRVBFUk07XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggNzJiYzlkNGY3NzA4Ny4uNjA3MzI5ZGVkZDUwMyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC0yNDU4LDcgJiM0MzsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKQogCQkgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuCiAJCSAqLwogCQlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgJmFtcDsmYW1wOwotCQkgICAgaW5vZGVfcGVybWlzc2lvbigmYW1wO25vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7CiYjNDM7CQkgICAgaW5vZGVfcGVybWlzc2lvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIE1BWV9XUklURSkpIHsKIAkJCXJldCA9IC1FUEVSTTsKIAkJCWdvdG8gb3V0OwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnRyZnMgRGVmcmFnIElPQ1RMIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gaG93IGl0IGhhbmRsZXMgcGVybWlzc2lvbnMsIHNwZWNpZmljYWxseSB0aGUgc2hpZnQgZnJvbSB1c2luZyBhIGdsb2JhbCBtb3VudCBJRCBtYXAgKGAmYW1wO25vcF9tbnRfaWRtYXBgKSB0byB0aGUgSUQgbWFwIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBpdHNlbGYgKGBmaWxlX21udF9pZG1hcChmaWxlKWApLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaWRtYXBwZWQgbW91bnRzIGFuZCBob3cgcGVybWlzc2lvbnMgYXJlIGVuZm9yY2VkIGR1cmluZyB0aGUgZGVmcmFnIHByb2Nlc3MuCgpHaXZlbiB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O2Z1enppbmcmIzM0Oy4gQW55dGltZSB0aGVyZSYjMzk7cyBhIHBlcm1pc3Npb24tcmVsYXRlZCBjaGFuZ2UsIGVzcGVjaWFsbHkgd2l0aGluIGEgY3JpdGljYWwgc3Vic3lzdGVtIGxpa2UgQnRyZnMsIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGV4cGxvcmUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbmV3IHBlcm1pc3Npb24gY2hlY2suIFRoZSBtb3N0IHJlbGV2YW50IHN5bWJvbCB0byBmb2N1cyBvbiB3b3VsZCBlaXRoZXIgYmUgdGhlIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLCBvciBwb3RlbnRpYWxseSB0aGUgYGJ0cmZzX2lvY3RsYCBkaXNwYXRjaGVyIGl0c2VsZi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgYnRyZnNfaW9jdGxfZGVmcmFnYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3MgaW4gYGZzL2J0cmZzL2lvY3RsLmNgIGFuZCBob3cgdGhpcyBtb3VudCBJRCBtYXBwaW5nIHdvcmtzIGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidHJmc19pb2N0bF9kZWZyYWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmM9MjIxNj1zdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfZGVzdHJveShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXG5mcy9idHJmcy9pb2N0bC5jOjI0MzA6c3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuZnMvYnRyZnMvaW9jdGwuYy0yNDMxLXtcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTI0MzMtXHRzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLVx1MDAzZXJvb3Q7XG5mcy9idHJmcy9pb2N0bC5jOjI0MzQ6XHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3MgcmFuZ2UgPSB7MH07XG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXHRpbnQgcmV0O1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTU1NTYtXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XG5mcy9idHJmcy9pb2N0bC5jOjU1NTc6XHRcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XG5mcy9idHJmcy9pb2N0bC5jLTU1NTgtXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUdfUkFOR0U6XG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XHRcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgYXJncCk7XG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXHRjYXNlIEJUUkZTX0lPQ19SRVNJWkU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ0cmZzIElPQ1RMIERlZnJhZyBGdW5jdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZy4uLiBUaGUgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgZnVuY3Rpb24gaXMgKnN0YXRpYyosIGJ1dCBpdCYjMzk7cyBjYWxsZWQgYnkgYGJ0cmZzX2lvY3RsYC4gV2FpdCwgc2hvdWxkIEkgYmUgZm9jdXNpbmcgb24gYGJ0cmZzX2lvY3RsYCBvciBgYnRyZnNfaW9jdGxfZGVmcmFnYD8gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhhdCBzdWdnZXN0cyBgYnRyZnNfaW9jdGxgIGlzIHRoZSBrZXkgZW50cnlwb2ludCBoZXJlLiBCdXQgaGFuZyBvbiwgaXMgYGJ0cmZzX2lvY3RsYCBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24/IE5vLCBpdCYjMzk7cyBhIHNwZWNpZmljIGlvY3RsIGhhbmRsZXIgZm9yIHRoZSBidHJmcyBmaWxlc3lzdGVtLgoKQWxyaWdodCwgYmFjayB0byBgYnRyZnNfaW9jdGxfZGVmcmFnYC4gSXQmIzM5O3Mgc3RhdGljLCBidXQgaXQgZG9lc24mIzM5O3QgKmFwcGVhciogdG8gYmUgaW5saW5lZC4gR2l2ZW4gaXRzIHNpemUsIGl0IHByb2JhYmx5IGlzbiYjMzk7dC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIGF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdHMgZnJvbSBiZWluZyBza2V3ZWQuIFRoZXkgdGVsbCBtZSB0byBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSXMgb3ZlciB0aGVzZSBzdGF0aWMgaW50ZXJuYWwgaGVscGVycyBiZWNhdXNlIHRoZSBjb21waWxlciBjYW4gaW5saW5lIHRoZW0sIGFuZCB0aGVuIHRoZXkgd29uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCAqaXMqIGlubGluZWQsIHRob3VnaC4gSXQgaXNuJiMzOTt0IG1hcmtlZCBhcyBgaW5saW5lYCBvciBgbm9pbmxpbmVgLCBzbyB0aGUgY29tcGlsZXIgY291bGQgKnBvdGVudGlhbGx5KiBpbmxpbmUgaXQuIFRoZSBjbHVlIGlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIHR3aWNlIGZyb20gd2l0aGluIGBidHJmc19pb2N0bGAuIEkgYmV0dGVyIGNoZWNrIGl0cyBzaXplLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfaW9jdGxfZGVmcmFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2RlZnJhZy5jPTIxNT1zdGF0aWMgaW50IGJ0cmZzX3J1bl9kZWZyYWdfaW5vZGUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvZGVmcmFnLmMtMjIwLVx0c3RydWN0IGJ0cmZzX2lub2RlICppbm9kZTtcbmZzL2J0cmZzL2RlZnJhZy5jOjIyMTpcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZTtcbmZzL2J0cmZzL2RlZnJhZy5jLTIyMi1cdGludCByZXQgPSAwO1xuLS1cbmZzL2J0cmZzL2RlZnJhZy5jPTEzNDU9aW50IGJ0cmZzX2RlZnJhZ19maWxlKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlX3JhX3N0YXRlICpyYSxcbmZzL2J0cmZzL2RlZnJhZy5jOjEzNDY6XHRcdCAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyAqcmFuZ2UsXG5mcy9idHJmcy9kZWZyYWcuYy0xMzQ3LVx0XHQgICAgICB1NjQgbmV3ZXJfdGhhbiwgdW5zaWduZWQgbG9uZyBtYXhfdG9fZGVmcmFnKVxuLS1cbmZzL2J0cmZzL2RlZnJhZy5oPTEzPXN0cnVjdCBidHJmc190cmFuc19oYW5kbGU7XG5mcy9idHJmcy9kZWZyYWcuaDoxNDpzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3M7XG5mcy9idHJmcy9kZWZyYWcuaC0xNS1cbmZzL2J0cmZzL2RlZnJhZy5oPTE2PWludCBidHJmc19kZWZyYWdfZmlsZShzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZV9yYV9zdGF0ZSAqcmEsXG5mcy9idHJmcy9kZWZyYWcuaDoxNzpcdFx0ICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzICpyYW5nZSxcbmZzL2J0cmZzL2RlZnJhZy5oLTE4LVx0XHQgICAgICB1NjQgbmV3ZXJfdGhhbiwgdW5zaWduZWQgbG9uZyBtYXhfdG9fZGVmcmFnKTtcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0yNDI5LVxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcbmZzL2J0cmZzL2lvY3RsLmMtMjQzMS17XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVx0c3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QgPSBCVFJGU19JKGlub2RlKS1cdTAwM2Vyb290O1xuZnMvYnRyZnMvaW9jdGwuYzoyNDM0Olx0c3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzIHJhbmdlID0gezB9O1xuZnMvYnRyZnMvaW9jdGwuYy0yNDM1LVx0aW50IHJldDtcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTU1MjE9bG9uZyBidHJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy01NTU2LVx0Y2FzZSBCVFJGU19JT0NfREVGUkFHOlxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3Olx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfZGVmcmFnKGZpbGUsIE5VTEwpO1xuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVx0Y2FzZSBCVFJGU19JT0NfREVGUkFHX1JBTkdFOlxuZnMvYnRyZnMvaW9jdGwuYzo1NTU5Olx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfZGVmcmFnKGZpbGUsIGFyZ3ApO1xuZnMvYnRyZnMvaW9jdGwuYy01NTYwLVx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdHJmcyBJT0NUTCBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBidHJmc19pb2N0bGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgcG9pbnQuIEl0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IGZvciBpb2N0bCBvcGVyYXRpb25zIGluIHRoZSBCdHJmcyBmaWxlc3lzdGVtLCBzbyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzdGFydGluZyBwbGFjZSwgdGhvdWdoIGEgbGl0dGxlIGdlbmVyaWMgYXQgZmlyc3QgZ2xhbmNlLiBCdXQsIGl0IGlzICpzcGVjaWZpYyogdG8gQnRyZnMsIHNvIG1heWJlIHRoYXQmIzM5O3Mgb2theS4gSG1tLCB0aGVyZSYjMzk7cyBgYnRyZnNfaW9jdGxfZGVmcmFnYCAtIGl0JiMzOTtzIHN0YXRpYywgc28gaXTigJlzIGxpa2VseSBub3QgaW5saW5lZC4gSXQgc2VlbXMgcHJldHR5IGxhcmdlLiBJdOKAmXMgY2FsbGVkIGZyb20gdHdvIHBsYWNlcywgc28gdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCYjMzk7cyBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZXRhaWxlZCBhbmFseXNpcy4gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiBpdHMgYWN0dWFsIHNpemUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQzMDpcdHN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcbjI0MzE6XHR7XG4yNDMyOlx0XHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxlKTtcbjI0MzM6XHRcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXHUwMDNlcm9vdDtcbjI0MzQ6XHRcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcbjI0MzU6XHRcdGludCByZXQ7XG4yNDM2Olx0XG4yNDM3Olx0XHRyZXQgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbGUpO1xuMjQzODpcdFx0aWYgKHJldClcbjI0Mzk6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDA6XHRcbjI0NDE6XHRcdGlmIChidHJmc19yb290X3JlYWRvbmx5KHJvb3QpKSB7XG4yNDQyOlx0XHRcdHJldCA9IC1FUk9GUztcbjI0NDM6XHRcdFx0Z290byBvdXQ7XG4yNDQ0Olx0XHR9XG4yNDQ1Olx0XG4yNDQ2Olx0XHRzd2l0Y2ggKGlub2RlLVx1MDAzZWlfbW9kZSBcdTAwMjYgU19JRk1UKSB7XG4yNDQ3Olx0XHRjYXNlIFNfSUZESVI6XG4yNDQ4Olx0XHRcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xuMjQ0OTpcdFx0XHRcdHJldCA9IC1FUEVSTTtcbjI0NTA6XHRcdFx0XHRnb3RvIG91dDtcbjI0NTE6XHRcdFx0fVxuMjQ1MjpcdFx0XHRyZXQgPSBidHJmc19kZWZyYWdfcm9vdChyb290KTtcbjI0NTM6XHRcdFx0YnJlYWs7XG4yNDU0Olx0XHRjYXNlIFNfSUZSRUc6XG4yNDU1Olx0XHRcdC8qXG4yNDU2Olx0XHRcdCAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHdyaXRlXG4yNDU3Olx0XHRcdCAqIGFjY2Vzcy4gVGhpcyBwcmV2ZW50cyBkZWZyYWdtZW50aW5nIGV4ZWN1dGFibGVzIHRoYXQgYXJlXG4yNDU4Olx0XHRcdCAqIHJ1bm5pbmcgYW5kIGFsbG93cyBkZWZyYWcgb24gZmlsZXMgb3BlbiBpbiByZWFkLW9ubHkgbW9kZS5cbjI0NTk6XHRcdFx0ICovXG4yNDYwOlx0XHRcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSBcdTAwMjZcdTAwMjZcbjI0NjE6XHRcdFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4yNDYyOlx0XHRcdFx0cmV0ID0gLUVQRVJNO1xuMjQ2MzpcdFx0XHRcdGdvdG8gb3V0O1xuMjQ2NDpcdFx0XHR9XG4yNDY1Olx0XG4yNDY2Olx0XHRcdC8qXG4yNDY3Olx0XHRcdCAqIERvbiYjMzk7dCBhbGxvdyBkZWZyYWcgb24gcHJlLWNvbnRlbnQgd2F0Y2hlZCBmaWxlcywgYXMgaXQgY291bGRcbjI0Njg6XHRcdFx0ICogcG9wdWxhdGUgdGhlIHBhZ2UgY2FjaGUgd2l0aCAwJiMzOTtzIHZpYSByZWFkYWhlYWQuXG4yNDY5Olx0XHRcdCAqL1xuMjQ3MDpcdFx0XHRpZiAodW5saWtlbHkoRk1PREVfRlNOT1RJRllfSFNNKGZpbGUtXHUwMDNlZl9tb2RlKSkpIHtcbjI0NzE6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMjQ3MjpcdFx0XHRcdGdvdG8gb3V0O1xuMjQ3MzpcdFx0XHR9XG4yNDc0Olx0XG4yNDc1Olx0XHRcdGlmIChhcmdwKSB7XG4yNDc2Olx0XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkge1xuMjQ3NzpcdFx0XHRcdFx0cmV0ID0gLUVGQVVMVDtcbjI0Nzg6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMjQ3OTpcdFx0XHRcdH1cbjI0ODA6XHRcdFx0XHRpZiAocmFuZ2UuZmxhZ3MgXHUwMDI2IH5CVFJGU19ERUZSQUdfUkFOR0VfRkxBR1NfU1VQUCkge1xuMjQ4MTpcdFx0XHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4yNDgyOlx0XHRcdFx0XHRnb3RvIG91dDtcbjI0ODM6XHRcdFx0XHR9XG4yNDg0Olx0XHRcdFx0aWYgKChyYW5nZS5mbGFncyBcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX0NPTVBSRVNTKSBcdTAwMjZcdTAwMjZcbjI0ODU6XHRcdFx0XHQgICAgKHJhbmdlLmZsYWdzIFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfTk9DT01QUkVTUykpIHtcbjI0ODY6XHRcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4yNDg3Olx0XHRcdFx0XHRnb3RvIG91dDtcbjI0ODg6XHRcdFx0XHR9XG4yNDg5Olx0XHRcdFx0LyogQ29tcHJlc3Npb24gb3Igbm8tY29tcHJlc3Npb24gcmVxdWlyZSB0byBzdGFydCB0aGUgSU8uICovXG4yNDkwOlx0XHRcdFx0aWYgKChyYW5nZS5mbGFncyBcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX0NPTVBSRVNTKSB8fFxuMjQ5MTpcdFx0XHRcdCAgICAocmFuZ2UuZmxhZ3MgXHUwMDI2IEJUUkZTX0RFRlJBR19SQU5HRV9OT0NPTVBSRVNTKSkge1xuMjQ5MjpcdFx0XHRcdFx0cmFuZ2UuZmxhZ3MgfD0gQlRSRlNfREVGUkFHX1JBTkdFX1NUQVJUX0lPO1xuMjQ5MzpcdFx0XHRcdFx0cmFuZ2UuZXh0ZW50X3RocmVzaCA9ICh1MzIpLTE7XG4yNDk0Olx0XHRcdFx0fVxuMjQ5NTpcdFx0XHR9IGVsc2Uge1xuMjQ5NjpcdFx0XHRcdC8qIHRoZSByZXN0IGFyZSBhbGwgc2V0IHRvIHplcm8gYnkga3phbGxvYyAqL1xuMjQ5NzpcdFx0XHRcdHJhbmdlLmxlbiA9ICh1NjQpLTE7XG4yNDk4Olx0XHRcdH1cbjI0OTk6XHRcdFx0cmV0ID0gYnRyZnNfZGVmcmFnX2ZpbGUoQlRSRlNfSShmaWxlX2lub2RlKGZpbGUpKSwgXHUwMDI2ZmlsZS1cdTAwM2VmX3JhLFxuMjUwMDpcdFx0XHRcdFx0XHRcdTAwMjZyYW5nZSwgQlRSRlNfT0xERVNUX0dFTkVSQVRJT04sIDApO1xuMjUwMTpcdFx0XHRpZiAocmV0IFx1MDAzZSAwKVxuMjUwMjpcdFx0XHRcdHJldCA9IDA7XG4yNTAzOlx0XHRcdGJyZWFrO1xuMjUwNDpcdFx0ZGVmYXVsdDpcbjI1MDU6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjI1MDY6XHRcdH1cbjI1MDc6XHRvdXQ6XG4yNTA4Olx0XHRtbnRfZHJvcF93cml0ZV9maWxlKGZpbGUpO1xuMjUwOTpcdFx0cmV0dXJuIHJldDtcbjI1MTA6XHR9XG4yNTExOlx0XG4yNTEyOlx0c3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfYWRkX2RldihzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgdm9pZCBfX3VzZXIgKmFyZylcbjI1MTM6XHR7XG4yNTE0Olx0XHRzdHJ1Y3QgYnRyZnNfaW9jdGxfdm9sX2FyZ3MgQVVUT19LRlJFRSh2b2xfYXJncyk7XG4yNTE1Olx0XHRib29sIHJlc3RvcmVfb3AgPSBmYWxzZTtcbjI1MTY6XHRcdGludCByZXQ7XG4yNTE3Olx0XG4yNTE4Olx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpXG4yNTE5Olx0XHRcdHJldHVybiAtRVBFUk07XG4yNTIwOlx0XG4yNTIxOlx0XHRpZiAoYnRyZnNfZnNfaW5jb21wYXQoZnNfaW5mbywgRVhURU5UX1RSRUVfVjIpKSB7XG4yNTIyOlx0XHRcdGJ0cmZzX2Vycihmc19pbmZvLCBcJiMzNDtkZXZpY2UgYWRkIG5vdCBzdXBwb3J0ZWQgb24gZXh0ZW50IHRyZWUgdjIgeWV0XCYjMzQ7KTtcbjI1MjM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNTI0Olx0XHR9XG4yNTI1Olx0XG4yNTI2Olx0XHRpZiAoZnNfaW5mby1cdTAwM2Vmc19kZXZpY2VzLVx1MDAzZXRlbXBfZnNpZCkge1xuMjUyNzpcdFx0XHRidHJmc19lcnIoZnNfaW5mbyxcbjI1Mjg6XHRcdFx0XHQgIFwmIzM0O2RldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBjbG9uZWQgdGVtcC1mc2lkIG1vdW50XCYjMzQ7KTtcbjI1Mjk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ0cmZzIERlZnJhZ21lbnRhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLiBJdCYjMzk7cyBhIHByZXR0eSBoZWZ0eSBjaHVuayBvZiBjb2RlLCBlaWdodHkgbGluZXMsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYSBjb3VwbGUgb2YgdGltZXMuIE15IGd1dCBzYXlzIGl0JiMzOTtzIHByb2JhYmx5ICpub3QqIGlubGluZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gVG8gYmUgc2FmZSwgSSYjMzk7bGwga2VlcCBgYnRyZnNfaW9jdGxgIG9uIG15IHJhZGFyIGFzIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2sgdG9vLCBzaW5jZSBpdCBpcyB0aGUgY2FsbGVyLiBUaGVuIHRoZXJlIGlzIGBidHJmc19kZWZyYWdfZmlsZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBidHJmc19pb2N0bF9kZWZyYWdgLgoKV2FpdCwgaG9sZCBvbi4gVGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIGNoYW5nZXMgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBkaXJlY3RseS4gTm93LCBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgaXQgY291bGQgc3RpbGwgYmUgaW5saW5lZC4uLiBhbmQgaWYgdGhhdCB3ZXJlIHRoZSBjYXNlLCB0aGVuIGBidHJmc19pb2N0bGAgd291bGQgYmUgdGhlIGZ1bmN0aW9uIG9mIGludGVyZXN0LgoKQWxyaWdodCwgc2luY2UgdGhlIHBhdGNoIGRpcmVjdGx5IGFmZmVjdHMgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AsIEkmIzM5O2xsIGluY2x1ZGUgaXQuCgpOb3csIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEJ0cmZzIGNvbmZpZ3VyYXRpb24gdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJUUkZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnLTMtXG5mcy9idHJmcy9LY29uZmlnOjQ6Y29uZmlnIEJUUkZTX0ZTXG5mcy9idHJmcy9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtCdHJmcyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9idHJmcy9LY29uZmlnLTM5LVxuZnMvYnRyZnMvS2NvbmZpZzo0MDpjb25maWcgQlRSRlNfRlNfUE9TSVhfQUNMXG5mcy9idHJmcy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtCdHJmcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2J0cmZzL0tjb25maWctNDktXG5mcy9idHJmcy9LY29uZmlnOjUwOmNvbmZpZyBCVFJGU19GU19SVU5fU0FOSVRZX1RFU1RTXG5mcy9idHJmcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtCdHJmcyB3aWxsIHJ1biBzYW5pdHkgdGVzdHMgdXBvbiBsb2FkaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzYKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJUUkZTIERlZmFnIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJUUkZTIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdGFyZ2V0aW5nIHRoZSBgYnRyZnNfaW9jdGxgIGRlZnJhZyBmdW5jdGlvbmFsaXR5LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGFuIGlkbWFwcGVkIG1vdW50IGJ1ZyB3aXRoaW4gdGhlIGBidHJmc2AgaW9jdGwgc3lzdGVtLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGZ1enotd29ydGh5LCBmb3Igc3VyZS4KCk15IGZpcnN0IHRob3VnaHQgb24gdGhlIGNvbmZpZyBzaWRlIG9mIHRoaW5ncyBpcyB0aGF0IGBCVFJGU19GU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KCk15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIHplcm8gaW4gb24gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYXMgdGhlIGZvY3VzIHN5bWJvbCwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gYWZmZWN0ZWQuIEJ1dCwgSSBuZWVkIHRvIGJlIGNhcmVmdWwgYW5kIG1ha2Ugc3VyZS4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBSaWdodCwgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUsIGFuZCBub3QgaW5saW5lIGVpdGhlci4gQmV0dGVyIHRvIHBsYXkgaXQgc2FmZSBhbmQgdXNlIGBidHJmc19pb2N0bGAgYXMgbXkgZm9jdXMgc3ltYm9sIGluc3RlYWQuIFRoYXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGJlc3Qgd2F5IHRvIGdldCBhdCB0aGUgY2hhbmdlLgoKTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGUgcGVybWlzc2lvbiBjaGVja2luZyB3aXRoaW4gdGhlIGRlZnJhZyBpb2N0bCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBpZG1hcHBlZCBtb3VudHMgYXJlIGhhbmRsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1c2luZyBgJmFtcDtub3BfbW50X2lkbWFwYCwgYnV0IG5vdyBpdCBpcyBzd2l0Y2hlZCB0byBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgLiBUaGlzIG1lYW5zIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiBhbiBpb2N0bCB0aGF0JiMzOTtzIGF0IHRoZSBjb3JlIG9mIHRoZSBCVFJGUyBmaWxlc3lzdGVtLiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNDZkZTI5ZTA4M2M4MWJlZmMwY2IwZTU2MjY3OThmZjRjNmJjMDdlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMTQ6MTc6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCA3MmJjOWQ0Zjc3MDg3Li42MDczMjlkZWRkNTAzIDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL2lvY3RsLmMKQEAgLTI0NTgsNyAmIzQzOzI0NTgsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2RlZnJhZyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJCSAqIHJ1bm5pbmcgYW5kIGFsbG93cyBkZWZyYWcgb24gZmlsZXMgb3BlbiBpbiByZWFkLW9ubHkgbW9kZS4KIAkJICovCiAJCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSAmYW1wOyZhbXA7Ci0JCSAgICBpbm9kZV9wZXJtaXNzaW9uKCZhbXA7bm9wX21udF9pZG1hcCwgaW5vZGUsIE1BWV9XUklURSkpIHsKJiM0MzsJCSAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkgewogCQkJcmV0ID0gLUVQRVJNOwogCQkJZ290byBvdXQ7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDMKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBlcm1pc3Npb24gQ2hlY2sgRml4IGluIEJ0cmZzIGlvY3RsLmMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQnRyZnMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyBgZnMvYnRyZnMvaW9jdGwuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBwZXJtaXNzaW9uIGNoZWNrIGZpeCwgY2hhbmdpbmcgaG93IHRoZSBgaWRtYXBgIGlzIHBhc3NlZCB0byBgaW5vZGVfcGVybWlzc2lvbmAuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYG5vcF9tbnRfaWRtYXBgLCBidXQgbm93IGl0JiMzOTtzIHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAuIFRoYXQgc2VlbXMgY29ycmVjdCBmb3IgZW5zdXJpbmcgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb24gY2hlY2tzIGJhc2VkIG9uIHRoZSBmaWxlJiMzOTtzIG1vdW50LgoKVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zIOKAkyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLCBubyB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMuIEl0JiMzOTtzIGp1c3QgYSBwYXJhbWV0ZXIgY2hhbmdlIHRvIGBpbm9kZV9wZXJtaXNzaW9uYC4gVGhhdCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBLTVNBTiBwZXJzcGVjdGl2ZSwgdGhhbmtmdWxseS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQgdGhlIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIGVsc2Ugc25lYWt5IGdvaW5nIG9uLiBUaGUgY2hhbmdlIGlzIHdpdGhpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCwgYW5kIGl0JiMzOTtzIGNvbmZpcm1pbmcgdGhlIHVzZXIgaGFzIGBDQVBfU1lTX0FETUlOYCBvciB3cml0ZSBwZXJtaXNzaW9ucyBvbiB0aGUgaW5vZGUuIEl0JiMzOTtzIGFsbCB2ZXJ5IGNsZWFuLCBhbmQgSSBjYW4mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIG1lbW9yeSBpc3N1ZXMgdGhlcmUgZWl0aGVyLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIGBidHJmc19pb2N0bF9kZWZyYWdgIGJ5IHVzaW5nIHRoZSBjb3JyZWN0IG1vdW50IGlkbWFwIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKSBpbnN0ZWFkIG9mIGBub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIHB1cmVseSBsb2dpY2FsIGNoYW5nZSByZWxhdGVkIHRvIGFjY2VzcyBjb250cm9sIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljYWwgb3IgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RzLCBub3QgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjQ2Ljg4MjE0NzAwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDkzNDA5NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfaW9jdGxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiB0aGUgYnRyZnMgZGVmcmFnIGlvY3RsIHRvIGNvcnJlY3RseSBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGJ5IHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAgaW5zdGVhZCBvZiBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo0Ni44ODIxNTUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA1ODc1NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDoxNzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuY1xcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XFxuLS0tIGEvZnMvYnRyZnMvaW9jdGwuY1xcbisrKyBiL2ZzL2J0cmZzL2lvY3RsLmNcXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbiBcXHRcXHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oXFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XFxuK1xcdFxcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xcbiBcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjQ4LjI4OTA5MDYwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0MzQ0MjIyMTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFxcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4rXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xuIFx0XHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTc6NDguMjg5MDkzNDY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNTQzMzM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCdHJmcyBEZWZyYWcgSU9DVEwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gaG93IGl0IGhhbmRsZXMgcGVybWlzc2lvbnMsIHNwZWNpZmljYWxseSB0aGUgc2hpZnQgZnJvbSB1c2luZyBhIGdsb2JhbCBtb3VudCBJRCBtYXAgKGBcdTAwMjZub3BfbW50X2lkbWFwYCkgdG8gdGhlIElEIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUgaXRzZWxmIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKS4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGlkbWFwcGVkIG1vdW50cyBhbmQgaG93IHBlcm1pc3Npb25zIGFyZSBlbmZvcmNlZCBkdXJpbmcgdGhlIGRlZnJhZyBwcm9jZXNzLlxuXG5HaXZlbiB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcImZ1enppbmdcIi4gQW55dGltZSB0aGVyZSdzIGEgcGVybWlzc2lvbi1yZWxhdGVkIGNoYW5nZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBjcml0aWNhbCBzdWJzeXN0ZW0gbGlrZSBCdHJmcywgaXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBleHBsb3JlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaW50cm9kdWNlZCBieSB0aGlzIG5ldyBwZXJtaXNzaW9uIGNoZWNrLiBUaGUgbW9zdCByZWxldmFudCBzeW1ib2wgdG8gZm9jdXMgb24gd291bGQgZWl0aGVyIGJlIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiwgb3IgcG90ZW50aWFsbHkgdGhlIGBidHJmc19pb2N0bGAgZGlzcGF0Y2hlciBpdHNlbGYuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgYnRyZnNfaW9jdGxfZGVmcmFnYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3MgaW4gYGZzL2J0cmZzL2lvY3RsLmNgIGFuZCBob3cgdGhpcyBtb3VudCBJRCBtYXBwaW5nIHdvcmtzIGluIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjUzLjEwNDUyOTYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTAyOTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19pb2N0bF9kZWZyYWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW9jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXFxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzEte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVxcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXFx1MDAzZXJvb3Q7XFxuZnMvYnRyZnMvaW9jdGwuYzoyNDM0OlxcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXFx0aW50IHJldDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNTU1Ni1cXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XFxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3OlxcdFxcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XFxuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVxcdGNhc2UgQlRSRlNfSU9DX0RFRlJBR19SQU5HRTpcXG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2RlZnJhZyhmaWxlLCBhcmdwKTtcXG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXFx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo1My4yMTM1NjU1MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1NTgxMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgSU9DVEwgRGVmcmFnIEZ1bmN0aW9uKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLi4uIFRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpcyAqc3RhdGljKiwgYnV0IGl0J3MgY2FsbGVkIGJ5IGBidHJmc19pb2N0bGAuIFdhaXQsIHNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGBidHJmc19pb2N0bGAgb3IgYGJ0cmZzX2lvY3RsX2RlZnJhZ2A/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoYXQgc3VnZ2VzdHMgYGJ0cmZzX2lvY3RsYCBpcyB0aGUga2V5IGVudHJ5cG9pbnQgaGVyZS4gQnV0IGhhbmcgb24sIGlzIGBidHJmc19pb2N0bGAgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uPyBObywgaXQncyBhIHNwZWNpZmljIGlvY3RsIGhhbmRsZXIgZm9yIHRoZSBidHJmcyBmaWxlc3lzdGVtLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIGBidHJmc19pb2N0bF9kZWZyYWdgLiBJdCdzIHN0YXRpYywgYnV0IGl0IGRvZXNuJ3QgKmFwcGVhciogdG8gYmUgaW5saW5lZC4gR2l2ZW4gaXRzIHNpemUsIGl0IHByb2JhYmx5IGlzbid0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBrZWVwIHRoZSB0ZXN0cyBmcm9tIGJlaW5nIHNrZXdlZC4gVGhleSB0ZWxsIG1lIHRvIHByZWZlciB0aGUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJcyBvdmVyIHRoZXNlIHN0YXRpYyBpbnRlcm5hbCBoZWxwZXJzIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNhbiBpbmxpbmUgdGhlbSwgYW5kIHRoZW4gdGhleSB3b24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIGBidHJmc19pb2N0bF9kZWZyYWdgICppcyogaW5saW5lZCwgdGhvdWdoLiBJdCBpc24ndCBtYXJrZWQgYXMgYGlubGluZWAgb3IgYG5vaW5saW5lYCwgc28gdGhlIGNvbXBpbGVyIGNvdWxkICpwb3RlbnRpYWxseSogaW5saW5lIGl0LiBUaGUgY2x1ZSBpcyB0aGF0IGl0J3MgY2FsbGVkIHR3aWNlIGZyb20gd2l0aGluIGBidHJmc19pb2N0bGAuIEkgYmV0dGVyIGNoZWNrIGl0cyBzaXplLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTc6NTguNTA5MTUwMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MzY5Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0cmZzX2lvY3RsX2RlZnJhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvZGVmcmFnLmM9MjE1PXN0YXRpYyBpbnQgYnRyZnNfcnVuX2RlZnJhZ19pbm9kZShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyxcXG4tLVxcbmZzL2J0cmZzL2RlZnJhZy5jLTIyMC1cXHRzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlO1xcbmZzL2J0cmZzL2RlZnJhZy5jOjIyMTpcXHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3MgcmFuZ2U7XFxuZnMvYnRyZnMvZGVmcmFnLmMtMjIyLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZnMvYnRyZnMvZGVmcmFnLmM9MTM0NT1pbnQgYnRyZnNfZGVmcmFnX2ZpbGUoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwgc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJhLFxcbmZzL2J0cmZzL2RlZnJhZy5jOjEzNDY6XFx0XFx0ICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzICpyYW5nZSxcXG5mcy9idHJmcy9kZWZyYWcuYy0xMzQ3LVxcdFxcdCAgICAgIHU2NCBuZXdlcl90aGFuLCB1bnNpZ25lZCBsb25nIG1heF90b19kZWZyYWcpXFxuLS1cXG5mcy9idHJmcy9kZWZyYWcuaD0xMz1zdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlO1xcbmZzL2J0cmZzL2RlZnJhZy5oOjE0OnN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncztcXG5mcy9idHJmcy9kZWZyYWcuaC0xNS1cXG5mcy9idHJmcy9kZWZyYWcuaD0xNj1pbnQgYnRyZnNfZGVmcmFnX2ZpbGUoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwgc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJhLFxcbmZzL2J0cmZzL2RlZnJhZy5oOjE3OlxcdFxcdCAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyAqcmFuZ2UsXFxuZnMvYnRyZnMvZGVmcmFnLmgtMTgtXFx0XFx0ICAgICAgdTY0IG5ld2VyX3RoYW4sIHVuc2lnbmVkIGxvbmcgbWF4X3RvX2RlZnJhZyk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXFxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzEte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVxcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXFx1MDAzZXJvb3Q7XFxuZnMvYnRyZnMvaW9jdGwuYzoyNDM0OlxcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXFx0aW50IHJldDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNTU1Ni1cXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XFxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3OlxcdFxcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XFxuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVxcdGNhc2UgQlRSRlNfSU9DX0RFRlJBR19SQU5HRTpcXG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2RlZnJhZyhmaWxlLCBhcmdwKTtcXG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXFx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo1OC42MDQ1MjYzNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEzOTA0ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgSU9DVEwgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGJ0cmZzX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cyBwb2ludC4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBmb3IgaW9jdGwgb3BlcmF0aW9ucyBpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbSwgc28gaXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcGxhY2UsIHRob3VnaCBhIGxpdHRsZSBnZW5lcmljIGF0IGZpcnN0IGdsYW5jZS4gQnV0LCBpdCBpcyAqc3BlY2lmaWMqIHRvIEJ0cmZzLCBzbyBtYXliZSB0aGF0J3Mgb2theS4gSG1tLCB0aGVyZSdzIGBidHJmc19pb2N0bF9kZWZyYWdgIC0gaXQncyBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgbm90IGlubGluZWQuIEl0IHNlZW1zIHByZXR0eSBsYXJnZS4gSXTigJlzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXMsIHNvIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCdzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBMZXQncyBnZXQgYSBoYW5kbGUgb24gaXRzIGFjdHVhbCBzaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE4OjAyLjQxODQzNDQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQzMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MzA6XFx0c3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbjI0MzE6XFx0e1xcbjI0MzI6XFx0XFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XFxuMjQzMzpcXHRcXHRzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLVxcdTAwM2Vyb290O1xcbjI0MzQ6XFx0XFx0c3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzIHJhbmdlID0gezB9O1xcbjI0MzU6XFx0XFx0aW50IHJldDtcXG4yNDM2OlxcdFxcbjI0Mzc6XFx0XFx0cmV0ID0gbW50X3dhbnRfd3JpdGVfZmlsZShmaWxlKTtcXG4yNDM4OlxcdFxcdGlmIChyZXQpXFxuMjQzOTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NDA6XFx0XFxuMjQ0MTpcXHRcXHRpZiAoYnRyZnNfcm9vdF9yZWFkb25seShyb290KSkge1xcbjI0NDI6XFx0XFx0XFx0cmV0ID0gLUVST0ZTO1xcbjI0NDM6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjQ0NDpcXHRcXHR9XFxuMjQ0NTpcXHRcXG4yNDQ2OlxcdFxcdHN3aXRjaCAoaW5vZGUtXFx1MDAzZWlfbW9kZSBcXHUwMDI2IFNfSUZNVCkge1xcbjI0NDc6XFx0XFx0Y2FzZSBTX0lGRElSOlxcbjI0NDg6XFx0XFx0XFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XFxuMjQ0OTpcXHRcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuMjQ1MDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDUxOlxcdFxcdFxcdH1cXG4yNDUyOlxcdFxcdFxcdHJldCA9IGJ0cmZzX2RlZnJhZ19yb290KHJvb3QpO1xcbjI0NTM6XFx0XFx0XFx0YnJlYWs7XFxuMjQ1NDpcXHRcXHRjYXNlIFNfSUZSRUc6XFxuMjQ1NTpcXHRcXHRcXHQvKlxcbjI0NTY6XFx0XFx0XFx0ICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2hlY2sgdGhlIGZpbGUgZGVzY3JpcHRvciBmb3Igd3JpdGVcXG4yNDU3OlxcdFxcdFxcdCAqIGFjY2Vzcy4gVGhpcyBwcmV2ZW50cyBkZWZyYWdtZW50aW5nIGV4ZWN1dGFibGVzIHRoYXQgYXJlXFxuMjQ1ODpcXHRcXHRcXHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXFxuMjQ1OTpcXHRcXHRcXHQgKi9cXG4yNDYwOlxcdFxcdFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSBcXHUwMDI2XFx1MDAyNlxcbjI0NjE6XFx0XFx0XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlLCBNQVlfV1JJVEUpKSB7XFxuMjQ2MjpcXHRcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuMjQ2MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDY0OlxcdFxcdFxcdH1cXG4yNDY1OlxcdFxcbjI0NjY6XFx0XFx0XFx0LypcXG4yNDY3OlxcdFxcdFxcdCAqIERvbid0IGFsbG93IGRlZnJhZyBvbiBwcmUtY29udGVudCB3YXRjaGVkIGZpbGVzLCBhcyBpdCBjb3VsZFxcbjI0Njg6XFx0XFx0XFx0ICogcG9wdWxhdGUgdGhlIHBhZ2UgY2FjaGUgd2l0aCAwJ3MgdmlhIHJlYWRhaGVhZC5cXG4yNDY5OlxcdFxcdFxcdCAqL1xcbjI0NzA6XFx0XFx0XFx0aWYgKHVubGlrZWx5KEZNT0RFX0ZTTk9USUZZX0hTTShmaWxlLVxcdTAwM2VmX21vZGUpKSkge1xcbjI0NzE6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4yNDcyOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjI0NzM6XFx0XFx0XFx0fVxcbjI0NzQ6XFx0XFxuMjQ3NTpcXHRcXHRcXHRpZiAoYXJncCkge1xcbjI0NzY6XFx0XFx0XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpIHtcXG4yNDc3OlxcdFxcdFxcdFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuMjQ3ODpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDc5OlxcdFxcdFxcdFxcdH1cXG4yNDgwOlxcdFxcdFxcdFxcdGlmIChyYW5nZS5mbGFncyBcXHUwMDI2IH5CVFJGU19ERUZSQUdfUkFOR0VfRkxBR1NfU1VQUCkge1xcbjI0ODE6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMjQ4MjpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDgzOlxcdFxcdFxcdFxcdH1cXG4yNDg0OlxcdFxcdFxcdFxcdGlmICgocmFuZ2UuZmxhZ3MgXFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfQ09NUFJFU1MpIFxcdTAwMjZcXHUwMDI2XFxuMjQ4NTpcXHRcXHRcXHRcXHQgICAgKHJhbmdlLmZsYWdzIFxcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX05PQ09NUFJFU1MpKSB7XFxuMjQ4NjpcXHRcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbjI0ODc6XFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMjQ4ODpcXHRcXHRcXHRcXHR9XFxuMjQ4OTpcXHRcXHRcXHRcXHQvKiBDb21wcmVzc2lvbiBvciBuby1jb21wcmVzc2lvbiByZXF1aXJlIHRvIHN0YXJ0IHRoZSBJTy4gKi9cXG4yNDkwOlxcdFxcdFxcdFxcdGlmICgocmFuZ2UuZmxhZ3MgXFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfQ09NUFJFU1MpIHx8XFxuMjQ5MTpcXHRcXHRcXHRcXHQgICAgKHJhbmdlLmZsYWdzIFxcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX05PQ09NUFJFU1MpKSB7XFxuMjQ5MjpcXHRcXHRcXHRcXHRcXHRyYW5nZS5mbGFncyB8PSBCVFJGU19ERUZSQUdfUkFOR0VfU1RBUlRfSU87XFxuMjQ5MzpcXHRcXHRcXHRcXHRcXHRyYW5nZS5leHRlbnRfdGhyZXNoID0gKHUzMiktMTtcXG4yNDk0OlxcdFxcdFxcdFxcdH1cXG4yNDk1OlxcdFxcdFxcdH0gZWxzZSB7XFxuMjQ5NjpcXHRcXHRcXHRcXHQvKiB0aGUgcmVzdCBhcmUgYWxsIHNldCB0byB6ZXJvIGJ5IGt6YWxsb2MgKi9cXG4yNDk3OlxcdFxcdFxcdFxcdHJhbmdlLmxlbiA9ICh1NjQpLTE7XFxuMjQ5ODpcXHRcXHRcXHR9XFxuMjQ5OTpcXHRcXHRcXHRyZXQgPSBidHJmc19kZWZyYWdfZmlsZShCVFJGU19JKGZpbGVfaW5vZGUoZmlsZSkpLCBcXHUwMDI2ZmlsZS1cXHUwMDNlZl9yYSxcXG4yNTAwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyYW5nZSwgQlRSRlNfT0xERVNUX0dFTkVSQVRJT04sIDApO1xcbjI1MDE6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApXFxuMjUwMjpcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjI1MDM6XFx0XFx0XFx0YnJlYWs7XFxuMjUwNDpcXHRcXHRkZWZhdWx0OlxcbjI1MDU6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4yNTA2OlxcdFxcdH1cXG4yNTA3OlxcdG91dDpcXG4yNTA4OlxcdFxcdG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlsZSk7XFxuMjUwOTpcXHRcXHRyZXR1cm4gcmV0O1xcbjI1MTA6XFx0fVxcbjI1MTE6XFx0XFxuMjUxMjpcXHRzdGF0aWMgbG9uZyBidHJmc19pb2N0bF9hZGRfZGV2KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB2b2lkIF9fdXNlciAqYXJnKVxcbjI1MTM6XFx0e1xcbjI1MTQ6XFx0XFx0c3RydWN0IGJ0cmZzX2lvY3RsX3ZvbF9hcmdzIEFVVE9fS0ZSRUUodm9sX2FyZ3MpO1xcbjI1MTU6XFx0XFx0Ym9vbCByZXN0b3JlX29wID0gZmFsc2U7XFxuMjUxNjpcXHRcXHRpbnQgcmV0O1xcbjI1MTc6XFx0XFxuMjUxODpcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpXFxuMjUxOTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbjI1MjA6XFx0XFxuMjUyMTpcXHRcXHRpZiAoYnRyZnNfZnNfaW5jb21wYXQoZnNfaW5mbywgRVhURU5UX1RSRUVfVjIpKSB7XFxuMjUyMjpcXHRcXHRcXHRidHJmc19lcnIoZnNfaW5mbywgXFxcImRldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBleHRlbnQgdHJlZSB2MiB5ZXRcXFwiKTtcXG4yNTIzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI1MjQ6XFx0XFx0fVxcbjI1MjU6XFx0XFxuMjUyNjpcXHRcXHRpZiAoZnNfaW5mby1cXHUwMDNlZnNfZGV2aWNlcy1cXHUwMDNldGVtcF9mc2lkKSB7XFxuMjUyNzpcXHRcXHRcXHRidHJmc19lcnIoZnNfaW5mbyxcXG4yNTI4OlxcdFxcdFxcdFxcdCAgXFxcImRldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBjbG9uZWQgdGVtcC1mc2lkIG1vdW50XFxcIik7XFxuMjUyOTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MDIuNDE5MjI5MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk5Njg0NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgRGVmcmFnbWVudGF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLiBJdCdzIGEgcHJldHR5IGhlZnR5IGNodW5rIG9mIGNvZGUsIGVpZ2h0eSBsaW5lcywgYW5kIGl0J3MgY2FsbGVkIGEgY291cGxlIG9mIHRpbWVzLiBNeSBndXQgc2F5cyBpdCdzIHByb2JhYmx5ICpub3QqIGlubGluZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gVG8gYmUgc2FmZSwgSSdsbCBrZWVwIGBidHJmc19pb2N0bGAgb24gbXkgcmFkYXIgYXMgYSBnb29kIHN5bWJvbCB0byB0cmFjayB0b28sIHNpbmNlIGl0IGlzIHRoZSBjYWxsZXIuIFRoZW4gdGhlcmUgaXMgYGJ0cmZzX2RlZnJhZ19maWxlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AuXG5cbldhaXQsIGhvbGQgb24uIFRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBjaGFuZ2VzIGBidHJmc19pb2N0bF9kZWZyYWdgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBkaXJlY3RseS4gTm93LCBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgaXQgY291bGQgc3RpbGwgYmUgaW5saW5lZC4uLiBhbmQgaWYgdGhhdCB3ZXJlIHRoZSBjYXNlLCB0aGVuIGBidHJmc19pb2N0bGAgd291bGQgYmUgdGhlIGZ1bmN0aW9uIG9mIGludGVyZXN0LlxuXG5BbHJpZ2h0LCBzaW5jZSB0aGUgcGF0Y2ggZGlyZWN0bHkgYWZmZWN0cyBgYnRyZnNfaW9jdGxfZGVmcmFnYCwgSSdsbCBpbmNsdWRlIGl0LlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEJ0cmZzIGNvbmZpZ3VyYXRpb24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE4OjA3LjIxODkxNjc3NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUwNTAyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJUUkZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvS2NvbmZpZy0zLVxcbmZzL2J0cmZzL0tjb25maWc6NDpjb25maWcgQlRSRlNfRlNcXG5mcy9idHJmcy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkJ0cmZzIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctMzktXFxuZnMvYnRyZnMvS2NvbmZpZzo0MDpjb25maWcgQlRSRlNfRlNfUE9TSVhfQUNMXFxuZnMvYnRyZnMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJCdHJmcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctNDktXFxuZnMvYnRyZnMvS2NvbmZpZzo1MDpjb25maWcgQlRSRlNfRlNfUlVOX1NBTklUWV9URVNUU1xcbmZzL2J0cmZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiQnRyZnMgd2lsbCBydW4gc2FuaXR5IHRlc3RzIHVwb24gbG9hZGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MDcuMzEzOTczNzEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODM3MDM1NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlRSRlMgRGVmYWcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJUUkZTIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdGFyZ2V0aW5nIHRoZSBgYnRyZnNfaW9jdGxgIGRlZnJhZyBmdW5jdGlvbmFsaXR5LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYW4gaWRtYXBwZWQgbW91bnQgYnVnIHdpdGhpbiB0aGUgYGJ0cmZzYCBpb2N0bCBzeXN0ZW0uIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgZnV6ei13b3J0aHksIGZvciBzdXJlLlxuXG5NeSBmaXJzdCB0aG91Z2h0IG9uIHRoZSBjb25maWcgc2lkZSBvZiB0aGluZ3MgaXMgdGhhdCBgQlRSRlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgaXRlbSB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbk15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIHplcm8gaW4gb24gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYXMgdGhlIGZvY3VzIHN5bWJvbCwgZ2l2ZW4gdGhhdCBpdCdzIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBhZmZlY3RlZC4gQnV0LCBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBhbmQgbWFrZSBzdXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrLi4uIFJpZ2h0LCBpdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlLCBhbmQgbm90IGlubGluZSBlaXRoZXIuIEJldHRlciB0byBwbGF5IGl0IHNhZmUgYW5kIHVzZSBgYnRyZnNfaW9jdGxgIGFzIG15IGZvY3VzIHN5bWJvbCBpbnN0ZWFkLiBUaGF04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBiZXN0IHdheSB0byBnZXQgYXQgdGhlIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGUgcGVybWlzc2lvbiBjaGVja2luZyB3aXRoaW4gdGhlIGRlZnJhZyBpb2N0bCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBpZG1hcHBlZCBtb3VudHMgYXJlIGhhbmRsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1c2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAsIGJ1dCBub3cgaXQgaXMgc3dpdGNoZWQgdG8gYGZpbGVfbW50X2lkbWFwKGZpbGUpYC4gVGhpcyBtZWFucyBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgaW4gYW4gaW9jdGwgdGhhdCdzIGF0IHRoZSBjb3JlIG9mIHRoZSBCVFJGUyBmaWxlc3lzdGVtLiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzNiwiT3V0cHV0VG9rZW5zIjoxMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTIuNDk3NjgwODI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NjI1MDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0cmZzX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2bm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIGZpbGVzeXN0ZW0gaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRSRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc19pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiB0aGUgYnRyZnMgZGVmcmFnIGlvY3RsIHRvIGNvcnJlY3RseSBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGJ5IHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAgaW5zdGVhZCBvZiBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxODoxMi42MzMzMTY3MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDIyMjUyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxODoxMi42MzM5ODY0NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM0MTU0OTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIGBidHJmc19pb2N0bF9kZWZyYWdgIGJ5IHVzaW5nIHRoZSBjb3JyZWN0IG1vdW50IGlkbWFwIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKSBpbnN0ZWFkIG9mIGBub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIHB1cmVseSBsb2dpY2FsIGNoYW5nZSByZWxhdGVkIHRvIGFjY2VzcyBjb250cm9sIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljYWwgb3IgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RzLCBub3QgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4rXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xuIFx0XHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTIuNjMzOTg4NDYyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDE0OTk1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGVybWlzc2lvbiBDaGVjayBGaXggaW4gQnRyZnMgaW9jdGwuYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQnRyZnMgcGF0Y2ggdGhhdCdzIHR3ZWFraW5nIGBmcy9idHJmcy9pb2N0bC5jYC4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcGVybWlzc2lvbiBjaGVjayBmaXgsIGNoYW5naW5nIGhvdyB0aGUgYGlkbWFwYCBpcyBwYXNzZWQgdG8gYGlub2RlX3Blcm1pc3Npb25gLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBub3BfbW50X2lkbWFwYCwgYnV0IG5vdyBpdCdzIHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAuIFRoYXQgc2VlbXMgY29ycmVjdCBmb3IgZW5zdXJpbmcgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb24gY2hlY2tzIGJhc2VkIG9uIHRoZSBmaWxlJ3MgbW91bnQuXG5cblRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zIOKAkyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLCBubyB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMuIEl0J3MganVzdCBhIHBhcmFtZXRlciBjaGFuZ2UgdG8gYGlub2RlX3Blcm1pc3Npb25gLiBUaGF0IG1ha2VzIGl0IGxlc3MgaW50ZXJlc3RpbmcgZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLCB0aGFua2Z1bGx5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQgdGhlIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vdGhpbmcgZWxzZSBzbmVha3kgZ29pbmcgb24uIFRoZSBjaGFuZ2UgaXMgd2l0aGluIGBidHJmc19pb2N0bF9kZWZyYWdgLCBhbmQgaXQncyBjb25maXJtaW5nIHRoZSB1c2VyIGhhcyBgQ0FQX1NZU19BRE1JTmAgb3Igd3JpdGUgcGVybWlzc2lvbnMgb24gdGhlIGlub2RlLiBJdCdzIGFsbCB2ZXJ5IGNsZWFuLCBhbmQgSSBjYW4ndCBzZWUgYW55IG9idmlvdXMgbWVtb3J5IGlzc3VlcyB0aGVyZSBlaXRoZXIuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCB0aGF0IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDMsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTcuOTc1NDkyNTgxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowg6b4k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 13:36:20 +0000 UTC FinishedAt: 2026-08-15 14:18:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BTRFS_FS" ], "series_id": "5db6f018-131b-4ee3-8804-5deb18967b77" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "btrfs_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI0NmRlMjllMDgzYzgxYmVmYzBjYjBlNTYyNjc5OGZmNGM2YmMwN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDoxNzo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuY1xuaW5kZXggNzJiYzlkNGY3NzA4Ny4uNjA3MzI5ZGVkZDUwMyAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL2lvY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL2lvY3RsLmNcbkBAIC0yNDU4LDcgJiM0MzsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4mIzQzO1x0XHQgICAgaW5vZGVfcGVybWlzc2lvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIE1BWV9XUklURSkpIHtcbiBcdFx0XHRyZXQgPSAtRVBFUk07XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggNzJiYzlkNGY3NzA4Ny4uNjA3MzI5ZGVkZDUwMyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW9jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC0yNDU4LDcgJiM0MzsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKQogCQkgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuCiAJCSAqLwogCQlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgJmFtcDsmYW1wOwotCQkgICAgaW5vZGVfcGVybWlzc2lvbigmYW1wO25vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7CiYjNDM7CQkgICAgaW5vZGVfcGVybWlzc2lvbihmaWxlX21udF9pZG1hcChmaWxlKSwgaW5vZGUsIE1BWV9XUklURSkpIHsKIAkJCXJldCA9IC1FUEVSTTsKIAkJCWdvdG8gb3V0OwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnRyZnMgRGVmcmFnIElPQ1RMIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gaG93IGl0IGhhbmRsZXMgcGVybWlzc2lvbnMsIHNwZWNpZmljYWxseSB0aGUgc2hpZnQgZnJvbSB1c2luZyBhIGdsb2JhbCBtb3VudCBJRCBtYXAgKGAmYW1wO25vcF9tbnRfaWRtYXBgKSB0byB0aGUgSUQgbWFwIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBpdHNlbGYgKGBmaWxlX21udF9pZG1hcChmaWxlKWApLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaWRtYXBwZWQgbW91bnRzIGFuZCBob3cgcGVybWlzc2lvbnMgYXJlIGVuZm9yY2VkIGR1cmluZyB0aGUgZGVmcmFnIHByb2Nlc3MuCgpHaXZlbiB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyAmIzM0O2Z1enppbmcmIzM0Oy4gQW55dGltZSB0aGVyZSYjMzk7cyBhIHBlcm1pc3Npb24tcmVsYXRlZCBjaGFuZ2UsIGVzcGVjaWFsbHkgd2l0aGluIGEgY3JpdGljYWwgc3Vic3lzdGVtIGxpa2UgQnRyZnMsIGl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBuZWVkIHRvIGV4cGxvcmUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbmV3IHBlcm1pc3Npb24gY2hlY2suIFRoZSBtb3N0IHJlbGV2YW50IHN5bWJvbCB0byBmb2N1cyBvbiB3b3VsZCBlaXRoZXIgYmUgdGhlIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLCBvciBwb3RlbnRpYWxseSB0aGUgYGJ0cmZzX2lvY3RsYCBkaXNwYXRjaGVyIGl0c2VsZi4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgYnRyZnNfaW9jdGxfZGVmcmFnYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3MgaW4gYGZzL2J0cmZzL2lvY3RsLmNgIGFuZCBob3cgdGhpcyBtb3VudCBJRCBtYXBwaW5nIHdvcmtzIGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidHJmc19pb2N0bF9kZWZyYWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2lvY3RsLmM9MjIxNj1zdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfZGVzdHJveShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXG5mcy9idHJmcy9pb2N0bC5jOjI0MzA6c3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuZnMvYnRyZnMvaW9jdGwuYy0yNDMxLXtcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTI0MzMtXHRzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLVx1MDAzZXJvb3Q7XG5mcy9idHJmcy9pb2N0bC5jOjI0MzQ6XHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3MgcmFuZ2UgPSB7MH07XG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXHRpbnQgcmV0O1xuLS1cbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcbi0tXG5mcy9idHJmcy9pb2N0bC5jLTU1NTYtXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XG5mcy9idHJmcy9pb2N0bC5jOjU1NTc6XHRcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XG5mcy9idHJmcy9pb2N0bC5jLTU1NTgtXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUdfUkFOR0U6XG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XHRcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgYXJncCk7XG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXHRjYXNlIEJUUkZTX0lPQ19SRVNJWkU6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ0cmZzIElPQ1RMIERlZnJhZyBGdW5jdGlvbioqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZy4uLiBUaGUgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgZnVuY3Rpb24gaXMgKnN0YXRpYyosIGJ1dCBpdCYjMzk7cyBjYWxsZWQgYnkgYGJ0cmZzX2lvY3RsYC4gV2FpdCwgc2hvdWxkIEkgYmUgZm9jdXNpbmcgb24gYGJ0cmZzX2lvY3RsYCBvciBgYnRyZnNfaW9jdGxfZGVmcmFnYD8gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhhdCBzdWdnZXN0cyBgYnRyZnNfaW9jdGxgIGlzIHRoZSBrZXkgZW50cnlwb2ludCBoZXJlLiBCdXQgaGFuZyBvbiwgaXMgYGJ0cmZzX2lvY3RsYCBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24/IE5vLCBpdCYjMzk7cyBhIHNwZWNpZmljIGlvY3RsIGhhbmRsZXIgZm9yIHRoZSBidHJmcyBmaWxlc3lzdGVtLgoKQWxyaWdodCwgYmFjayB0byBgYnRyZnNfaW9jdGxfZGVmcmFnYC4gSXQmIzM5O3Mgc3RhdGljLCBidXQgaXQgZG9lc24mIzM5O3QgKmFwcGVhciogdG8gYmUgaW5saW5lZC4gR2l2ZW4gaXRzIHNpemUsIGl0IHByb2JhYmx5IGlzbiYjMzk7dC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgc2F5IHRvIGF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdHMgZnJvbSBiZWluZyBza2V3ZWQuIFRoZXkgdGVsbCBtZSB0byBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSXMgb3ZlciB0aGVzZSBzdGF0aWMgaW50ZXJuYWwgaGVscGVycyBiZWNhdXNlIHRoZSBjb21waWxlciBjYW4gaW5saW5lIHRoZW0sIGFuZCB0aGVuIHRoZXkgd29uJiMzOTt0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCAqaXMqIGlubGluZWQsIHRob3VnaC4gSXQgaXNuJiMzOTt0IG1hcmtlZCBhcyBgaW5saW5lYCBvciBgbm9pbmxpbmVgLCBzbyB0aGUgY29tcGlsZXIgY291bGQgKnBvdGVudGlhbGx5KiBpbmxpbmUgaXQuIFRoZSBjbHVlIGlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIHR3aWNlIGZyb20gd2l0aGluIGBidHJmc19pb2N0bGAuIEkgYmV0dGVyIGNoZWNrIGl0cyBzaXplLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRyZnNfaW9jdGxfZGVmcmFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL2RlZnJhZy5jPTIxNT1zdGF0aWMgaW50IGJ0cmZzX3J1bl9kZWZyYWdfaW5vZGUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sXG4tLVxuZnMvYnRyZnMvZGVmcmFnLmMtMjIwLVx0c3RydWN0IGJ0cmZzX2lub2RlICppbm9kZTtcbmZzL2J0cmZzL2RlZnJhZy5jOjIyMTpcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZTtcbmZzL2J0cmZzL2RlZnJhZy5jLTIyMi1cdGludCByZXQgPSAwO1xuLS1cbmZzL2J0cmZzL2RlZnJhZy5jPTEzNDU9aW50IGJ0cmZzX2RlZnJhZ19maWxlKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlX3JhX3N0YXRlICpyYSxcbmZzL2J0cmZzL2RlZnJhZy5jOjEzNDY6XHRcdCAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyAqcmFuZ2UsXG5mcy9idHJmcy9kZWZyYWcuYy0xMzQ3LVx0XHQgICAgICB1NjQgbmV3ZXJfdGhhbiwgdW5zaWduZWQgbG9uZyBtYXhfdG9fZGVmcmFnKVxuLS1cbmZzL2J0cmZzL2RlZnJhZy5oPTEzPXN0cnVjdCBidHJmc190cmFuc19oYW5kbGU7XG5mcy9idHJmcy9kZWZyYWcuaDoxNDpzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3M7XG5mcy9idHJmcy9kZWZyYWcuaC0xNS1cbmZzL2J0cmZzL2RlZnJhZy5oPTE2PWludCBidHJmc19kZWZyYWdfZmlsZShzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZV9yYV9zdGF0ZSAqcmEsXG5mcy9idHJmcy9kZWZyYWcuaDoxNzpcdFx0ICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzICpyYW5nZSxcbmZzL2J0cmZzL2RlZnJhZy5oLTE4LVx0XHQgICAgICB1NjQgbmV3ZXJfdGhhbiwgdW5zaWduZWQgbG9uZyBtYXhfdG9fZGVmcmFnKTtcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0yNDI5LVxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcbmZzL2J0cmZzL2lvY3RsLmMtMjQzMS17XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVx0c3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QgPSBCVFJGU19JKGlub2RlKS1cdTAwM2Vyb290O1xuZnMvYnRyZnMvaW9jdGwuYzoyNDM0Olx0c3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzIHJhbmdlID0gezB9O1xuZnMvYnRyZnMvaW9jdGwuYy0yNDM1LVx0aW50IHJldDtcbi0tXG5mcy9idHJmcy9pb2N0bC5jPTU1MjE9bG9uZyBidHJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50XG4tLVxuZnMvYnRyZnMvaW9jdGwuYy01NTU2LVx0Y2FzZSBCVFJGU19JT0NfREVGUkFHOlxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3Olx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfZGVmcmFnKGZpbGUsIE5VTEwpO1xuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVx0Y2FzZSBCVFJGU19JT0NfREVGUkFHX1JBTkdFOlxuZnMvYnRyZnMvaW9jdGwuYzo1NTU5Olx0XHRyZXR1cm4gYnRyZnNfaW9jdGxfZGVmcmFnKGZpbGUsIGFyZ3ApO1xuZnMvYnRyZnMvaW9jdGwuYy01NTYwLVx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMzIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdHJmcyBJT0NUTCBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBidHJmc19pb2N0bGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgcG9pbnQuIEl0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IGZvciBpb2N0bCBvcGVyYXRpb25zIGluIHRoZSBCdHJmcyBmaWxlc3lzdGVtLCBzbyBpdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBzdGFydGluZyBwbGFjZSwgdGhvdWdoIGEgbGl0dGxlIGdlbmVyaWMgYXQgZmlyc3QgZ2xhbmNlLiBCdXQsIGl0IGlzICpzcGVjaWZpYyogdG8gQnRyZnMsIHNvIG1heWJlIHRoYXQmIzM5O3Mgb2theS4gSG1tLCB0aGVyZSYjMzk7cyBgYnRyZnNfaW9jdGxfZGVmcmFnYCAtIGl0JiMzOTtzIHN0YXRpYywgc28gaXTigJlzIGxpa2VseSBub3QgaW5saW5lZC4gSXQgc2VlbXMgcHJldHR5IGxhcmdlLiBJdOKAmXMgY2FsbGVkIGZyb20gdHdvIHBsYWNlcywgc28gdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCYjMzk7cyBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZXRhaWxlZCBhbmFseXNpcy4gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiBpdHMgYWN0dWFsIHNpemUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9idHJmcy9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQzMDpcdHN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcbjI0MzE6XHR7XG4yNDMyOlx0XHRzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxlKTtcbjI0MzM6XHRcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXHUwMDNlcm9vdDtcbjI0MzQ6XHRcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcbjI0MzU6XHRcdGludCByZXQ7XG4yNDM2Olx0XG4yNDM3Olx0XHRyZXQgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbGUpO1xuMjQzODpcdFx0aWYgKHJldClcbjI0Mzk6XHRcdFx0cmV0dXJuIHJldDtcbjI0NDA6XHRcbjI0NDE6XHRcdGlmIChidHJmc19yb290X3JlYWRvbmx5KHJvb3QpKSB7XG4yNDQyOlx0XHRcdHJldCA9IC1FUk9GUztcbjI0NDM6XHRcdFx0Z290byBvdXQ7XG4yNDQ0Olx0XHR9XG4yNDQ1Olx0XG4yNDQ2Olx0XHRzd2l0Y2ggKGlub2RlLVx1MDAzZWlfbW9kZSBcdTAwMjYgU19JRk1UKSB7XG4yNDQ3Olx0XHRjYXNlIFNfSUZESVI6XG4yNDQ4Olx0XHRcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkge1xuMjQ0OTpcdFx0XHRcdHJldCA9IC1FUEVSTTtcbjI0NTA6XHRcdFx0XHRnb3RvIG91dDtcbjI0NTE6XHRcdFx0fVxuMjQ1MjpcdFx0XHRyZXQgPSBidHJmc19kZWZyYWdfcm9vdChyb290KTtcbjI0NTM6XHRcdFx0YnJlYWs7XG4yNDU0Olx0XHRjYXNlIFNfSUZSRUc6XG4yNDU1Olx0XHRcdC8qXG4yNDU2Olx0XHRcdCAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHdyaXRlXG4yNDU3Olx0XHRcdCAqIGFjY2Vzcy4gVGhpcyBwcmV2ZW50cyBkZWZyYWdtZW50aW5nIGV4ZWN1dGFibGVzIHRoYXQgYXJlXG4yNDU4Olx0XHRcdCAqIHJ1bm5pbmcgYW5kIGFsbG93cyBkZWZyYWcgb24gZmlsZXMgb3BlbiBpbiByZWFkLW9ubHkgbW9kZS5cbjI0NTk6XHRcdFx0ICovXG4yNDYwOlx0XHRcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSBcdTAwMjZcdTAwMjZcbjI0NjE6XHRcdFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4yNDYyOlx0XHRcdFx0cmV0ID0gLUVQRVJNO1xuMjQ2MzpcdFx0XHRcdGdvdG8gb3V0O1xuMjQ2NDpcdFx0XHR9XG4yNDY1Olx0XG4yNDY2Olx0XHRcdC8qXG4yNDY3Olx0XHRcdCAqIERvbiYjMzk7dCBhbGxvdyBkZWZyYWcgb24gcHJlLWNvbnRlbnQgd2F0Y2hlZCBmaWxlcywgYXMgaXQgY291bGRcbjI0Njg6XHRcdFx0ICogcG9wdWxhdGUgdGhlIHBhZ2UgY2FjaGUgd2l0aCAwJiMzOTtzIHZpYSByZWFkYWhlYWQuXG4yNDY5Olx0XHRcdCAqL1xuMjQ3MDpcdFx0XHRpZiAodW5saWtlbHkoRk1PREVfRlNOT1RJRllfSFNNKGZpbGUtXHUwMDNlZl9tb2RlKSkpIHtcbjI0NzE6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMjQ3MjpcdFx0XHRcdGdvdG8gb3V0O1xuMjQ3MzpcdFx0XHR9XG4yNDc0Olx0XG4yNDc1Olx0XHRcdGlmIChhcmdwKSB7XG4yNDc2Olx0XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKFx1MDAyNnJhbmdlLCBhcmdwLCBzaXplb2YocmFuZ2UpKSkge1xuMjQ3NzpcdFx0XHRcdFx0cmV0ID0gLUVGQVVMVDtcbjI0Nzg6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMjQ3OTpcdFx0XHRcdH1cbjI0ODA6XHRcdFx0XHRpZiAocmFuZ2UuZmxhZ3MgXHUwMDI2IH5CVFJGU19ERUZSQUdfUkFOR0VfRkxBR1NfU1VQUCkge1xuMjQ4MTpcdFx0XHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4yNDgyOlx0XHRcdFx0XHRnb3RvIG91dDtcbjI0ODM6XHRcdFx0XHR9XG4yNDg0Olx0XHRcdFx0aWYgKChyYW5nZS5mbGFncyBcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX0NPTVBSRVNTKSBcdTAwMjZcdTAwMjZcbjI0ODU6XHRcdFx0XHQgICAgKHJhbmdlLmZsYWdzIFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfTk9DT01QUkVTUykpIHtcbjI0ODY6XHRcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4yNDg3Olx0XHRcdFx0XHRnb3RvIG91dDtcbjI0ODg6XHRcdFx0XHR9XG4yNDg5Olx0XHRcdFx0LyogQ29tcHJlc3Npb24gb3Igbm8tY29tcHJlc3Npb24gcmVxdWlyZSB0byBzdGFydCB0aGUgSU8uICovXG4yNDkwOlx0XHRcdFx0aWYgKChyYW5nZS5mbGFncyBcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX0NPTVBSRVNTKSB8fFxuMjQ5MTpcdFx0XHRcdCAgICAocmFuZ2UuZmxhZ3MgXHUwMDI2IEJUUkZTX0RFRlJBR19SQU5HRV9OT0NPTVBSRVNTKSkge1xuMjQ5MjpcdFx0XHRcdFx0cmFuZ2UuZmxhZ3MgfD0gQlRSRlNfREVGUkFHX1JBTkdFX1NUQVJUX0lPO1xuMjQ5MzpcdFx0XHRcdFx0cmFuZ2UuZXh0ZW50X3RocmVzaCA9ICh1MzIpLTE7XG4yNDk0Olx0XHRcdFx0fVxuMjQ5NTpcdFx0XHR9IGVsc2Uge1xuMjQ5NjpcdFx0XHRcdC8qIHRoZSByZXN0IGFyZSBhbGwgc2V0IHRvIHplcm8gYnkga3phbGxvYyAqL1xuMjQ5NzpcdFx0XHRcdHJhbmdlLmxlbiA9ICh1NjQpLTE7XG4yNDk4Olx0XHRcdH1cbjI0OTk6XHRcdFx0cmV0ID0gYnRyZnNfZGVmcmFnX2ZpbGUoQlRSRlNfSShmaWxlX2lub2RlKGZpbGUpKSwgXHUwMDI2ZmlsZS1cdTAwM2VmX3JhLFxuMjUwMDpcdFx0XHRcdFx0XHRcdTAwMjZyYW5nZSwgQlRSRlNfT0xERVNUX0dFTkVSQVRJT04sIDApO1xuMjUwMTpcdFx0XHRpZiAocmV0IFx1MDAzZSAwKVxuMjUwMjpcdFx0XHRcdHJldCA9IDA7XG4yNTAzOlx0XHRcdGJyZWFrO1xuMjUwNDpcdFx0ZGVmYXVsdDpcbjI1MDU6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjI1MDY6XHRcdH1cbjI1MDc6XHRvdXQ6XG4yNTA4Olx0XHRtbnRfZHJvcF93cml0ZV9maWxlKGZpbGUpO1xuMjUwOTpcdFx0cmV0dXJuIHJldDtcbjI1MTA6XHR9XG4yNTExOlx0XG4yNTEyOlx0c3RhdGljIGxvbmcgYnRyZnNfaW9jdGxfYWRkX2RldihzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgdm9pZCBfX3VzZXIgKmFyZylcbjI1MTM6XHR7XG4yNTE0Olx0XHRzdHJ1Y3QgYnRyZnNfaW9jdGxfdm9sX2FyZ3MgQVVUT19LRlJFRSh2b2xfYXJncyk7XG4yNTE1Olx0XHRib29sIHJlc3RvcmVfb3AgPSBmYWxzZTtcbjI1MTY6XHRcdGludCByZXQ7XG4yNTE3Olx0XG4yNTE4Olx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpXG4yNTE5Olx0XHRcdHJldHVybiAtRVBFUk07XG4yNTIwOlx0XG4yNTIxOlx0XHRpZiAoYnRyZnNfZnNfaW5jb21wYXQoZnNfaW5mbywgRVhURU5UX1RSRUVfVjIpKSB7XG4yNTIyOlx0XHRcdGJ0cmZzX2Vycihmc19pbmZvLCBcJiMzNDtkZXZpY2UgYWRkIG5vdCBzdXBwb3J0ZWQgb24gZXh0ZW50IHRyZWUgdjIgeWV0XCYjMzQ7KTtcbjI1MjM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNTI0Olx0XHR9XG4yNTI1Olx0XG4yNTI2Olx0XHRpZiAoZnNfaW5mby1cdTAwM2Vmc19kZXZpY2VzLVx1MDAzZXRlbXBfZnNpZCkge1xuMjUyNzpcdFx0XHRidHJmc19lcnIoZnNfaW5mbyxcbjI1Mjg6XHRcdFx0XHQgIFwmIzM0O2RldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBjbG9uZWQgdGVtcC1mc2lkIG1vdW50XCYjMzQ7KTtcbjI1Mjk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJ0cmZzIERlZnJhZ21lbnRhdGlvbiBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLiBJdCYjMzk7cyBhIHByZXR0eSBoZWZ0eSBjaHVuayBvZiBjb2RlLCBlaWdodHkgbGluZXMsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYSBjb3VwbGUgb2YgdGltZXMuIE15IGd1dCBzYXlzIGl0JiMzOTtzIHByb2JhYmx5ICpub3QqIGlubGluZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gVG8gYmUgc2FmZSwgSSYjMzk7bGwga2VlcCBgYnRyZnNfaW9jdGxgIG9uIG15IHJhZGFyIGFzIGEgZ29vZCBzeW1ib2wgdG8gdHJhY2sgdG9vLCBzaW5jZSBpdCBpcyB0aGUgY2FsbGVyLiBUaGVuIHRoZXJlIGlzIGBidHJmc19kZWZyYWdfZmlsZWAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBidHJmc19pb2N0bF9kZWZyYWdgLgoKV2FpdCwgaG9sZCBvbi4gVGhlIHBhdGNoICpzcGVjaWZpY2FsbHkqIGNoYW5nZXMgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBkaXJlY3RseS4gTm93LCBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgaXQgY291bGQgc3RpbGwgYmUgaW5saW5lZC4uLiBhbmQgaWYgdGhhdCB3ZXJlIHRoZSBjYXNlLCB0aGVuIGBidHJmc19pb2N0bGAgd291bGQgYmUgdGhlIGZ1bmN0aW9uIG9mIGludGVyZXN0LgoKQWxyaWdodCwgc2luY2UgdGhlIHBhdGNoIGRpcmVjdGx5IGFmZmVjdHMgYGJ0cmZzX2lvY3RsX2RlZnJhZ2AsIEkmIzM5O2xsIGluY2x1ZGUgaXQuCgpOb3csIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEJ0cmZzIGNvbmZpZ3VyYXRpb24gdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJUUkZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYnRyZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9idHJmcy9LY29uZmlnLTMtXG5mcy9idHJmcy9LY29uZmlnOjQ6Y29uZmlnIEJUUkZTX0ZTXG5mcy9idHJmcy9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtCdHJmcyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9idHJmcy9LY29uZmlnLTM5LVxuZnMvYnRyZnMvS2NvbmZpZzo0MDpjb25maWcgQlRSRlNfRlNfUE9TSVhfQUNMXG5mcy9idHJmcy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtCdHJmcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2J0cmZzL0tjb25maWctNDktXG5mcy9idHJmcy9LY29uZmlnOjUwOmNvbmZpZyBCVFJGU19GU19SVU5fU0FOSVRZX1RFU1RTXG5mcy9idHJmcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtCdHJmcyB3aWxsIHJ1biBzYW5pdHkgdGVzdHMgdXBvbiBsb2FkaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzYKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJUUkZTIERlZmFnIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJUUkZTIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdGFyZ2V0aW5nIHRoZSBgYnRyZnNfaW9jdGxgIGRlZnJhZyBmdW5jdGlvbmFsaXR5LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGFuIGlkbWFwcGVkIG1vdW50IGJ1ZyB3aXRoaW4gdGhlIGBidHJmc2AgaW9jdGwgc3lzdGVtLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGZ1enotd29ydGh5LCBmb3Igc3VyZS4KCk15IGZpcnN0IHRob3VnaHQgb24gdGhlIGNvbmZpZyBzaWRlIG9mIHRoaW5ncyBpcyB0aGF0IGBCVFJGU19GU2AgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KCk15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIHplcm8gaW4gb24gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYXMgdGhlIGZvY3VzIHN5bWJvbCwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gYWZmZWN0ZWQuIEJ1dCwgSSBuZWVkIHRvIGJlIGNhcmVmdWwgYW5kIG1ha2Ugc3VyZS4gTGV0IG1lIGRvdWJsZS1jaGVjay4uLiBSaWdodCwgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHdyaW5rbGUsIGFuZCBub3QgaW5saW5lIGVpdGhlci4gQmV0dGVyIHRvIHBsYXkgaXQgc2FmZSBhbmQgdXNlIGBidHJmc19pb2N0bGAgYXMgbXkgZm9jdXMgc3ltYm9sIGluc3RlYWQuIFRoYXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGJlc3Qgd2F5IHRvIGdldCBhdCB0aGUgY2hhbmdlLgoKTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGUgcGVybWlzc2lvbiBjaGVja2luZyB3aXRoaW4gdGhlIGRlZnJhZyBpb2N0bCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBpZG1hcHBlZCBtb3VudHMgYXJlIGhhbmRsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1c2luZyBgJmFtcDtub3BfbW50X2lkbWFwYCwgYnV0IG5vdyBpdCBpcyBzd2l0Y2hlZCB0byBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgLiBUaGlzIG1lYW5zIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiBhbiBpb2N0bCB0aGF0JiMzOTtzIGF0IHRoZSBjb3JlIG9mIHRoZSBCVFJGUyBmaWxlc3lzdGVtLiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JUUkZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRyZnNfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlRSRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidHJmc19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNDZkZTI5ZTA4M2M4MWJlZmMwY2IwZTU2MjY3OThmZjRjNmJjMDdlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMTQ6MTc6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCA3MmJjOWQ0Zjc3MDg3Li42MDczMjlkZWRkNTAzIDEwMDY0NAotLS0gYS9mcy9idHJmcy9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL2lvY3RsLmMKQEAgLTI0NTgsNyAmIzQzOzI0NTgsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX2lvY3RsX2RlZnJhZyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApCiAJCSAqIHJ1bm5pbmcgYW5kIGFsbG93cyBkZWZyYWcgb24gZmlsZXMgb3BlbiBpbiByZWFkLW9ubHkgbW9kZS4KIAkJICovCiAJCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSAmYW1wOyZhbXA7Ci0JCSAgICBpbm9kZV9wZXJtaXNzaW9uKCZhbXA7bm9wX21udF9pZG1hcCwgaW5vZGUsIE1BWV9XUklURSkpIHsKJiM0MzsJCSAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkgewogCQkJcmV0ID0gLUVQRVJNOwogCQkJZ290byBvdXQ7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDMKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBlcm1pc3Npb24gQ2hlY2sgRml4IGluIEJ0cmZzIGlvY3RsLmMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQnRyZnMgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyBgZnMvYnRyZnMvaW9jdGwuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBwZXJtaXNzaW9uIGNoZWNrIGZpeCwgY2hhbmdpbmcgaG93IHRoZSBgaWRtYXBgIGlzIHBhc3NlZCB0byBgaW5vZGVfcGVybWlzc2lvbmAuIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYG5vcF9tbnRfaWRtYXBgLCBidXQgbm93IGl0JiMzOTtzIHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAuIFRoYXQgc2VlbXMgY29ycmVjdCBmb3IgZW5zdXJpbmcgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb24gY2hlY2tzIGJhc2VkIG9uIHRoZSBmaWxlJiMzOTtzIG1vdW50LgoKVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zIOKAkyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLCBubyB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMuIEl0JiMzOTtzIGp1c3QgYSBwYXJhbWV0ZXIgY2hhbmdlIHRvIGBpbm9kZV9wZXJtaXNzaW9uYC4gVGhhdCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBLTVNBTiBwZXJzcGVjdGl2ZSwgdGhhbmtmdWxseS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQgdGhlIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIGVsc2Ugc25lYWt5IGdvaW5nIG9uLiBUaGUgY2hhbmdlIGlzIHdpdGhpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCwgYW5kIGl0JiMzOTtzIGNvbmZpcm1pbmcgdGhlIHVzZXIgaGFzIGBDQVBfU1lTX0FETUlOYCBvciB3cml0ZSBwZXJtaXNzaW9ucyBvbiB0aGUgaW5vZGUuIEl0JiMzOTtzIGFsbCB2ZXJ5IGNsZWFuLCBhbmQgSSBjYW4mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIG1lbW9yeSBpc3N1ZXMgdGhlcmUgZWl0aGVyLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIGBidHJmc19pb2N0bF9kZWZyYWdgIGJ5IHVzaW5nIHRoZSBjb3JyZWN0IG1vdW50IGlkbWFwIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKSBpbnN0ZWFkIG9mIGBub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIHB1cmVseSBsb2dpY2FsIGNoYW5nZSByZWxhdGVkIHRvIGFjY2VzcyBjb250cm9sIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljYWwgb3IgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RzLCBub3QgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjQ2Ljg4MjE0NzAwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDkzNDA5NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfaW9jdGxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBieSB1c2luZyB0aGUgY29ycmVjdCBtb3VudCBpZG1hcCAoYGZpbGVfbW50X2lkbWFwKGZpbGUpYCkgaW5zdGVhZCBvZiBgbm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBwdXJlbHkgbG9naWNhbCBjaGFuZ2UgcmVsYXRlZCB0byBhY2Nlc3MgY29udHJvbCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpY2FsIG9yIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0cywgbm90IEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiB0aGUgYnRyZnMgZGVmcmFnIGlvY3RsIHRvIGNvcnJlY3RseSBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGJ5IHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAgaW5zdGVhZCBvZiBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo0Ni44ODIxNTUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA1ODc1NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDoxNzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9pb2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuY1xcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XFxuLS0tIGEvZnMvYnRyZnMvaW9jdGwuY1xcbisrKyBiL2ZzL2J0cmZzL2lvY3RsLmNcXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbiBcXHRcXHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oXFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XFxuK1xcdFxcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xcbiBcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjQ4LjI4OTA5MDYwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0MzQ0MjIyMTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJUUkZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRyZnNfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhlIGJ0cmZzIGRlZnJhZyBpb2N0bCB0byBjb3JyZWN0bHkgaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBieSB1c2luZyBgZmlsZV9tbnRfaWRtYXAoZmlsZSlgIGluc3RlYWQgb2YgYFxcdTAwMjZub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGNvcmUgZmlsZXN5c3RlbSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4rXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xuIFx0XHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTc6NDguMjg5MDkzNDY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNTQzMzM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCdHJmcyBEZWZyYWcgSU9DVEwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpbiBgZnMvYnRyZnMvaW9jdGwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gaG93IGl0IGhhbmRsZXMgcGVybWlzc2lvbnMsIHNwZWNpZmljYWxseSB0aGUgc2hpZnQgZnJvbSB1c2luZyBhIGdsb2JhbCBtb3VudCBJRCBtYXAgKGBcdTAwMjZub3BfbW50X2lkbWFwYCkgdG8gdGhlIElEIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUgaXRzZWxmIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKS4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIGlkbWFwcGVkIG1vdW50cyBhbmQgaG93IHBlcm1pc3Npb25zIGFyZSBlbmZvcmNlZCBkdXJpbmcgdGhlIGRlZnJhZyBwcm9jZXNzLlxuXG5HaXZlbiB0aGlzLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcImZ1enppbmdcIi4gQW55dGltZSB0aGVyZSdzIGEgcGVybWlzc2lvbi1yZWxhdGVkIGNoYW5nZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBjcml0aWNhbCBzdWJzeXN0ZW0gbGlrZSBCdHJmcywgaXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UgbmVlZCB0byBleHBsb3JlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaW50cm9kdWNlZCBieSB0aGlzIG5ldyBwZXJtaXNzaW9uIGNoZWNrLiBUaGUgbW9zdCByZWxldmFudCBzeW1ib2wgdG8gZm9jdXMgb24gd291bGQgZWl0aGVyIGJlIHRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiwgb3IgcG90ZW50aWFsbHkgdGhlIGBidHJmc19pb2N0bGAgZGlzcGF0Y2hlciBpdHNlbGYuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgYnRyZnNfaW9jdGxfZGVmcmFnYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3MgaW4gYGZzL2J0cmZzL2lvY3RsLmNgIGFuZCBob3cgdGhpcyBtb3VudCBJRCBtYXBwaW5nIHdvcmtzIGluIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE3OjUzLjEwNDUyOTYxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTAyOTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidHJmc19pb2N0bF9kZWZyYWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYnRyZnMvaW9jdGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXFxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzEte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVxcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXFx1MDAzZXJvb3Q7XFxuZnMvYnRyZnMvaW9jdGwuYzoyNDM0OlxcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXFx0aW50IHJldDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNTU1Ni1cXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XFxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3OlxcdFxcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XFxuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVxcdGNhc2UgQlRSRlNfSU9DX0RFRlJBR19SQU5HRTpcXG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2RlZnJhZyhmaWxlLCBhcmdwKTtcXG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXFx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo1My4yMTM1NjU1MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk1NTgxMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgSU9DVEwgRGVmcmFnIEZ1bmN0aW9uKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLi4uIFRoZSBgYnRyZnNfaW9jdGxfZGVmcmFnYCBmdW5jdGlvbiBpcyAqc3RhdGljKiwgYnV0IGl0J3MgY2FsbGVkIGJ5IGBidHJmc19pb2N0bGAuIFdhaXQsIHNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGBidHJmc19pb2N0bGAgb3IgYGJ0cmZzX2lvY3RsX2RlZnJhZ2A/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoYXQgc3VnZ2VzdHMgYGJ0cmZzX2lvY3RsYCBpcyB0aGUga2V5IGVudHJ5cG9pbnQgaGVyZS4gQnV0IGhhbmcgb24sIGlzIGBidHJmc19pb2N0bGAgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uPyBObywgaXQncyBhIHNwZWNpZmljIGlvY3RsIGhhbmRsZXIgZm9yIHRoZSBidHJmcyBmaWxlc3lzdGVtLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIGBidHJmc19pb2N0bF9kZWZyYWdgLiBJdCdzIHN0YXRpYywgYnV0IGl0IGRvZXNuJ3QgKmFwcGVhciogdG8gYmUgaW5saW5lZC4gR2l2ZW4gaXRzIHNpemUsIGl0IHByb2JhYmx5IGlzbid0LiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSBzYXkgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBrZWVwIHRoZSB0ZXN0cyBmcm9tIGJlaW5nIHNrZXdlZC4gVGhleSB0ZWxsIG1lIHRvIHByZWZlciB0aGUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJcyBvdmVyIHRoZXNlIHN0YXRpYyBpbnRlcm5hbCBoZWxwZXJzIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNhbiBpbmxpbmUgdGhlbSwgYW5kIHRoZW4gdGhleSB3b24ndCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIGBidHJmc19pb2N0bF9kZWZyYWdgICppcyogaW5saW5lZCwgdGhvdWdoLiBJdCBpc24ndCBtYXJrZWQgYXMgYGlubGluZWAgb3IgYG5vaW5saW5lYCwgc28gdGhlIGNvbXBpbGVyIGNvdWxkICpwb3RlbnRpYWxseSogaW5saW5lIGl0LiBUaGUgY2x1ZSBpcyB0aGF0IGl0J3MgY2FsbGVkIHR3aWNlIGZyb20gd2l0aGluIGBidHJmc19pb2N0bGAuIEkgYmV0dGVyIGNoZWNrIGl0cyBzaXplLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTc6NTguNTA5MTUwMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MzY5Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0cmZzX2lvY3RsX2RlZnJhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9idHJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvZGVmcmFnLmM9MjE1PXN0YXRpYyBpbnQgYnRyZnNfcnVuX2RlZnJhZ19pbm9kZShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyxcXG4tLVxcbmZzL2J0cmZzL2RlZnJhZy5jLTIyMC1cXHRzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlO1xcbmZzL2J0cmZzL2RlZnJhZy5jOjIyMTpcXHRzdHJ1Y3QgYnRyZnNfaW9jdGxfZGVmcmFnX3JhbmdlX2FyZ3MgcmFuZ2U7XFxuZnMvYnRyZnMvZGVmcmFnLmMtMjIyLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZnMvYnRyZnMvZGVmcmFnLmM9MTM0NT1pbnQgYnRyZnNfZGVmcmFnX2ZpbGUoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwgc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJhLFxcbmZzL2J0cmZzL2RlZnJhZy5jOjEzNDY6XFx0XFx0ICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzICpyYW5nZSxcXG5mcy9idHJmcy9kZWZyYWcuYy0xMzQ3LVxcdFxcdCAgICAgIHU2NCBuZXdlcl90aGFuLCB1bnNpZ25lZCBsb25nIG1heF90b19kZWZyYWcpXFxuLS1cXG5mcy9idHJmcy9kZWZyYWcuaD0xMz1zdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlO1xcbmZzL2J0cmZzL2RlZnJhZy5oOjE0OnN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncztcXG5mcy9idHJmcy9kZWZyYWcuaC0xNS1cXG5mcy9idHJmcy9kZWZyYWcuaD0xNj1pbnQgYnRyZnNfZGVmcmFnX2ZpbGUoc3RydWN0IGJ0cmZzX2lub2RlICppbm9kZSwgc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJhLFxcbmZzL2J0cmZzL2RlZnJhZy5oOjE3OlxcdFxcdCAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyAqcmFuZ2UsXFxuZnMvYnRyZnMvZGVmcmFnLmgtMTgtXFx0XFx0ICAgICAgdTY0IG5ld2VyX3RoYW4sIHVuc2lnbmVkIGxvbmcgbWF4X3RvX2RlZnJhZyk7XFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jPTIyMTY9c3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9idHJmcy9pb2N0bC5jLTI0MjktXFxuZnMvYnRyZnMvaW9jdGwuYzoyNDMwOnN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfZGVmcmFnKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqYXJncClcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzEte1xcbi0tXFxuZnMvYnRyZnMvaW9jdGwuYy0yNDMzLVxcdHN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktXFx1MDAzZXJvb3Q7XFxuZnMvYnRyZnMvaW9jdGwuYzoyNDM0OlxcdHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyByYW5nZSA9IHswfTtcXG5mcy9idHJmcy9pb2N0bC5jLTI0MzUtXFx0aW50IHJldDtcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmM9NTUyMT1sb25nIGJ0cmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnRcXG4tLVxcbmZzL2J0cmZzL2lvY3RsLmMtNTU1Ni1cXHRjYXNlIEJUUkZTX0lPQ19ERUZSQUc6XFxuZnMvYnRyZnMvaW9jdGwuYzo1NTU3OlxcdFxcdHJldHVybiBidHJmc19pb2N0bF9kZWZyYWcoZmlsZSwgTlVMTCk7XFxuZnMvYnRyZnMvaW9jdGwuYy01NTU4LVxcdGNhc2UgQlRSRlNfSU9DX0RFRlJBR19SQU5HRTpcXG5mcy9idHJmcy9pb2N0bC5jOjU1NTk6XFx0XFx0cmV0dXJuIGJ0cmZzX2lvY3RsX2RlZnJhZyhmaWxlLCBhcmdwKTtcXG5mcy9idHJmcy9pb2N0bC5jLTU1NjAtXFx0Y2FzZSBCVFJGU19JT0NfUkVTSVpFOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxNzo1OC42MDQ1MjYzNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEzOTA0ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgSU9DVEwgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGJ0cmZzX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cyBwb2ludC4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBmb3IgaW9jdGwgb3BlcmF0aW9ucyBpbiB0aGUgQnRyZnMgZmlsZXN5c3RlbSwgc28gaXQgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgc3RhcnRpbmcgcGxhY2UsIHRob3VnaCBhIGxpdHRsZSBnZW5lcmljIGF0IGZpcnN0IGdsYW5jZS4gQnV0LCBpdCBpcyAqc3BlY2lmaWMqIHRvIEJ0cmZzLCBzbyBtYXliZSB0aGF0J3Mgb2theS4gSG1tLCB0aGVyZSdzIGBidHJmc19pb2N0bF9kZWZyYWdgIC0gaXQncyBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgbm90IGlubGluZWQuIEl0IHNlZW1zIHByZXR0eSBsYXJnZS4gSXTigJlzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXMsIHNvIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCdzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBMZXQncyBnZXQgYSBoYW5kbGUgb24gaXRzIGFjdHVhbCBzaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE4OjAyLjQxODQzNDQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2J0cmZzL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQzMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI0MzA6XFx0c3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxcbjI0MzE6XFx0e1xcbjI0MzI6XFx0XFx0c3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7XFxuMjQzMzpcXHRcXHRzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLVxcdTAwM2Vyb290O1xcbjI0MzQ6XFx0XFx0c3RydWN0IGJ0cmZzX2lvY3RsX2RlZnJhZ19yYW5nZV9hcmdzIHJhbmdlID0gezB9O1xcbjI0MzU6XFx0XFx0aW50IHJldDtcXG4yNDM2OlxcdFxcbjI0Mzc6XFx0XFx0cmV0ID0gbW50X3dhbnRfd3JpdGVfZmlsZShmaWxlKTtcXG4yNDM4OlxcdFxcdGlmIChyZXQpXFxuMjQzOTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI0NDA6XFx0XFxuMjQ0MTpcXHRcXHRpZiAoYnRyZnNfcm9vdF9yZWFkb25seShyb290KSkge1xcbjI0NDI6XFx0XFx0XFx0cmV0ID0gLUVST0ZTO1xcbjI0NDM6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjQ0NDpcXHRcXHR9XFxuMjQ0NTpcXHRcXG4yNDQ2OlxcdFxcdHN3aXRjaCAoaW5vZGUtXFx1MDAzZWlfbW9kZSBcXHUwMDI2IFNfSUZNVCkge1xcbjI0NDc6XFx0XFx0Y2FzZSBTX0lGRElSOlxcbjI0NDg6XFx0XFx0XFx0aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7XFxuMjQ0OTpcXHRcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuMjQ1MDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDUxOlxcdFxcdFxcdH1cXG4yNDUyOlxcdFxcdFxcdHJldCA9IGJ0cmZzX2RlZnJhZ19yb290KHJvb3QpO1xcbjI0NTM6XFx0XFx0XFx0YnJlYWs7XFxuMjQ1NDpcXHRcXHRjYXNlIFNfSUZSRUc6XFxuMjQ1NTpcXHRcXHRcXHQvKlxcbjI0NTY6XFx0XFx0XFx0ICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2hlY2sgdGhlIGZpbGUgZGVzY3JpcHRvciBmb3Igd3JpdGVcXG4yNDU3OlxcdFxcdFxcdCAqIGFjY2Vzcy4gVGhpcyBwcmV2ZW50cyBkZWZyYWdtZW50aW5nIGV4ZWN1dGFibGVzIHRoYXQgYXJlXFxuMjQ1ODpcXHRcXHRcXHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXFxuMjQ1OTpcXHRcXHRcXHQgKi9cXG4yNDYwOlxcdFxcdFxcdGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSBcXHUwMDI2XFx1MDAyNlxcbjI0NjE6XFx0XFx0XFx0ICAgIGlub2RlX3Blcm1pc3Npb24oZmlsZV9tbnRfaWRtYXAoZmlsZSksIGlub2RlLCBNQVlfV1JJVEUpKSB7XFxuMjQ2MjpcXHRcXHRcXHRcXHRyZXQgPSAtRVBFUk07XFxuMjQ2MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDY0OlxcdFxcdFxcdH1cXG4yNDY1OlxcdFxcbjI0NjY6XFx0XFx0XFx0LypcXG4yNDY3OlxcdFxcdFxcdCAqIERvbid0IGFsbG93IGRlZnJhZyBvbiBwcmUtY29udGVudCB3YXRjaGVkIGZpbGVzLCBhcyBpdCBjb3VsZFxcbjI0Njg6XFx0XFx0XFx0ICogcG9wdWxhdGUgdGhlIHBhZ2UgY2FjaGUgd2l0aCAwJ3MgdmlhIHJlYWRhaGVhZC5cXG4yNDY5OlxcdFxcdFxcdCAqL1xcbjI0NzA6XFx0XFx0XFx0aWYgKHVubGlrZWx5KEZNT0RFX0ZTTk9USUZZX0hTTShmaWxlLVxcdTAwM2VmX21vZGUpKSkge1xcbjI0NzE6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4yNDcyOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjI0NzM6XFx0XFx0XFx0fVxcbjI0NzQ6XFx0XFxuMjQ3NTpcXHRcXHRcXHRpZiAoYXJncCkge1xcbjI0NzY6XFx0XFx0XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZyYW5nZSwgYXJncCwgc2l6ZW9mKHJhbmdlKSkpIHtcXG4yNDc3OlxcdFxcdFxcdFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuMjQ3ODpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDc5OlxcdFxcdFxcdFxcdH1cXG4yNDgwOlxcdFxcdFxcdFxcdGlmIChyYW5nZS5mbGFncyBcXHUwMDI2IH5CVFJGU19ERUZSQUdfUkFOR0VfRkxBR1NfU1VQUCkge1xcbjI0ODE6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMjQ4MjpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4yNDgzOlxcdFxcdFxcdFxcdH1cXG4yNDg0OlxcdFxcdFxcdFxcdGlmICgocmFuZ2UuZmxhZ3MgXFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfQ09NUFJFU1MpIFxcdTAwMjZcXHUwMDI2XFxuMjQ4NTpcXHRcXHRcXHRcXHQgICAgKHJhbmdlLmZsYWdzIFxcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX05PQ09NUFJFU1MpKSB7XFxuMjQ4NjpcXHRcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbjI0ODc6XFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMjQ4ODpcXHRcXHRcXHRcXHR9XFxuMjQ4OTpcXHRcXHRcXHRcXHQvKiBDb21wcmVzc2lvbiBvciBuby1jb21wcmVzc2lvbiByZXF1aXJlIHRvIHN0YXJ0IHRoZSBJTy4gKi9cXG4yNDkwOlxcdFxcdFxcdFxcdGlmICgocmFuZ2UuZmxhZ3MgXFx1MDAyNiBCVFJGU19ERUZSQUdfUkFOR0VfQ09NUFJFU1MpIHx8XFxuMjQ5MTpcXHRcXHRcXHRcXHQgICAgKHJhbmdlLmZsYWdzIFxcdTAwMjYgQlRSRlNfREVGUkFHX1JBTkdFX05PQ09NUFJFU1MpKSB7XFxuMjQ5MjpcXHRcXHRcXHRcXHRcXHRyYW5nZS5mbGFncyB8PSBCVFJGU19ERUZSQUdfUkFOR0VfU1RBUlRfSU87XFxuMjQ5MzpcXHRcXHRcXHRcXHRcXHRyYW5nZS5leHRlbnRfdGhyZXNoID0gKHUzMiktMTtcXG4yNDk0OlxcdFxcdFxcdFxcdH1cXG4yNDk1OlxcdFxcdFxcdH0gZWxzZSB7XFxuMjQ5NjpcXHRcXHRcXHRcXHQvKiB0aGUgcmVzdCBhcmUgYWxsIHNldCB0byB6ZXJvIGJ5IGt6YWxsb2MgKi9cXG4yNDk3OlxcdFxcdFxcdFxcdHJhbmdlLmxlbiA9ICh1NjQpLTE7XFxuMjQ5ODpcXHRcXHRcXHR9XFxuMjQ5OTpcXHRcXHRcXHRyZXQgPSBidHJmc19kZWZyYWdfZmlsZShCVFJGU19JKGZpbGVfaW5vZGUoZmlsZSkpLCBcXHUwMDI2ZmlsZS1cXHUwMDNlZl9yYSxcXG4yNTAwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyYW5nZSwgQlRSRlNfT0xERVNUX0dFTkVSQVRJT04sIDApO1xcbjI1MDE6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlIDApXFxuMjUwMjpcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjI1MDM6XFx0XFx0XFx0YnJlYWs7XFxuMjUwNDpcXHRcXHRkZWZhdWx0OlxcbjI1MDU6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4yNTA2OlxcdFxcdH1cXG4yNTA3OlxcdG91dDpcXG4yNTA4OlxcdFxcdG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlsZSk7XFxuMjUwOTpcXHRcXHRyZXR1cm4gcmV0O1xcbjI1MTA6XFx0fVxcbjI1MTE6XFx0XFxuMjUxMjpcXHRzdGF0aWMgbG9uZyBidHJmc19pb2N0bF9hZGRfZGV2KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB2b2lkIF9fdXNlciAqYXJnKVxcbjI1MTM6XFx0e1xcbjI1MTQ6XFx0XFx0c3RydWN0IGJ0cmZzX2lvY3RsX3ZvbF9hcmdzIEFVVE9fS0ZSRUUodm9sX2FyZ3MpO1xcbjI1MTU6XFx0XFx0Ym9vbCByZXN0b3JlX29wID0gZmFsc2U7XFxuMjUxNjpcXHRcXHRpbnQgcmV0O1xcbjI1MTc6XFx0XFxuMjUxODpcXHRcXHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpXFxuMjUxOTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbjI1MjA6XFx0XFxuMjUyMTpcXHRcXHRpZiAoYnRyZnNfZnNfaW5jb21wYXQoZnNfaW5mbywgRVhURU5UX1RSRUVfVjIpKSB7XFxuMjUyMjpcXHRcXHRcXHRidHJmc19lcnIoZnNfaW5mbywgXFxcImRldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBleHRlbnQgdHJlZSB2MiB5ZXRcXFwiKTtcXG4yNTIzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI1MjQ6XFx0XFx0fVxcbjI1MjU6XFx0XFxuMjUyNjpcXHRcXHRpZiAoZnNfaW5mby1cXHUwMDNlZnNfZGV2aWNlcy1cXHUwMDNldGVtcF9mc2lkKSB7XFxuMjUyNzpcXHRcXHRcXHRidHJmc19lcnIoZnNfaW5mbyxcXG4yNTI4OlxcdFxcdFxcdFxcdCAgXFxcImRldmljZSBhZGQgbm90IHN1cHBvcnRlZCBvbiBjbG9uZWQgdGVtcC1mc2lkIG1vdW50XFxcIik7XFxuMjUyOTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MDIuNDE5MjI5MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk5Njg0NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnRyZnMgRGVmcmFnbWVudGF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBidHJmc19pb2N0bF9kZWZyYWdgIGZ1bmN0aW9uLiBJdCdzIGEgcHJldHR5IGhlZnR5IGNodW5rIG9mIGNvZGUsIGVpZ2h0eSBsaW5lcywgYW5kIGl0J3MgY2FsbGVkIGEgY291cGxlIG9mIHRpbWVzLiBNeSBndXQgc2F5cyBpdCdzIHByb2JhYmx5ICpub3QqIGlubGluZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gVG8gYmUgc2FmZSwgSSdsbCBrZWVwIGBidHJmc19pb2N0bGAgb24gbXkgcmFkYXIgYXMgYSBnb29kIHN5bWJvbCB0byB0cmFjayB0b28sIHNpbmNlIGl0IGlzIHRoZSBjYWxsZXIuIFRoZW4gdGhlcmUgaXMgYGJ0cmZzX2RlZnJhZ19maWxlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AuXG5cbldhaXQsIGhvbGQgb24uIFRoZSBwYXRjaCAqc3BlY2lmaWNhbGx5KiBjaGFuZ2VzIGBidHJmc19pb2N0bF9kZWZyYWdgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBkaXJlY3RseS4gTm93LCBpZiBgYnRyZnNfaW9jdGxfZGVmcmFnYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgaXQgY291bGQgc3RpbGwgYmUgaW5saW5lZC4uLiBhbmQgaWYgdGhhdCB3ZXJlIHRoZSBjYXNlLCB0aGVuIGBidHJmc19pb2N0bGAgd291bGQgYmUgdGhlIGZ1bmN0aW9uIG9mIGludGVyZXN0LlxuXG5BbHJpZ2h0LCBzaW5jZSB0aGUgcGF0Y2ggZGlyZWN0bHkgYWZmZWN0cyBgYnRyZnNfaW9jdGxfZGVmcmFnYCwgSSdsbCBpbmNsdWRlIGl0LlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIEJ0cmZzIGNvbmZpZ3VyYXRpb24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjE4OjA3LjIxODkxNjc3NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUwNTAyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJUUkZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2J0cmZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYnRyZnMvS2NvbmZpZy0zLVxcbmZzL2J0cmZzL0tjb25maWc6NDpjb25maWcgQlRSRlNfRlNcXG5mcy9idHJmcy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkJ0cmZzIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctMzktXFxuZnMvYnRyZnMvS2NvbmZpZzo0MDpjb25maWcgQlRSRlNfRlNfUE9TSVhfQUNMXFxuZnMvYnRyZnMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJCdHJmcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctNDktXFxuZnMvYnRyZnMvS2NvbmZpZzo1MDpjb25maWcgQlRSRlNfRlNfUlVOX1NBTklUWV9URVNUU1xcbmZzL2J0cmZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiQnRyZnMgd2lsbCBydW4gc2FuaXR5IHRlc3RzIHVwb24gbG9hZGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MDcuMzEzOTczNzEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODM3MDM1NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlRSRlMgRGVmYWcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEJUUkZTIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdGFyZ2V0aW5nIHRoZSBgYnRyZnNfaW9jdGxgIGRlZnJhZyBmdW5jdGlvbmFsaXR5LiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYW4gaWRtYXBwZWQgbW91bnQgYnVnIHdpdGhpbiB0aGUgYGJ0cmZzYCBpb2N0bCBzeXN0ZW0uIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgZnV6ei13b3J0aHksIGZvciBzdXJlLlxuXG5NeSBmaXJzdCB0aG91Z2h0IG9uIHRoZSBjb25maWcgc2lkZSBvZiB0aGluZ3MgaXMgdGhhdCBgQlRSRlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgaXRlbSB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbk15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIHplcm8gaW4gb24gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYXMgdGhlIGZvY3VzIHN5bWJvbCwgZ2l2ZW4gdGhhdCBpdCdzIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBhZmZlY3RlZC4gQnV0LCBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBhbmQgbWFrZSBzdXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrLi4uIFJpZ2h0LCBpdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlLCBhbmQgbm90IGlubGluZSBlaXRoZXIuIEJldHRlciB0byBwbGF5IGl0IHNhZmUgYW5kIHVzZSBgYnRyZnNfaW9jdGxgIGFzIG15IGZvY3VzIHN5bWJvbCBpbnN0ZWFkLiBUaGF04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBiZXN0IHdheSB0byBnZXQgYXQgdGhlIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0aGUgcGVybWlzc2lvbiBjaGVja2luZyB3aXRoaW4gdGhlIGRlZnJhZyBpb2N0bCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBpZG1hcHBlZCBtb3VudHMgYXJlIGhhbmRsZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1c2luZyBgXHUwMDI2bm9wX21udF9pZG1hcGAsIGJ1dCBub3cgaXQgaXMgc3dpdGNoZWQgdG8gYGZpbGVfbW50X2lkbWFwKGZpbGUpYC4gVGhpcyBtZWFucyBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgaW4gYW4gaW9jdGwgdGhhdCdzIGF0IHRoZSBjb3JlIG9mIHRoZSBCVFJGUyBmaWxlc3lzdGVtLiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzNiwiT3V0cHV0VG9rZW5zIjoxMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTIuNDk3NjgwODI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NjI1MDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCVFJGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0cmZzX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIHRoZSBidHJmcyBkZWZyYWcgaW9jdGwgdG8gY29ycmVjdGx5IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgYnkgdXNpbmcgYGZpbGVfbW50X2lkbWFwKGZpbGUpYCBpbnN0ZWFkIG9mIGBcXHUwMDI2bm9wX21udF9pZG1hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBjb3JlIGZpbGVzeXN0ZW0gaW9jdGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlRSRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidHJmc19pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcGVybWlzc2lvbiBjaGVjayBpbiB0aGUgYnRyZnMgZGVmcmFnIGlvY3RsIHRvIGNvcnJlY3RseSBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGJ5IHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAgaW5zdGVhZCBvZiBgXFx1MDAyNm5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgY29yZSBmaWxlc3lzdGVtIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxODoxMi42MzMzMTY3MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNDIyMjUyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDoxODoxMi42MzM5ODY0NjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM0MTU0OTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwZXJtaXNzaW9uIGNoZWNrIGluIGBidHJmc19pb2N0bF9kZWZyYWdgIGJ5IHVzaW5nIHRoZSBjb3JyZWN0IG1vdW50IGlkbWFwIChgZmlsZV9tbnRfaWRtYXAoZmlsZSlgKSBpbnN0ZWFkIG9mIGBub3BfbW50X2lkbWFwYC4gVGhpcyBpcyBhIHB1cmVseSBsb2dpY2FsIGNoYW5nZSByZWxhdGVkIHRvIGFjY2VzcyBjb250cm9sIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljYWwgb3IgY2F1Z2h0IGJ5IHN0YW5kYXJkIHRlc3RzLCBub3QgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQ2ZGUyOWUwODNjODFiZWZjMGNiMGU1NjI2Nzk4ZmY0YzZiYzA3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjE3OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmNcbmluZGV4IDcyYmM5ZDRmNzcwODcuLjYwNzMyOWRlZGQ1MDMgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9pb2N0bC5jXG4rKysgYi9mcy9idHJmcy9pb2N0bC5jXG5AQCAtMjQ1OCw3ICsyNDU4LDcgQEAgc3RhdGljIGludCBidHJmc19pb2N0bF9kZWZyYWcoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmdwKVxuIFx0XHQgKiBydW5uaW5nIGFuZCBhbGxvd3MgZGVmcmFnIG9uIGZpbGVzIG9wZW4gaW4gcmVhZC1vbmx5IG1vZGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKFx1MDAyNm5vcF9tbnRfaWRtYXAsIGlub2RlLCBNQVlfV1JJVEUpKSB7XG4rXHRcdCAgICBpbm9kZV9wZXJtaXNzaW9uKGZpbGVfbW50X2lkbWFwKGZpbGUpLCBpbm9kZSwgTUFZX1dSSVRFKSkge1xuIFx0XHRcdHJldCA9IC1FUEVSTTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTIuNjMzOTg4NDYyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDE0OTk1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGVybWlzc2lvbiBDaGVjayBGaXggaW4gQnRyZnMgaW9jdGwuYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQnRyZnMgcGF0Y2ggdGhhdCdzIHR3ZWFraW5nIGBmcy9idHJmcy9pb2N0bC5jYC4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcGVybWlzc2lvbiBjaGVjayBmaXgsIGNoYW5naW5nIGhvdyB0aGUgYGlkbWFwYCBpcyBwYXNzZWQgdG8gYGlub2RlX3Blcm1pc3Npb25gLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBub3BfbW50X2lkbWFwYCwgYnV0IG5vdyBpdCdzIHVzaW5nIGBmaWxlX21udF9pZG1hcChmaWxlKWAuIFRoYXQgc2VlbXMgY29ycmVjdCBmb3IgZW5zdXJpbmcgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb24gY2hlY2tzIGJhc2VkIG9uIHRoZSBmaWxlJ3MgbW91bnQuXG5cblRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGludHJvZHVjZSBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zIOKAkyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbm8gcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzLCBubyB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMuIEl0J3MganVzdCBhIHBhcmFtZXRlciBjaGFuZ2UgdG8gYGlub2RlX3Blcm1pc3Npb25gLiBUaGF0IG1ha2VzIGl0IGxlc3MgaW50ZXJlc3RpbmcgZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLCB0aGFua2Z1bGx5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhcm91bmQgdGhlIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vdGhpbmcgZWxzZSBzbmVha3kgZ29pbmcgb24uIFRoZSBjaGFuZ2UgaXMgd2l0aGluIGBidHJmc19pb2N0bF9kZWZyYWdgLCBhbmQgaXQncyBjb25maXJtaW5nIHRoZSB1c2VyIGhhcyBgQ0FQX1NZU19BRE1JTmAgb3Igd3JpdGUgcGVybWlzc2lvbnMgb24gdGhlIGlub2RlLiBJdCdzIGFsbCB2ZXJ5IGNsZWFuLCBhbmQgSSBjYW4ndCBzZWUgYW55IG9idmlvdXMgbWVtb3J5IGlzc3VlcyB0aGVyZSBlaXRoZXIuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCB0aGF0IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDMsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6MTg6MTcuOTc1NDkyNTgxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBlcm1pc3Npb24gY2hlY2sgaW4gYGJ0cmZzX2lvY3RsX2RlZnJhZ2AgYnkgdXNpbmcgdGhlIGNvcnJlY3QgbW91bnQgaWRtYXAgKGBmaWxlX21udF9pZG1hcChmaWxlKWApIGluc3RlYWQgb2YgYG5vcF9tbnRfaWRtYXBgLiBUaGlzIGlzIGEgcHVyZWx5IGxvZ2ljYWwgY2hhbmdlIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgYmUgbG9naWNhbCBvciBjYXVnaHQgYnkgc3RhbmRhcmQgdGVzdHMsIG5vdCBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowg6b4k[1] Phase: Succeeded StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 14:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 14:18:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2] Phase: Succeeded StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 14:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 14:18:28 +0000 UTC FinishedAt: 2026-08-15 14:18:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowg6b4k/series-workflowg6b4k-convert-artifact-2170045564/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 14:18:39 +0000 UTC FinishedAt: 2026-08-15 14:35:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 14:18:39 +0000 UTC FinishedAt: 2026-08-15 14:35:24 +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:*48ce3231-39b3-462e-a97e-7110fd6b8fff,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-workflowg6b4k/series-workflowg6b4k-convert-artifact-2170045564/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": "26223a5d-9290-4025-ac67-7b40b8b73af3", "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-workflowg6b4k/series-workflowg6b4k-build-action-67387306/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 14:18:39 +0000 UTC FinishedAt: 2026-08-15 14:35:14 +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:*48ce3231-39b3-462e-a97e-7110fd6b8fff,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-workflowg6b4k/series-workflowg6b4k-convert-artifact-2170045564/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": "26223a5d-9290-4025-ac67-7b40b8b73af3", "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-workflowg6b4k/series-workflowg6b4k-build-action-67387306/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 14:35:24 +0000 UTC FinishedAt: 2026-08-15 14:35:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 14:35:24 +0000 UTC FinishedAt: 2026-08-15 14:35:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 14:35:24 +0000 UTC FinishedAt: 2026-08-15 14:35:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 14:35:24 +0000 UTC FinishedAt: 2026-08-15 14:35:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowg6b4k/series-workflowg6b4k-convert-artifact-4185032379/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 14:35:34 +0000 UTC FinishedAt: 2026-08-15 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 14:35:34 +0000 UTC FinishedAt: 2026-08-15 14:37:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*26223a5d-9290-4025-ac67-7b40b8b73af3,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-workflowg6b4k/series-workflowg6b4k-build-action-67387306/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-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 14:37:23 +0000 UTC FinishedAt: 2026-08-15 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 14:37:23 +0000 UTC FinishedAt: 2026-08-15 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 14:37:23 +0000 UTC FinishedAt: 2026-08-15 14:58:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 14:37:23 +0000 UTC FinishedAt: 2026-08-15 14:58:27 +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:*48ce3231-39b3-462e-a97e-7110fd6b8fff,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-workflowg6b4k/series-workflowg6b4k-convert-artifact-4185032379/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": "5f25c0b8-b4ee-4b92-87c9-d7e64ea14325", "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-workflowg6b4k/series-workflowg6b4k-build-action-3498770911/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 14:37:23 +0000 UTC FinishedAt: 2026-08-15 14:58:17 +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:*48ce3231-39b3-462e-a97e-7110fd6b8fff,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-workflowg6b4k/series-workflowg6b4k-convert-artifact-4185032379/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": "5f25c0b8-b4ee-4b92-87c9-d7e64ea14325", "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-workflowg6b4k/series-workflowg6b4k-build-action-3498770911/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 14:58:27 +0000 UTC FinishedAt: 2026-08-15 14:58:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 14:58:27 +0000 UTC FinishedAt: 2026-08-15 14:58:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 14:58:27 +0000 UTC FinishedAt: 2026-08-15 15:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 14:58:27 +0000 UTC FinishedAt: 2026-08-15 14:59:50 +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:*5f25c0b8-b4ee-4b92-87c9-d7e64ea14325,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-workflowg6b4k/series-workflowg6b4k-build-action-3498770911/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-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},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:*26223a5d-9290-4025-ac67-7b40b8b73af3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5f25c0b8-b4ee-4b92-87c9-d7e64ea14325,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-workflowg6b4k/series-workflowg6b4k-build-action-67387306/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-workflowg6b4k/series-workflowg6b4k-build-action-3498770911/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 15:00:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 15:00:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},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-workflowg6b4k/series-workflowg6b4k-convert-artifact-1454663604/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 15:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 15:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 15:00:11 +0000 UTC FinishedAt: 2026-08-15 15:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 15:00:21 +0000 UTC FinishedAt: 2026-08-15 18:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6b4k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["btrfs_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["BTRFS_FS"],"series_id":"5db6f018-131b-4ee3-8804-5deb18967b77","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 15:00:21 +0000 UTC FinishedAt: 2026-08-15 18:03:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*26223a5d-9290-4025-ac67-7b40b8b73af3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5f25c0b8-b4ee-4b92-87c9-d7e64ea14325,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-workflowg6b4k/series-workflowg6b4k-build-action-67387306/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-workflowg6b4k/series-workflowg6b4k-build-action-3498770911/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-workflowg6b4k/series-workflowg6b4k-convert-artifact-1454663604/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,}