Name: series-workflowrzbcb Phase: Succeeded StartedAt: 2026-08-02 01:09:40 +0000 UTC FinishedAt: 2026-08-02 02:05:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[0] Phase: Succeeded StartedAt: 2026-08-02 01:09:40 +0000 UTC FinishedAt: 2026-08-02 01:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 01:09:40 +0000 UTC FinishedAt: 2026-08-02 01:12:11 +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": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EROFS_FS", "EROFS_FS_BACKED_BY_FILE", "EROFS_FS_PAGE_CACHE_SHARE" ], "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": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EROFS_FS", "EROFS_FS_BACKED_BY_FILE", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "dec700c7-6019-4586-8ec3-86d31b6d09b5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "erofs_fc_parse_param", "erofs_fc_get_tree", "erofs_fc_reconfigure", "erofs_fc_test_file_super", "erofs_fc_get_tree_file" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcm9mc19mY19wYXJzZV9wYXJhbSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXImIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG1vdW50IG9wdGlvbiBgc3VwZXJibG9ja19zaGFyZWAgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLCB3aGljaCBhbGxvd3Mgc2hhcmluZyB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBtb3VudCBsb2dpYyBvZiBFUk9GUyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Vyb2ZzLnJzdCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XG5pbmRleCA3NzRlOGIyMzZkMDk5Li41MTdjNTI2MTYzZTIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XG5AQCAtMTMxLDEyICYjNDM7MTMxLDE3IEBAIGRldmljZT0lcyAgICAgICAgICAgICAgU3BlY2lmeSBhIHBhdGggdG8gYW4gZXh0cmEgZGV2aWNlIHRvIGJlIHVzZWQgdG9nZXRoZXIuXG4gZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgYXN5bmNocm9ub3VzIEkvTyB3aWxsIGJlIGVuYWJsZWQgaWYgc3VwcG9ydGVkLlxuIGRvbWFpbl9pZD0lcyAgICAgICAgICAgU3BlY2lmeSBhIHRydXN0ZWQgZG9tYWluIElELiBGaWxlc3lzdGVtcyBzaGFyaW5nIHRoZSBzYW1lXG4tICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlXG4tICAgICAgICAgICAgICAgICAgICAgICBwYWdlIHNoYXJpbmcgaXMgZW5hYmxlZC4gKG5vdCBzaG93biBpbiBtb3VudGluZm8gb3V0cHV0KVxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBJRCBjYW4gc2hhcmUgcGFnZSBjYWNoZSBhY3Jvc3MgbW91bnRzIHdoZW5cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZV9zaGFyZSBpcyBlbmFibGVkLCBhbmQgc2hhcmUgc3VwZXJibG9ja3Mgd2hlblxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyYmxvY2tfc2hhcmUgaXMgZW5hYmxlZC4gKG5vdCBzaG93biBpbiBtb3VudGluZm9cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpXG4gZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS5cbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwgY29udGVudCB3aXRoaW4gdGhlIHNhbWUgZG9tYWluIElEIGNhbiBzaGFyZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuXG4mIzQzO3N1cGVyYmxvY2tfc2hhcmUgICAgICAgU2hhcmUgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG4gRmlsZS1iYWNrZWQgbW91bnRzXG5AQCAtMTU0LDYgJiM0MzsxNTksMTMgQEAgT25seSByZWd1bGFyIGZpbGVzIGFyZSBhY2NlcHRlZCBhcyBiYWNraW5nIGZpbGVzOyB0byBtb3VudCBhbiBpbWFnZSB0aGF0XG4gcmVzaWRlcyBvbiBhIGJsb2NrIGRldmljZSwgdXNlIHRoZSB0cmFkaXRpb25hbCBibG9jayBkZXZpY2UgbW91bnQgcGF0aFxuIGluc3RlYWQuXG4gXG4mIzQzO1doZW4gZG9tYWluX2lkIGFuZCBzdXBlcmJsb2NrX3NoYXJlIGFyZSBib3RoIHNwZWNpZmllZCBhbmQgdGhlIHNhbWVcbiYjNDM7YmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW5cbiYjNDM7b25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZSBtb3VudCBvcHRpb25zLCB0aGUga2VybmVsXG4mIzQzO3JldXNlcyB0aGUgZXhpc3Rpbmcgc3VwZXJibG9jayBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS5cbiYjNDM7XG4mIzQzO1JlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuJiM0MztcbiBTeXNmcyBFbnRyaWVzXG4gPT09PT09PT09PT09PVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oXG5pbmRleCA1N2JkMjE4NTljNjVkLi44NmRhMjE5ZjhmNGVjIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxuQEAgLTE1Niw2ICYjNDM7MTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xuICNkZWZpbmUgRVJPRlNfTU9VTlRfREFYX05FVkVSXHRcdDB4MDAwMDAwODBcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RJUkVDVF9JT1x0XHQweDAwMDAwMTAwXG4gI2RlZmluZSBFUk9GU19NT1VOVF9JTk9ERV9TSEFSRVx0XHQweDAwMDAwMjAwXG4mIzQzOyNkZWZpbmUgRVJPRlNfTU9VTlRfU1VQRVJCTE9DS19TSEFSRVx0MHgwMDAwMDQwMFxuIFxuICNkZWZpbmUgY2xlYXJfb3B0KG9wdCwgb3B0aW9uKVx0KChvcHQpLVx1MDAzZW1vdW50X29wdCBcdTAwMjY9IH5FUk9GU19NT1VOVF8jI29wdGlvbilcbiAjZGVmaW5lIHNldF9vcHQob3B0LCBvcHRpb24pXHQoKG9wdCktXHUwMDNlbW91bnRfb3B0IHw9IEVST0ZTX01PVU5UXyMjb3B0aW9uKVxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3N1cGVyLmMgYi9mcy9lcm9mcy9zdXBlci5jXG5pbmRleCA4ZWFkMTY0NmYzMjk0Li45NWMwOTBmNDc3ZjEwIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvc3VwZXIuY1xuQEAgLTM4Niw3ICYjNDM7Mzg2LDcgQEAgc3RhdGljIHZvaWQgZXJvZnNfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkpXG4gZW51bSB7XG4gXHRPcHRfdXNlcl94YXR0ciwgT3B0X2FjbCwgT3B0X2NhY2hlX3N0cmF0ZWd5LCBPcHRfZGF4LCBPcHRfZGF4X2VudW0sXG4gXHRPcHRfZGV2aWNlLCBPcHRfZG9tYWluX2lkLCBPcHRfZGlyZWN0aW8sIE9wdF9mc29mZnNldCwgT3B0X2lub2RlX3NoYXJlLFxuLVx0T3B0X3NvdXJjZSxcbiYjNDM7XHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcbkBAIC00MTUsNiAmIzQzOzQxNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZXJvZnNfZnNfcGFyYW1ldGVyc1tdID0ge1xuIFx0ZnNwYXJhbV91NjQoXCYjMzQ7ZnNvZmZzZXRcJiMzNDssXHRcdFx0T3B0X2Zzb2Zmc2V0KSxcbiBcdGZzcGFyYW1fZmxhZyhcJiMzNDtpbm9kZV9zaGFyZVwmIzM0OyxcdFx0T3B0X2lub2RlX3NoYXJlKSxcbiBcdGZzcGFyYW1fZmlsZV9vcl9zdHJpbmcoXCYjMzQ7c291cmNlXCYjMzQ7LFx0T3B0X3NvdXJjZSksXG4mIzQzO1x0ZnNwYXJhbV9mbGFnKFwmIzM0O3N1cGVyYmxvY2tfc2hhcmVcJiMzNDssXHRPcHRfc3VwZXJibG9ja19zaGFyZSksXG4gXHR7fVxuIH07XG4gXG5AQCAtNTM2LDcgJiM0Mzs1MzcsOCBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0JiM0MzsmIzQzO3NiaS1cdTAwM2VkZXZzLVx1MDAzZWV4dHJhX2RldmljZXM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBPcHRfZG9tYWluX2lkOlxuLVx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpKSB7XG4mIzQzO1x0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpIHtcbiBcdFx0XHRlcnJvcmZjKGZjLCBcJiMzNDslcyBvcHRpb24gbm90IHN1cHBvcnRlZFwmIzM0OywgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGtmcmVlX3NlbnNpdGl2ZShzYmktXHUwMDNlZG9tYWluX2lkKTtcbkBAIC01NjAsNiAmIzQzOzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIE9wdF9zdXBlcmJsb2NrX3NoYXJlOlxuJiM0MztcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpXG4mIzQzO1x0XHRcdGVycm9yZmMoZmMsIFwmIzM0OyVzIG9wdGlvbiBub3Qgc3VwcG9ydGVkXCYjMzQ7LCBlcm9mc19mc19wYXJhbWV0ZXJzW29wdF0ubmFtZSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgT3B0X3NvdXJjZTpcbiBcdFx0cmV0dXJuIGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShmYywgcGFyYW0pO1xuIFx0fVxuQEAgLTY0OCw2ICYjNDM7NjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGVycm9yZmMoZmMsIFwmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBpbm9kZV9pc2hhcmUgaXMgb25cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiYjNDM7XHRpZiAoIXNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7XG4mIzQzO1x0XHRlcnJvcmZjKGZjLCBcJiMzNDtkb21haW5faWQgaXMgbmVlZGVkIHdoZW4gc3VwZXJibG9ja19zaGFyZSBpcyBvblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXHRpZiAodGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgREFYX0FMV0FZUykgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIElOT0RFX1NIQVJFKSkge1xuIFx0XHRlcnJvcmZjKGZjLCBcJiMzNDtGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTc3OSw2ICYjNDM7NzkxLDU1IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XG4mIzQzO1x0c3RydWN0IGVyb2ZzX3NiX2luZm8gKm5ld19zYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG4mIzQzO1xuJiM0MztcdGlmIChzYi1cdTAwM2VzX2lmbGFncyBcdTAwMjYgU0JfSV9SRVRJUkVEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFzYmktXHUwMDNlZGlmMC5maWxlIHx8ICFuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdGlmICghdGVzdF9vcHQoXHUwMDI2bmV3X3NiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFzYmktXHUwMDNlZG9tYWluX2lkIHx8ICFuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCB8fFxuJiM0MztcdCAgICBzdHJjbXAoc2JpLVx1MDAzZWRvbWFpbl9pZCwgbmV3X3NiaS1cdTAwM2Vkb21haW5faWQpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIHNiaS1cdTAwM2VkaWYwLmZzb2ZmID09IG5ld19zYmktXHUwMDNlZGlmMC5mc29mZiBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgc2JpLVx1MDAzZW9wdC5tb3VudF9vcHQgPT0gbmV3X3NiaS1cdTAwM2VvcHQubW91bnRfb3B0IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBzYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbiYjNDM7XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4mIzQzO1x0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuJiM0MztcbiYjNDM7XHRzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpO1xuJiM0MztcdGlmIChJU19FUlIoc2IpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoc2IpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2ItXHUwMDNlc19yb290KSB7XG4mIzQzO1x0XHRlcm9mc19pbmZvKHNiLCBcJiMzNDtzaGFyaW5nIHN1cGVyYmxvY2sgZm9yIHRoZSBzYW1lIGJhY2tpbmcgZmlsZVwmIzM0Oyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGVhY3RpdmF0ZV9sb2NrZWRfc3VwZXIoc2IpO1xuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0c2ItXHUwMDNlc19mbGFncyB8PSBTQl9BQ1RJVkU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmYy1cdTAwM2Vyb290ID0gZGdldChzYi1cdTAwM2VzX3Jvb3QpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZXJvZnNfZmNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIHtcbiBcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG5AQCAtNzk0LDcgJiM0Mzs4NTUsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0XHRlcnJvcmZjKGZjLCBcJiMzNDtzb3VyY2UgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4tXHRcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XG4mIzQzO1x0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG4gXHR9XG4gXG4gXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuQEAgLTgxMiw3ICYjNDM7ODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXG4gXHRcdGlmIChTX0lTUkVHKGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSktXHUwMDNlaV9tb2RlKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHNiaS1cdTAwM2VkaWYwLmZpbGUtXHUwMDNlZl9tYXBwaW5nLVx1MDAzZWFfb3BzLVx1MDAzZXJlYWRfZm9saW8pXG4tXHRcdFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcbiYjNDM7XHRcdFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xuIFx0fVxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtODI1LDYgJiM0Mzs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XG4gXG4mIzQzO1x0aWYgKHNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxuJiM0MztcdFx0cmV0dXJuIC1FQlVTWTtcbiYjNDM7XG4gXHRpZiAobmV3X3NiaS1cdTAwM2Vkb21haW5faWQpXG4gXHRcdGVyb2ZzX2luZm8oc2IsIFwmIzM0O2lnbm9yaW5nIHJlY29uZmlndXJhdGlvbiBmb3IgZG9tYWluX2lkLlwmIzM0Oyk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcm9mc19mY19wYXJzZV9wYXJhbSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXImIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG1vdW50IG9wdGlvbiBgc3VwZXJibG9ja19zaGFyZWAgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLCB3aGljaCBhbGxvd3Mgc2hhcmluZyB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBtb3VudCBsb2dpYyBvZiBFUk9GUyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKaW5kZXggNzc0ZThiMjM2ZDA5OS4uNTE3YzUyNjE2M2UyMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKQEAgLTEzMSwxMiAmIzQzOzEzMSwxNyBAQCBkZXZpY2U9JXMgICAgICAgICAgICAgIFNwZWNpZnkgYSBwYXRoIHRvIGFuIGV4dHJhIGRldmljZSB0byBiZSB1c2VkIHRvZ2V0aGVyLgogZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmcKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsIGFuZCBhc3luY2hyb25vdXMgSS9PIHdpbGwgYmUgZW5hYmxlZCBpZiBzdXBwb3J0ZWQuCiBkb21haW5faWQ9JXMgICAgICAgICAgIFNwZWNpZnkgYSB0cnVzdGVkIGRvbWFpbiBJRC4gRmlsZXN5c3RlbXMgc2hhcmluZyB0aGUgc2FtZQotICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlCi0gICAgICAgICAgICAgICAgICAgICAgIHBhZ2Ugc2hhcmluZyBpcyBlbmFibGVkLiAobm90IHNob3duIGluIG1vdW50aW5mbyBvdXRwdXQpCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZV9zaGFyZSBpcyBlbmFibGVkLCBhbmQgc2hhcmUgc3VwZXJibG9ja3Mgd2hlbgomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgc3VwZXJibG9ja19zaGFyZSBpcyBlbmFibGVkLiAobm90IHNob3duIGluIG1vdW50aW5mbwomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS4KIGlub2RlX3NoYXJlICAgICAgICAgICAgRW5hYmxlIGlub2RlIHBhZ2Ugc2hhcmluZyBmb3IgdGhpcyBmaWxlc3lzdGVtLiAgSW5vZGVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsIGNvbnRlbnQgd2l0aGluIHRoZSBzYW1lIGRvbWFpbiBJRCBjYW4gc2hhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuCiYjNDM7c3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZQomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLgogPT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogRmlsZS1iYWNrZWQgbW91bnRzCkBAIC0xNTQsNiAmIzQzOzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXQKIHJlc2lkZXMgb24gYSBibG9jayBkZXZpY2UsIHVzZSB0aGUgdHJhZGl0aW9uYWwgYmxvY2sgZGV2aWNlIG1vdW50IHBhdGgKIGluc3RlYWQuCiAKJiM0MztXaGVuIGRvbWFpbl9pZCBhbmQgc3VwZXJibG9ja19zaGFyZSBhcmUgYm90aCBzcGVjaWZpZWQgYW5kIHRoZSBzYW1lCiYjNDM7YmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW4KJiM0MztvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWwKJiM0MztyZXVzZXMgdGhlIGV4aXN0aW5nIHN1cGVyYmxvY2sgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCiYjNDM7CiYjNDM7UmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuCiYjNDM7CiBTeXNmcyBFbnRyaWVzCiA9PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oCmluZGV4IDU3YmQyMTg1OWM2NWQuLjg2ZGEyMTlmOGY0ZWMgMTAwNjQ0Ci0tLSBhL2ZzL2Vyb2ZzL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvaW50ZXJuYWwuaApAQCAtMTU2LDYgJiM0MzsxNTYsNyBAQCBzdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7CiAjZGVmaW5lIEVST0ZTX01PVU5UX0RBWF9ORVZFUgkJMHgwMDAwMDA4MAogI2RlZmluZSBFUk9GU19NT1VOVF9ESVJFQ1RfSU8JCTB4MDAwMDAxMDAKICNkZWZpbmUgRVJPRlNfTU9VTlRfSU5PREVfU0hBUkUJCTB4MDAwMDAyMDAKJiM0MzsjZGVmaW5lIEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkUJMHgwMDAwMDQwMAogCiAjZGVmaW5lIGNsZWFyX29wdChvcHQsIG9wdGlvbikJKChvcHQpLSZndDttb3VudF9vcHQgJmFtcDs9IH5FUk9GU19NT1VOVF8jI29wdGlvbikKICNkZWZpbmUgc2V0X29wdChvcHQsIG9wdGlvbikJKChvcHQpLSZndDttb3VudF9vcHQgfD0gRVJPRlNfTU9VTlRfIyNvcHRpb24pCmRpZmYgLS1naXQgYS9mcy9lcm9mcy9zdXBlci5jIGIvZnMvZXJvZnMvc3VwZXIuYwppbmRleCA4ZWFkMTY0NmYzMjk0Li45NWMwOTBmNDc3ZjEwIDEwMDY0NAotLS0gYS9mcy9lcm9mcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Vyb2ZzL3N1cGVyLmMKQEAgLTM4Niw3ICYjNDM7Mzg2LDcgQEAgc3RhdGljIHZvaWQgZXJvZnNfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkpCiBlbnVtIHsKIAlPcHRfdXNlcl94YXR0ciwgT3B0X2FjbCwgT3B0X2NhY2hlX3N0cmF0ZWd5LCBPcHRfZGF4LCBPcHRfZGF4X2VudW0sCiAJT3B0X2RldmljZSwgT3B0X2RvbWFpbl9pZCwgT3B0X2RpcmVjdGlvLCBPcHRfZnNvZmZzZXQsIE9wdF9pbm9kZV9zaGFyZSwKLQlPcHRfc291cmNlLAomIzQzOwlPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHsKQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7CiAJZnNwYXJhbV91NjQoJiMzNDtmc29mZnNldCYjMzQ7LAkJCU9wdF9mc29mZnNldCksCiAJZnNwYXJhbV9mbGFnKCYjMzQ7aW5vZGVfc2hhcmUmIzM0OywJCU9wdF9pbm9kZV9zaGFyZSksCiAJZnNwYXJhbV9maWxlX29yX3N0cmluZygmIzM0O3NvdXJjZSYjMzQ7LAlPcHRfc291cmNlKSwKJiM0MzsJZnNwYXJhbV9mbGFnKCYjMzQ7c3VwZXJibG9ja19zaGFyZSYjMzQ7LAlPcHRfc3VwZXJibG9ja19zaGFyZSksCiAJe30KIH07CiAKQEAgLTUzNiw3ICYjNDM7NTM3LDggQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAJCSYjNDM7JiM0MztzYmktJmd0O2RldnMtJmd0O2V4dHJhX2RldmljZXM7CiAJCWJyZWFrOwogCWNhc2UgT3B0X2RvbWFpbl9pZDoKLQkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSkgewomIzQzOwkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSkgewogCQkJZXJyb3JmYyhmYywgJiMzNDslcyBvcHRpb24gbm90IHN1cHBvcnRlZCYjMzQ7LCBlcm9mc19mc19wYXJhbWV0ZXJzW29wdF0ubmFtZSk7CiAJCX0gZWxzZSB7CiAJCQlrZnJlZV9zZW5zaXRpdmUoc2JpLSZndDtkb21haW5faWQpOwpAQCAtNTYwLDYgJiM0Mzs1NjIsMTIgQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAJCWVsc2UKIAkJCXNldF9vcHQoJmFtcDtzYmktJmd0O29wdCwgSU5PREVfU0hBUkUpOwogCQlicmVhazsKJiM0MzsJY2FzZSBPcHRfc3VwZXJibG9ja19zaGFyZToKJiM0MzsJCWlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKQomIzQzOwkJCWVycm9yZmMoZmMsICYjMzQ7JXMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQmIzM0OywgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpOwomIzQzOwkJZWxzZQomIzQzOwkJCXNldF9vcHQoJmFtcDtzYmktJmd0O29wdCwgU1VQRVJCTE9DS19TSEFSRSk7CiYjNDM7CQlicmVhazsKIAljYXNlIE9wdF9zb3VyY2U6CiAJCXJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTsKIAl9CkBAIC02NDgsNiAmIzQzOzY1NiwxMCBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCQllcnJvcmZjKGZjLCAmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBpbm9kZV9pc2hhcmUgaXMgb24mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KJiM0MzsJaWYgKCFzYmktJmd0O2RvbWFpbl9pZCAmYW1wOyZhbXA7IHRlc3Rfb3B0KCZhbXA7c2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7CiYjNDM7CQllcnJvcmZjKGZjLCAmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBzdXBlcmJsb2NrX3NoYXJlIGlzIG9uJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAlpZiAodGVzdF9vcHQoJmFtcDtzYmktJmd0O29wdCwgREFYX0FMV0FZUykgJmFtcDsmYW1wOyB0ZXN0X29wdCgmYW1wO3NiaS0mZ3Q7b3B0LCBJTk9ERV9TSEFSRSkpIHsKIAkJZXJyb3JmYyhmYywgJiMzNDtGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NzksNiAmIzQzOzc5MSw1NSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKJiM0MzsJCQkJICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7CiYjNDM7CXN0cnVjdCBlcm9mc19zYl9pbmZvICpuZXdfc2JpID0gZmMtJmd0O3NfZnNfaW5mbzsKJiM0MzsKJiM0MzsJaWYgKHNiLSZndDtzX2lmbGFncyAmYW1wOyBTQl9JX1JFVElSRUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJaWYgKCFzYmktJmd0O2RpZjAuZmlsZSB8fCAhbmV3X3NiaS0mZ3Q7ZGlmMC5maWxlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWlmICghdGVzdF9vcHQoJmFtcDtuZXdfc2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWlmICghc2JpLSZndDtkb21haW5faWQgfHwgIW5ld19zYmktJmd0O2RvbWFpbl9pZCB8fAomIzQzOwkgICAgc3RyY21wKHNiaS0mZ3Q7ZG9tYWluX2lkLCBuZXdfc2JpLSZndDtkb21haW5faWQpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBmaWxlX2lub2RlKHNiaS0mZ3Q7ZGlmMC5maWxlKSA9PSBmaWxlX2lub2RlKG5ld19zYmktJmd0O2RpZjAuZmlsZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtkaWYwLmZzb2ZmID09IG5ld19zYmktJmd0O2RpZjAuZnNvZmYgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtvcHQubW91bnRfb3B0ID09IG5ld19zYmktJmd0O29wdC5tb3VudF9vcHQgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtvcHQuY2FjaGVfc3RyYXRlZ3kgPT0gbmV3X3NiaS0mZ3Q7b3B0LmNhY2hlX3N0cmF0ZWd5OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKQomIzQzO3sKJiM0MzsJc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSA9IGZjLSZndDtzX2ZzX2luZm87CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmICghdGVzdF9vcHQoJmFtcDtzYmktJmd0O29wdCwgU1VQRVJCTE9DS19TSEFSRSkpCiYjNDM7CQlyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpOwomIzQzOwomIzQzOwlzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpOwomIzQzOwlpZiAoSVNfRVJSKHNiKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHNiKTsKJiM0MzsKJiM0MzsJaWYgKHNiLSZndDtzX3Jvb3QpIHsKJiM0MzsJCWVyb2ZzX2luZm8oc2IsICYjMzQ7c2hhcmluZyBzdXBlcmJsb2NrIGZvciB0aGUgc2FtZSBiYWNraW5nIGZpbGUmIzM0Oyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQllcnIgPSBlcm9mc19mY19maWxsX3N1cGVyKHNiLCBmYyk7CiYjNDM7CQlpZiAoZXJyKSB7CiYjNDM7CQkJZGVhY3RpdmF0ZV9sb2NrZWRfc3VwZXIoc2IpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CQlzYi0mZ3Q7c19mbGFncyB8PSBTQl9BQ1RJVkU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZmMtJmd0O3Jvb3QgPSBkZ2V0KHNiLSZndDtzX3Jvb3QpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYykKIHsKIAlzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtJmd0O3NfZnNfaW5mbzsKQEAgLTc5NCw3ICYjNDM7ODU1LDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCQllcnJvcmZjKGZjLCAmIzM0O3NvdXJjZSBpcyB1bnN1cHBvcnRlZCYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JCXJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7CiYjNDM7CQlyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7CiAJfQogCiAJcmV0ID0gZ2V0X3RyZWVfYmRldl9mbGFncyhmYywgZXJvZnNfZmNfZmlsbF9zdXBlciwKQEAgLTgxMiw3ICYjNDM7ODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAkJaWYgKFNfSVNSRUcoZmlsZV9pbm9kZShzYmktJmd0O2RpZjAuZmlsZSktJmd0O2lfbW9kZSkgJmFtcDsmYW1wOwogCQkgICAgc2JpLSZndDtkaWYwLmZpbGUtJmd0O2ZfbWFwcGluZy0mZ3Q7YV9vcHMtJmd0O3JlYWRfZm9saW8pCi0JCQlyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpOwomIzQzOwkJCXJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTsKIAl9CiAJcmV0dXJuIHJldDsKIH0KQEAgLTgyNSw2ICYjNDM7ODg2LDkgQEAgc3RhdGljIGludCBlcm9mc19mY19yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAlEQkdfQlVHT04oIXNiX3Jkb25seShzYikpOwogCiYjNDM7CWlmIChzYmktJmd0O2RvbWFpbl9pZCAmYW1wOyZhbXA7IHRlc3Rfb3B0KCZhbXA7c2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKQomIzQzOwkJcmV0dXJuIC1FQlVTWTsKJiM0MzsKIAlpZiAobmV3X3NiaS0mZ3Q7ZG9tYWluX2lkKQogCQllcm9mc19pbmZvKHNiLCAmIzM0O2lnbm9yaW5nIHJlY29uZmlndXJhdGlvbiBmb3IgZG9tYWluX2lkLiYjMzQ7KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjExCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVST0ZTIFN1cGVyYmxvY2sgU2hhcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaW50cm9kdWNpbmcgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBtb3VudCBvcHRpb24gZm9yIHRoZSBgZXJvZnNgIGZpbGVzeXN0ZW0uIFRoZSBpZGVhIGhlcmUgaXMgdG8gYWxsb3cgdGhlIHN1cGVyYmxvY2sgdG8gYmUgc2hhcmVkIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhleSBzaGFyZSB0aGUgc2FtZSBgZG9tYWluX2lkYCBhbmQgY29tcGF0aWJsZSBvcHRpb25zLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBvcHRpbWl6YXRpb24sIGVzcGVjaWFsbHkgaW4gc2NlbmFyaW9zIHdpdGggbXVsdGlwbGUgbW91bnRzIG9mIHRoZSBzYW1lIGltYWdlLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNoYW5nZXM6CgoqICAgKipEb2N1bWVudGF0aW9uOioqIFVwZGF0ZXMgdG8gYERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0YCBhcmUgZXhwZWN0ZWQuIEFsd2F5cyBhIGdvb2Qgc2lnbiBvZiB0aG9yb3VnaG5lc3MuCiogICAqKkhlYWRlcjoqKiBBZGRpbmcgYEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkVgIHRvIGBmcy9lcm9mcy9pbnRlcm5hbC5oYCBpcyBzdHJhaWdodGZvcndhcmQgLSB0aGUgbWFjcm8mIzM5O3MgbmVjZXNzYXJ5LgoqICAgKipDb3JlIExvZ2ljOioqIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGZzL2Vyb2ZzL3N1cGVyLmNgLiBXZSYjMzk7cmUgYWRkaW5nIGBPcHRfc3VwZXJibG9ja19zaGFyZWAgdG8gYGVyb2ZzX2ZzX3BhcmFtZXRlcnNgLCB0aGF0JiMzOTtzIHRoZSBwYXJzaW5nIHN0cnVjdHVyZS4gYGVyb2ZzX2ZjX3BhcnNlX3BhcmFtYCBub3cgaGFuZGxlcyB0aGUgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiBpdHNlbGYuIEluIGBlcm9mc19mY19maWxsX3N1cGVyYCwgdGhlcmUmIzM5O3MgYSB2YWxpZGF0aW9uIGNoZWNrIHRoYXQgdGhlIGBkb21haW5faWRgIGlzIHByZXNlbnQgd2hlbiB0aGUgc2hhcmluZyBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBhbHNvIGdldHRpbmcgZnVuY3Rpb25zIGZvciB0ZXN0aW5nIGlmIHdlIGNhbiBzaGFyZSBhIHN1cGVyYmxvY2sgdXNpbmcgYGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcmAsIGFuZCBncmFiYmluZyBlaXRoZXIgdGhlIHNoYXJlZCBvciBhIG5ldyBvbmUsIHZpYSBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAgdXNpbmcgYHNnZXRfZmNgLiBgZXJvZnNfZmNfZ2V0X3RyZWVgIG5vdyB1c2VzIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCByYXRoZXIgdGhhbiBgZ2V0X3RyZWVfbm9kZXZgLCB3aGljaCBpcyB0aGUgYWN0dWFsIHN0cnVjdHVyYWwgY2hhbmdlLiBgZXJvZnNfZmNfcmVjb25maWd1cmVgIG5vdyByZXR1cm5zIGAtRUJVU1lgIHdoZW4gc3VwZXJibG9jayBzaGFyaW5nIGlzIGFjdGl2ZSwgd2hpY2ggbWFrZXMgc2Vuc2UgLSB5b3Ugc2hvdWxkbiYjMzk7dCBiZSByZWNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0IGlzIHNoYXJlZC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIGBlcm9mc2AuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuIEl0JiMzOTtzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBzdGFiaWxpdHkgYW5kIHRvIGlkZW50aWZ5IGFueSBlZGdlIGNhc2VzIG9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcmlzZSB3aXRoIG11bHRpcGxlIG1vdW50cy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBmZWF0dXJlLiBXZSBrbm93IGl0IGNoZWNrcyBgSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpYCwgd2hpY2ggaW1wbGllcyB0aGF0IGBDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgIGlzIG1hbmRhdG9yeS4gT2J2aW91c2x5LCBgQ09ORklHX0VST0ZTX0ZTYCBpcyBhbHNvIHJlcXVpcmVkIGZvciB0aGUgYGVyb2ZzYCBmaWxlc3lzdGVtIGl0c2VsZi4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBmcy9lcm9mcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWc9ODU9Y29uZmlnIEVST0ZTX0ZTX1NFQ1VSSVRZXG4tLVxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cbmZzL2Vyb2ZzL0tjb25maWc6OTg6Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG5mcy9lcm9mcy9LY29uZmlnLTk5LVx0Ym9vbCBcJiMzNDtGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBFUk9GUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIGFzcGVjdCBvZiBFUk9GUyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgRVJPRlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9lcm9mcy9LY29uZmlnYCBhbmQsIGdpdmVuIG15IGdlbmVyYWwgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSBmaWxlcywgSSYjMzk7bGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA5OC4gVGhhdCBmZWVscyBsaWtlIGEgcmVhc29uYWJsZSBwb2ludCB0byBiZWdpbjsgdGhhdCBsaW5lIGxpa2VseSBjb3ZlcnMgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIG9wdGlvbiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeS4gVGltZSB0byBnZXQgbXkgZXllcyBvbiB0aGF0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0ICBTZWN1cml0eSBsYWJlbHMgcHJvdmlkZSBhbiBhY2Nlc3MgY29udHJvbCBmYWNpbGl0eSB0byBzdXBwb3J0IExpbnV4XG4gIDkxOlx0XHQgIFNlY3VyaXR5IE1vZGVscyAoTFNNcykgYWNjZXB0ZWQgYnkgQXBwQXJtb3IsIFNFTGludXgsIFNtYWNrIGFuZCBUT01PWU9cbiAgOTI6XHRcdCAgTGludXguIFRoaXMgb3B0aW9uIGVuYWJsZXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsZXIgZm9yIGZpbGVcbiAgOTM6XHRcdCAgc2VjdXJpdHkgbGFiZWxzIGluIHRoZSBlcm9mcyBmaWxlc3lzdGVtLCBzbyB0aGF0IGl0IHJlcXVpcmVzIGVuYWJsaW5nXG4gIDk0Olx0XHQgIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBpbiBhZHZhbmNlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSwgc2F5IE4uXG4gIDk3Olx0XG4gIDk4Olx0Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG4gIDk5Olx0XHRib29sIFwmIzM0O0ZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuIDEwMDpcdFx0ZGVwZW5kcyBvbiBFUk9GU19GU1xuIDEwMTpcdFx0ZGVmYXVsdCB5XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgYWxsb3dzIEVST0ZTIHRvIHVzZSBmaWxlc3lzdGVtIGltYWdlIGZpbGVzIGRpcmVjdGx5LCB3aXRob3V0XG4gMTA0Olx0XHQgIHRoZSBpbnRlcmNlc3Npb24gb2YgbG9vcGJhY2sgYmxvY2sgZGV2aWNlcyBvciBsaWtld2lzZS4gSXQgaXNcbiAxMDU6XHRcdCAgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY29udGFpbmVyIGltYWdlcyB3aXRoIG51bWVyb3VzIGJsb2JzIGFuZFxuIDEwNjpcdFx0ICBvdGhlciBzYW5kYm94ZXMsIHdoZXJlIGxvb3AgZGV2aWNlcyBiZWhhdmUgaW50cmljYXRlbHkuICBJdCBjYW4gYWxzb1xuIDEwNzpcdFx0ICBiZSB1c2VkIHRvIHNpbXBsaWZ5IGVycm9yLXByb25lIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgdW5uZWNlc3NhcnlcbiAxMDg6XHRcdCAgdmlydHVhbCBibG9jayBkZXZpY2VzLlxuIDEwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyODIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEVST0ZTIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIEFQSSBlbnRyeSBwb2ludHMgYmFzZWQgb24gdGhlIGtlcm5lbCBpbnN0cnVjdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29tcGxpYW50IHdpdGguCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHNldmVyYWwga2V5IHN5bWJvbHMuIEkmIzM5O3ZlIGdvdCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgd2hpY2ggaXMgc3RhdGljIGJ1dCBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgc2dldF9mY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBleHBvcnRlZCBpZiBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgYnV0IHRoZW4gSSByZWNhbGwgaXQmIzM5O3Mgc3RhdGljLiBTdGlsbCwgYHNnZXRfZmNgIGNhbGxzIGl0LCBzbyBJIHNob3VsZCBzZWUgaWYgaXRzIGlubGluZWQgLSB3aGljaCBjYW4mIzM5O3QgYmUgYXMgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4KClRoZW4sIHRoZXJlJiMzOTtzIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCwgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBlcm9mc19mY19nZXRfdHJlZWAsIHdoaWNoIGlzIGFjdHVhbGx5IHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrIGZvciB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIE1ha2VzIHNlbnNlLCBidXQgc3RpbGwgc3RhdGljLiBUaGVuIEkgaGF2ZSBgZXJvZnNfZmNfZ2V0X3RyZWVgIGl0c2VsZiwgd2hpY2gsIGFnYWluLCBpcyBzdGF0aWMsIGJ1dCBpdCAqaXMqIHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrLiBTaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgYW5kIGBlcm9mc19mY19maWxsX3N1cGVyYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAuIFN0YXRpYywgc3RhdGljLCBzdGF0aWMhCgpPa2F5LCBzbyBhbGwgb2YgdGhlc2UgaW5pdGlhbCBzeW1ib2xzIGFyZSBzdGF0aWMuIFRoaXMgbWFrZXMgbWUgY3VyaW91cy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZnMvZXJvZnMvc3VwZXIuY2Agbm93IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UuIEkgd2FudCB0byBzZWUgaWYgYW55IG9mIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgd3JhcCBvciByZWxhdGUgdG8gbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQmIzM5O2xsIGJlIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXJvZnNfZmNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy9zdXBlci5jPTQwNT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbXSA9IHtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTQyMS1cbmZzL2Vyb2ZzL3N1cGVyLmM6NDIyOnN0YXRpYyBib29sIGVyb2ZzX2ZjX3NldF9kYXhfbW9kZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHVuc2lnbmVkIGludCBtb2RlKVxuZnMvZXJvZnMvc3VwZXIuYy00MjMte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNDQyLVxuZnMvZXJvZnMvc3VwZXIuYzo0NDM6c3RhdGljIGludCBlcm9mc19mY19wYXJzZV9zb3VyY2Uoc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuZnMvZXJvZnMvc3VwZXIuYy00NDQtXHRcdFx0XHQgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy00NzYtXG5mcy9lcm9mcy9zdXBlci5jOjQ3NzpzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbmZzL2Vyb2ZzL3N1cGVyLmMtNDc4LVx0XHRcdFx0c3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01MTItXHRjYXNlIE9wdF9kYXg6XG5mcy9lcm9mcy9zdXBlci5jOjUxMzpcdFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIEVST0ZTX01PVU5UX0RBWF9BTFdBWVMpKVxuZnMvZXJvZnMvc3VwZXIuYy01MTQtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01MTYtXHRjYXNlIE9wdF9kYXhfZW51bTpcbmZzL2Vyb2ZzL3N1cGVyLmM6NTE3Olx0XHRpZiAoIWVyb2ZzX2ZjX3NldF9kYXhfbW9kZShmYywgcmVzdWx0LnVpbnRfMzIpKVxuZnMvZXJvZnMvc3VwZXIuYy01MTgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01NzEtXHRjYXNlIE9wdF9zb3VyY2U6XG5mcy9lcm9mcy9zdXBlci5jOjU3MjpcdFx0cmV0dXJuIGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShmYywgcGFyYW0pO1xuZnMvZXJvZnMvc3VwZXIuYy01NzMtXHR9XG4tLVxuZnMvZXJvZnMvc3VwZXIuYz02Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBlcm9mc19leHBvcnRfb3BzID0ge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNjQzLVxuZnMvZXJvZnMvc3VwZXIuYzo2NDQ6c3RhdGljIGludCBlcm9mc19mY19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtNjQ1LXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTc5My1cbmZzL2Vyb2ZzL3N1cGVyLmM6Nzk0OnN0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9lcm9mcy9zdXBlci5jLTc5NS1cdFx0XHRcdCAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04MTQtXG5mcy9lcm9mcy9zdXBlci5jOjgxNTpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXJvZnMvc3VwZXIuYy04MTYte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODIxLVx0aWYgKCF0ZXN0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcbmZzL2Vyb2ZzL3N1cGVyLmM6ODIyOlx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuZnMvZXJvZnMvc3VwZXIuYy04MjMtXG5mcy9lcm9mcy9zdXBlci5jOjgyNDpcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XG5mcy9lcm9mcy9zdXBlci5jLTgyNS1cdGlmIChJU19FUlIoc2IpKVxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODMwLVx0fSBlbHNlIHtcbmZzL2Vyb2ZzL3N1cGVyLmM6ODMxOlx0XHRlcnIgPSBlcm9mc19mY19maWxsX3N1cGVyKHNiLCBmYyk7XG5mcy9lcm9mcy9zdXBlci5jLTgzMi1cdFx0aWYgKGVycikge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODQyLVxuZnMvZXJvZnMvc3VwZXIuYzo4NDM6c3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9lcm9mcy9zdXBlci5jLTg0NC17XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04NTctXHRcdH1cbmZzL2Vyb2ZzL3N1cGVyLmM6ODU4Olx0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG5mcy9lcm9mcy9zdXBlci5jLTg1OS1cdH1cbmZzL2Vyb2ZzL3N1cGVyLmMtODYwLVxuZnMvZXJvZnMvc3VwZXIuYzo4NjE6XHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuZnMvZXJvZnMvc3VwZXIuYy04NjItXHRcdElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSA/XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04NzUtXHRcdCAgICBzYmktXHUwMDNlZGlmMC5maWxlLVx1MDAzZWZfbWFwcGluZy1cdTAwM2VhX29wcy1cdTAwM2VyZWFkX2ZvbGlvKVxuZnMvZXJvZnMvc3VwZXIuYzo4NzY6XHRcdFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xuZnMvZXJvZnMvc3VwZXIuYy04NzctXHR9XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04ODAtXG5mcy9lcm9mcy9zdXBlci5jOjg4MTpzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtODgyLXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTkzMz1zdGF0aWMgdm9pZCBlcm9mc19zYl9mcmVlKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy05NDItXG5mcy9lcm9mcy9zdXBlci5jOjk0MzpzdGF0aWMgdm9pZCBlcm9mc19mY19mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQ0LXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTk1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBlcm9mc19jb250ZXh0X29wcyA9IHtcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU3Olx0LnBhcnNlX3BhcmFtXHQ9IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtLFxuZnMvZXJvZnMvc3VwZXIuYzo5NTg6XHQuZ2V0X3RyZWUgICAgICAgPSBlcm9mc19mY19nZXRfdHJlZSxcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU5Olx0LnJlY29uZmlndXJlICAgID0gZXJvZnNfZmNfcmVjb25maWd1cmUsXG5mcy9lcm9mcy9zdXBlci5jOjk2MDpcdC5mcmVlXHRcdD0gZXJvZnNfZmNfZnJlZSxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTYxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU3MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gQ29udGV4dCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBFUk9GUyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kLCBhcyBleHBlY3RlZCwgdGhvc2UgY29yZSBmdW5jdGlvbnMgYXJlIGFsbCAqc3RhdGljKi4gQnV0IHRoYXQmIzM5O3Mgbm90IHRoZSB3aG9sZSBzdG9yeS4gVGhleSYjMzk7cmUgc3RpbGwgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgZGVhbGluZyB3aXRoIHRoZSBmaWxlc3lzdGVtIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBzZWUgYGVyb2ZzX2ZjX3BhcnNlX3BhcmFtYCwgYGVyb2ZzX2ZjX2dldF90cmVlYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAgc3RhbmRpbmcgb3V0IGFzIHRoZSBrZXkgcGxheWVycyBmb3IgbW91bnQgYW5kIHJlbW91bnQgb3BlcmF0aW9ucy4gVGhlbiwgb2YgY291cnNlLCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgIGFyZSByaWdodCB0aGVyZSBhdCB0aGUgaGVhcnQgb2YgdGhpcyBwYXRjaCwgY3J1Y2lhbCBmb3IgdGhlIGZpbGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGUgc3RhdGljIG5hdHVyZSBtZWFucyB0aGV5JiMzOTtyZSBsaWtlbHkgbm90IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgdXNlIGFuZCBtYXkgYmUgb3B0aW1pemVkIG1vcmUgYWdncmVzc2l2ZWx5LiBFdmVuIHRob3VnaCB0aGV5JiMzOTtyZSAqc3RhdGljKiwgSSYjMzk7bSBub3RpbmcgdGhleSYjMzk7cmUgKm5vdCogaW5saW5lZCwgZWl0aGVyIGJlY2F1c2UgdGhleSYjMzk7cmUgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBmdW5jdGlvbiBwb2ludGVycyBvciB0aGV5JiMzOTtyZSBqdXN0IHRvbyBkYXJuIGJpZyB0byBtYWtlIGlubGluaW5nIHdvcnRod2hpbGUuCgpTbywgbGV0JiMzOTtzIGtlZXAgZGlnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBub24tc3RhdGljLiBBaCwgaGVyZSB3ZSBnbywgYGVyb2ZzX2luaXRfZnNfY29udGV4dGAgaXMgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJIHdhcyBsb29raW5nIGZvci4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc2V0dGluZyB1cCBgZXJvZnNfY29udGV4dF9vcHNgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgYW5kIHNlZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHN0YXRpYyBmdW5jdGlvbnMgSSYjMzk7dmUgYWxyZWFkeSBpZGVudGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcm9mc19pbml0X2ZzX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3N1cGVyLmM9OTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGVyb2ZzX2NvbnRleHRfb3BzID0ge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtOTYyLVxuZnMvZXJvZnMvc3VwZXIuYzo5NjM6c3RhdGljIGludCBlcm9mc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXJvZnMvc3VwZXIuYy05NjQte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMz1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXJvZnNfZnNfdHlwZSA9IHtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTEwMjUtXHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlcm9mc1wmIzM0OyxcbmZzL2Vyb2ZzL3N1cGVyLmM6MTAyNjpcdC5pbml0X2ZzX2NvbnRleHQgPSBlcm9mc19pbml0X2ZzX2NvbnRleHQsXG5mcy9lcm9mcy9zdXBlci5jLTEwMjctXHQua2lsbF9zYiAgICAgICAgPSBlcm9mc19raWxsX3NiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzMyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBFUk9GUyBGaWxlc3lzdGVtIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgRVJPRlMgY29kZSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGVyb2ZzX2luaXRfZnNfY29udGV4dGAgaXMgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3b25kZXIgYWJvdXQgd2hhdCAqaXMqIGFjdHVhbGx5IGV4cG9ydGVkIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwuIEFoLCByaWdodCwgYGVyb2ZzX2ZzX3R5cGVgIGlzIHN0YXRpYyBidXQgcmVnaXN0ZXJlZCB0aHJvdWdoIGBpbml0X2Vyb2ZzX2ZzYC4gU28sIGVzc2VudGlhbGx5IG1vc3Qgb2YgdGhlIHN0dWZmIGluIGBzdXBlci5jYCBpcyBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBTaW5jZSB0aGV5JiMzOTtyZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBub3QgaW5saW5lZCwgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIHRoZW0gYXMgdGhlIGtleSBlbnRyeSBwb2ludHM7IHRoZXkmIzM5O2xsIGJlIHRoZSBvbmVzIGF2YWlsYWJsZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIEkgc2VlIGBDT05GSUdfRVJPRlNfRlNgLCB0aGUgb2J2aW91cyBvbmUuIFRoZW4gdGhlcmUmIzM5O3MgYENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRWAsIGFuZCBmaW5hbGx5IGBDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgbGFzdCBvbmUgbWVudGlvbmVkIGluIGEgcGF0Y2ggd2l0aCB0aGUgY29uZGl0aW9uOiBgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpICZhbXA7JmFtcDsgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKWAuIEFscmlnaHQsIGxldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTIwMi1cbmZzL2Vyb2ZzL0tjb25maWc6MjAzOmNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cdGJvb2wgXCYjMzQ7RVJPRlMgcGFnZSBjYWNoZSBzaGFyZSBzdXBwb3J0IChleHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NzMKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVST0ZTIEZpbGVzeXN0ZW0gU3VwZXJibG9jayBTaGFyaW5nOiBBIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYCBqdW1wcyBvdXQgYXQgbWUgYXMgYSBrZXkgZmFjdG9yLiBJdCYjMzk7cyBkZWZpbml0ZWx5IHJlbGV2YW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcXVpY2tseS4gV2UgaGF2ZTogYEVST0ZTX0ZTYCwgb2YgY291cnNlLiBUaGVuIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAsIGFuZCBub3cgdGhpcyBuZXcgb25lLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuCgpOb3csIGZvciBzcGVjaWZpYyBzeW1ib2xzIHRvIGFuYWx5emUuIEkgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBlcm9mc19mY19wYXJzZV9wYXJhbWAsIGBlcm9mc19mY19nZXRfdHJlZWAsIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgLCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSBsaWtlIHRoZSBjcml0aWNhbCBwaWVjZXMgd2hlcmUgdGhpcyBuZXcgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiwgdGhlIG9uZSB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcsIHdvdWxkIGNvbWUgaW50byBwbGF5LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgbW91bnQgb3B0aW9uLCBgc3VwZXJibG9ja19zaGFyZWAsIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbS4gV2hhdCB0aGlzIG1lYW5zIGlzIHRoYXQgaWYgeW91IG1vdW50IHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLCB5b3UgY2FuIHNoYXJlIHRoZSBzdXBlcmJsb2NrLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgY29yZSBtb3VudGluZyBsb2dpYyBvZiBFUk9GUywgaXQmIzM5O3Mgbm90IHRyaXZpYWwuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIGJyZWVkaW5nIGdyb3VuZCBmb3Igc3VidGxlIG1lbW9yeSBlcnJvcnMuIFNoYXJpbmcgc3VwZXJibG9ja3MgY2FuIGJlIHRyaWNreS4gVGhpcyBuZWVkcyBmdXp6aW5nLCBhICpsb3QqIG9mIGZ1enppbmcsIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLCBvciBhbnkgb3RoZXIgaXNzdWVzIHRoYXQgY291bGQgY3JvcCB1cCBkdXJpbmcgdGhlIG1vdW50IGFuZCByZW1vdW50IHByb2Nlc3Nlcy4gVGhlc2Uga2luZHMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gd2hlcmUgdGhvc2UgYnVncyBsdXJrLgoKUmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gbm90ZSB0aGlzIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19CQUNLRURfQllfRklMRSYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXJvZnNfZmNfcGFyc2VfcGFyYW0mIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyJiMzNDssCiAgICAmIzM0O2Vyb2ZzX2ZjX2dldF90cmVlX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19CQUNLRURfQllfRklMRSYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXJvZnNfZmNfcGFyc2VfcGFyYW0mIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyJiMzNDssCiAgICAmIzM0O2Vyb2ZzX2ZjX2dldF90cmVlX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MjcuNjk1Nzc1Njc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzNTQwODgwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjI3LjY5NTc4MTkxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwNTIyMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJmZTg1MDg2YjlhZWRiMWQ1YjFiOWQ3YTFiNzExY2Y4ODcwMzVhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDAxOjExOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcXG5pbmRleCA3NzRlOGIyMzZkMDk5Li41MTdjNTI2MTYzZTIzIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcXG5AQCAtMTMxLDEyICsxMzEsMTcgQEAgZGV2aWNlPSVzICAgICAgICAgICAgICBTcGVjaWZ5IGEgcGF0aCB0byBhbiBleHRyYSBkZXZpY2UgdG8gYmUgdXNlZCB0b2dldGhlci5cXG4gZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmdcXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIGFzeW5jaHJvbm91cyBJL08gd2lsbCBiZSBlbmFibGVkIGlmIHN1cHBvcnRlZC5cXG4gZG9tYWluX2lkPSVzICAgICAgICAgICBTcGVjaWZ5IGEgdHJ1c3RlZCBkb21haW4gSUQuIEZpbGVzeXN0ZW1zIHNoYXJpbmcgdGhlIHNhbWVcXG4tICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlXFxuLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBzaGFyaW5nIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvIG91dHB1dClcXG4rICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuXFxuKyAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVfc2hhcmUgaXMgZW5hYmxlZCwgYW5kIHNoYXJlIHN1cGVyYmxvY2tzIHdoZW5cXG4rICAgICAgICAgICAgICAgICAgICAgICBzdXBlcmJsb2NrX3NoYXJlIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvXFxuKyAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KVxcbiBmc29mZnNldD0lbGx1ICAgICAgICAgIFNwZWNpZnkgYmxvY2stYWxpZ25lZCBmaWxlc3lzdGVtIG9mZnNldCBmb3IgdGhlIHByaW1hcnkgZGV2aWNlLlxcbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsIGNvbnRlbnQgd2l0aGluIHRoZSBzYW1lIGRvbWFpbiBJRCBjYW4gc2hhcmUgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBjYWNoZS5cXG4rc3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkXFxuKyAgICAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFuIG9uY2Ugd2l0aCB0aGUgc2FtZSBkb21haW5faWQgYW5kIGNvbXBhdGlibGVcXG4rICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLiAgUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXFxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcbiBGaWxlLWJhY2tlZCBtb3VudHNcXG5AQCAtMTU0LDYgKzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXRcXG4gcmVzaWRlcyBvbiBhIGJsb2NrIGRldmljZSwgdXNlIHRoZSB0cmFkaXRpb25hbCBibG9jayBkZXZpY2UgbW91bnQgcGF0aFxcbiBpbnN0ZWFkLlxcbiBcXG4rV2hlbiBkb21haW5faWQgYW5kIHN1cGVyYmxvY2tfc2hhcmUgYXJlIGJvdGggc3BlY2lmaWVkIGFuZCB0aGUgc2FtZVxcbitiYWNraW5nIGZpbGUgKGlkZW50aWZpZWQgYnkgaW5vZGUgYW5kIGZzb2Zmc2V0KSBpcyBtb3VudGVkIG1vcmUgdGhhblxcbitvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWxcXG4rcmV1c2VzIHRoZSBleGlzdGluZyBzdXBlcmJsb2NrIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLlxcbitcXG4rUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXFxuK1xcbiBTeXNmcyBFbnRyaWVzXFxuID09PT09PT09PT09PT1cXG4gXFxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oXFxuaW5kZXggNTdiZDIxODU5YzY1ZC4uODZkYTIxOWY4ZjRlYyAxMDA2NDRcXG4tLS0gYS9mcy9lcm9mcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxcbkBAIC0xNTYsNiArMTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RBWF9ORVZFUlxcdFxcdDB4MDAwMDAwODBcXG4gI2RlZmluZSBFUk9GU19NT1VOVF9ESVJFQ1RfSU9cXHRcXHQweDAwMDAwMTAwXFxuICNkZWZpbmUgRVJPRlNfTU9VTlRfSU5PREVfU0hBUkVcXHRcXHQweDAwMDAwMjAwXFxuKyNkZWZpbmUgRVJPRlNfTU9VTlRfU1VQRVJCTE9DS19TSEFSRVxcdDB4MDAwMDA0MDBcXG4gXFxuICNkZWZpbmUgY2xlYXJfb3B0KG9wdCwgb3B0aW9uKVxcdCgob3B0KS1cXHUwMDNlbW91bnRfb3B0IFxcdTAwMjY9IH5FUk9GU19NT1VOVF8jI29wdGlvbilcXG4gI2RlZmluZSBzZXRfb3B0KG9wdCwgb3B0aW9uKVxcdCgob3B0KS1cXHUwMDNlbW91bnRfb3B0IHw9IEVST0ZTX01PVU5UXyMjb3B0aW9uKVxcbmRpZmYgLS1naXQgYS9mcy9lcm9mcy9zdXBlci5jIGIvZnMvZXJvZnMvc3VwZXIuY1xcbmluZGV4IDhlYWQxNjQ2ZjMyOTQuLjk1YzA5MGY0NzdmMTAgMTAwNjQ0XFxuLS0tIGEvZnMvZXJvZnMvc3VwZXIuY1xcbisrKyBiL2ZzL2Vyb2ZzL3N1cGVyLmNcXG5AQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxcbiBlbnVtIHtcXG4gXFx0T3B0X3VzZXJfeGF0dHIsIE9wdF9hY2wsIE9wdF9jYWNoZV9zdHJhdGVneSwgT3B0X2RheCwgT3B0X2RheF9lbnVtLFxcbiBcXHRPcHRfZGV2aWNlLCBPcHRfZG9tYWluX2lkLCBPcHRfZGlyZWN0aW8sIE9wdF9mc29mZnNldCwgT3B0X2lub2RlX3NoYXJlLFxcbi1cXHRPcHRfc291cmNlLFxcbitcXHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcXG5AQCAtNDE1LDYgKzQxNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZXJvZnNfZnNfcGFyYW1ldGVyc1tdID0ge1xcbiBcXHRmc3BhcmFtX3U2NChcXFwiZnNvZmZzZXRcXFwiLFxcdFxcdFxcdE9wdF9mc29mZnNldCksXFxuIFxcdGZzcGFyYW1fZmxhZyhcXFwiaW5vZGVfc2hhcmVcXFwiLFxcdFxcdE9wdF9pbm9kZV9zaGFyZSksXFxuIFxcdGZzcGFyYW1fZmlsZV9vcl9zdHJpbmcoXFxcInNvdXJjZVxcXCIsXFx0T3B0X3NvdXJjZSksXFxuK1xcdGZzcGFyYW1fZmxhZyhcXFwic3VwZXJibG9ja19zaGFyZVxcXCIsXFx0T3B0X3N1cGVyYmxvY2tfc2hhcmUpLFxcbiBcXHR7fVxcbiB9O1xcbiBcXG5AQCAtNTM2LDcgKzUzNyw4IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbiBcXHRcXHQrK3NiaS1cXHUwMDNlZGV2cy1cXHUwMDNlZXh0cmFfZGV2aWNlcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgT3B0X2RvbWFpbl9pZDpcXG4tXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSkge1xcbitcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKSB7XFxuIFxcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCIlcyBvcHRpb24gbm90IHN1cHBvcnRlZFxcXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2Vuc2l0aXZlKHNiaS1cXHUwMDNlZG9tYWluX2lkKTtcXG5AQCAtNTYwLDYgKzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBPcHRfc3VwZXJibG9ja19zaGFyZTpcXG4rXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpXFxuK1xcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCIlcyBvcHRpb24gbm90IHN1cHBvcnRlZFxcXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE9wdF9zb3VyY2U6XFxuIFxcdFxcdHJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTtcXG4gXFx0fVxcbkBAIC02NDgsNiArNjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdFxcdGVycm9yZmMoZmMsIFxcXCJkb21haW5faWQgaXMgbmVlZGVkIHdoZW4gaW5vZGVfaXNoYXJlIGlzIG9uXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuK1xcdGlmICghc2JpLVxcdTAwM2Vkb21haW5faWQgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSkge1xcbitcXHRcXHRlcnJvcmZjKGZjLCBcXFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIHN1cGVyYmxvY2tfc2hhcmUgaXMgb25cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFx0aWYgKHRlc3Rfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgREFYX0FMV0FZUykgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBJTk9ERV9TSEFSRSkpIHtcXG4gXFx0XFx0ZXJyb3JmYyhmYywgXFxcIkZTREFYIGlzIG5vdCBhbGxvd2VkIHdoZW4gaW5vZGVfaXNoYXJlIGlzIG9uXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC03NzksNiArNzkxLDU1IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbit7XFxuK1xcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XFxuK1xcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpuZXdfc2JpID0gZmMtXFx1MDAzZXNfZnNfaW5mbztcXG4rXFxuK1xcdGlmIChzYi1cXHUwMDNlc19pZmxhZ3MgXFx1MDAyNiBTQl9JX1JFVElSRUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIXNiaS1cXHUwMDNlZGlmMC5maWxlIHx8ICFuZXdfc2JpLVxcdTAwM2VkaWYwLmZpbGUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIXRlc3Rfb3B0KFxcdTAwMjZuZXdfc2JpLVxcdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0aWYgKCFzYmktXFx1MDAzZWRvbWFpbl9pZCB8fCAhbmV3X3NiaS1cXHUwMDNlZG9tYWluX2lkIHx8XFxuK1xcdCAgICBzdHJjbXAoc2JpLVxcdTAwM2Vkb21haW5faWQsIG5ld19zYmktXFx1MDAzZWRvbWFpbl9pZCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gZmlsZV9pbm9kZShzYmktXFx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVxcdTAwM2VkaWYwLmZpbGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBzYmktXFx1MDAzZWRpZjAuZnNvZmYgPT0gbmV3X3NiaS1cXHUwMDNlZGlmMC5mc29mZiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgc2JpLVxcdTAwM2VvcHQubW91bnRfb3B0ID09IG5ld19zYmktXFx1MDAzZW9wdC5tb3VudF9vcHQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIHNiaS1cXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXFx1MDAzZW9wdC5jYWNoZV9zdHJhdGVneTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZV9maWxlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4re1xcbitcXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtXFx1MDAzZXNfZnNfaW5mbztcXG4rXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmICghdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG4rXFx0XFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcXG4rXFxuK1xcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XFxuK1xcdGlmIChJU19FUlIoc2IpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihzYik7XFxuK1xcbitcXHRpZiAoc2ItXFx1MDAzZXNfcm9vdCkge1xcbitcXHRcXHRlcm9mc19pbmZvKHNiLCBcXFwic2hhcmluZyBzdXBlcmJsb2NrIGZvciB0aGUgc2FtZSBiYWNraW5nIGZpbGVcXFwiKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXJyID0gZXJvZnNfZmNfZmlsbF9zdXBlcihzYiwgZmMpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdGRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHNiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHRcXHRzYi1cXHUwMDNlc19mbGFncyB8PSBTQl9BQ1RJVkU7XFxuK1xcdH1cXG4rXFxuK1xcdGZjLVxcdTAwM2Vyb290ID0gZGdldChzYi1cXHUwMDNlc19yb290KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZXJvZnNfZmNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiB7XFxuIFxcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cXHUwMDNlc19mc19pbmZvO1xcbkBAIC03OTQsNyArODU1LDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCJzb3VyY2UgaXMgdW5zdXBwb3J0ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcXG4rXFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxcbkBAIC04MTIsNyArODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcbiBcXHRcXHRpZiAoU19JU1JFRyhmaWxlX2lub2RlKHNiaS1cXHUwMDNlZGlmMC5maWxlKS1cXHUwMDNlaV9tb2RlKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgc2JpLVxcdTAwM2VkaWYwLmZpbGUtXFx1MDAzZWZfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZXJlYWRfZm9saW8pXFxuLVxcdFxcdFxcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XFxuK1xcdFxcdFxcdHJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTgyNSw2ICs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFxuIFxcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XFxuIFxcbitcXHRpZiAoc2JpLVxcdTAwM2Vkb21haW5faWQgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuIFxcdGlmIChuZXdfc2JpLVxcdTAwM2Vkb21haW5faWQpXFxuIFxcdFxcdGVyb2ZzX2luZm8oc2IsIFxcXCJpZ25vcmluZyByZWNvbmZpZ3VyYXRpb24gZm9yIGRvbWFpbl9pZC5cXFwiKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjI3Ljk5Njk3NDc5NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMDUyODc2Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19CQUNLRURfQllfRklMRVwiLFxuICAgIFwiRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVyb2ZzX2ZjX3BhcnNlX3BhcmFtXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZVwiLFxuICAgIFwiZXJvZnNfZmNfcmVjb25maWd1cmVcIixcbiAgICBcImVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlclwiLFxuICAgIFwiZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbW91bnQgb3B0aW9uIGBzdXBlcmJsb2NrX3NoYXJlYCBmb3IgdGhlIEVST0ZTIGZpbGVzeXN0ZW0sIHdoaWNoIGFsbG93cyBzaGFyaW5nIHRoZSBzdXBlcmJsb2NrIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBgZG9tYWluX2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIEVST0ZTIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbmluZGV4IDc3NGU4YjIzNmQwOTkuLjUxN2M1MjYxNjNlMjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Vyb2ZzLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbkBAIC0xMzEsMTIgKzEzMSwxNyBAQCBkZXZpY2U9JXMgICAgICAgICAgICAgIFNwZWNpZnkgYSBwYXRoIHRvIGFuIGV4dHJhIGRldmljZSB0byBiZSB1c2VkIHRvZ2V0aGVyLlxuIGRpcmVjdGlvICAgICAgICAgICAgICAgKEZvciBmaWxlLWJhY2tlZCBtb3VudHMpIFVzZSBkaXJlY3QgSS9PIHRvIGFjY2VzcyBiYWNraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIGFzeW5jaHJvbm91cyBJL08gd2lsbCBiZSBlbmFibGVkIGlmIHN1cHBvcnRlZC5cbiBkb21haW5faWQ9JXMgICAgICAgICAgIFNwZWNpZnkgYSB0cnVzdGVkIGRvbWFpbiBJRC4gRmlsZXN5c3RlbXMgc2hhcmluZyB0aGUgc2FtZVxuLSAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluIElEIGNhbiBzaGFyZSBwYWdlIGNhY2hlIGFjcm9zcyBtb3VudHMgd2hlbiBpbm9kZVxuLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBzaGFyaW5nIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvIG91dHB1dClcbisgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBJRCBjYW4gc2hhcmUgcGFnZSBjYWNoZSBhY3Jvc3MgbW91bnRzIHdoZW5cbisgICAgICAgICAgICAgICAgICAgICAgIGlub2RlX3NoYXJlIGlzIGVuYWJsZWQsIGFuZCBzaGFyZSBzdXBlcmJsb2NrcyB3aGVuXG4rICAgICAgICAgICAgICAgICAgICAgICBzdXBlcmJsb2NrX3NoYXJlIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvXG4rICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpXG4gZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS5cbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwgY29udGVudCB3aXRoaW4gdGhlIHNhbWUgZG9tYWluIElEIGNhbiBzaGFyZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuXG4rc3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkXG4rICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZVxuKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG4gRmlsZS1iYWNrZWQgbW91bnRzXG5AQCAtMTU0LDYgKzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXRcbiByZXNpZGVzIG9uIGEgYmxvY2sgZGV2aWNlLCB1c2UgdGhlIHRyYWRpdGlvbmFsIGJsb2NrIGRldmljZSBtb3VudCBwYXRoXG4gaW5zdGVhZC5cbiBcbitXaGVuIGRvbWFpbl9pZCBhbmQgc3VwZXJibG9ja19zaGFyZSBhcmUgYm90aCBzcGVjaWZpZWQgYW5kIHRoZSBzYW1lXG4rYmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW5cbitvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWxcbityZXVzZXMgdGhlIGV4aXN0aW5nIHN1cGVyYmxvY2sgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuXG4rXG4rUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXG4rXG4gU3lzZnMgRW50cmllc1xuID09PT09PT09PT09PT1cbiBcbmRpZmYgLS1naXQgYS9mcy9lcm9mcy9pbnRlcm5hbC5oIGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxuaW5kZXggNTdiZDIxODU5YzY1ZC4uODZkYTIxOWY4ZjRlYyAxMDA2NDRcbi0tLSBhL2ZzL2Vyb2ZzL2ludGVybmFsLmhcbisrKyBiL2ZzL2Vyb2ZzL2ludGVybmFsLmhcbkBAIC0xNTYsNiArMTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xuICNkZWZpbmUgRVJPRlNfTU9VTlRfREFYX05FVkVSXHRcdDB4MDAwMDAwODBcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RJUkVDVF9JT1x0XHQweDAwMDAwMTAwXG4gI2RlZmluZSBFUk9GU19NT1VOVF9JTk9ERV9TSEFSRVx0XHQweDAwMDAwMjAwXG4rI2RlZmluZSBFUk9GU19NT1VOVF9TVVBFUkJMT0NLX1NIQVJFXHQweDAwMDAwNDAwXG4gXG4gI2RlZmluZSBjbGVhcl9vcHQob3B0LCBvcHRpb24pXHQoKG9wdCktXHUwMDNlbW91bnRfb3B0IFx1MDAyNj0gfkVST0ZTX01PVU5UXyMjb3B0aW9uKVxuICNkZWZpbmUgc2V0X29wdChvcHQsIG9wdGlvbilcdCgob3B0KS1cdTAwM2Vtb3VudF9vcHQgfD0gRVJPRlNfTU9VTlRfIyNvcHRpb24pXG5kaWZmIC0tZ2l0IGEvZnMvZXJvZnMvc3VwZXIuYyBiL2ZzL2Vyb2ZzL3N1cGVyLmNcbmluZGV4IDhlYWQxNjQ2ZjMyOTQuLjk1YzA5MGY0NzdmMTAgMTAwNjQ0XG4tLS0gYS9mcy9lcm9mcy9zdXBlci5jXG4rKysgYi9mcy9lcm9mcy9zdXBlci5jXG5AQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxuIGVudW0ge1xuIFx0T3B0X3VzZXJfeGF0dHIsIE9wdF9hY2wsIE9wdF9jYWNoZV9zdHJhdGVneSwgT3B0X2RheCwgT3B0X2RheF9lbnVtLFxuIFx0T3B0X2RldmljZSwgT3B0X2RvbWFpbl9pZCwgT3B0X2RpcmVjdGlvLCBPcHRfZnNvZmZzZXQsIE9wdF9pbm9kZV9zaGFyZSxcbi1cdE9wdF9zb3VyY2UsXG4rXHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcbkBAIC00MTUsNiArNDE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7XG4gXHRmc3BhcmFtX3U2NChcImZzb2Zmc2V0XCIsXHRcdFx0T3B0X2Zzb2Zmc2V0KSxcbiBcdGZzcGFyYW1fZmxhZyhcImlub2RlX3NoYXJlXCIsXHRcdE9wdF9pbm9kZV9zaGFyZSksXG4gXHRmc3BhcmFtX2ZpbGVfb3Jfc3RyaW5nKFwic291cmNlXCIsXHRPcHRfc291cmNlKSxcbitcdGZzcGFyYW1fZmxhZyhcInN1cGVyYmxvY2tfc2hhcmVcIixcdE9wdF9zdXBlcmJsb2NrX3NoYXJlKSxcbiBcdHt9XG4gfTtcbiBcbkBAIC01MzYsNyArNTM3LDggQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXG4gXHRcdCsrc2JpLVx1MDAzZWRldnMtXHUwMDNlZXh0cmFfZGV2aWNlcztcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE9wdF9kb21haW5faWQ6XG4tXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkpIHtcbitcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpIHtcbiBcdFx0XHRlcnJvcmZjKGZjLCBcIiVzIG9wdGlvbiBub3Qgc3VwcG9ydGVkXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9zZW5zaXRpdmUoc2JpLVx1MDAzZWRvbWFpbl9pZCk7XG5AQCAtNTYwLDYgKzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgT3B0X3N1cGVyYmxvY2tfc2hhcmU6XG4rXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKVxuK1x0XHRcdGVycm9yZmMoZmMsIFwiJXMgb3B0aW9uIG5vdCBzdXBwb3J0ZWRcIiwgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpO1xuK1x0XHRlbHNlXG4rXHRcdFx0c2V0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIE9wdF9zb3VyY2U6XG4gXHRcdHJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTtcbiBcdH1cbkBAIC02NDgsNiArNjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGVycm9yZmMoZmMsIFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4rXHRpZiAoIXNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7XG4rXHRcdGVycm9yZmMoZmMsIFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIHN1cGVyYmxvY2tfc2hhcmUgaXMgb25cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0aWYgKHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIERBWF9BTFdBWVMpIFx1MDAyNlx1MDAyNiB0ZXN0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBJTk9ERV9TSEFSRSkpIHtcbiBcdFx0ZXJyb3JmYyhmYywgXCJGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtNzc5LDYgKzc5MSw1NSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4rXHRcdFx0XHQgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuK3tcbitcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XG4rXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqbmV3X3NiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbitcbitcdGlmIChzYi1cdTAwM2VzX2lmbGFncyBcdTAwMjYgU0JfSV9SRVRJUkVEKVxuK1x0XHRyZXR1cm4gMDtcbitcdGlmICghc2JpLVx1MDAzZWRpZjAuZmlsZSB8fCAhbmV3X3NiaS1cdTAwM2VkaWYwLmZpbGUpXG4rXHRcdHJldHVybiAwO1xuK1x0aWYgKCF0ZXN0X29wdChcdTAwMjZuZXdfc2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiAwO1xuK1x0aWYgKCFzYmktXHUwMDNlZG9tYWluX2lkIHx8ICFuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCB8fFxuK1x0ICAgIHN0cmNtcChzYmktXHUwMDNlZG9tYWluX2lkLCBuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCkpXG4rXHRcdHJldHVybiAwO1xuK1x0cmV0dXJuIGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgc2JpLVx1MDAzZWRpZjAuZnNvZmYgPT0gbmV3X3NiaS1cdTAwM2VkaWYwLmZzb2ZmIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIHNiaS1cdTAwM2VvcHQubW91bnRfb3B0ID09IG5ld19zYmktXHUwMDNlb3B0Lm1vdW50X29wdCBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBzYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5O1xuK31cbitcbitzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuK3tcbitcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG4rXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XG4rXG4rXHRzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpO1xuK1x0aWYgKElTX0VSUihzYikpXG4rXHRcdHJldHVybiBQVFJfRVJSKHNiKTtcbitcbitcdGlmIChzYi1cdTAwM2VzX3Jvb3QpIHtcbitcdFx0ZXJvZnNfaW5mbyhzYiwgXCJzaGFyaW5nIHN1cGVyYmxvY2sgZm9yIHRoZSBzYW1lIGJhY2tpbmcgZmlsZVwiKTtcbitcdH0gZWxzZSB7XG4rXHRcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHNiKTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHRcdHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfQUNUSVZFO1xuK1x0fVxuK1xuK1x0ZmMtXHUwMDNlcm9vdCA9IGRnZXQoc2ItXHUwMDNlc19yb290KTtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiB7XG4gXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtXHUwMDNlc19mc19pbmZvO1xuQEAgLTc5NCw3ICs4NTUsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0XHRlcnJvcmZjKGZjLCBcInNvdXJjZSBpcyB1bnN1cHBvcnRlZFwiKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuK1x0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG4gXHR9XG4gXG4gXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuQEAgLTgxMiw3ICs4NzMsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdFx0aWYgKFNfSVNSRUcoZmlsZV9pbm9kZShzYmktXHUwMDNlZGlmMC5maWxlKS1cdTAwM2VpX21vZGUpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgc2JpLVx1MDAzZWRpZjAuZmlsZS1cdTAwM2VmX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlcmVhZF9mb2xpbylcbi1cdFx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuK1x0XHRcdHJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTtcbiBcdH1cbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTgyNSw2ICs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XG4gXG4rXHRpZiAoc2JpLVx1MDAzZWRvbWFpbl9pZCBcdTAwMjZcdTAwMjYgdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4gXHRpZiAobmV3X3NiaS1cdTAwM2Vkb21haW5faWQpXG4gXHRcdGVyb2ZzX2luZm8oc2IsIFwiaWdub3JpbmcgcmVjb25maWd1cmF0aW9uIGZvciBkb21haW5faWQuXCIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MjcuOTk2OTc2MDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA2Njc0MTg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFUk9GUyBTdXBlcmJsb2NrIFNoYXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaW50cm9kdWNpbmcgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBtb3VudCBvcHRpb24gZm9yIHRoZSBgZXJvZnNgIGZpbGVzeXN0ZW0uIFRoZSBpZGVhIGhlcmUgaXMgdG8gYWxsb3cgdGhlIHN1cGVyYmxvY2sgdG8gYmUgc2hhcmVkIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhleSBzaGFyZSB0aGUgc2FtZSBgZG9tYWluX2lkYCBhbmQgY29tcGF0aWJsZSBvcHRpb25zLiBUaGF0J3MgYSByZWFzb25hYmxlIG9wdGltaXphdGlvbiwgZXNwZWNpYWxseSBpbiBzY2VuYXJpb3Mgd2l0aCBtdWx0aXBsZSBtb3VudHMgb2YgdGhlIHNhbWUgaW1hZ2UuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGNoYW5nZXM6XG5cbiogICAqKkRvY3VtZW50YXRpb246KiogVXBkYXRlcyB0byBgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RgIGFyZSBleHBlY3RlZC4gQWx3YXlzIGEgZ29vZCBzaWduIG9mIHRob3JvdWdobmVzcy5cbiogICAqKkhlYWRlcjoqKiBBZGRpbmcgYEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkVgIHRvIGBmcy9lcm9mcy9pbnRlcm5hbC5oYCBpcyBzdHJhaWdodGZvcndhcmQgLSB0aGUgbWFjcm8ncyBuZWNlc3NhcnkuXG4qICAgKipDb3JlIExvZ2ljOioqIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGZzL2Vyb2ZzL3N1cGVyLmNgLiBXZSdyZSBhZGRpbmcgYE9wdF9zdXBlcmJsb2NrX3NoYXJlYCB0byBgZXJvZnNfZnNfcGFyYW1ldGVyc2AsIHRoYXQncyB0aGUgcGFyc2luZyBzdHJ1Y3R1cmUuIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgbm93IGhhbmRsZXMgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBvcHRpb24gaXRzZWxmLiBJbiBgZXJvZnNfZmNfZmlsbF9zdXBlcmAsIHRoZXJlJ3MgYSB2YWxpZGF0aW9uIGNoZWNrIHRoYXQgdGhlIGBkb21haW5faWRgIGlzIHByZXNlbnQgd2hlbiB0aGUgc2hhcmluZyBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJ3JlIGFsc28gZ2V0dGluZyBmdW5jdGlvbnMgZm9yIHRlc3RpbmcgaWYgd2UgY2FuIHNoYXJlIGEgc3VwZXJibG9jayB1c2luZyBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgYW5kIGdyYWJiaW5nIGVpdGhlciB0aGUgc2hhcmVkIG9yIGEgbmV3IG9uZSwgdmlhIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCB1c2luZyBgc2dldF9mY2AuIGBlcm9mc19mY19nZXRfdHJlZWAgbm93IHVzZXMgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgIHJhdGhlciB0aGFuIGBnZXRfdHJlZV9ub2RldmAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgc3RydWN0dXJhbCBjaGFuZ2UuIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAgbm93IHJldHVybnMgYC1FQlVTWWAgd2hlbiBzdXBlcmJsb2NrIHNoYXJpbmcgaXMgYWN0aXZlLCB3aGljaCBtYWtlcyBzZW5zZSAtIHlvdSBzaG91bGRuJ3QgYmUgcmVjb25maWd1cmluZyBzb21ldGhpbmcgdGhhdCBpcyBzaGFyZWQuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIGBlcm9mc2AuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuIEl0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgdG8gaWRlbnRpZnkgYW55IGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFyaXNlIHdpdGggbXVsdGlwbGUgbW91bnRzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgZmVhdHVyZS4gV2Uga25vdyBpdCBjaGVja3MgYElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKWAsIHdoaWNoIGltcGxpZXMgdGhhdCBgQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFYCBpcyBtYW5kYXRvcnkuIE9idmlvdXNseSwgYENPTkZJR19FUk9GU19GU2AgaXMgYWxzbyByZXF1aXJlZCBmb3IgdGhlIGBlcm9mc2AgZmlsZXN5c3RlbSBpdHNlbGYuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYGZzL2Vyb2ZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBXZSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTozNS4wNjM3MjA0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxNDMxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctOTctXFxuZnMvZXJvZnMvS2NvbmZpZzo5ODpjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcXG5mcy9lcm9mcy9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MzUuMTA5ODY4NTA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcyNjI1NjIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBFUk9GUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgYXNwZWN0IG9mIEVST0ZTIGlzIGNvbmZpZ3VyZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBFUk9GUyBmaWxlc3lzdGVtIGRpcmVjdG9yeS4gTGV0J3Mgc3RhcnQgd2l0aCBgZnMvZXJvZnMvS2NvbmZpZ2AgYW5kLCBnaXZlbiBteSBnZW5lcmFsIGZhbWlsaWFyaXR5IHdpdGggdGhlc2UgZmlsZXMsIEknbGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA5OC4gVGhhdCBmZWVscyBsaWtlIGEgcmVhc29uYWJsZSBwb2ludCB0byBiZWdpbjsgdGhhdCBsaW5lIGxpa2VseSBjb3ZlcnMgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIG9wdGlvbiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5LiBUaW1lIHRvIGdldCBteSBleWVzIG9uIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjM3LjgzNjEyNzA3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0ICBTZWN1cml0eSBsYWJlbHMgcHJvdmlkZSBhbiBhY2Nlc3MgY29udHJvbCBmYWNpbGl0eSB0byBzdXBwb3J0IExpbnV4XFxuICA5MTpcXHRcXHQgIFNlY3VyaXR5IE1vZGVscyAoTFNNcykgYWNjZXB0ZWQgYnkgQXBwQXJtb3IsIFNFTGludXgsIFNtYWNrIGFuZCBUT01PWU9cXG4gIDkyOlxcdFxcdCAgTGludXguIFRoaXMgb3B0aW9uIGVuYWJsZXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsZXIgZm9yIGZpbGVcXG4gIDkzOlxcdFxcdCAgc2VjdXJpdHkgbGFiZWxzIGluIHRoZSBlcm9mcyBmaWxlc3lzdGVtLCBzbyB0aGF0IGl0IHJlcXVpcmVzIGVuYWJsaW5nXFxuICA5NDpcXHRcXHQgIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBpbiBhZHZhbmNlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIElmIHlvdSBhcmUgbm90IHVzaW5nIGEgc2VjdXJpdHkgbW9kdWxlLCBzYXkgTi5cXG4gIDk3OlxcdFxcbiAgOTg6XFx0Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXFxuICA5OTpcXHRcXHRib29sIFxcXCJGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuIDEwMDpcXHRcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTXFxuIDEwMTpcXHRcXHRkZWZhdWx0IHlcXG4gMTAyOlxcdFxcdGhlbHBcXG4gMTAzOlxcdFxcdCAgVGhpcyBhbGxvd3MgRVJPRlMgdG8gdXNlIGZpbGVzeXN0ZW0gaW1hZ2UgZmlsZXMgZGlyZWN0bHksIHdpdGhvdXRcXG4gMTA0OlxcdFxcdCAgdGhlIGludGVyY2Vzc2lvbiBvZiBsb29wYmFjayBibG9jayBkZXZpY2VzIG9yIGxpa2V3aXNlLiBJdCBpc1xcbiAxMDU6XFx0XFx0ICBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjb250YWluZXIgaW1hZ2VzIHdpdGggbnVtZXJvdXMgYmxvYnMgYW5kXFxuIDEwNjpcXHRcXHQgIG90aGVyIHNhbmRib3hlcywgd2hlcmUgbG9vcCBkZXZpY2VzIGJlaGF2ZSBpbnRyaWNhdGVseS4gIEl0IGNhbiBhbHNvXFxuIDEwNzpcXHRcXHQgIGJlIHVzZWQgdG8gc2ltcGxpZnkgZXJyb3ItcHJvbmUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiB1bm5lY2Vzc2FyeVxcbiAxMDg6XFx0XFx0ICB2aXJ0dWFsIGJsb2NrIGRldmljZXMuXFxuIDEwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MzcuODM2MjAwMTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1OTQyMDY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRVJPRlMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIEFQSSBlbnRyeSBwb2ludHMgYmFzZWQgb24gdGhlIGtlcm5lbCBpbnN0cnVjdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29tcGxpYW50IHdpdGguXG5cbkkndmUgaWRlbnRpZmllZCBzZXZlcmFsIGtleSBzeW1ib2xzLiBJJ3ZlIGdvdCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgd2hpY2ggaXMgc3RhdGljIGJ1dCBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgc2dldF9mY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBleHBvcnRlZCBpZiBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgYnV0IHRoZW4gSSByZWNhbGwgaXQncyBzdGF0aWMuIFN0aWxsLCBgc2dldF9mY2AgY2FsbHMgaXQsIHNvIEkgc2hvdWxkIHNlZSBpZiBpdHMgaW5saW5lZCAtIHdoaWNoIGNhbid0IGJlIGFzIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci5cblxuVGhlbiwgdGhlcmUncyBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBJdCdzIGNhbGxlZCBmcm9tIGBlcm9mc19mY19nZXRfdHJlZWAsIHdoaWNoIGlzIGFjdHVhbGx5IHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrIGZvciB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIE1ha2VzIHNlbnNlLCBidXQgc3RpbGwgc3RhdGljLiBUaGVuIEkgaGF2ZSBgZXJvZnNfZmNfZ2V0X3RyZWVgIGl0c2VsZiwgd2hpY2gsIGFnYWluLCBpcyBzdGF0aWMsIGJ1dCBpdCAqaXMqIHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrLiBTaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgYW5kIGBlcm9mc19mY19maWxsX3N1cGVyYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAuIFN0YXRpYywgc3RhdGljLCBzdGF0aWMhXG5cbk9rYXksIHNvIGFsbCBvZiB0aGVzZSBpbml0aWFsIHN5bWJvbHMgYXJlIHN0YXRpYy4gVGhpcyBtYWtlcyBtZSBjdXJpb3VzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGZzL2Vyb2ZzL3N1cGVyLmNgIG5vdyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlLiBJIHdhbnQgdG8gc2VlIGlmIGFueSBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIHdyYXAgb3IgcmVsYXRlIHRvIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0J2xsIGJlIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyODIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTo0My45OTU2MjM0NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NTM5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXJvZnNfZmNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvc3VwZXIuYz00MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTQyMS1cXG5mcy9lcm9mcy9zdXBlci5jOjQyMjpzdGF0aWMgYm9vbCBlcm9mc19mY19zZXRfZGF4X21vZGUoc3RydWN0IGZzX2NvbnRleHQgKmZjLCB1bnNpZ25lZCBpbnQgbW9kZSlcXG5mcy9lcm9mcy9zdXBlci5jLTQyMy17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTQ0Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjQ0MzpzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuZnMvZXJvZnMvc3VwZXIuYy00NDQtXFx0XFx0XFx0XFx0IHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy00NzYtXFxuZnMvZXJvZnMvc3VwZXIuYzo0Nzc6c3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuZnMvZXJvZnMvc3VwZXIuYy00NzgtXFx0XFx0XFx0XFx0c3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTUxMi1cXHRjYXNlIE9wdF9kYXg6XFxuZnMvZXJvZnMvc3VwZXIuYzo1MTM6XFx0XFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIEVST0ZTX01PVU5UX0RBWF9BTFdBWVMpKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNTE0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy01MTYtXFx0Y2FzZSBPcHRfZGF4X2VudW06XFxuZnMvZXJvZnMvc3VwZXIuYzo1MTc6XFx0XFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIHJlc3VsdC51aW50XzMyKSlcXG5mcy9lcm9mcy9zdXBlci5jLTUxOC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNTcxLVxcdGNhc2UgT3B0X3NvdXJjZTpcXG5mcy9lcm9mcy9zdXBlci5jOjU3MjpcXHRcXHRyZXR1cm4gZXJvZnNfZmNfcGFyc2Vfc291cmNlKGZjLCBwYXJhbSk7XFxuZnMvZXJvZnMvc3VwZXIuYy01NzMtXFx0fVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYz02Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBlcm9mc19leHBvcnRfb3BzID0ge1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy02NDMtXFxuZnMvZXJvZnMvc3VwZXIuYzo2NDQ6c3RhdGljIGludCBlcm9mc19mY19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9lcm9mcy9zdXBlci5jLTY0NS17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTc5My1cXG5mcy9lcm9mcy9zdXBlci5jOjc5NDpzdGF0aWMgaW50IGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2Vyb2ZzL3N1cGVyLmMtNzk1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTgxNC1cXG5mcy9lcm9mcy9zdXBlci5jOjgxNTpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODE2LXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODIxLVxcdGlmICghdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG5mcy9lcm9mcy9zdXBlci5jOjgyMjpcXHRcXHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODIzLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6ODI0OlxcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XFxuZnMvZXJvZnMvc3VwZXIuYy04MjUtXFx0aWYgKElTX0VSUihzYikpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTgzMC1cXHR9IGVsc2Uge1xcbmZzL2Vyb2ZzL3N1cGVyLmM6ODMxOlxcdFxcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcXG5mcy9lcm9mcy9zdXBlci5jLTgzMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg0Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjg0MzpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9lcm9mcy9zdXBlci5jLTg0NC17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg1Ny1cXHRcXHR9XFxuZnMvZXJvZnMvc3VwZXIuYzo4NTg6XFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODU5LVxcdH1cXG5mcy9lcm9mcy9zdXBlci5jLTg2MC1cXG5mcy9lcm9mcy9zdXBlci5jOjg2MTpcXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxcbmZzL2Vyb2ZzL3N1cGVyLmMtODYyLVxcdFxcdElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSA/XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg3NS1cXHRcXHQgICAgc2JpLVxcdTAwM2VkaWYwLmZpbGUtXFx1MDAzZWZfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZXJlYWRfZm9saW8pXFxuZnMvZXJvZnMvc3VwZXIuYzo4NzY6XFx0XFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODc3LVxcdH1cXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODgwLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6ODgxOnN0YXRpYyBpbnQgZXJvZnNfZmNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODgyLXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9OTMzPXN0YXRpYyB2b2lkIGVyb2ZzX3NiX2ZyZWUoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQyLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6OTQzOnN0YXRpYyB2b2lkIGVyb2ZzX2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQ0LXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9OTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGVyb2ZzX2NvbnRleHRfb3BzID0ge1xcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU3OlxcdC5wYXJzZV9wYXJhbVxcdD0gZXJvZnNfZmNfcGFyc2VfcGFyYW0sXFxuZnMvZXJvZnMvc3VwZXIuYzo5NTg6XFx0LmdldF90cmVlICAgICAgID0gZXJvZnNfZmNfZ2V0X3RyZWUsXFxuZnMvZXJvZnMvc3VwZXIuYzo5NTk6XFx0LnJlY29uZmlndXJlICAgID0gZXJvZnNfZmNfcmVjb25maWd1cmUsXFxuZnMvZXJvZnMvc3VwZXIuYzo5NjA6XFx0LmZyZWVcXHRcXHQ9IGVyb2ZzX2ZjX2ZyZWUsXFxuZnMvZXJvZnMvc3VwZXIuYy05NjEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6NDQuMDM5MjgxNjM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzNzQ2OTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gQ29udGV4dCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgRVJPRlMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGFuZCwgYXMgZXhwZWN0ZWQsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBhbGwgKnN0YXRpYyouIEJ1dCB0aGF0J3Mgbm90IHRoZSB3aG9sZSBzdG9yeS4gVGhleSdyZSBzdGlsbCB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgZXJvZnNfZmNfcGFyc2VfcGFyYW1gLCBgZXJvZnNfZmNfZ2V0X3RyZWVgLCBhbmQgYGVyb2ZzX2ZjX3JlY29uZmlndXJlYCBzdGFuZGluZyBvdXQgYXMgdGhlIGtleSBwbGF5ZXJzIGZvciBtb3VudCBhbmQgcmVtb3VudCBvcGVyYXRpb25zLiBUaGVuLCBvZiBjb3Vyc2UsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgIGFuZCBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAgYXJlIHJpZ2h0IHRoZXJlIGF0IHRoZSBoZWFydCBvZiB0aGlzIHBhdGNoLCBjcnVjaWFsIGZvciB0aGUgZmlsZS1yZWxhdGVkIG9wZXJhdGlvbnMuIFRoZSBzdGF0aWMgbmF0dXJlIG1lYW5zIHRoZXkncmUgbGlrZWx5IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IGV4dGVybmFsIHVzZSBhbmQgbWF5IGJlIG9wdGltaXplZCBtb3JlIGFnZ3Jlc3NpdmVseS4gRXZlbiB0aG91Z2ggdGhleSdyZSAqc3RhdGljKiwgSSdtIG5vdGluZyB0aGV5J3JlICpub3QqIGlubGluZWQsIGVpdGhlciBiZWNhdXNlIHRoZXkncmUgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBmdW5jdGlvbiBwb2ludGVycyBvciB0aGV5J3JlIGp1c3QgdG9vIGRhcm4gYmlnIHRvIG1ha2UgaW5saW5pbmcgd29ydGh3aGlsZS5cblxuU28sIGxldCdzIGtlZXAgZGlnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG5vbi1zdGF0aWMuIEFoLCBoZXJlIHdlIGdvLCBgZXJvZnNfaW5pdF9mc19jb250ZXh0YCBpcyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgd2FzIGxvb2tpbmcgZm9yLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzZXR0aW5nIHVwIGBlcm9mc19jb250ZXh0X29wc2AuIFRoYXQncyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzdGF0aWMgZnVuY3Rpb25zIEkndmUgYWxyZWFkeSBpZGVudGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjQ4LjY3Njc1MzczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyMzk0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXJvZnNfaW5pdF9mc19jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvc3VwZXIuYz05NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZXJvZnNfY29udGV4dF9vcHMgPSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTk2Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjk2MzpzdGF0aWMgaW50IGVyb2ZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXJvZnMvc3VwZXIuYy05NjQte1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYz0xMDIzPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBlcm9mc19mc190eXBlID0ge1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy0xMDI1LVxcdC5uYW1lICAgICAgICAgICA9IFxcXCJlcm9mc1xcXCIsXFxuZnMvZXJvZnMvc3VwZXIuYzoxMDI2OlxcdC5pbml0X2ZzX2NvbnRleHQgPSBlcm9mc19pbml0X2ZzX2NvbnRleHQsXFxuZnMvZXJvZnMvc3VwZXIuYy0xMDI3LVxcdC5raWxsX3NiICAgICAgICA9IGVyb2ZzX2tpbGxfc2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjQ4LjcxODk5NzU0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI1MTEwMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBFUk9GUyBGaWxlc3lzdGVtIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEVST0ZTIGNvZGUgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBlcm9mc19pbml0X2ZzX2NvbnRleHRgIGlzIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IHdoYXQgKmlzKiBhY3R1YWxseSBleHBvcnRlZCB0byB0aGUgcmVzdCBvZiB0aGUga2VybmVsLiBBaCwgcmlnaHQsIGBlcm9mc19mc190eXBlYCBpcyBzdGF0aWMgYnV0IHJlZ2lzdGVyZWQgdGhyb3VnaCBgaW5pdF9lcm9mc19mc2AuIFNvLCBlc3NlbnRpYWxseSBtb3N0IG9mIHRoZSBzdHVmZiBpbiBgc3VwZXIuY2AgaXMgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gU2luY2UgdGhleSdyZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBub3QgaW5saW5lZCwgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIHRoZW0gYXMgdGhlIGtleSBlbnRyeSBwb2ludHM7IHRoZXknbGwgYmUgdGhlIG9uZXMgYXZhaWxhYmxlLlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIEkgc2VlIGBDT05GSUdfRVJPRlNfRlNgLCB0aGUgb2J2aW91cyBvbmUuIFRoZW4gdGhlcmUncyBgQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFYCwgYW5kIGZpbmFsbHkgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBsYXN0IG9uZSBtZW50aW9uZWQgaW4gYSBwYXRjaCB3aXRoIHRoZSBjb25kaXRpb246IGAhSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkgXHUwMDI2XHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSlgLiBBbHJpZ2h0LCBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMzMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTo1My4xNDQxMTExNTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTg2MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvS2NvbmZpZz0xOTM9Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRF9ISVBSSVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjUzLjE4ODMwMjAyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzgxODM0NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVST0ZTIEZpbGVzeXN0ZW0gU3VwZXJibG9jayBTaGFyaW5nOiBBIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAganVtcHMgb3V0IGF0IG1lIGFzIGEga2V5IGZhY3Rvci4gSXQncyBkZWZpbml0ZWx5IHJlbGV2YW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHF1aWNrbHkuIFdlIGhhdmU6IGBFUk9GU19GU2AsIG9mIGNvdXJzZS4gVGhlbiBgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgLCBhbmQgbm93IHRoaXMgbmV3IG9uZSwgYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLlxuXG5Ob3csIGZvciBzcGVjaWZpYyBzeW1ib2xzIHRvIGFuYWx5emUuIEkgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBlcm9mc19mY19wYXJzZV9wYXJhbWAsIGBlcm9mc19mY19nZXRfdHJlZWAsIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgLCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSBsaWtlIHRoZSBjcml0aWNhbCBwaWVjZXMgd2hlcmUgdGhpcyBuZXcgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiwgdGhlIG9uZSB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcsIHdvdWxkIGNvbWUgaW50byBwbGF5LlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG5ldyBtb3VudCBvcHRpb24sIGBzdXBlcmJsb2NrX3NoYXJlYCwgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLiBXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCBpZiB5b3UgbW91bnQgdGhlIHNhbWUgYmFja2luZyBmaWxlIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAsIHlvdSBjYW4gc2hhcmUgdGhlIHN1cGVyYmxvY2suIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHRoZSBjb3JlIG1vdW50aW5nIGxvZ2ljIG9mIEVST0ZTLCBpdCdzIG5vdCB0cml2aWFsLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgY291bGQgYmUgYSBicmVlZGluZyBncm91bmQgZm9yIHN1YnRsZSBtZW1vcnkgZXJyb3JzLiBTaGFyaW5nIHN1cGVyYmxvY2tzIGNhbiBiZSB0cmlja3kuIFRoaXMgbmVlZHMgZnV6emluZywgYSAqbG90KiBvZiBmdXp6aW5nLCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucywgb3IgYW55IG90aGVyIGlzc3VlcyB0aGF0IGNvdWxkIGNyb3AgdXAgZHVyaW5nIHRoZSBtb3VudCBhbmQgcmVtb3VudCBwcm9jZXNzZXMuIFRoZXNlIGtpbmRzIG9mIGNoYW5nZXMgYXJlIG9mdGVuIHdoZXJlIHRob3NlIGJ1Z3MgbHVyay5cblxuUmlnaHQsIEknbSBnb2luZyB0byBub3RlIHRoaXMgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk3MywiT3V0cHV0VG9rZW5zIjoyMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6NTguOTcwMTQwMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTcwMjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 01:09:40 +0000 UTC FinishedAt: 2026-08-02 01:12:01 +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": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EROFS_FS", "EROFS_FS_BACKED_BY_FILE", "EROFS_FS_PAGE_CACHE_SHARE" ], "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": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EROFS_FS", "EROFS_FS_BACKED_BY_FILE", "EROFS_FS_PAGE_CACHE_SHARE" ], "series_id": "dec700c7-6019-4586-8ec3-86d31b6d09b5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "erofs_fc_parse_param", "erofs_fc_get_tree", "erofs_fc_reconfigure", "erofs_fc_test_file_super", "erofs_fc_get_tree_file" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcm9mc19mY19wYXJzZV9wYXJhbSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXImIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG1vdW50IG9wdGlvbiBgc3VwZXJibG9ja19zaGFyZWAgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLCB3aGljaCBhbGxvd3Mgc2hhcmluZyB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBtb3VudCBsb2dpYyBvZiBFUk9GUyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Vyb2ZzLnJzdCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XG5pbmRleCA3NzRlOGIyMzZkMDk5Li41MTdjNTI2MTYzZTIzIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XG5AQCAtMTMxLDEyICYjNDM7MTMxLDE3IEBAIGRldmljZT0lcyAgICAgICAgICAgICAgU3BlY2lmeSBhIHBhdGggdG8gYW4gZXh0cmEgZGV2aWNlIHRvIGJlIHVzZWQgdG9nZXRoZXIuXG4gZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgYXN5bmNocm9ub3VzIEkvTyB3aWxsIGJlIGVuYWJsZWQgaWYgc3VwcG9ydGVkLlxuIGRvbWFpbl9pZD0lcyAgICAgICAgICAgU3BlY2lmeSBhIHRydXN0ZWQgZG9tYWluIElELiBGaWxlc3lzdGVtcyBzaGFyaW5nIHRoZSBzYW1lXG4tICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlXG4tICAgICAgICAgICAgICAgICAgICAgICBwYWdlIHNoYXJpbmcgaXMgZW5hYmxlZC4gKG5vdCBzaG93biBpbiBtb3VudGluZm8gb3V0cHV0KVxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBJRCBjYW4gc2hhcmUgcGFnZSBjYWNoZSBhY3Jvc3MgbW91bnRzIHdoZW5cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZV9zaGFyZSBpcyBlbmFibGVkLCBhbmQgc2hhcmUgc3VwZXJibG9ja3Mgd2hlblxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyYmxvY2tfc2hhcmUgaXMgZW5hYmxlZC4gKG5vdCBzaG93biBpbiBtb3VudGluZm9cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpXG4gZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS5cbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwgY29udGVudCB3aXRoaW4gdGhlIHNhbWUgZG9tYWluIElEIGNhbiBzaGFyZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuXG4mIzQzO3N1cGVyYmxvY2tfc2hhcmUgICAgICAgU2hhcmUgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG4gRmlsZS1iYWNrZWQgbW91bnRzXG5AQCAtMTU0LDYgJiM0MzsxNTksMTMgQEAgT25seSByZWd1bGFyIGZpbGVzIGFyZSBhY2NlcHRlZCBhcyBiYWNraW5nIGZpbGVzOyB0byBtb3VudCBhbiBpbWFnZSB0aGF0XG4gcmVzaWRlcyBvbiBhIGJsb2NrIGRldmljZSwgdXNlIHRoZSB0cmFkaXRpb25hbCBibG9jayBkZXZpY2UgbW91bnQgcGF0aFxuIGluc3RlYWQuXG4gXG4mIzQzO1doZW4gZG9tYWluX2lkIGFuZCBzdXBlcmJsb2NrX3NoYXJlIGFyZSBib3RoIHNwZWNpZmllZCBhbmQgdGhlIHNhbWVcbiYjNDM7YmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW5cbiYjNDM7b25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZSBtb3VudCBvcHRpb25zLCB0aGUga2VybmVsXG4mIzQzO3JldXNlcyB0aGUgZXhpc3Rpbmcgc3VwZXJibG9jayBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS5cbiYjNDM7XG4mIzQzO1JlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuJiM0MztcbiBTeXNmcyBFbnRyaWVzXG4gPT09PT09PT09PT09PVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oXG5pbmRleCA1N2JkMjE4NTljNjVkLi44NmRhMjE5ZjhmNGVjIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxuQEAgLTE1Niw2ICYjNDM7MTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xuICNkZWZpbmUgRVJPRlNfTU9VTlRfREFYX05FVkVSXHRcdDB4MDAwMDAwODBcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RJUkVDVF9JT1x0XHQweDAwMDAwMTAwXG4gI2RlZmluZSBFUk9GU19NT1VOVF9JTk9ERV9TSEFSRVx0XHQweDAwMDAwMjAwXG4mIzQzOyNkZWZpbmUgRVJPRlNfTU9VTlRfU1VQRVJCTE9DS19TSEFSRVx0MHgwMDAwMDQwMFxuIFxuICNkZWZpbmUgY2xlYXJfb3B0KG9wdCwgb3B0aW9uKVx0KChvcHQpLVx1MDAzZW1vdW50X29wdCBcdTAwMjY9IH5FUk9GU19NT1VOVF8jI29wdGlvbilcbiAjZGVmaW5lIHNldF9vcHQob3B0LCBvcHRpb24pXHQoKG9wdCktXHUwMDNlbW91bnRfb3B0IHw9IEVST0ZTX01PVU5UXyMjb3B0aW9uKVxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3N1cGVyLmMgYi9mcy9lcm9mcy9zdXBlci5jXG5pbmRleCA4ZWFkMTY0NmYzMjk0Li45NWMwOTBmNDc3ZjEwIDEwMDY0NFxuLS0tIGEvZnMvZXJvZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvc3VwZXIuY1xuQEAgLTM4Niw3ICYjNDM7Mzg2LDcgQEAgc3RhdGljIHZvaWQgZXJvZnNfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkpXG4gZW51bSB7XG4gXHRPcHRfdXNlcl94YXR0ciwgT3B0X2FjbCwgT3B0X2NhY2hlX3N0cmF0ZWd5LCBPcHRfZGF4LCBPcHRfZGF4X2VudW0sXG4gXHRPcHRfZGV2aWNlLCBPcHRfZG9tYWluX2lkLCBPcHRfZGlyZWN0aW8sIE9wdF9mc29mZnNldCwgT3B0X2lub2RlX3NoYXJlLFxuLVx0T3B0X3NvdXJjZSxcbiYjNDM7XHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcbkBAIC00MTUsNiAmIzQzOzQxNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZXJvZnNfZnNfcGFyYW1ldGVyc1tdID0ge1xuIFx0ZnNwYXJhbV91NjQoXCYjMzQ7ZnNvZmZzZXRcJiMzNDssXHRcdFx0T3B0X2Zzb2Zmc2V0KSxcbiBcdGZzcGFyYW1fZmxhZyhcJiMzNDtpbm9kZV9zaGFyZVwmIzM0OyxcdFx0T3B0X2lub2RlX3NoYXJlKSxcbiBcdGZzcGFyYW1fZmlsZV9vcl9zdHJpbmcoXCYjMzQ7c291cmNlXCYjMzQ7LFx0T3B0X3NvdXJjZSksXG4mIzQzO1x0ZnNwYXJhbV9mbGFnKFwmIzM0O3N1cGVyYmxvY2tfc2hhcmVcJiMzNDssXHRPcHRfc3VwZXJibG9ja19zaGFyZSksXG4gXHR7fVxuIH07XG4gXG5AQCAtNTM2LDcgJiM0Mzs1MzcsOCBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0JiM0MzsmIzQzO3NiaS1cdTAwM2VkZXZzLVx1MDAzZWV4dHJhX2RldmljZXM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBPcHRfZG9tYWluX2lkOlxuLVx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpKSB7XG4mIzQzO1x0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpIHtcbiBcdFx0XHRlcnJvcmZjKGZjLCBcJiMzNDslcyBvcHRpb24gbm90IHN1cHBvcnRlZFwmIzM0OywgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGtmcmVlX3NlbnNpdGl2ZShzYmktXHUwMDNlZG9tYWluX2lkKTtcbkBAIC01NjAsNiAmIzQzOzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xuIFx0XHRicmVhaztcbiYjNDM7XHRjYXNlIE9wdF9zdXBlcmJsb2NrX3NoYXJlOlxuJiM0MztcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpXG4mIzQzO1x0XHRcdGVycm9yZmMoZmMsIFwmIzM0OyVzIG9wdGlvbiBub3Qgc3VwcG9ydGVkXCYjMzQ7LCBlcm9mc19mc19wYXJhbWV0ZXJzW29wdF0ubmFtZSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgT3B0X3NvdXJjZTpcbiBcdFx0cmV0dXJuIGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShmYywgcGFyYW0pO1xuIFx0fVxuQEAgLTY0OCw2ICYjNDM7NjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGVycm9yZmMoZmMsIFwmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBpbm9kZV9pc2hhcmUgaXMgb25cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiYjNDM7XHRpZiAoIXNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7XG4mIzQzO1x0XHRlcnJvcmZjKGZjLCBcJiMzNDtkb21haW5faWQgaXMgbmVlZGVkIHdoZW4gc3VwZXJibG9ja19zaGFyZSBpcyBvblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXHRpZiAodGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgREFYX0FMV0FZUykgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIElOT0RFX1NIQVJFKSkge1xuIFx0XHRlcnJvcmZjKGZjLCBcJiMzNDtGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTc3OSw2ICYjNDM7NzkxLDU1IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XG4mIzQzO1x0c3RydWN0IGVyb2ZzX3NiX2luZm8gKm5ld19zYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG4mIzQzO1xuJiM0MztcdGlmIChzYi1cdTAwM2VzX2lmbGFncyBcdTAwMjYgU0JfSV9SRVRJUkVEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFzYmktXHUwMDNlZGlmMC5maWxlIHx8ICFuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdGlmICghdGVzdF9vcHQoXHUwMDI2bmV3X3NiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKCFzYmktXHUwMDNlZG9tYWluX2lkIHx8ICFuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCB8fFxuJiM0MztcdCAgICBzdHJjbXAoc2JpLVx1MDAzZWRvbWFpbl9pZCwgbmV3X3NiaS1cdTAwM2Vkb21haW5faWQpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIHNiaS1cdTAwM2VkaWYwLmZzb2ZmID09IG5ld19zYmktXHUwMDNlZGlmMC5mc29mZiBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgc2JpLVx1MDAzZW9wdC5tb3VudF9vcHQgPT0gbmV3X3NiaS1cdTAwM2VvcHQubW91bnRfb3B0IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBzYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbiYjNDM7XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4mIzQzO1x0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuJiM0MztcbiYjNDM7XHRzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpO1xuJiM0MztcdGlmIChJU19FUlIoc2IpKVxuJiM0MztcdFx0cmV0dXJuIFBUUl9FUlIoc2IpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2ItXHUwMDNlc19yb290KSB7XG4mIzQzO1x0XHRlcm9mc19pbmZvKHNiLCBcJiMzNDtzaGFyaW5nIHN1cGVyYmxvY2sgZm9yIHRoZSBzYW1lIGJhY2tpbmcgZmlsZVwmIzM0Oyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZGVhY3RpdmF0ZV9sb2NrZWRfc3VwZXIoc2IpO1xuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0c2ItXHUwMDNlc19mbGFncyB8PSBTQl9BQ1RJVkU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmYy1cdTAwM2Vyb290ID0gZGdldChzYi1cdTAwM2VzX3Jvb3QpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZXJvZnNfZmNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIHtcbiBcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG5AQCAtNzk0LDcgJiM0Mzs4NTUsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0XHRlcnJvcmZjKGZjLCBcJiMzNDtzb3VyY2UgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHR9XG4tXHRcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XG4mIzQzO1x0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG4gXHR9XG4gXG4gXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuQEAgLTgxMiw3ICYjNDM7ODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXG4gXHRcdGlmIChTX0lTUkVHKGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSktXHUwMDNlaV9tb2RlKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHNiaS1cdTAwM2VkaWYwLmZpbGUtXHUwMDNlZl9tYXBwaW5nLVx1MDAzZWFfb3BzLVx1MDAzZXJlYWRfZm9saW8pXG4tXHRcdFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcbiYjNDM7XHRcdFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xuIFx0fVxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtODI1LDYgJiM0Mzs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XG4gXG4mIzQzO1x0aWYgKHNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxuJiM0MztcdFx0cmV0dXJuIC1FQlVTWTtcbiYjNDM7XG4gXHRpZiAobmV3X3NiaS1cdTAwM2Vkb21haW5faWQpXG4gXHRcdGVyb2ZzX2luZm8oc2IsIFwmIzM0O2lnbm9yaW5nIHJlY29uZmlndXJhdGlvbiBmb3IgZG9tYWluX2lkLlwmIzM0Oyk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VST0ZTX0ZTJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFJiMzNDssCiAgICAmIzM0O0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlcm9mc19mY19wYXJzZV9wYXJhbSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19nZXRfdHJlZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY19yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXImIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG1vdW50IG9wdGlvbiBgc3VwZXJibG9ja19zaGFyZWAgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLCB3aGljaCBhbGxvd3Mgc2hhcmluZyB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBtb3VudCBsb2dpYyBvZiBFUk9GUyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKaW5kZXggNzc0ZThiMjM2ZDA5OS4uNTE3YzUyNjE2M2UyMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3QKQEAgLTEzMSwxMiAmIzQzOzEzMSwxNyBAQCBkZXZpY2U9JXMgICAgICAgICAgICAgIFNwZWNpZnkgYSBwYXRoIHRvIGFuIGV4dHJhIGRldmljZSB0byBiZSB1c2VkIHRvZ2V0aGVyLgogZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmcKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsIGFuZCBhc3luY2hyb25vdXMgSS9PIHdpbGwgYmUgZW5hYmxlZCBpZiBzdXBwb3J0ZWQuCiBkb21haW5faWQ9JXMgICAgICAgICAgIFNwZWNpZnkgYSB0cnVzdGVkIGRvbWFpbiBJRC4gRmlsZXN5c3RlbXMgc2hhcmluZyB0aGUgc2FtZQotICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlCi0gICAgICAgICAgICAgICAgICAgICAgIHBhZ2Ugc2hhcmluZyBpcyBlbmFibGVkLiAobm90IHNob3duIGluIG1vdW50aW5mbyBvdXRwdXQpCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZV9zaGFyZSBpcyBlbmFibGVkLCBhbmQgc2hhcmUgc3VwZXJibG9ja3Mgd2hlbgomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgc3VwZXJibG9ja19zaGFyZSBpcyBlbmFibGVkLiAobm90IHNob3duIGluIG1vdW50aW5mbwomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS4KIGlub2RlX3NoYXJlICAgICAgICAgICAgRW5hYmxlIGlub2RlIHBhZ2Ugc2hhcmluZyBmb3IgdGhpcyBmaWxlc3lzdGVtLiAgSW5vZGVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsIGNvbnRlbnQgd2l0aGluIHRoZSBzYW1lIGRvbWFpbiBJRCBjYW4gc2hhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuCiYjNDM7c3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZQomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLgogPT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogRmlsZS1iYWNrZWQgbW91bnRzCkBAIC0xNTQsNiAmIzQzOzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXQKIHJlc2lkZXMgb24gYSBibG9jayBkZXZpY2UsIHVzZSB0aGUgdHJhZGl0aW9uYWwgYmxvY2sgZGV2aWNlIG1vdW50IHBhdGgKIGluc3RlYWQuCiAKJiM0MztXaGVuIGRvbWFpbl9pZCBhbmQgc3VwZXJibG9ja19zaGFyZSBhcmUgYm90aCBzcGVjaWZpZWQgYW5kIHRoZSBzYW1lCiYjNDM7YmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW4KJiM0MztvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWwKJiM0MztyZXVzZXMgdGhlIGV4aXN0aW5nIHN1cGVyYmxvY2sgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCiYjNDM7CiYjNDM7UmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuCiYjNDM7CiBTeXNmcyBFbnRyaWVzCiA9PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oCmluZGV4IDU3YmQyMTg1OWM2NWQuLjg2ZGEyMTlmOGY0ZWMgMTAwNjQ0Ci0tLSBhL2ZzL2Vyb2ZzL2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXJvZnMvaW50ZXJuYWwuaApAQCAtMTU2LDYgJiM0MzsxNTYsNyBAQCBzdHJ1Y3QgZXJvZnNfc2JfaW5mbyB7CiAjZGVmaW5lIEVST0ZTX01PVU5UX0RBWF9ORVZFUgkJMHgwMDAwMDA4MAogI2RlZmluZSBFUk9GU19NT1VOVF9ESVJFQ1RfSU8JCTB4MDAwMDAxMDAKICNkZWZpbmUgRVJPRlNfTU9VTlRfSU5PREVfU0hBUkUJCTB4MDAwMDAyMDAKJiM0MzsjZGVmaW5lIEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkUJMHgwMDAwMDQwMAogCiAjZGVmaW5lIGNsZWFyX29wdChvcHQsIG9wdGlvbikJKChvcHQpLSZndDttb3VudF9vcHQgJmFtcDs9IH5FUk9GU19NT1VOVF8jI29wdGlvbikKICNkZWZpbmUgc2V0X29wdChvcHQsIG9wdGlvbikJKChvcHQpLSZndDttb3VudF9vcHQgfD0gRVJPRlNfTU9VTlRfIyNvcHRpb24pCmRpZmYgLS1naXQgYS9mcy9lcm9mcy9zdXBlci5jIGIvZnMvZXJvZnMvc3VwZXIuYwppbmRleCA4ZWFkMTY0NmYzMjk0Li45NWMwOTBmNDc3ZjEwIDEwMDY0NAotLS0gYS9mcy9lcm9mcy9zdXBlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Vyb2ZzL3N1cGVyLmMKQEAgLTM4Niw3ICYjNDM7Mzg2LDcgQEAgc3RhdGljIHZvaWQgZXJvZnNfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkpCiBlbnVtIHsKIAlPcHRfdXNlcl94YXR0ciwgT3B0X2FjbCwgT3B0X2NhY2hlX3N0cmF0ZWd5LCBPcHRfZGF4LCBPcHRfZGF4X2VudW0sCiAJT3B0X2RldmljZSwgT3B0X2RvbWFpbl9pZCwgT3B0X2RpcmVjdGlvLCBPcHRfZnNvZmZzZXQsIE9wdF9pbm9kZV9zaGFyZSwKLQlPcHRfc291cmNlLAomIzQzOwlPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHsKQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7CiAJZnNwYXJhbV91NjQoJiMzNDtmc29mZnNldCYjMzQ7LAkJCU9wdF9mc29mZnNldCksCiAJZnNwYXJhbV9mbGFnKCYjMzQ7aW5vZGVfc2hhcmUmIzM0OywJCU9wdF9pbm9kZV9zaGFyZSksCiAJZnNwYXJhbV9maWxlX29yX3N0cmluZygmIzM0O3NvdXJjZSYjMzQ7LAlPcHRfc291cmNlKSwKJiM0MzsJZnNwYXJhbV9mbGFnKCYjMzQ7c3VwZXJibG9ja19zaGFyZSYjMzQ7LAlPcHRfc3VwZXJibG9ja19zaGFyZSksCiAJe30KIH07CiAKQEAgLTUzNiw3ICYjNDM7NTM3LDggQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAJCSYjNDM7JiM0MztzYmktJmd0O2RldnMtJmd0O2V4dHJhX2RldmljZXM7CiAJCWJyZWFrOwogCWNhc2UgT3B0X2RvbWFpbl9pZDoKLQkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSkgewomIzQzOwkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSkgewogCQkJZXJyb3JmYyhmYywgJiMzNDslcyBvcHRpb24gbm90IHN1cHBvcnRlZCYjMzQ7LCBlcm9mc19mc19wYXJhbWV0ZXJzW29wdF0ubmFtZSk7CiAJCX0gZWxzZSB7CiAJCQlrZnJlZV9zZW5zaXRpdmUoc2JpLSZndDtkb21haW5faWQpOwpAQCAtNTYwLDYgJiM0Mzs1NjIsMTIgQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAJCWVsc2UKIAkJCXNldF9vcHQoJmFtcDtzYmktJmd0O29wdCwgSU5PREVfU0hBUkUpOwogCQlicmVhazsKJiM0MzsJY2FzZSBPcHRfc3VwZXJibG9ja19zaGFyZToKJiM0MzsJCWlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKQomIzQzOwkJCWVycm9yZmMoZmMsICYjMzQ7JXMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQmIzM0OywgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpOwomIzQzOwkJZWxzZQomIzQzOwkJCXNldF9vcHQoJmFtcDtzYmktJmd0O29wdCwgU1VQRVJCTE9DS19TSEFSRSk7CiYjNDM7CQlicmVhazsKIAljYXNlIE9wdF9zb3VyY2U6CiAJCXJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTsKIAl9CkBAIC02NDgsNiAmIzQzOzY1NiwxMCBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCQllcnJvcmZjKGZjLCAmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBpbm9kZV9pc2hhcmUgaXMgb24mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KJiM0MzsJaWYgKCFzYmktJmd0O2RvbWFpbl9pZCAmYW1wOyZhbXA7IHRlc3Rfb3B0KCZhbXA7c2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7CiYjNDM7CQllcnJvcmZjKGZjLCAmIzM0O2RvbWFpbl9pZCBpcyBuZWVkZWQgd2hlbiBzdXBlcmJsb2NrX3NoYXJlIGlzIG9uJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAlpZiAodGVzdF9vcHQoJmFtcDtzYmktJmd0O29wdCwgREFYX0FMV0FZUykgJmFtcDsmYW1wOyB0ZXN0X29wdCgmYW1wO3NiaS0mZ3Q7b3B0LCBJTk9ERV9TSEFSRSkpIHsKIAkJZXJyb3JmYyhmYywgJiMzNDtGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NzksNiAmIzQzOzc5MSw1NSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKJiM0MzsJCQkJICAgIHN0cnVjdCBmc19jb250ZXh0ICpmYykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7CiYjNDM7CXN0cnVjdCBlcm9mc19zYl9pbmZvICpuZXdfc2JpID0gZmMtJmd0O3NfZnNfaW5mbzsKJiM0MzsKJiM0MzsJaWYgKHNiLSZndDtzX2lmbGFncyAmYW1wOyBTQl9JX1JFVElSRUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJaWYgKCFzYmktJmd0O2RpZjAuZmlsZSB8fCAhbmV3X3NiaS0mZ3Q7ZGlmMC5maWxlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWlmICghdGVzdF9vcHQoJmFtcDtuZXdfc2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CWlmICghc2JpLSZndDtkb21haW5faWQgfHwgIW5ld19zYmktJmd0O2RvbWFpbl9pZCB8fAomIzQzOwkgICAgc3RyY21wKHNiaS0mZ3Q7ZG9tYWluX2lkLCBuZXdfc2JpLSZndDtkb21haW5faWQpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CXJldHVybiBmaWxlX2lub2RlKHNiaS0mZ3Q7ZGlmMC5maWxlKSA9PSBmaWxlX2lub2RlKG5ld19zYmktJmd0O2RpZjAuZmlsZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtkaWYwLmZzb2ZmID09IG5ld19zYmktJmd0O2RpZjAuZnNvZmYgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtvcHQubW91bnRfb3B0ID09IG5ld19zYmktJmd0O29wdC5tb3VudF9vcHQgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgc2JpLSZndDtvcHQuY2FjaGVfc3RyYXRlZ3kgPT0gbmV3X3NiaS0mZ3Q7b3B0LmNhY2hlX3N0cmF0ZWd5OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKQomIzQzO3sKJiM0MzsJc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSA9IGZjLSZndDtzX2ZzX2luZm87CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmICghdGVzdF9vcHQoJmFtcDtzYmktJmd0O29wdCwgU1VQRVJCTE9DS19TSEFSRSkpCiYjNDM7CQlyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpOwomIzQzOwomIzQzOwlzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpOwomIzQzOwlpZiAoSVNfRVJSKHNiKSkKJiM0MzsJCXJldHVybiBQVFJfRVJSKHNiKTsKJiM0MzsKJiM0MzsJaWYgKHNiLSZndDtzX3Jvb3QpIHsKJiM0MzsJCWVyb2ZzX2luZm8oc2IsICYjMzQ7c2hhcmluZyBzdXBlcmJsb2NrIGZvciB0aGUgc2FtZSBiYWNraW5nIGZpbGUmIzM0Oyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQllcnIgPSBlcm9mc19mY19maWxsX3N1cGVyKHNiLCBmYyk7CiYjNDM7CQlpZiAoZXJyKSB7CiYjNDM7CQkJZGVhY3RpdmF0ZV9sb2NrZWRfc3VwZXIoc2IpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CQlzYi0mZ3Q7c19mbGFncyB8PSBTQl9BQ1RJVkU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZmMtJmd0O3Jvb3QgPSBkZ2V0KHNiLSZndDtzX3Jvb3QpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYykKIHsKIAlzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtJmd0O3NfZnNfaW5mbzsKQEAgLTc5NCw3ICYjNDM7ODU1LDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJCQllcnJvcmZjKGZjLCAmIzM0O3NvdXJjZSBpcyB1bnN1cHBvcnRlZCYjMzQ7KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JCXJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7CiYjNDM7CQlyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7CiAJfQogCiAJcmV0ID0gZ2V0X3RyZWVfYmRldl9mbGFncyhmYywgZXJvZnNfZmNfZmlsbF9zdXBlciwKQEAgLTgxMiw3ICYjNDM7ODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAkJaWYgKFNfSVNSRUcoZmlsZV9pbm9kZShzYmktJmd0O2RpZjAuZmlsZSktJmd0O2lfbW9kZSkgJmFtcDsmYW1wOwogCQkgICAgc2JpLSZndDtkaWYwLmZpbGUtJmd0O2ZfbWFwcGluZy0mZ3Q7YV9vcHMtJmd0O3JlYWRfZm9saW8pCi0JCQlyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpOwomIzQzOwkJCXJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTsKIAl9CiAJcmV0dXJuIHJldDsKIH0KQEAgLTgyNSw2ICYjNDM7ODg2LDkgQEAgc3RhdGljIGludCBlcm9mc19mY19yZWNvbmZpZ3VyZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAKIAlEQkdfQlVHT04oIXNiX3Jkb25seShzYikpOwogCiYjNDM7CWlmIChzYmktJmd0O2RvbWFpbl9pZCAmYW1wOyZhbXA7IHRlc3Rfb3B0KCZhbXA7c2JpLSZndDtvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKQomIzQzOwkJcmV0dXJuIC1FQlVTWTsKJiM0MzsKIAlpZiAobmV3X3NiaS0mZ3Q7ZG9tYWluX2lkKQogCQllcm9mc19pbmZvKHNiLCAmIzM0O2lnbm9yaW5nIHJlY29uZmlndXJhdGlvbiBmb3IgZG9tYWluX2lkLiYjMzQ7KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjExCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVST0ZTIFN1cGVyYmxvY2sgU2hhcmluZyBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaW50cm9kdWNpbmcgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBtb3VudCBvcHRpb24gZm9yIHRoZSBgZXJvZnNgIGZpbGVzeXN0ZW0uIFRoZSBpZGVhIGhlcmUgaXMgdG8gYWxsb3cgdGhlIHN1cGVyYmxvY2sgdG8gYmUgc2hhcmVkIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhleSBzaGFyZSB0aGUgc2FtZSBgZG9tYWluX2lkYCBhbmQgY29tcGF0aWJsZSBvcHRpb25zLiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBvcHRpbWl6YXRpb24sIGVzcGVjaWFsbHkgaW4gc2NlbmFyaW9zIHdpdGggbXVsdGlwbGUgbW91bnRzIG9mIHRoZSBzYW1lIGltYWdlLgoKTGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNoYW5nZXM6CgoqICAgKipEb2N1bWVudGF0aW9uOioqIFVwZGF0ZXMgdG8gYERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0YCBhcmUgZXhwZWN0ZWQuIEFsd2F5cyBhIGdvb2Qgc2lnbiBvZiB0aG9yb3VnaG5lc3MuCiogICAqKkhlYWRlcjoqKiBBZGRpbmcgYEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkVgIHRvIGBmcy9lcm9mcy9pbnRlcm5hbC5oYCBpcyBzdHJhaWdodGZvcndhcmQgLSB0aGUgbWFjcm8mIzM5O3MgbmVjZXNzYXJ5LgoqICAgKipDb3JlIExvZ2ljOioqIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGZzL2Vyb2ZzL3N1cGVyLmNgLiBXZSYjMzk7cmUgYWRkaW5nIGBPcHRfc3VwZXJibG9ja19zaGFyZWAgdG8gYGVyb2ZzX2ZzX3BhcmFtZXRlcnNgLCB0aGF0JiMzOTtzIHRoZSBwYXJzaW5nIHN0cnVjdHVyZS4gYGVyb2ZzX2ZjX3BhcnNlX3BhcmFtYCBub3cgaGFuZGxlcyB0aGUgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiBpdHNlbGYuIEluIGBlcm9mc19mY19maWxsX3N1cGVyYCwgdGhlcmUmIzM5O3MgYSB2YWxpZGF0aW9uIGNoZWNrIHRoYXQgdGhlIGBkb21haW5faWRgIGlzIHByZXNlbnQgd2hlbiB0aGUgc2hhcmluZyBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBhbHNvIGdldHRpbmcgZnVuY3Rpb25zIGZvciB0ZXN0aW5nIGlmIHdlIGNhbiBzaGFyZSBhIHN1cGVyYmxvY2sgdXNpbmcgYGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcmAsIGFuZCBncmFiYmluZyBlaXRoZXIgdGhlIHNoYXJlZCBvciBhIG5ldyBvbmUsIHZpYSBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAgdXNpbmcgYHNnZXRfZmNgLiBgZXJvZnNfZmNfZ2V0X3RyZWVgIG5vdyB1c2VzIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCByYXRoZXIgdGhhbiBgZ2V0X3RyZWVfbm9kZXZgLCB3aGljaCBpcyB0aGUgYWN0dWFsIHN0cnVjdHVyYWwgY2hhbmdlLiBgZXJvZnNfZmNfcmVjb25maWd1cmVgIG5vdyByZXR1cm5zIGAtRUJVU1lgIHdoZW4gc3VwZXJibG9jayBzaGFyaW5nIGlzIGFjdGl2ZSwgd2hpY2ggbWFrZXMgc2Vuc2UgLSB5b3Ugc2hvdWxkbiYjMzk7dCBiZSByZWNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0IGlzIHNoYXJlZC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIGBlcm9mc2AuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuIEl0JiMzOTtzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHRvIGVuc3VyZSBzdGFiaWxpdHkgYW5kIHRvIGlkZW50aWZ5IGFueSBlZGdlIGNhc2VzIG9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcmlzZSB3aXRoIG11bHRpcGxlIG1vdW50cy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBmZWF0dXJlLiBXZSBrbm93IGl0IGNoZWNrcyBgSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpYCwgd2hpY2ggaW1wbGllcyB0aGF0IGBDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgIGlzIG1hbmRhdG9yeS4gT2J2aW91c2x5LCBgQ09ORklHX0VST0ZTX0ZTYCBpcyBhbHNvIHJlcXVpcmVkIGZvciB0aGUgYGVyb2ZzYCBmaWxlc3lzdGVtIGl0c2VsZi4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBmcy9lcm9mcy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWc9ODU9Y29uZmlnIEVST0ZTX0ZTX1NFQ1VSSVRZXG4tLVxuZnMvZXJvZnMvS2NvbmZpZy05Ny1cbmZzL2Vyb2ZzL0tjb25maWc6OTg6Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG5mcy9lcm9mcy9LY29uZmlnLTk5LVx0Ym9vbCBcJiMzNDtGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBFUk9GUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIGFzcGVjdCBvZiBFUk9GUyBpcyBjb25maWd1cmVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgRVJPRlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9lcm9mcy9LY29uZmlnYCBhbmQsIGdpdmVuIG15IGdlbmVyYWwgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSBmaWxlcywgSSYjMzk7bGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA5OC4gVGhhdCBmZWVscyBsaWtlIGEgcmVhc29uYWJsZSBwb2ludCB0byBiZWdpbjsgdGhhdCBsaW5lIGxpa2VseSBjb3ZlcnMgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIG9wdGlvbiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeS4gVGltZSB0byBnZXQgbXkgZXllcyBvbiB0aGF0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5MDpcdFx0ICBTZWN1cml0eSBsYWJlbHMgcHJvdmlkZSBhbiBhY2Nlc3MgY29udHJvbCBmYWNpbGl0eSB0byBzdXBwb3J0IExpbnV4XG4gIDkxOlx0XHQgIFNlY3VyaXR5IE1vZGVscyAoTFNNcykgYWNjZXB0ZWQgYnkgQXBwQXJtb3IsIFNFTGludXgsIFNtYWNrIGFuZCBUT01PWU9cbiAgOTI6XHRcdCAgTGludXguIFRoaXMgb3B0aW9uIGVuYWJsZXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsZXIgZm9yIGZpbGVcbiAgOTM6XHRcdCAgc2VjdXJpdHkgbGFiZWxzIGluIHRoZSBlcm9mcyBmaWxlc3lzdGVtLCBzbyB0aGF0IGl0IHJlcXVpcmVzIGVuYWJsaW5nXG4gIDk0Olx0XHQgIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBpbiBhZHZhbmNlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBJZiB5b3UgYXJlIG5vdCB1c2luZyBhIHNlY3VyaXR5IG1vZHVsZSwgc2F5IE4uXG4gIDk3Olx0XG4gIDk4Olx0Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXG4gIDk5Olx0XHRib29sIFwmIzM0O0ZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuIDEwMDpcdFx0ZGVwZW5kcyBvbiBFUk9GU19GU1xuIDEwMTpcdFx0ZGVmYXVsdCB5XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgYWxsb3dzIEVST0ZTIHRvIHVzZSBmaWxlc3lzdGVtIGltYWdlIGZpbGVzIGRpcmVjdGx5LCB3aXRob3V0XG4gMTA0Olx0XHQgIHRoZSBpbnRlcmNlc3Npb24gb2YgbG9vcGJhY2sgYmxvY2sgZGV2aWNlcyBvciBsaWtld2lzZS4gSXQgaXNcbiAxMDU6XHRcdCAgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY29udGFpbmVyIGltYWdlcyB3aXRoIG51bWVyb3VzIGJsb2JzIGFuZFxuIDEwNjpcdFx0ICBvdGhlciBzYW5kYm94ZXMsIHdoZXJlIGxvb3AgZGV2aWNlcyBiZWhhdmUgaW50cmljYXRlbHkuICBJdCBjYW4gYWxzb1xuIDEwNzpcdFx0ICBiZSB1c2VkIHRvIHNpbXBsaWZ5IGVycm9yLXByb25lIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgdW5uZWNlc3NhcnlcbiAxMDg6XHRcdCAgdmlydHVhbCBibG9jayBkZXZpY2VzLlxuIDEwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyODIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEVST0ZTIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIEFQSSBlbnRyeSBwb2ludHMgYmFzZWQgb24gdGhlIGtlcm5lbCBpbnN0cnVjdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29tcGxpYW50IHdpdGguCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHNldmVyYWwga2V5IHN5bWJvbHMuIEkmIzM5O3ZlIGdvdCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgd2hpY2ggaXMgc3RhdGljIGJ1dCBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgc2dldF9mY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBleHBvcnRlZCBpZiBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgYnV0IHRoZW4gSSByZWNhbGwgaXQmIzM5O3Mgc3RhdGljLiBTdGlsbCwgYHNnZXRfZmNgIGNhbGxzIGl0LCBzbyBJIHNob3VsZCBzZWUgaWYgaXRzIGlubGluZWQgLSB3aGljaCBjYW4mIzM5O3QgYmUgYXMgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4KClRoZW4sIHRoZXJlJiMzOTtzIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCwgd2hpY2ggaXMgYWxzbyBzdGF0aWMuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBlcm9mc19mY19nZXRfdHJlZWAsIHdoaWNoIGlzIGFjdHVhbGx5IHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrIGZvciB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIE1ha2VzIHNlbnNlLCBidXQgc3RpbGwgc3RhdGljLiBUaGVuIEkgaGF2ZSBgZXJvZnNfZmNfZ2V0X3RyZWVgIGl0c2VsZiwgd2hpY2gsIGFnYWluLCBpcyBzdGF0aWMsIGJ1dCBpdCAqaXMqIHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrLiBTaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgYW5kIGBlcm9mc19mY19maWxsX3N1cGVyYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAuIFN0YXRpYywgc3RhdGljLCBzdGF0aWMhCgpPa2F5LCBzbyBhbGwgb2YgdGhlc2UgaW5pdGlhbCBzeW1ib2xzIGFyZSBzdGF0aWMuIFRoaXMgbWFrZXMgbWUgY3VyaW91cy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZnMvZXJvZnMvc3VwZXIuY2Agbm93IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UuIEkgd2FudCB0byBzZWUgaWYgYW55IG9mIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgd3JhcCBvciByZWxhdGUgdG8gbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQmIzM5O2xsIGJlIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXJvZnNfZmNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXJvZnMvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9lcm9mcy9zdXBlci5jPTQwNT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbXSA9IHtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTQyMS1cbmZzL2Vyb2ZzL3N1cGVyLmM6NDIyOnN0YXRpYyBib29sIGVyb2ZzX2ZjX3NldF9kYXhfbW9kZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHVuc2lnbmVkIGludCBtb2RlKVxuZnMvZXJvZnMvc3VwZXIuYy00MjMte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNDQyLVxuZnMvZXJvZnMvc3VwZXIuYzo0NDM6c3RhdGljIGludCBlcm9mc19mY19wYXJzZV9zb3VyY2Uoc3RydWN0IGZzX2NvbnRleHQgKmZjLFxuZnMvZXJvZnMvc3VwZXIuYy00NDQtXHRcdFx0XHQgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy00NzYtXG5mcy9lcm9mcy9zdXBlci5jOjQ3NzpzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbmZzL2Vyb2ZzL3N1cGVyLmMtNDc4LVx0XHRcdFx0c3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01MTItXHRjYXNlIE9wdF9kYXg6XG5mcy9lcm9mcy9zdXBlci5jOjUxMzpcdFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIEVST0ZTX01PVU5UX0RBWF9BTFdBWVMpKVxuZnMvZXJvZnMvc3VwZXIuYy01MTQtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01MTYtXHRjYXNlIE9wdF9kYXhfZW51bTpcbmZzL2Vyb2ZzL3N1cGVyLmM6NTE3Olx0XHRpZiAoIWVyb2ZzX2ZjX3NldF9kYXhfbW9kZShmYywgcmVzdWx0LnVpbnRfMzIpKVxuZnMvZXJvZnMvc3VwZXIuYy01MTgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy01NzEtXHRjYXNlIE9wdF9zb3VyY2U6XG5mcy9lcm9mcy9zdXBlci5jOjU3MjpcdFx0cmV0dXJuIGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShmYywgcGFyYW0pO1xuZnMvZXJvZnMvc3VwZXIuYy01NzMtXHR9XG4tLVxuZnMvZXJvZnMvc3VwZXIuYz02Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBlcm9mc19leHBvcnRfb3BzID0ge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtNjQzLVxuZnMvZXJvZnMvc3VwZXIuYzo2NDQ6c3RhdGljIGludCBlcm9mc19mY19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtNjQ1LXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTc5My1cbmZzL2Vyb2ZzL3N1cGVyLmM6Nzk0OnN0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9lcm9mcy9zdXBlci5jLTc5NS1cdFx0XHRcdCAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04MTQtXG5mcy9lcm9mcy9zdXBlci5jOjgxNTpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXJvZnMvc3VwZXIuYy04MTYte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODIxLVx0aWYgKCF0ZXN0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcbmZzL2Vyb2ZzL3N1cGVyLmM6ODIyOlx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuZnMvZXJvZnMvc3VwZXIuYy04MjMtXG5mcy9lcm9mcy9zdXBlci5jOjgyNDpcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XG5mcy9lcm9mcy9zdXBlci5jLTgyNS1cdGlmIChJU19FUlIoc2IpKVxuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODMwLVx0fSBlbHNlIHtcbmZzL2Vyb2ZzL3N1cGVyLmM6ODMxOlx0XHRlcnIgPSBlcm9mc19mY19maWxsX3N1cGVyKHNiLCBmYyk7XG5mcy9lcm9mcy9zdXBlci5jLTgzMi1cdFx0aWYgKGVycikge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtODQyLVxuZnMvZXJvZnMvc3VwZXIuYzo4NDM6c3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9lcm9mcy9zdXBlci5jLTg0NC17XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04NTctXHRcdH1cbmZzL2Vyb2ZzL3N1cGVyLmM6ODU4Olx0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG5mcy9lcm9mcy9zdXBlci5jLTg1OS1cdH1cbmZzL2Vyb2ZzL3N1cGVyLmMtODYwLVxuZnMvZXJvZnMvc3VwZXIuYzo4NjE6XHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuZnMvZXJvZnMvc3VwZXIuYy04NjItXHRcdElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSA/XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04NzUtXHRcdCAgICBzYmktXHUwMDNlZGlmMC5maWxlLVx1MDAzZWZfbWFwcGluZy1cdTAwM2VhX29wcy1cdTAwM2VyZWFkX2ZvbGlvKVxuZnMvZXJvZnMvc3VwZXIuYzo4NzY6XHRcdFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xuZnMvZXJvZnMvc3VwZXIuYy04NzctXHR9XG4tLVxuZnMvZXJvZnMvc3VwZXIuYy04ODAtXG5mcy9lcm9mcy9zdXBlci5jOjg4MTpzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtODgyLXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTkzMz1zdGF0aWMgdm9pZCBlcm9mc19zYl9mcmVlKHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmksIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXJvZnMvc3VwZXIuYy05NDItXG5mcy9lcm9mcy9zdXBlci5jOjk0MzpzdGF0aWMgdm9pZCBlcm9mc19mY19mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQ0LXtcbi0tXG5mcy9lcm9mcy9zdXBlci5jPTk1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBlcm9mc19jb250ZXh0X29wcyA9IHtcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU3Olx0LnBhcnNlX3BhcmFtXHQ9IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtLFxuZnMvZXJvZnMvc3VwZXIuYzo5NTg6XHQuZ2V0X3RyZWUgICAgICAgPSBlcm9mc19mY19nZXRfdHJlZSxcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU5Olx0LnJlY29uZmlndXJlICAgID0gZXJvZnNfZmNfcmVjb25maWd1cmUsXG5mcy9lcm9mcy9zdXBlci5jOjk2MDpcdC5mcmVlXHRcdD0gZXJvZnNfZmNfZnJlZSxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTYxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU3MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gQ29udGV4dCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBFUk9GUyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kLCBhcyBleHBlY3RlZCwgdGhvc2UgY29yZSBmdW5jdGlvbnMgYXJlIGFsbCAqc3RhdGljKi4gQnV0IHRoYXQmIzM5O3Mgbm90IHRoZSB3aG9sZSBzdG9yeS4gVGhleSYjMzk7cmUgc3RpbGwgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgZGVhbGluZyB3aXRoIHRoZSBmaWxlc3lzdGVtIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBzZWUgYGVyb2ZzX2ZjX3BhcnNlX3BhcmFtYCwgYGVyb2ZzX2ZjX2dldF90cmVlYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAgc3RhbmRpbmcgb3V0IGFzIHRoZSBrZXkgcGxheWVycyBmb3IgbW91bnQgYW5kIHJlbW91bnQgb3BlcmF0aW9ucy4gVGhlbiwgb2YgY291cnNlLCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgIGFyZSByaWdodCB0aGVyZSBhdCB0aGUgaGVhcnQgb2YgdGhpcyBwYXRjaCwgY3J1Y2lhbCBmb3IgdGhlIGZpbGUtcmVsYXRlZCBvcGVyYXRpb25zLiBUaGUgc3RhdGljIG5hdHVyZSBtZWFucyB0aGV5JiMzOTtyZSBsaWtlbHkgbm90IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgdXNlIGFuZCBtYXkgYmUgb3B0aW1pemVkIG1vcmUgYWdncmVzc2l2ZWx5LiBFdmVuIHRob3VnaCB0aGV5JiMzOTtyZSAqc3RhdGljKiwgSSYjMzk7bSBub3RpbmcgdGhleSYjMzk7cmUgKm5vdCogaW5saW5lZCwgZWl0aGVyIGJlY2F1c2UgdGhleSYjMzk7cmUgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBmdW5jdGlvbiBwb2ludGVycyBvciB0aGV5JiMzOTtyZSBqdXN0IHRvbyBkYXJuIGJpZyB0byBtYWtlIGlubGluaW5nIHdvcnRod2hpbGUuCgpTbywgbGV0JiMzOTtzIGtlZXAgZGlnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBub24tc3RhdGljLiBBaCwgaGVyZSB3ZSBnbywgYGVyb2ZzX2luaXRfZnNfY29udGV4dGAgaXMgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJIHdhcyBsb29raW5nIGZvci4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc2V0dGluZyB1cCBgZXJvZnNfY29udGV4dF9vcHNgLiBUaGF0JiMzOTtzIGFuIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgYW5kIHNlZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHN0YXRpYyBmdW5jdGlvbnMgSSYjMzk7dmUgYWxyZWFkeSBpZGVudGlmaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcm9mc19pbml0X2ZzX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL3N1cGVyLmM9OTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGVyb2ZzX2NvbnRleHRfb3BzID0ge1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmMtOTYyLVxuZnMvZXJvZnMvc3VwZXIuYzo5NjM6c3RhdGljIGludCBlcm9mc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZnMvZXJvZnMvc3VwZXIuYy05NjQte1xuLS1cbmZzL2Vyb2ZzL3N1cGVyLmM9MTAyMz1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXJvZnNfZnNfdHlwZSA9IHtcbi0tXG5mcy9lcm9mcy9zdXBlci5jLTEwMjUtXHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlcm9mc1wmIzM0OyxcbmZzL2Vyb2ZzL3N1cGVyLmM6MTAyNjpcdC5pbml0X2ZzX2NvbnRleHQgPSBlcm9mc19pbml0X2ZzX2NvbnRleHQsXG5mcy9lcm9mcy9zdXBlci5jLTEwMjctXHQua2lsbF9zYiAgICAgICAgPSBlcm9mc19raWxsX3NiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzMyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBFUk9GUyBGaWxlc3lzdGVtIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgRVJPRlMgY29kZSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGVyb2ZzX2luaXRfZnNfY29udGV4dGAgaXMgYWxzbyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3b25kZXIgYWJvdXQgd2hhdCAqaXMqIGFjdHVhbGx5IGV4cG9ydGVkIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwuIEFoLCByaWdodCwgYGVyb2ZzX2ZzX3R5cGVgIGlzIHN0YXRpYyBidXQgcmVnaXN0ZXJlZCB0aHJvdWdoIGBpbml0X2Vyb2ZzX2ZzYC4gU28sIGVzc2VudGlhbGx5IG1vc3Qgb2YgdGhlIHN0dWZmIGluIGBzdXBlci5jYCBpcyBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBTaW5jZSB0aGV5JiMzOTtyZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBub3QgaW5saW5lZCwgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIHRoZW0gYXMgdGhlIGtleSBlbnRyeSBwb2ludHM7IHRoZXkmIzM5O2xsIGJlIHRoZSBvbmVzIGF2YWlsYWJsZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIEkgc2VlIGBDT05GSUdfRVJPRlNfRlNgLCB0aGUgb2J2aW91cyBvbmUuIFRoZW4gdGhlcmUmIzM5O3MgYENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRWAsIGFuZCBmaW5hbGx5IGBDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgbGFzdCBvbmUgbWVudGlvbmVkIGluIGEgcGF0Y2ggd2l0aCB0aGUgY29uZGl0aW9uOiBgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpICZhbXA7JmFtcDsgIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKWAuIEFscmlnaHQsIGxldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDE6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9lcm9mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Vyb2ZzL0tjb25maWc9MTkzPWNvbmZpZyBFUk9GU19GU19QQ1BVX0tUSFJFQURfSElQUklcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTIwMi1cbmZzL2Vyb2ZzL0tjb25maWc6MjAzOmNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cdGJvb2wgXCYjMzQ7RVJPRlMgcGFnZSBjYWNoZSBzaGFyZSBzdXBwb3J0IChleHBlcmltZW50YWwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NzMKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVST0ZTIEZpbGVzeXN0ZW0gU3VwZXJibG9jayBTaGFyaW5nOiBBIFJldmlldyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYCBqdW1wcyBvdXQgYXQgbWUgYXMgYSBrZXkgZmFjdG9yLiBJdCYjMzk7cyBkZWZpbml0ZWx5IHJlbGV2YW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcXVpY2tseS4gV2UgaGF2ZTogYEVST0ZTX0ZTYCwgb2YgY291cnNlLiBUaGVuIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAsIGFuZCBub3cgdGhpcyBuZXcgb25lLCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAuCgpOb3csIGZvciBzcGVjaWZpYyBzeW1ib2xzIHRvIGFuYWx5emUuIEkgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBlcm9mc19mY19wYXJzZV9wYXJhbWAsIGBlcm9mc19mY19nZXRfdHJlZWAsIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgLCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSBsaWtlIHRoZSBjcml0aWNhbCBwaWVjZXMgd2hlcmUgdGhpcyBuZXcgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiwgdGhlIG9uZSB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcsIHdvdWxkIGNvbWUgaW50byBwbGF5LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBuZXcgbW91bnQgb3B0aW9uLCBgc3VwZXJibG9ja19zaGFyZWAsIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbS4gV2hhdCB0aGlzIG1lYW5zIGlzIHRoYXQgaWYgeW91IG1vdW50IHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLCB5b3UgY2FuIHNoYXJlIHRoZSBzdXBlcmJsb2NrLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgY29yZSBtb3VudGluZyBsb2dpYyBvZiBFUk9GUywgaXQmIzM5O3Mgbm90IHRyaXZpYWwuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBjb3VsZCBiZSBhIGJyZWVkaW5nIGdyb3VuZCBmb3Igc3VidGxlIG1lbW9yeSBlcnJvcnMuIFNoYXJpbmcgc3VwZXJibG9ja3MgY2FuIGJlIHRyaWNreS4gVGhpcyBuZWVkcyBmdXp6aW5nLCBhICpsb3QqIG9mIGZ1enppbmcsIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLCBvciBhbnkgb3RoZXIgaXNzdWVzIHRoYXQgY291bGQgY3JvcCB1cCBkdXJpbmcgdGhlIG1vdW50IGFuZCByZW1vdW50IHByb2Nlc3Nlcy4gVGhlc2Uga2luZHMgb2YgY2hhbmdlcyBhcmUgb2Z0ZW4gd2hlcmUgdGhvc2UgYnVncyBsdXJrLgoKUmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gbm90ZSB0aGlzIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAxOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19CQUNLRURfQllfRklMRSYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXJvZnNfZmNfcGFyc2VfcGFyYW0mIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyJiMzNDssCiAgICAmIzM0O2Vyb2ZzX2ZjX2dldF90cmVlX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFUk9GU19GUyYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19CQUNLRURfQllfRklMRSYjMzQ7LAogICAgJiMzNDtFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXJvZnNfZmNfcGFyc2VfcGFyYW0mIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfZ2V0X3RyZWUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyJiMzNDssCiAgICAmIzM0O2Vyb2ZzX2ZjX2dldF90cmVlX2ZpbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MjcuNjk1Nzc1Njc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzNTQwODgwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjI3LjY5NTc4MTkxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwNTIyMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJmZTg1MDg2YjlhZWRiMWQ1YjFiOWQ3YTFiNzExY2Y4ODcwMzVhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDAxOjExOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcXG5pbmRleCA3NzRlOGIyMzZkMDk5Li41MTdjNTI2MTYzZTIzIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcXG5AQCAtMTMxLDEyICsxMzEsMTcgQEAgZGV2aWNlPSVzICAgICAgICAgICAgICBTcGVjaWZ5IGEgcGF0aCB0byBhbiBleHRyYSBkZXZpY2UgdG8gYmUgdXNlZCB0b2dldGhlci5cXG4gZGlyZWN0aW8gICAgICAgICAgICAgICAoRm9yIGZpbGUtYmFja2VkIG1vdW50cykgVXNlIGRpcmVjdCBJL08gdG8gYWNjZXNzIGJhY2tpbmdcXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIGFzeW5jaHJvbm91cyBJL08gd2lsbCBiZSBlbmFibGVkIGlmIHN1cHBvcnRlZC5cXG4gZG9tYWluX2lkPSVzICAgICAgICAgICBTcGVjaWZ5IGEgdHJ1c3RlZCBkb21haW4gSUQuIEZpbGVzeXN0ZW1zIHNoYXJpbmcgdGhlIHNhbWVcXG4tICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuIGlub2RlXFxuLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBzaGFyaW5nIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvIG91dHB1dClcXG4rICAgICAgICAgICAgICAgICAgICAgICBkb21haW4gSUQgY2FuIHNoYXJlIHBhZ2UgY2FjaGUgYWNyb3NzIG1vdW50cyB3aGVuXFxuKyAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVfc2hhcmUgaXMgZW5hYmxlZCwgYW5kIHNoYXJlIHN1cGVyYmxvY2tzIHdoZW5cXG4rICAgICAgICAgICAgICAgICAgICAgICBzdXBlcmJsb2NrX3NoYXJlIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvXFxuKyAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KVxcbiBmc29mZnNldD0lbGx1ICAgICAgICAgIFNwZWNpZnkgYmxvY2stYWxpZ25lZCBmaWxlc3lzdGVtIG9mZnNldCBmb3IgdGhlIHByaW1hcnkgZGV2aWNlLlxcbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsIGNvbnRlbnQgd2l0aGluIHRoZSBzYW1lIGRvbWFpbiBJRCBjYW4gc2hhcmUgdGhlXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBjYWNoZS5cXG4rc3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkXFxuKyAgICAgICAgICAgICAgICAgICAgICAgbW9yZSB0aGFuIG9uY2Ugd2l0aCB0aGUgc2FtZSBkb21haW5faWQgYW5kIGNvbXBhdGlibGVcXG4rICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLiAgUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXFxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcbiBGaWxlLWJhY2tlZCBtb3VudHNcXG5AQCAtMTU0LDYgKzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXRcXG4gcmVzaWRlcyBvbiBhIGJsb2NrIGRldmljZSwgdXNlIHRoZSB0cmFkaXRpb25hbCBibG9jayBkZXZpY2UgbW91bnQgcGF0aFxcbiBpbnN0ZWFkLlxcbiBcXG4rV2hlbiBkb21haW5faWQgYW5kIHN1cGVyYmxvY2tfc2hhcmUgYXJlIGJvdGggc3BlY2lmaWVkIGFuZCB0aGUgc2FtZVxcbitiYWNraW5nIGZpbGUgKGlkZW50aWZpZWQgYnkgaW5vZGUgYW5kIGZzb2Zmc2V0KSBpcyBtb3VudGVkIG1vcmUgdGhhblxcbitvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWxcXG4rcmV1c2VzIHRoZSBleGlzdGluZyBzdXBlcmJsb2NrIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLlxcbitcXG4rUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXFxuK1xcbiBTeXNmcyBFbnRyaWVzXFxuID09PT09PT09PT09PT1cXG4gXFxuZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL2ludGVybmFsLmggYi9mcy9lcm9mcy9pbnRlcm5hbC5oXFxuaW5kZXggNTdiZDIxODU5YzY1ZC4uODZkYTIxOWY4ZjRlYyAxMDA2NDRcXG4tLS0gYS9mcy9lcm9mcy9pbnRlcm5hbC5oXFxuKysrIGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxcbkBAIC0xNTYsNiArMTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RBWF9ORVZFUlxcdFxcdDB4MDAwMDAwODBcXG4gI2RlZmluZSBFUk9GU19NT1VOVF9ESVJFQ1RfSU9cXHRcXHQweDAwMDAwMTAwXFxuICNkZWZpbmUgRVJPRlNfTU9VTlRfSU5PREVfU0hBUkVcXHRcXHQweDAwMDAwMjAwXFxuKyNkZWZpbmUgRVJPRlNfTU9VTlRfU1VQRVJCTE9DS19TSEFSRVxcdDB4MDAwMDA0MDBcXG4gXFxuICNkZWZpbmUgY2xlYXJfb3B0KG9wdCwgb3B0aW9uKVxcdCgob3B0KS1cXHUwMDNlbW91bnRfb3B0IFxcdTAwMjY9IH5FUk9GU19NT1VOVF8jI29wdGlvbilcXG4gI2RlZmluZSBzZXRfb3B0KG9wdCwgb3B0aW9uKVxcdCgob3B0KS1cXHUwMDNlbW91bnRfb3B0IHw9IEVST0ZTX01PVU5UXyMjb3B0aW9uKVxcbmRpZmYgLS1naXQgYS9mcy9lcm9mcy9zdXBlci5jIGIvZnMvZXJvZnMvc3VwZXIuY1xcbmluZGV4IDhlYWQxNjQ2ZjMyOTQuLjk1YzA5MGY0NzdmMTAgMTAwNjQ0XFxuLS0tIGEvZnMvZXJvZnMvc3VwZXIuY1xcbisrKyBiL2ZzL2Vyb2ZzL3N1cGVyLmNcXG5AQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxcbiBlbnVtIHtcXG4gXFx0T3B0X3VzZXJfeGF0dHIsIE9wdF9hY2wsIE9wdF9jYWNoZV9zdHJhdGVneSwgT3B0X2RheCwgT3B0X2RheF9lbnVtLFxcbiBcXHRPcHRfZGV2aWNlLCBPcHRfZG9tYWluX2lkLCBPcHRfZGlyZWN0aW8sIE9wdF9mc29mZnNldCwgT3B0X2lub2RlX3NoYXJlLFxcbi1cXHRPcHRfc291cmNlLFxcbitcXHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcXG5AQCAtNDE1LDYgKzQxNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVyX3NwZWMgZXJvZnNfZnNfcGFyYW1ldGVyc1tdID0ge1xcbiBcXHRmc3BhcmFtX3U2NChcXFwiZnNvZmZzZXRcXFwiLFxcdFxcdFxcdE9wdF9mc29mZnNldCksXFxuIFxcdGZzcGFyYW1fZmxhZyhcXFwiaW5vZGVfc2hhcmVcXFwiLFxcdFxcdE9wdF9pbm9kZV9zaGFyZSksXFxuIFxcdGZzcGFyYW1fZmlsZV9vcl9zdHJpbmcoXFxcInNvdXJjZVxcXCIsXFx0T3B0X3NvdXJjZSksXFxuK1xcdGZzcGFyYW1fZmxhZyhcXFwic3VwZXJibG9ja19zaGFyZVxcXCIsXFx0T3B0X3N1cGVyYmxvY2tfc2hhcmUpLFxcbiBcXHR7fVxcbiB9O1xcbiBcXG5AQCAtNTM2LDcgKzUzNyw4IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLFxcbiBcXHRcXHQrK3NiaS1cXHUwMDNlZGV2cy1cXHUwMDNlZXh0cmFfZGV2aWNlcztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgT3B0X2RvbWFpbl9pZDpcXG4tXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSkge1xcbitcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKSB7XFxuIFxcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCIlcyBvcHRpb24gbm90IHN1cHBvcnRlZFxcXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2Vuc2l0aXZlKHNiaS1cXHUwMDNlZG9tYWluX2lkKTtcXG5AQCAtNTYwLDYgKzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xcbiBcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBPcHRfc3VwZXJibG9ja19zaGFyZTpcXG4rXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpXFxuK1xcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCIlcyBvcHRpb24gbm90IHN1cHBvcnRlZFxcXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRzZXRfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIE9wdF9zb3VyY2U6XFxuIFxcdFxcdHJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTtcXG4gXFx0fVxcbkBAIC02NDgsNiArNjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdFxcdGVycm9yZmMoZmMsIFxcXCJkb21haW5faWQgaXMgbmVlZGVkIHdoZW4gaW5vZGVfaXNoYXJlIGlzIG9uXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuK1xcdGlmICghc2JpLVxcdTAwM2Vkb21haW5faWQgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSkge1xcbitcXHRcXHRlcnJvcmZjKGZjLCBcXFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIHN1cGVyYmxvY2tfc2hhcmUgaXMgb25cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFx0aWYgKHRlc3Rfb3B0KFxcdTAwMjZzYmktXFx1MDAzZW9wdCwgREFYX0FMV0FZUykgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBJTk9ERV9TSEFSRSkpIHtcXG4gXFx0XFx0ZXJyb3JmYyhmYywgXFxcIkZTREFYIGlzIG5vdCBhbGxvd2VkIHdoZW4gaW5vZGVfaXNoYXJlIGlzIG9uXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC03NzksNiArNzkxLDU1IEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbit7XFxuK1xcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XFxuK1xcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpuZXdfc2JpID0gZmMtXFx1MDAzZXNfZnNfaW5mbztcXG4rXFxuK1xcdGlmIChzYi1cXHUwMDNlc19pZmxhZ3MgXFx1MDAyNiBTQl9JX1JFVElSRUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIXNiaS1cXHUwMDNlZGlmMC5maWxlIHx8ICFuZXdfc2JpLVxcdTAwM2VkaWYwLmZpbGUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRpZiAoIXRlc3Rfb3B0KFxcdTAwMjZuZXdfc2JpLVxcdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0aWYgKCFzYmktXFx1MDAzZWRvbWFpbl9pZCB8fCAhbmV3X3NiaS1cXHUwMDNlZG9tYWluX2lkIHx8XFxuK1xcdCAgICBzdHJjbXAoc2JpLVxcdTAwM2Vkb21haW5faWQsIG5ld19zYmktXFx1MDAzZWRvbWFpbl9pZCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gZmlsZV9pbm9kZShzYmktXFx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVxcdTAwM2VkaWYwLmZpbGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBzYmktXFx1MDAzZWRpZjAuZnNvZmYgPT0gbmV3X3NiaS1cXHUwMDNlZGlmMC5mc29mZiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgc2JpLVxcdTAwM2VvcHQubW91bnRfb3B0ID09IG5ld19zYmktXFx1MDAzZW9wdC5tb3VudF9vcHQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIHNiaS1cXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXFx1MDAzZW9wdC5jYWNoZV9zdHJhdGVneTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZV9maWxlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4re1xcbitcXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtXFx1MDAzZXNfZnNfaW5mbztcXG4rXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmICghdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG4rXFx0XFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcXG4rXFxuK1xcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XFxuK1xcdGlmIChJU19FUlIoc2IpKVxcbitcXHRcXHRyZXR1cm4gUFRSX0VSUihzYik7XFxuK1xcbitcXHRpZiAoc2ItXFx1MDAzZXNfcm9vdCkge1xcbitcXHRcXHRlcm9mc19pbmZvKHNiLCBcXFwic2hhcmluZyBzdXBlcmJsb2NrIGZvciB0aGUgc2FtZSBiYWNraW5nIGZpbGVcXFwiKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXJyID0gZXJvZnNfZmNfZmlsbF9zdXBlcihzYiwgZmMpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdGRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHNiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHRcXHRzYi1cXHUwMDNlc19mbGFncyB8PSBTQl9BQ1RJVkU7XFxuK1xcdH1cXG4rXFxuK1xcdGZjLVxcdTAwM2Vyb290ID0gZGdldChzYi1cXHUwMDNlc19yb290KTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZXJvZnNfZmNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiB7XFxuIFxcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cXHUwMDNlc19mc19pbmZvO1xcbkBAIC03OTQsNyArODU1LDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcdFxcdFxcdGVycm9yZmMoZmMsIFxcXCJzb3VyY2UgaXMgdW5zdXBwb3J0ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cmV0dXJuIGdldF90cmVlX25vZGV2KGZjLCBlcm9mc19mY19maWxsX3N1cGVyKTtcXG4rXFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxcbkBAIC04MTIsNyArODczLDcgQEAgc3RhdGljIGludCBlcm9mc19mY19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuIFxcbiBcXHRcXHRpZiAoU19JU1JFRyhmaWxlX2lub2RlKHNiaS1cXHUwMDNlZGlmMC5maWxlKS1cXHUwMDNlaV9tb2RlKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgc2JpLVxcdTAwM2VkaWYwLmZpbGUtXFx1MDAzZWZfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZXJlYWRfZm9saW8pXFxuLVxcdFxcdFxcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XFxuK1xcdFxcdFxcdHJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTgyNSw2ICs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4gXFxuIFxcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XFxuIFxcbitcXHRpZiAoc2JpLVxcdTAwM2Vkb21haW5faWQgXFx1MDAyNlxcdTAwMjYgdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG4rXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4rXFxuIFxcdGlmIChuZXdfc2JpLVxcdTAwM2Vkb21haW5faWQpXFxuIFxcdFxcdGVyb2ZzX2luZm8oc2IsIFxcXCJpZ25vcmluZyByZWNvbmZpZ3VyYXRpb24gZm9yIGRvbWFpbl9pZC5cXFwiKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjI3Ljk5Njk3NDc5NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMDUyODc2Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVST0ZTX0ZTXCIsXG4gICAgXCJFUk9GU19GU19CQUNLRURfQllfRklMRVwiLFxuICAgIFwiRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVyb2ZzX2ZjX3BhcnNlX3BhcmFtXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZVwiLFxuICAgIFwiZXJvZnNfZmNfcmVjb25maWd1cmVcIixcbiAgICBcImVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlclwiLFxuICAgIFwiZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbW91bnQgb3B0aW9uIGBzdXBlcmJsb2NrX3NoYXJlYCBmb3IgdGhlIEVST0ZTIGZpbGVzeXN0ZW0sIHdoaWNoIGFsbG93cyBzaGFyaW5nIHRoZSBzdXBlcmJsb2NrIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBgZG9tYWluX2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIEVST0ZTIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBpc3N1ZXMgd2hlbiBtb3VudGluZy9yZW1vdW50aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlYmZlODUwODZiOWFlZGIxZDViMWI5ZDdhMWI3MTFjZjg4NzAzNWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMToxMToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXJvZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbmluZGV4IDc3NGU4YjIzNmQwOTkuLjUxN2M1MjYxNjNlMjMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Vyb2ZzLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RcbkBAIC0xMzEsMTIgKzEzMSwxNyBAQCBkZXZpY2U9JXMgICAgICAgICAgICAgIFNwZWNpZnkgYSBwYXRoIHRvIGFuIGV4dHJhIGRldmljZSB0byBiZSB1c2VkIHRvZ2V0aGVyLlxuIGRpcmVjdGlvICAgICAgICAgICAgICAgKEZvciBmaWxlLWJhY2tlZCBtb3VudHMpIFVzZSBkaXJlY3QgSS9PIHRvIGFjY2VzcyBiYWNraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIGFzeW5jaHJvbm91cyBJL08gd2lsbCBiZSBlbmFibGVkIGlmIHN1cHBvcnRlZC5cbiBkb21haW5faWQ9JXMgICAgICAgICAgIFNwZWNpZnkgYSB0cnVzdGVkIGRvbWFpbiBJRC4gRmlsZXN5c3RlbXMgc2hhcmluZyB0aGUgc2FtZVxuLSAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluIElEIGNhbiBzaGFyZSBwYWdlIGNhY2hlIGFjcm9zcyBtb3VudHMgd2hlbiBpbm9kZVxuLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZSBzaGFyaW5nIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvIG91dHB1dClcbisgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiBJRCBjYW4gc2hhcmUgcGFnZSBjYWNoZSBhY3Jvc3MgbW91bnRzIHdoZW5cbisgICAgICAgICAgICAgICAgICAgICAgIGlub2RlX3NoYXJlIGlzIGVuYWJsZWQsIGFuZCBzaGFyZSBzdXBlcmJsb2NrcyB3aGVuXG4rICAgICAgICAgICAgICAgICAgICAgICBzdXBlcmJsb2NrX3NoYXJlIGlzIGVuYWJsZWQuIChub3Qgc2hvd24gaW4gbW91bnRpbmZvXG4rICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpXG4gZnNvZmZzZXQ9JWxsdSAgICAgICAgICBTcGVjaWZ5IGJsb2NrLWFsaWduZWQgZmlsZXN5c3RlbSBvZmZzZXQgZm9yIHRoZSBwcmltYXJ5IGRldmljZS5cbiBpbm9kZV9zaGFyZSAgICAgICAgICAgIEVuYWJsZSBpbm9kZSBwYWdlIHNoYXJpbmcgZm9yIHRoaXMgZmlsZXN5c3RlbS4gIElub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwgY29udGVudCB3aXRoaW4gdGhlIHNhbWUgZG9tYWluIElEIGNhbiBzaGFyZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UgY2FjaGUuXG4rc3VwZXJibG9ja19zaGFyZSAgICAgICBTaGFyZSB0aGUgc3VwZXJibG9jayB3aGVuIHRoZSBzYW1lIGJhY2tpbmcgZmlsZSBpcyBtb3VudGVkXG4rICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25jZSB3aXRoIHRoZSBzYW1lIGRvbWFpbl9pZCBhbmQgY29tcGF0aWJsZVxuKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy4gIFJlbW91bnQgaXMgbm90IGFsbG93ZWQgb24gc2hhcmVkIHN1cGVyYmxvY2tzLlxuID09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG4gRmlsZS1iYWNrZWQgbW91bnRzXG5AQCAtMTU0LDYgKzE1OSwxMyBAQCBPbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFjY2VwdGVkIGFzIGJhY2tpbmcgZmlsZXM7IHRvIG1vdW50IGFuIGltYWdlIHRoYXRcbiByZXNpZGVzIG9uIGEgYmxvY2sgZGV2aWNlLCB1c2UgdGhlIHRyYWRpdGlvbmFsIGJsb2NrIGRldmljZSBtb3VudCBwYXRoXG4gaW5zdGVhZC5cbiBcbitXaGVuIGRvbWFpbl9pZCBhbmQgc3VwZXJibG9ja19zaGFyZSBhcmUgYm90aCBzcGVjaWZpZWQgYW5kIHRoZSBzYW1lXG4rYmFja2luZyBmaWxlIChpZGVudGlmaWVkIGJ5IGlub2RlIGFuZCBmc29mZnNldCkgaXMgbW91bnRlZCBtb3JlIHRoYW5cbitvbmNlIHdpdGggdGhlIHNhbWUgZG9tYWluX2lkIGFuZCBjb21wYXRpYmxlIG1vdW50IG9wdGlvbnMsIHRoZSBrZXJuZWxcbityZXVzZXMgdGhlIGV4aXN0aW5nIHN1cGVyYmxvY2sgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuXG4rXG4rUmVtb3VudCBpcyBub3QgYWxsb3dlZCBvbiBzaGFyZWQgc3VwZXJibG9ja3MuXG4rXG4gU3lzZnMgRW50cmllc1xuID09PT09PT09PT09PT1cbiBcbmRpZmYgLS1naXQgYS9mcy9lcm9mcy9pbnRlcm5hbC5oIGIvZnMvZXJvZnMvaW50ZXJuYWwuaFxuaW5kZXggNTdiZDIxODU5YzY1ZC4uODZkYTIxOWY4ZjRlYyAxMDA2NDRcbi0tLSBhL2ZzL2Vyb2ZzL2ludGVybmFsLmhcbisrKyBiL2ZzL2Vyb2ZzL2ludGVybmFsLmhcbkBAIC0xNTYsNiArMTU2LDcgQEAgc3RydWN0IGVyb2ZzX3NiX2luZm8ge1xuICNkZWZpbmUgRVJPRlNfTU9VTlRfREFYX05FVkVSXHRcdDB4MDAwMDAwODBcbiAjZGVmaW5lIEVST0ZTX01PVU5UX0RJUkVDVF9JT1x0XHQweDAwMDAwMTAwXG4gI2RlZmluZSBFUk9GU19NT1VOVF9JTk9ERV9TSEFSRVx0XHQweDAwMDAwMjAwXG4rI2RlZmluZSBFUk9GU19NT1VOVF9TVVBFUkJMT0NLX1NIQVJFXHQweDAwMDAwNDAwXG4gXG4gI2RlZmluZSBjbGVhcl9vcHQob3B0LCBvcHRpb24pXHQoKG9wdCktXHUwMDNlbW91bnRfb3B0IFx1MDAyNj0gfkVST0ZTX01PVU5UXyMjb3B0aW9uKVxuICNkZWZpbmUgc2V0X29wdChvcHQsIG9wdGlvbilcdCgob3B0KS1cdTAwM2Vtb3VudF9vcHQgfD0gRVJPRlNfTU9VTlRfIyNvcHRpb24pXG5kaWZmIC0tZ2l0IGEvZnMvZXJvZnMvc3VwZXIuYyBiL2ZzL2Vyb2ZzL3N1cGVyLmNcbmluZGV4IDhlYWQxNjQ2ZjMyOTQuLjk1YzA5MGY0NzdmMTAgMTAwNjQ0XG4tLS0gYS9mcy9lcm9mcy9zdXBlci5jXG4rKysgYi9mcy9lcm9mcy9zdXBlci5jXG5AQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGVyb2ZzX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpKVxuIGVudW0ge1xuIFx0T3B0X3VzZXJfeGF0dHIsIE9wdF9hY2wsIE9wdF9jYWNoZV9zdHJhdGVneSwgT3B0X2RheCwgT3B0X2RheF9lbnVtLFxuIFx0T3B0X2RldmljZSwgT3B0X2RvbWFpbl9pZCwgT3B0X2RpcmVjdGlvLCBPcHRfZnNvZmZzZXQsIE9wdF9pbm9kZV9zaGFyZSxcbi1cdE9wdF9zb3VyY2UsXG4rXHRPcHRfc291cmNlLCBPcHRfc3VwZXJibG9ja19zaGFyZSxcbiB9O1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3RhbnRfdGFibGUgZXJvZnNfcGFyYW1fY2FjaGVfc3RyYXRlZ3lbXSA9IHtcbkBAIC00MTUsNiArNDE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7XG4gXHRmc3BhcmFtX3U2NChcImZzb2Zmc2V0XCIsXHRcdFx0T3B0X2Zzb2Zmc2V0KSxcbiBcdGZzcGFyYW1fZmxhZyhcImlub2RlX3NoYXJlXCIsXHRcdE9wdF9pbm9kZV9zaGFyZSksXG4gXHRmc3BhcmFtX2ZpbGVfb3Jfc3RyaW5nKFwic291cmNlXCIsXHRPcHRfc291cmNlKSxcbitcdGZzcGFyYW1fZmxhZyhcInN1cGVyYmxvY2tfc2hhcmVcIixcdE9wdF9zdXBlcmJsb2NrX3NoYXJlKSxcbiBcdHt9XG4gfTtcbiBcbkBAIC01MzYsNyArNTM3LDggQEAgc3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXG4gXHRcdCsrc2JpLVx1MDAzZWRldnMtXHUwMDNlZXh0cmFfZGV2aWNlcztcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE9wdF9kb21haW5faWQ6XG4tXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkpIHtcbitcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSkpIHtcbiBcdFx0XHRlcnJvcmZjKGZjLCBcIiVzIG9wdGlvbiBub3Qgc3VwcG9ydGVkXCIsIGVyb2ZzX2ZzX3BhcmFtZXRlcnNbb3B0XS5uYW1lKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9zZW5zaXRpdmUoc2JpLVx1MDAzZWRvbWFpbl9pZCk7XG5AQCAtNTYwLDYgKzU2MiwxMiBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHNldF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgSU5PREVfU0hBUkUpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgT3B0X3N1cGVyYmxvY2tfc2hhcmU6XG4rXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEUpKVxuK1x0XHRcdGVycm9yZmMoZmMsIFwiJXMgb3B0aW9uIG5vdCBzdXBwb3J0ZWRcIiwgZXJvZnNfZnNfcGFyYW1ldGVyc1tvcHRdLm5hbWUpO1xuK1x0XHRlbHNlXG4rXHRcdFx0c2V0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIE9wdF9zb3VyY2U6XG4gXHRcdHJldHVybiBlcm9mc19mY19wYXJzZV9zb3VyY2UoZmMsIHBhcmFtKTtcbiBcdH1cbkBAIC02NDgsNiArNjU2LDEwIEBAIHN0YXRpYyBpbnQgZXJvZnNfZmNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4gXHRcdGVycm9yZmMoZmMsIFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4rXHRpZiAoIXNiaS1cdTAwM2Vkb21haW5faWQgXHUwMDI2XHUwMDI2IHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIFNVUEVSQkxPQ0tfU0hBUkUpKSB7XG4rXHRcdGVycm9yZmMoZmMsIFwiZG9tYWluX2lkIGlzIG5lZWRlZCB3aGVuIHN1cGVyYmxvY2tfc2hhcmUgaXMgb25cIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0aWYgKHRlc3Rfb3B0KFx1MDAyNnNiaS1cdTAwM2VvcHQsIERBWF9BTFdBWVMpIFx1MDAyNlx1MDAyNiB0ZXN0X29wdChcdTAwMjZzYmktXHUwMDNlb3B0LCBJTk9ERV9TSEFSRSkpIHtcbiBcdFx0ZXJyb3JmYyhmYywgXCJGU0RBWCBpcyBub3QgYWxsb3dlZCB3aGVuIGlub2RlX2lzaGFyZSBpcyBvblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtNzc5LDYgKzc5MSw1NSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4rXHRcdFx0XHQgICAgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuK3tcbitcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBFUk9GU19TQihzYik7XG4rXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqbmV3X3NiaSA9IGZjLVx1MDAzZXNfZnNfaW5mbztcbitcbitcdGlmIChzYi1cdTAwM2VzX2lmbGFncyBcdTAwMjYgU0JfSV9SRVRJUkVEKVxuK1x0XHRyZXR1cm4gMDtcbitcdGlmICghc2JpLVx1MDAzZWRpZjAuZmlsZSB8fCAhbmV3X3NiaS1cdTAwM2VkaWYwLmZpbGUpXG4rXHRcdHJldHVybiAwO1xuK1x0aWYgKCF0ZXN0X29wdChcdTAwMjZuZXdfc2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiAwO1xuK1x0aWYgKCFzYmktXHUwMDNlZG9tYWluX2lkIHx8ICFuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCB8fFxuK1x0ICAgIHN0cmNtcChzYmktXHUwMDNlZG9tYWluX2lkLCBuZXdfc2JpLVx1MDAzZWRvbWFpbl9pZCkpXG4rXHRcdHJldHVybiAwO1xuK1x0cmV0dXJuIGZpbGVfaW5vZGUoc2JpLVx1MDAzZWRpZjAuZmlsZSkgPT0gZmlsZV9pbm9kZShuZXdfc2JpLVx1MDAzZWRpZjAuZmlsZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgc2JpLVx1MDAzZWRpZjAuZnNvZmYgPT0gbmV3X3NiaS1cdTAwM2VkaWYwLmZzb2ZmIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIHNiaS1cdTAwM2VvcHQubW91bnRfb3B0ID09IG5ld19zYmktXHUwMDNlb3B0Lm1vdW50X29wdCBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBzYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5ID09IG5ld19zYmktXHUwMDNlb3B0LmNhY2hlX3N0cmF0ZWd5O1xuK31cbitcbitzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuK3tcbitcdHN0cnVjdCBlcm9mc19zYl9pbmZvICpzYmkgPSBmYy1cdTAwM2VzX2ZzX2luZm87XG4rXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiBnZXRfdHJlZV9ub2RldihmYywgZXJvZnNfZmNfZmlsbF9zdXBlcik7XG4rXG4rXHRzYiA9IHNnZXRfZmMoZmMsIGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlciwgc2V0X2Fub25fc3VwZXJfZmMpO1xuK1x0aWYgKElTX0VSUihzYikpXG4rXHRcdHJldHVybiBQVFJfRVJSKHNiKTtcbitcbitcdGlmIChzYi1cdTAwM2VzX3Jvb3QpIHtcbitcdFx0ZXJvZnNfaW5mbyhzYiwgXCJzaGFyaW5nIHN1cGVyYmxvY2sgZm9yIHRoZSBzYW1lIGJhY2tpbmcgZmlsZVwiKTtcbitcdH0gZWxzZSB7XG4rXHRcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcbitcdFx0aWYgKGVycikge1xuK1x0XHRcdGRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHNiKTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHRcdHNiLVx1MDAzZXNfZmxhZ3MgfD0gU0JfQUNUSVZFO1xuK1x0fVxuK1xuK1x0ZmMtXHUwMDNlcm9vdCA9IGRnZXQoc2ItXHUwMDNlc19yb290KTtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiB7XG4gXHRzdHJ1Y3QgZXJvZnNfc2JfaW5mbyAqc2JpID0gZmMtXHUwMDNlc19mc19pbmZvO1xuQEAgLTc5NCw3ICs4NTUsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdFx0XHRlcnJvcmZjKGZjLCBcInNvdXJjZSBpcyB1bnN1cHBvcnRlZFwiKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0fVxuLVx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuK1x0XHRyZXR1cm4gZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZShmYyk7XG4gXHR9XG4gXG4gXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxuQEAgLTgxMiw3ICs4NzMsNyBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdFx0aWYgKFNfSVNSRUcoZmlsZV9pbm9kZShzYmktXHUwMDNlZGlmMC5maWxlKS1cdTAwM2VpX21vZGUpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgc2JpLVx1MDAzZWRpZjAuZmlsZS1cdTAwM2VmX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlcmVhZF9mb2xpbylcbi1cdFx0XHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xuK1x0XHRcdHJldHVybiBlcm9mc19mY19nZXRfdHJlZV9maWxlKGZjKTtcbiBcdH1cbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTgyNSw2ICs4ODYsOSBAQCBzdGF0aWMgaW50IGVyb2ZzX2ZjX3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcbiBcdERCR19CVUdPTighc2JfcmRvbmx5KHNiKSk7XG4gXG4rXHRpZiAoc2JpLVx1MDAzZWRvbWFpbl9pZCBcdTAwMjZcdTAwMjYgdGVzdF9vcHQoXHUwMDI2c2JpLVx1MDAzZW9wdCwgU1VQRVJCTE9DS19TSEFSRSkpXG4rXHRcdHJldHVybiAtRUJVU1k7XG4rXG4gXHRpZiAobmV3X3NiaS1cdTAwM2Vkb21haW5faWQpXG4gXHRcdGVyb2ZzX2luZm8oc2IsIFwiaWdub3JpbmcgcmVjb25maWd1cmF0aW9uIGZvciBkb21haW5faWQuXCIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MjcuOTk2OTc2MDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA2Njc0MTg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFUk9GUyBTdXBlcmJsb2NrIFNoYXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaW50cm9kdWNpbmcgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBtb3VudCBvcHRpb24gZm9yIHRoZSBgZXJvZnNgIGZpbGVzeXN0ZW0uIFRoZSBpZGVhIGhlcmUgaXMgdG8gYWxsb3cgdGhlIHN1cGVyYmxvY2sgdG8gYmUgc2hhcmVkIHdoZW4gdGhlIHNhbWUgYmFja2luZyBmaWxlIGlzIG1vdW50ZWQgbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhleSBzaGFyZSB0aGUgc2FtZSBgZG9tYWluX2lkYCBhbmQgY29tcGF0aWJsZSBvcHRpb25zLiBUaGF0J3MgYSByZWFzb25hYmxlIG9wdGltaXphdGlvbiwgZXNwZWNpYWxseSBpbiBzY2VuYXJpb3Mgd2l0aCBtdWx0aXBsZSBtb3VudHMgb2YgdGhlIHNhbWUgaW1hZ2UuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGNoYW5nZXM6XG5cbiogICAqKkRvY3VtZW50YXRpb246KiogVXBkYXRlcyB0byBgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9lcm9mcy5yc3RgIGFyZSBleHBlY3RlZC4gQWx3YXlzIGEgZ29vZCBzaWduIG9mIHRob3JvdWdobmVzcy5cbiogICAqKkhlYWRlcjoqKiBBZGRpbmcgYEVST0ZTX01PVU5UX1NVUEVSQkxPQ0tfU0hBUkVgIHRvIGBmcy9lcm9mcy9pbnRlcm5hbC5oYCBpcyBzdHJhaWdodGZvcndhcmQgLSB0aGUgbWFjcm8ncyBuZWNlc3NhcnkuXG4qICAgKipDb3JlIExvZ2ljOioqIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGZzL2Vyb2ZzL3N1cGVyLmNgLiBXZSdyZSBhZGRpbmcgYE9wdF9zdXBlcmJsb2NrX3NoYXJlYCB0byBgZXJvZnNfZnNfcGFyYW1ldGVyc2AsIHRoYXQncyB0aGUgcGFyc2luZyBzdHJ1Y3R1cmUuIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgbm93IGhhbmRsZXMgdGhlIGBzdXBlcmJsb2NrX3NoYXJlYCBvcHRpb24gaXRzZWxmLiBJbiBgZXJvZnNfZmNfZmlsbF9zdXBlcmAsIHRoZXJlJ3MgYSB2YWxpZGF0aW9uIGNoZWNrIHRoYXQgdGhlIGBkb21haW5faWRgIGlzIHByZXNlbnQgd2hlbiB0aGUgc2hhcmluZyBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlJ3JlIGFsc28gZ2V0dGluZyBmdW5jdGlvbnMgZm9yIHRlc3RpbmcgaWYgd2UgY2FuIHNoYXJlIGEgc3VwZXJibG9jayB1c2luZyBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgYW5kIGdyYWJiaW5nIGVpdGhlciB0aGUgc2hhcmVkIG9yIGEgbmV3IG9uZSwgdmlhIGBlcm9mc19mY19nZXRfdHJlZV9maWxlYCB1c2luZyBgc2dldF9mY2AuIGBlcm9mc19mY19nZXRfdHJlZWAgbm93IHVzZXMgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgIHJhdGhlciB0aGFuIGBnZXRfdHJlZV9ub2RldmAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgc3RydWN0dXJhbCBjaGFuZ2UuIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAgbm93IHJldHVybnMgYC1FQlVTWWAgd2hlbiBzdXBlcmJsb2NrIHNoYXJpbmcgaXMgYWN0aXZlLCB3aGljaCBtYWtlcyBzZW5zZSAtIHlvdSBzaG91bGRuJ3QgYmUgcmVjb25maWd1cmluZyBzb21ldGhpbmcgdGhhdCBpcyBzaGFyZWQuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBjb3JlIG1vdW50IGxvZ2ljIG9mIGBlcm9mc2AuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMuIEl0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHN0YWJpbGl0eSBhbmQgdG8gaWRlbnRpZnkgYW55IGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGFyaXNlIHdpdGggbXVsdGlwbGUgbW91bnRzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgZmVhdHVyZS4gV2Uga25vdyBpdCBjaGVja3MgYElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKWAsIHdoaWNoIGltcGxpZXMgdGhhdCBgQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFYCBpcyBtYW5kYXRvcnkuIE9idmlvdXNseSwgYENPTkZJR19FUk9GU19GU2AgaXMgYWxzbyByZXF1aXJlZCBmb3IgdGhlIGBlcm9mc2AgZmlsZXN5c3RlbSBpdHNlbGYuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYGZzL2Vyb2ZzL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBXZSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTozNS4wNjM3MjA0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxNDMxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvS2NvbmZpZz04NT1jb25maWcgRVJPRlNfRlNfU0VDVVJJVFlcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctOTctXFxuZnMvZXJvZnMvS2NvbmZpZzo5ODpjb25maWcgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVcXG5mcy9lcm9mcy9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkZpbGUtYmFja2VkIEVST0ZTIGZpbGVzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MzUuMTA5ODY4NTA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcyNjI1NjIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBFUk9GUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHNvbWUgYXNwZWN0IG9mIEVST0ZTIGlzIGNvbmZpZ3VyZWQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBFUk9GUyBmaWxlc3lzdGVtIGRpcmVjdG9yeS4gTGV0J3Mgc3RhcnQgd2l0aCBgZnMvZXJvZnMvS2NvbmZpZ2AgYW5kLCBnaXZlbiBteSBnZW5lcmFsIGZhbWlsaWFyaXR5IHdpdGggdGhlc2UgZmlsZXMsIEknbGwgc3RhcnQgbG9va2luZyBhcm91bmQgbGluZSA5OC4gVGhhdCBmZWVscyBsaWtlIGEgcmVhc29uYWJsZSBwb2ludCB0byBiZWdpbjsgdGhhdCBsaW5lIGxpa2VseSBjb3ZlcnMgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIG9wdGlvbiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5LiBUaW1lIHRvIGdldCBteSBleWVzIG9uIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjM3LjgzNjEyNzA3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0ICBTZWN1cml0eSBsYWJlbHMgcHJvdmlkZSBhbiBhY2Nlc3MgY29udHJvbCBmYWNpbGl0eSB0byBzdXBwb3J0IExpbnV4XFxuICA5MTpcXHRcXHQgIFNlY3VyaXR5IE1vZGVscyAoTFNNcykgYWNjZXB0ZWQgYnkgQXBwQXJtb3IsIFNFTGludXgsIFNtYWNrIGFuZCBUT01PWU9cXG4gIDkyOlxcdFxcdCAgTGludXguIFRoaXMgb3B0aW9uIGVuYWJsZXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsZXIgZm9yIGZpbGVcXG4gIDkzOlxcdFxcdCAgc2VjdXJpdHkgbGFiZWxzIGluIHRoZSBlcm9mcyBmaWxlc3lzdGVtLCBzbyB0aGF0IGl0IHJlcXVpcmVzIGVuYWJsaW5nXFxuICA5NDpcXHRcXHQgIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBpbiBhZHZhbmNlLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRcXHQgIElmIHlvdSBhcmUgbm90IHVzaW5nIGEgc2VjdXJpdHkgbW9kdWxlLCBzYXkgTi5cXG4gIDk3OlxcdFxcbiAgOTg6XFx0Y29uZmlnIEVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXFxuICA5OTpcXHRcXHRib29sIFxcXCJGaWxlLWJhY2tlZCBFUk9GUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuIDEwMDpcXHRcXHRkZXBlbmRzIG9uIEVST0ZTX0ZTXFxuIDEwMTpcXHRcXHRkZWZhdWx0IHlcXG4gMTAyOlxcdFxcdGhlbHBcXG4gMTAzOlxcdFxcdCAgVGhpcyBhbGxvd3MgRVJPRlMgdG8gdXNlIGZpbGVzeXN0ZW0gaW1hZ2UgZmlsZXMgZGlyZWN0bHksIHdpdGhvdXRcXG4gMTA0OlxcdFxcdCAgdGhlIGludGVyY2Vzc2lvbiBvZiBsb29wYmFjayBibG9jayBkZXZpY2VzIG9yIGxpa2V3aXNlLiBJdCBpc1xcbiAxMDU6XFx0XFx0ICBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjb250YWluZXIgaW1hZ2VzIHdpdGggbnVtZXJvdXMgYmxvYnMgYW5kXFxuIDEwNjpcXHRcXHQgIG90aGVyIHNhbmRib3hlcywgd2hlcmUgbG9vcCBkZXZpY2VzIGJlaGF2ZSBpbnRyaWNhdGVseS4gIEl0IGNhbiBhbHNvXFxuIDEwNzpcXHRcXHQgIGJlIHVzZWQgdG8gc2ltcGxpZnkgZXJyb3ItcHJvbmUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiB1bm5lY2Vzc2FyeVxcbiAxMDg6XFx0XFx0ICB2aXJ0dWFsIGJsb2NrIGRldmljZXMuXFxuIDEwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6MzcuODM2MjAwMTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1OTQyMDY3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRVJPRlMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMsIGBFUk9GU19GU2AgYW5kIGBFUk9GU19GU19CQUNLRURfQllfRklMRWAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIEFQSSBlbnRyeSBwb2ludHMgYmFzZWQgb24gdGhlIGtlcm5lbCBpbnN0cnVjdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29tcGxpYW50IHdpdGguXG5cbkkndmUgaWRlbnRpZmllZCBzZXZlcmFsIGtleSBzeW1ib2xzLiBJJ3ZlIGdvdCBgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyYCwgd2hpY2ggaXMgc3RhdGljIGJ1dCBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgc2dldF9mY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBleHBvcnRlZCBpZiBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgYnV0IHRoZW4gSSByZWNhbGwgaXQncyBzdGF0aWMuIFN0aWxsLCBgc2dldF9mY2AgY2FsbHMgaXQsIHNvIEkgc2hvdWxkIHNlZSBpZiBpdHMgaW5saW5lZCAtIHdoaWNoIGNhbid0IGJlIGFzIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci5cblxuVGhlbiwgdGhlcmUncyBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBJdCdzIGNhbGxlZCBmcm9tIGBlcm9mc19mY19nZXRfdHJlZWAsIHdoaWNoIGlzIGFjdHVhbGx5IHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrIGZvciB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2AuIE1ha2VzIHNlbnNlLCBidXQgc3RpbGwgc3RhdGljLiBUaGVuIEkgaGF2ZSBgZXJvZnNfZmNfZ2V0X3RyZWVgIGl0c2VsZiwgd2hpY2gsIGFnYWluLCBpcyBzdGF0aWMsIGJ1dCBpdCAqaXMqIHRoZSBgZ2V0X3RyZWVgIGNhbGxiYWNrLiBTaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlcm9mc19mY19wYXJzZV9wYXJhbWAgYW5kIGBlcm9mc19mY19maWxsX3N1cGVyYCwgYW5kIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAuIFN0YXRpYywgc3RhdGljLCBzdGF0aWMhXG5cbk9rYXksIHNvIGFsbCBvZiB0aGVzZSBpbml0aWFsIHN5bWJvbHMgYXJlIHN0YXRpYy4gVGhpcyBtYWtlcyBtZSBjdXJpb3VzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGZzL2Vyb2ZzL3N1cGVyLmNgIG5vdyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlLiBJIHdhbnQgdG8gc2VlIGlmIGFueSBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIHdyYXAgb3IgcmVsYXRlIHRvIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0J2xsIGJlIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyODIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTo0My45OTU2MjM0NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NTM5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXJvZnNfZmNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvc3VwZXIuYz00MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyBlcm9mc19mc19wYXJhbWV0ZXJzW10gPSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTQyMS1cXG5mcy9lcm9mcy9zdXBlci5jOjQyMjpzdGF0aWMgYm9vbCBlcm9mc19mY19zZXRfZGF4X21vZGUoc3RydWN0IGZzX2NvbnRleHQgKmZjLCB1bnNpZ25lZCBpbnQgbW9kZSlcXG5mcy9lcm9mcy9zdXBlci5jLTQyMy17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTQ0Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjQ0MzpzdGF0aWMgaW50IGVyb2ZzX2ZjX3BhcnNlX3NvdXJjZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuZnMvZXJvZnMvc3VwZXIuYy00NDQtXFx0XFx0XFx0XFx0IHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy00NzYtXFxuZnMvZXJvZnMvc3VwZXIuYzo0Nzc6c3RhdGljIGludCBlcm9mc19mY19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsXFxuZnMvZXJvZnMvc3VwZXIuYy00NzgtXFx0XFx0XFx0XFx0c3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTUxMi1cXHRjYXNlIE9wdF9kYXg6XFxuZnMvZXJvZnMvc3VwZXIuYzo1MTM6XFx0XFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIEVST0ZTX01PVU5UX0RBWF9BTFdBWVMpKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNTE0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy01MTYtXFx0Y2FzZSBPcHRfZGF4X2VudW06XFxuZnMvZXJvZnMvc3VwZXIuYzo1MTc6XFx0XFx0aWYgKCFlcm9mc19mY19zZXRfZGF4X21vZGUoZmMsIHJlc3VsdC51aW50XzMyKSlcXG5mcy9lcm9mcy9zdXBlci5jLTUxOC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtNTcxLVxcdGNhc2UgT3B0X3NvdXJjZTpcXG5mcy9lcm9mcy9zdXBlci5jOjU3MjpcXHRcXHRyZXR1cm4gZXJvZnNfZmNfcGFyc2Vfc291cmNlKGZjLCBwYXJhbSk7XFxuZnMvZXJvZnMvc3VwZXIuYy01NzMtXFx0fVxcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYz02Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBlcm9mc19leHBvcnRfb3BzID0ge1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy02NDMtXFxuZnMvZXJvZnMvc3VwZXIuYzo2NDQ6c3RhdGljIGludCBlcm9mc19mY19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9lcm9mcy9zdXBlci5jLTY0NS17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTc5My1cXG5mcy9lcm9mcy9zdXBlci5jOjc5NDpzdGF0aWMgaW50IGVyb2ZzX2ZjX3Rlc3RfZmlsZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2Vyb2ZzL3N1cGVyLmMtNzk1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTgxNC1cXG5mcy9lcm9mcy9zdXBlci5jOjgxNTpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODE2LXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODIxLVxcdGlmICghdGVzdF9vcHQoXFx1MDAyNnNiaS1cXHUwMDNlb3B0LCBTVVBFUkJMT0NLX1NIQVJFKSlcXG5mcy9lcm9mcy9zdXBlci5jOjgyMjpcXHRcXHRyZXR1cm4gZ2V0X3RyZWVfbm9kZXYoZmMsIGVyb2ZzX2ZjX2ZpbGxfc3VwZXIpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODIzLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6ODI0OlxcdHNiID0gc2dldF9mYyhmYywgZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyLCBzZXRfYW5vbl9zdXBlcl9mYyk7XFxuZnMvZXJvZnMvc3VwZXIuYy04MjUtXFx0aWYgKElTX0VSUihzYikpXFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTgzMC1cXHR9IGVsc2Uge1xcbmZzL2Vyb2ZzL3N1cGVyLmM6ODMxOlxcdFxcdGVyciA9IGVyb2ZzX2ZjX2ZpbGxfc3VwZXIoc2IsIGZjKTtcXG5mcy9lcm9mcy9zdXBlci5jLTgzMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg0Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjg0MzpzdGF0aWMgaW50IGVyb2ZzX2ZjX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9lcm9mcy9zdXBlci5jLTg0NC17XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg1Ny1cXHRcXHR9XFxuZnMvZXJvZnMvc3VwZXIuYzo4NTg6XFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODU5LVxcdH1cXG5mcy9lcm9mcy9zdXBlci5jLTg2MC1cXG5mcy9lcm9mcy9zdXBlci5jOjg2MTpcXHRyZXQgPSBnZXRfdHJlZV9iZGV2X2ZsYWdzKGZjLCBlcm9mc19mY19maWxsX3N1cGVyLFxcbmZzL2Vyb2ZzL3N1cGVyLmMtODYyLVxcdFxcdElTX0VOQUJMRUQoQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFKSA/XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTg3NS1cXHRcXHQgICAgc2JpLVxcdTAwM2VkaWYwLmZpbGUtXFx1MDAzZWZfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZXJlYWRfZm9saW8pXFxuZnMvZXJvZnMvc3VwZXIuYzo4NzY6XFx0XFx0XFx0cmV0dXJuIGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGUoZmMpO1xcbmZzL2Vyb2ZzL3N1cGVyLmMtODc3LVxcdH1cXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODgwLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6ODgxOnN0YXRpYyBpbnQgZXJvZnNfZmNfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtODgyLXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9OTMzPXN0YXRpYyB2b2lkIGVyb2ZzX3NiX2ZyZWUoc3RydWN0IGVyb2ZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQyLVxcbmZzL2Vyb2ZzL3N1cGVyLmM6OTQzOnN0YXRpYyB2b2lkIGVyb2ZzX2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2Vyb2ZzL3N1cGVyLmMtOTQ0LXtcXG4tLVxcbmZzL2Vyb2ZzL3N1cGVyLmM9OTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGVyb2ZzX2NvbnRleHRfb3BzID0ge1xcbmZzL2Vyb2ZzL3N1cGVyLmM6OTU3OlxcdC5wYXJzZV9wYXJhbVxcdD0gZXJvZnNfZmNfcGFyc2VfcGFyYW0sXFxuZnMvZXJvZnMvc3VwZXIuYzo5NTg6XFx0LmdldF90cmVlICAgICAgID0gZXJvZnNfZmNfZ2V0X3RyZWUsXFxuZnMvZXJvZnMvc3VwZXIuYzo5NTk6XFx0LnJlY29uZmlndXJlICAgID0gZXJvZnNfZmNfcmVjb25maWd1cmUsXFxuZnMvZXJvZnMvc3VwZXIuYzo5NjA6XFx0LmZyZWVcXHRcXHQ9IGVyb2ZzX2ZjX2ZyZWUsXFxuZnMvZXJvZnMvc3VwZXIuYy05NjEtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6NDQuMDM5MjgxNjM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzNzQ2OTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVST0ZTIEZpbGVzeXN0ZW0gQ29udGV4dCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgRVJPRlMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGFuZCwgYXMgZXhwZWN0ZWQsIHRob3NlIGNvcmUgZnVuY3Rpb25zIGFyZSBhbGwgKnN0YXRpYyouIEJ1dCB0aGF0J3Mgbm90IHRoZSB3aG9sZSBzdG9yeS4gVGhleSdyZSBzdGlsbCB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciBkZWFsaW5nIHdpdGggdGhlIGZpbGVzeXN0ZW0gY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgZXJvZnNfZmNfcGFyc2VfcGFyYW1gLCBgZXJvZnNfZmNfZ2V0X3RyZWVgLCBhbmQgYGVyb2ZzX2ZjX3JlY29uZmlndXJlYCBzdGFuZGluZyBvdXQgYXMgdGhlIGtleSBwbGF5ZXJzIGZvciBtb3VudCBhbmQgcmVtb3VudCBvcGVyYXRpb25zLiBUaGVuLCBvZiBjb3Vyc2UsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgIGFuZCBgZXJvZnNfZmNfZ2V0X3RyZWVfZmlsZWAgYXJlIHJpZ2h0IHRoZXJlIGF0IHRoZSBoZWFydCBvZiB0aGlzIHBhdGNoLCBjcnVjaWFsIGZvciB0aGUgZmlsZS1yZWxhdGVkIG9wZXJhdGlvbnMuIFRoZSBzdGF0aWMgbmF0dXJlIG1lYW5zIHRoZXkncmUgbGlrZWx5IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IGV4dGVybmFsIHVzZSBhbmQgbWF5IGJlIG9wdGltaXplZCBtb3JlIGFnZ3Jlc3NpdmVseS4gRXZlbiB0aG91Z2ggdGhleSdyZSAqc3RhdGljKiwgSSdtIG5vdGluZyB0aGV5J3JlICpub3QqIGlubGluZWQsIGVpdGhlciBiZWNhdXNlIHRoZXkncmUgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBmdW5jdGlvbiBwb2ludGVycyBvciB0aGV5J3JlIGp1c3QgdG9vIGRhcm4gYmlnIHRvIG1ha2UgaW5saW5pbmcgd29ydGh3aGlsZS5cblxuU28sIGxldCdzIGtlZXAgZGlnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG5vbi1zdGF0aWMuIEFoLCBoZXJlIHdlIGdvLCBgZXJvZnNfaW5pdF9mc19jb250ZXh0YCBpcyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgd2FzIGxvb2tpbmcgZm9yLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzZXR0aW5nIHVwIGBlcm9mc19jb250ZXh0X29wc2AuIFRoYXQncyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBzdGF0aWMgZnVuY3Rpb25zIEkndmUgYWxyZWFkeSBpZGVudGlmaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTcwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjQ4LjY3Njc1MzczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyMzk0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXJvZnNfaW5pdF9mc19jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvc3VwZXIuYz05NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZXJvZnNfY29udGV4dF9vcHMgPSB7XFxuLS1cXG5mcy9lcm9mcy9zdXBlci5jLTk2Mi1cXG5mcy9lcm9mcy9zdXBlci5jOjk2MzpzdGF0aWMgaW50IGVyb2ZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXJvZnMvc3VwZXIuYy05NjQte1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYz0xMDIzPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBlcm9mc19mc190eXBlID0ge1xcbi0tXFxuZnMvZXJvZnMvc3VwZXIuYy0xMDI1LVxcdC5uYW1lICAgICAgICAgICA9IFxcXCJlcm9mc1xcXCIsXFxuZnMvZXJvZnMvc3VwZXIuYzoxMDI2OlxcdC5pbml0X2ZzX2NvbnRleHQgPSBlcm9mc19pbml0X2ZzX2NvbnRleHQsXFxuZnMvZXJvZnMvc3VwZXIuYy0xMDI3LVxcdC5raWxsX3NiICAgICAgICA9IGVyb2ZzX2tpbGxfc2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjQ4LjcxODk5NzU0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI1MTEwMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBFUk9GUyBGaWxlc3lzdGVtIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEVST0ZTIGNvZGUgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBlcm9mc19pbml0X2ZzX2NvbnRleHRgIGlzIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IHdoYXQgKmlzKiBhY3R1YWxseSBleHBvcnRlZCB0byB0aGUgcmVzdCBvZiB0aGUga2VybmVsLiBBaCwgcmlnaHQsIGBlcm9mc19mc190eXBlYCBpcyBzdGF0aWMgYnV0IHJlZ2lzdGVyZWQgdGhyb3VnaCBgaW5pdF9lcm9mc19mc2AuIFNvLCBlc3NlbnRpYWxseSBtb3N0IG9mIHRoZSBzdHVmZiBpbiBgc3VwZXIuY2AgaXMgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gU2luY2UgdGhleSdyZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBub3QgaW5saW5lZCwgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIHRoZW0gYXMgdGhlIGtleSBlbnRyeSBwb2ludHM7IHRoZXknbGwgYmUgdGhlIG9uZXMgYXZhaWxhYmxlLlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIEkgc2VlIGBDT05GSUdfRVJPRlNfRlNgLCB0aGUgb2J2aW91cyBvbmUuIFRoZW4gdGhlcmUncyBgQ09ORklHX0VST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFYCwgYW5kIGZpbmFsbHkgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBsYXN0IG9uZSBtZW50aW9uZWQgaW4gYSBwYXRjaCB3aXRoIHRoZSBjb25kaXRpb246IGAhSVNfRU5BQkxFRChDT05GSUdfRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRSkgXHUwMDI2XHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19FUk9GU19GU19CQUNLRURfQllfRklMRSlgLiBBbHJpZ2h0LCBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYENPTkZJR19FUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMzMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMToxMTo1My4xNDQxMTExNTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTg2MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Vyb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXJvZnMvS2NvbmZpZz0xOTM9Y29uZmlnIEVST0ZTX0ZTX1BDUFVfS1RIUkVBRF9ISVBSSVxcbi0tXFxuZnMvZXJvZnMvS2NvbmZpZy0yMDItXFxuZnMvZXJvZnMvS2NvbmZpZzoyMDM6Y29uZmlnIEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVcXG5mcy9lcm9mcy9LY29uZmlnLTIwNC1cXHRib29sIFxcXCJFUk9GUyBwYWdlIGNhY2hlIHNoYXJlIHN1cHBvcnQgKGV4cGVyaW1lbnRhbClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAxOjExOjUzLjE4ODMwMjAyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzgxODM0NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVST0ZTIEZpbGVzeXN0ZW0gU3VwZXJibG9jayBTaGFyaW5nOiBBIFJldmlldyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgRVJPRlNfRlNfUEFHRV9DQUNIRV9TSEFSRWAganVtcHMgb3V0IGF0IG1lIGFzIGEga2V5IGZhY3Rvci4gSXQncyBkZWZpbml0ZWx5IHJlbGV2YW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkZWx2ZSBkZWVwZXIuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHF1aWNrbHkuIFdlIGhhdmU6IGBFUk9GU19GU2AsIG9mIGNvdXJzZS4gVGhlbiBgRVJPRlNfRlNfQkFDS0VEX0JZX0ZJTEVgLCBhbmQgbm93IHRoaXMgbmV3IG9uZSwgYEVST0ZTX0ZTX1BBR0VfQ0FDSEVfU0hBUkVgLlxuXG5Ob3csIGZvciBzcGVjaWZpYyBzeW1ib2xzIHRvIGFuYWx5emUuIEkgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBlcm9mc19mY19wYXJzZV9wYXJhbWAsIGBlcm9mc19mY19nZXRfdHJlZWAsIGBlcm9mc19mY19yZWNvbmZpZ3VyZWAsIGBlcm9mc19mY190ZXN0X2ZpbGVfc3VwZXJgLCBhbmQgYGVyb2ZzX2ZjX2dldF90cmVlX2ZpbGVgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSBsaWtlIHRoZSBjcml0aWNhbCBwaWVjZXMgd2hlcmUgdGhpcyBuZXcgYHN1cGVyYmxvY2tfc2hhcmVgIG9wdGlvbiwgdGhlIG9uZSB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcsIHdvdWxkIGNvbWUgaW50byBwbGF5LlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIG5ldyBtb3VudCBvcHRpb24sIGBzdXBlcmJsb2NrX3NoYXJlYCwgZm9yIHRoZSBFUk9GUyBmaWxlc3lzdGVtLiBXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCBpZiB5b3UgbW91bnQgdGhlIHNhbWUgYmFja2luZyBmaWxlIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgYGRvbWFpbl9pZGAsIHlvdSBjYW4gc2hhcmUgdGhlIHN1cGVyYmxvY2suIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHRoZSBjb3JlIG1vdW50aW5nIGxvZ2ljIG9mIEVST0ZTLCBpdCdzIG5vdCB0cml2aWFsLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgY291bGQgYmUgYSBicmVlZGluZyBncm91bmQgZm9yIHN1YnRsZSBtZW1vcnkgZXJyb3JzLiBTaGFyaW5nIHN1cGVyYmxvY2tzIGNhbiBiZSB0cmlja3kuIFRoaXMgbmVlZHMgZnV6emluZywgYSAqbG90KiBvZiBmdXp6aW5nLCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucywgb3IgYW55IG90aGVyIGlzc3VlcyB0aGF0IGNvdWxkIGNyb3AgdXAgZHVyaW5nIHRoZSBtb3VudCBhbmQgcmVtb3VudCBwcm9jZXNzZXMuIFRoZXNlIGtpbmRzIG9mIGNoYW5nZXMgYXJlIG9mdGVuIHdoZXJlIHRob3NlIGJ1Z3MgbHVyay5cblxuUmlnaHQsIEknbSBnb2luZyB0byBub3RlIHRoaXMgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk3MywiT3V0cHV0VG9rZW5zIjoyMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDE6MTE6NTguOTcwMTQwMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTcwMjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVJPRlNfRlNcIixcbiAgICBcIkVST0ZTX0ZTX0JBQ0tFRF9CWV9GSUxFXCIsXG4gICAgXCJFUk9GU19GU19QQUdFX0NBQ0hFX1NIQVJFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXJvZnNfZmNfcGFyc2VfcGFyYW1cIixcbiAgICBcImVyb2ZzX2ZjX2dldF90cmVlXCIsXG4gICAgXCJlcm9mc19mY19yZWNvbmZpZ3VyZVwiLFxuICAgIFwiZXJvZnNfZmNfdGVzdF9maWxlX3N1cGVyXCIsXG4gICAgXCJlcm9mc19mY19nZXRfdHJlZV9maWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtb3VudCBvcHRpb24gYHN1cGVyYmxvY2tfc2hhcmVgIGZvciB0aGUgRVJPRlMgZmlsZXN5c3RlbSwgd2hpY2ggYWxsb3dzIHNoYXJpbmcgdGhlIHN1cGVyYmxvY2sgd2hlbiB0aGUgc2FtZSBiYWNraW5nIGZpbGUgaXMgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIGBkb21haW5faWRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgbW91bnQgbG9naWMgb2YgRVJPRlMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIG90aGVyIGlzc3VlcyB3aGVuIG1vdW50aW5nL3JlbW91bnRpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[1] Phase: Succeeded StartedAt: 2026-08-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 01:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 01:12:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2] Phase: Succeeded StartedAt: 2026-08-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 02:05:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 02:05:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 01:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:12:11 +0000 UTC FinishedAt: 2026-08-02 01:12:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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-workflowrzbcb/series-workflowrzbcb-convert-artifact-3064689908/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:12:21 +0000 UTC FinishedAt: 2026-08-02 01:34:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:12:21 +0000 UTC FinishedAt: 2026-08-02 01:34:09 +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:*565e8aa3-922d-4118-b010-4690b9aa4253,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-workflowrzbcb/series-workflowrzbcb-convert-artifact-3064689908/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": "952c9063-662d-4743-b121-3268d786b0b8", "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-workflowrzbcb/series-workflowrzbcb-build-action-2958383602/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:12:21 +0000 UTC FinishedAt: 2026-08-02 01:33:59 +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:*565e8aa3-922d-4118-b010-4690b9aa4253,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-workflowrzbcb/series-workflowrzbcb-convert-artifact-3064689908/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": "952c9063-662d-4743-b121-3268d786b0b8", "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-workflowrzbcb/series-workflowrzbcb-build-action-2958383602/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:09 +0000 UTC FinishedAt: 2026-08-02 01:34:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:09 +0000 UTC FinishedAt: 2026-08-02 01:34:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:09 +0000 UTC FinishedAt: 2026-08-02 01:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:09 +0000 UTC FinishedAt: 2026-08-02 01:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-workflowrzbcb/series-workflowrzbcb-convert-artifact-939278003/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:19 +0000 UTC FinishedAt: 2026-08-02 02:05:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","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-02 01:34:19 +0000 UTC FinishedAt: 2026-08-02 02:05:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*952c9063-662d-4743-b121-3268d786b0b8,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-workflowrzbcb/series-workflowrzbcb-build-action-2958383602/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": false },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-08-02 02:05:29 +0000 UTC FinishedAt: 2026-08-02 02:05:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzbcb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"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":["erofs_fc_parse_param","erofs_fc_get_tree","erofs_fc_reconfigure","erofs_fc_test_file_super","erofs_fc_get_tree_file"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EROFS_FS","EROFS_FS_BACKED_BY_FILE","EROFS_FS_PAGE_CACHE_SHARE"],"series_id":"dec700c7-6019-4586-8ec3-86d31b6d09b5","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-08-02 02:05:29 +0000 UTC FinishedAt: 2026-08-02 02:05:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}