Name: series-workflowvfftw Phase: Succeeded StartedAt: 2026-07-30 02:40:35 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[0] Phase: Succeeded StartedAt: 2026-07-30 02:40:35 +0000 UTC FinishedAt: 2026-07-30 03:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 02:40:35 +0000 UTC FinishedAt: 2026-07-30 03:02:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "51b093a7ba27476e1f639455f005e8d2e75390e4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E1000", "IGBVF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "51b093a7ba27476e1f639455f005e8d2e75390e4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E1000", "IGBVF" ], "series_id": "402a8d48-3a59-467c-a5c0-1db37380e84e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "e1000_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAwJiMzNDssCiAgICAmIzM0O0lHQlZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMDBfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI0N2JmYjVjNTRhYjhhYjAxODYzMzlhNTljODc3MDg1MjIwYTdhODdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbmluZGV4IDliMDllYjE0NGI4MTEuLmQ3ZjVjNmYxNjE0MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xuQEAgLTEyMjIsMTEgJiM0MzsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRpZiAoaHctXHUwMDNlZmxhc2hfYWRkcmVzcylcbiBcdFx0aW91bm1hcChody1cdTAwM2VmbGFzaF9hZGRyZXNzKTtcbiYjNDM7ZXJyX21kaW9faW9yZW1hcDpcbiBcdGtmcmVlKGFkYXB0ZXItXHUwMDNldHhfcmluZyk7XG4gXHRrZnJlZShhZGFwdGVyLVx1MDAzZXJ4X3JpbmcpO1xuIGVycl9kbWE6XG4gZXJyX3N3X2luaXQ6XG4tZXJyX21kaW9faW9yZW1hcDpcbiBcdGlvdW5tYXAoaHctXHUwMDNlY2U0MTAwX2diZV9tZGlvX2Jhc2VfdmlydCk7XG4gXHRpb3VubWFwKGh3LVx1MDAzZWh3X2FkZHIpO1xuIGVycl9pb3JlbWFwOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbmluZGV4IDMwYzNhNGRiN2Q2MTEuLjg1YTc0Y2Q2ZWExZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbkBAIC03OTMsNyAmIzQzOzc5Myw3IEBAIGljZV9kcGxsX3Bpbl9zdGF0ZV91cGRhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbF9waW4gKnBpbixcbiBcdFx0XHRcdCAgIHJldCxcbiBcdFx0XHRcdCAgIGxpYmllX2FxX3N0cihwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpLFxuIFx0XHRcdFx0ICAgcGluX3R5cGVfbmFtZVtwaW5fdHlwZV0sIHBpbi1cdTAwM2VpZHgpO1xuLVx0ZWxzZVxuJiM0MztcdGVsc2UgaWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiBcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSxcbiBcdFx0XHRcdCAgICBcJiMzNDtlcnI6JWQgJXMgZmFpbGVkIHRvIHVwZGF0ZSAlcyBwaW46JXVcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgcmV0LFxuQEAgLTMwMjQsNyAmIzQzOzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcbiBcdCpwaGFzZV9vZmZzZXRfcGluc191cGRhdGVkID0gMDtcbiBcdHJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKFx1MDAyNnBmLVx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxuIFx0XHRcdFx0XHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XG4tXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7XG4mIzQzO1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHxcbiYjNDM7XHRcdCAgICBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUJVU1kpKSB7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIGlmIChyZXQpIHtcbiBcdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbkBAIC0zMDg2LDEwICYjNDM7MzA4NywxMiBAQCBpY2VfZHBsbF91cGRhdGVfc3RhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbCAqZCwgYm9vbCBpbml0KVxuIFx0XHRkLVx1MDAzZWRwbGxfaWR4LCBkLVx1MDAzZXByZXZfaW5wdXRfaWR4LCBkLVx1MDAzZWlucHV0X2lkeCxcbiBcdFx0ZC1cdTAwM2VkcGxsX3N0YXRlLCBkLVx1MDAzZXByZXZfZHBsbF9zdGF0ZSwgZC1cdTAwM2Vtb2RlKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbi1cdFx0XHRcJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcblwmIzM0Oyxcbi1cdFx0XHRkLVx1MDAzZWRwbGxfaWR4LCByZXQsXG4tXHRcdFx0bGliaWVfYXFfc3RyKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuJiM0MztcdFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24mIzM5O3QgbG9nIGVycm9yICovXG4mIzQzO1x0XHRpZiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxuJiM0MztcdFx0XHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxuJiM0MztcdFx0XHRcdFwmIzM0O3VwZGF0ZSBkcGxsPSVkIHN0YXRlIGZhaWxlZCwgcmV0PSVkICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGQtXHUwMDNlZHBsbF9pZHgsIHJldCxcbiYjNDM7XHRcdFx0XHRsaWJpZV9hcV9zdHIocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXHRpZiAoaW5pdCkge1xuQEAgLTMxNTgsNyAmIzQzOzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4gXHQgICAgZC1cdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXHUwMDNlcGhhc2Vfb2Zmc2V0X21vbml0b3JfcGVyaW9kID09IDApXG4gXHRcdHJldCA9IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhwZiwgXHUwMDI2cGhhc2Vfb2Zmc2V0X250Zik7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtJiM0MzsmIzQzOztcbiYjNDM7XHRcdC8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSAqL1xuJiM0MztcdFx0aWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiYjNDM7XHRcdFx0ZC1cdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7O1xuIFx0XHQvKiBzdG9wIHJlc2NoZWR1bGluZyB0aGlzIHdvcmtlciAqL1xuIFx0XHRpZiAoZC1cdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0gXHUwMDNlXG4gXHRcdCAgICBJQ0VfQ0dVX1NUQVRFX0FDUV9FUlJfVEhSRVNIT0xEKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggNDkzNzFiMDY1ODQ1OC4uN2ViMzgwYmU3ZWQyNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTEwNjksMTggJiM0MzsxMDY5LDE4IEBAIHN0YXRpYyBpbnQgaWNlX2xidGVzdF9wcmVwYXJlX3JpbmdzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gXG4gXHRzdGF0dXMgPSBpY2VfdnNpX2NmZ19sYW4odnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3NldHVwX3J4X3Jpbmc7XG4mIzQzO1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9zdGFydF9hbGxfcnhfcmluZ3ModnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3N0YXJ0X3J4X3Jpbmc7XG4mIzQzO1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX3N0YXJ0X3J4X3Jpbmc6XG4tXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcbi1lcnJfc2V0dXBfcnhfcmluZzpcbiYjNDM7ZXJyX2NmZ19sYW46XG4gXHRpY2VfdnNpX3N0b3BfbGFuX3R4X3JpbmdzKHZzaSwgSUNFX05PX1JFU0VULCAwKTtcbiYjNDM7ZXJyX3NldHVwX3J4X3Jpbmc6XG4mIzQzO1x0aWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7XG4gZXJyX3NldHVwX3R4X3Jpbmc6XG4gXHRpY2VfdnNpX2ZyZWVfdHhfcmluZ3ModnNpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2Li5kODg4MzU0ODJkM2FhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNTYzNyw2ICYjNDM7NTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXG4gXHRtb2RfdGltZXIoXHUwMDI2cGYtXHUwMDNlc2Vydl90bXIsIHJvdW5kX2ppZmZpZXMoamlmZmllcyAmIzQzOyBwZi1cdTAwM2VzZXJ2X3Rtcl9wZXJpb2QpKTtcbiBcbiYjNDM7XHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxuJiM0MztcdCAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZVxuJiM0MztcdCAqIChlLmcuIE5ldHdvcmtNYW5hZ2VyKSBtYXkgdHJ5IHRvIG9wZW4gdGhlIG5ldCBkZXZpY2Ugd2hpbGUgdGhlXG4mIzQzO1x0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBpY2Vfd2FpdF9mb3JfcmVzZXQocGYsIHNlY3NfdG9famlmZmllcygxMCkpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7V2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZXQpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDgsNiAmIzQzOzg0OCwzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuJiM0MzsgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbiYjNDM7ICpcbiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4mIzQzOyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4mIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seVxuJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxuJiM0MztcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuJiM0MztcbiYjNDM7XHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcbiYjNDM7XHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOSw2ICYjNDM7OTQzLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKVxuIFxuIFx0aWNlX2Rpc192Zl9xcyh2Zik7XG4gXG4mIzQzO1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4mIzQzO1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbiYjNDM7XG4gXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcbiBcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5pbmRleCA1MzkyYjA0MDQ5ODYyLi4zMjFkMjljMjViN2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbiYjNDM7dm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbiBpbnQgaWNlX2NoZWNrX3ZmX2luaXQoc3RydWN0IGljZV92ZiAqdmYpO1xuIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTtcbiBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqaWNlX3ZmX2dldF9wb3J0X2luZm8oc3RydWN0IGljZV92ZiAqdmYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbmluZGV4IDMxYmUyZjc2MTgxYzAuLjQzMWM5YzU0NmIwNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbkBAIC0yMjQsNiAmIzQzOzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4gXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCAtIGRpc2FibGUgUnggcXVldWUgaW50ZXJydXB0IHZpYSBRSU5UX1JRQ1RMXG4mIzQzOyAqIEB2c2k6IFZTSSBvZiB0aGUgVkYgdG8gY29uZmlndXJlXG4mIzQzOyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRiYjMzk7cyBzcGFjZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2dnNpLVx1MDAzZWJhY2stXHUwMDNlaHc7XG4mIzQzO1x0dTMyIHBmcSA9IHZzaS1cdTAwM2VyeHFfbWFwW3FfaWR4XTtcbiYjNDM7XHR1MzIgcmVnO1xuJiM0MztcbiYjNDM7XHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xuJiM0MztcdHJlZyBcdTAwMjY9IH5RSU5UX1JRQ1RMX0NBVVNFX0VOQV9NO1xuJiM0MztcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgaW5mb1xuQEAgLTQxNiw2ICYjNDM7NDM0LDggQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKVxuIFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcbiYjNDM7XHRcdFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XG4gXHRcdGJpdG1hcF96ZXJvKHZmLVx1MDAzZXJ4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7XG4gXHR9IGVsc2UgaWYgKHFfbWFwKSB7XG4gXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikge1xuQEAgLTQzNiw2ICYjNDM7NDU2LDcgQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKVxuIFx0XHRcdFx0Z290byBlcnJvcl9wYXJhbTtcbiBcdFx0XHR9XG4gXG4mIzQzO1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cbiBcdFx0XHRjbGVhcl9iaXQodmZfcV9pZCwgdmYtXHUwMDNlcnhxX2VuYSk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbmluZGV4IDFhMGM3MWM5NWVmMTIuLjQwNzlhNzg3NjU3ZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xuQEAgLTg3LDcgJiM0Mzs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbiYjNDM7XHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xuIFx0aWYgKG51bV9yZWdzIFx1MDAzYyBudW1fdmVjcykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGZyZWVfcmVnX3ZhbHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXG5pbmRleCBjZjk2NmZlNmM3NTljLi5iYjgxZTYyMGM1Yzg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbkBAIC0xMzksNyAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuLVxuJiM0MztcdFx0a2ZyZWUobmFtZSk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbmluZGV4IDdmOTA1NjQwNGY2NGYuLmM3MjRkNDI5YTdhYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG5AQCAtMzA5NywxMCAmIzQzOzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0dHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFO1xuIFx0XHR0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QO1xuLVx0XHQvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgXCYjMzQ7Y2xlYW5cJiMzNDsgdGhlIGRlc2NyaXB0b3IgcmluZy5cbi1cdFx0ICogTUlOX0dBUCBpcyBzZXQgdG8gTUlOX1JJTkcgc2l6ZSB0byBlbnN1cmUgaXQgd2lsbCBiZSBzZXQgYXRcbi1cdFx0ICogbGVhc3Qgb25jZSBlYWNoIHRpbWUgYXJvdW5kIHRoZSByaW5nLlxuLVx0XHQgKi9cbiYjNDM7XHRcdC8qIFNldCB0aGUgUkUgYml0IHBlcmlvZGljYWxseSB0byBcJiMzNDtjbGVhblwmIzM0OyB0aGUgZGVzY3JpcHRvciByaW5nICovXG4gXHRcdGlmIChpZHBmX3R4X3NwbGl0cV9uZWVkX3JlKHR4X3EpKSB7XG4gXHRcdFx0dHhfcGFyYW1zLmVvcF9jbWQgfD0gSURQRl9UWERfRkxFWF9GTE9XX0NNRF9SRTtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4cV9ncnAtXHUwMDNlbnVtX2NvbXBsZXRpb25zX3BlbmRpbmcmIzQzOyYjNDM7O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG5pbmRleCA0YmU1YjNiNmQzZWQyLi45MDhkZmEyODY3NGViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxuQEAgLTIxLDcgJiM0MzsyMSw3IEBAXG4gLyogTWFpbGJveCBRdWV1ZSAqL1xuICNkZWZpbmUgSURQRl9NQVhfTUJYUVx0XHRcdFx0MVxuIFxuLSNkZWZpbmUgSURQRl9NSU5fVFhRX0RFU0NcdFx0XHQ2NFxuJiM0MzsjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0MTI4XG4gI2RlZmluZSBJRFBGX01JTl9SWFFfREVTQ1x0XHRcdDY0XG4gI2RlZmluZSBJRFBGX01JTl9UWFFfQ09NUExRX0RFU0NcdFx0MjU2XG4gI2RlZmluZSBJRFBGX01BWF9RSURTXHRcdFx0XHQyNTZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbmluZGV4IGEwN2Q3ZTgwOGNhOWIuLjY3MjYwODRmNmNmYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuY1xuQEAgLTg2LDcgJiM0Mzs4Niw3IEBAIHN0YXRpYyBpbnQgaWRwZl92Zl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbiYjNDM7XHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xuIFx0aWYgKG51bV9yZWdzIFx1MDAzYyBudW1fdmVjcykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGZyZWVfcmVnX3ZhbHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuQEAgLTEzMTgsMTEgJiM0MzsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxuICAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlY3RvciBjaHVua3NcbiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW5cbiYjNDM7ICogQG51bV92ZWNzOiBudW1iZXIgb2YgZW50cmllcyB0aGUgQHJlZ192YWxzIGFycmF5IGNhbiBob2xkXG4gICpcbiAgKiBSZXR1cm46IG51bWJlciBvZiByZWdpc3RlcnMgdGhhdCBnb3QgcG9wdWxhdGVkXG4gICovXG4gaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi1cdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpXG4mIzQzO1x0XHRcdCAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscywgaW50IG51bV92ZWNzKVxuIHtcbiBcdHN0cnVjdCB2aXJ0Y2hubDJfdmVjdG9yX2NodW5rcyAqY2h1bmtzO1xuIFx0c3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDtcbkBAIC0xMzQ2LDcgJiM0MzsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXHUwMDNlZHluY3RsX3JlZ19zcGFjaW5nKTtcbiBcdFx0aXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLVx1MDAzZWl0cm5fcmVnX3NwYWNpbmcpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmVjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZlYyBcdTAwMjZcdTAwMjYgbnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdHJlZ192YWxzW251bV9yZWdzXS5keW5fY3RsX3JlZyA9IHJlZ192YWwuZHluX2N0bF9yZWc7XG4gXHRcdFx0cmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5fcmVnID0gcmVnX3ZhbC5pdHJuX3JlZztcbiBcdFx0XHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9pbmRleF9zcGFjaW5nID1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG5pbmRleCA2ODc2ZTNlZDlkMWJlLi45YjFjOWM4NmY2ZWFjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG5AQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBpbnQgaWRwZl92Y19jb3JlX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG4gdm9pZCBpZHBmX3ZjX2NvcmVfZGVpbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuIFxuIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tXHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKTtcbiYjNDM7XHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpO1xuIGludCBpZHBmX3F1ZXVlX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdFx0XHRzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjLFxuIFx0XHRcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvICpjaHVua3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbmluZGV4IDBhM2QwYTFjYmE0MzMuLmM2ODZlZTEyMGExNDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbkBAIC0yMTkwLDggJiM0MzsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZXRpbWVfc3RhbXAgPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbGVuZ3RoID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZW1hcHBlZF9hc19wYWdlID0gZmFsc2U7XG4tXHRpZiAoY291bnQpXG4tXHRcdGNvdW50LS07XG4gXG4gXHQvKiBjbGVhciB0aW1lc3RhbXAgYW5kIGRtYSBtYXBwaW5ncyBmb3IgcmVtYWluaW5nIHBvcnRpb24gb2YgcGFja2V0ICovXG4gXHR3aGlsZSAoY291bnQtLSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbmluZGV4IDJjOWUyZGZkODQ5OTEuLmIzODgzYTVhN2Q3YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbkBAIC01MzUyLDkgJiM0Mzs1MzUyLDggQEAgdm9pZCBpZ2NfZG93bihzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV9xX3ZlY3RvcnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZXFfdmVjdG9yW2ldKSB7XG4tXHRcdFx0bmFwaV9zeW5jaHJvbml6ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXFfdmVjdG9yW2ldLVx1MDAzZW5hcGkpO1xuLVx0XHRcdGlnY19zZXRfcXVldWVfbmFwaShhZGFwdGVyLCBpLCBOVUxMKTtcbiBcdFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2YWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXS1cdTAwM2VuYXBpKTtcbiYjNDM7XHRcdFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xuIFx0XHR9XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAwJiMzNDssCiAgICAmIzM0O0lHQlZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMDBfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0N2JmYjVjNTRhYjhhYjAxODYzMzlhNTljODc3MDg1MjIwYTdhODcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYwppbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jCkBAIC0xMjIyLDExICYjNDM7MTIyMiwxMSBAQCBzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCiAJaWYgKGh3LSZndDtmbGFzaF9hZGRyZXNzKQogCQlpb3VubWFwKGh3LSZndDtmbGFzaF9hZGRyZXNzKTsKJiM0MztlcnJfbWRpb19pb3JlbWFwOgogCWtmcmVlKGFkYXB0ZXItJmd0O3R4X3JpbmcpOwogCWtmcmVlKGFkYXB0ZXItJmd0O3J4X3JpbmcpOwogZXJyX2RtYToKIGVycl9zd19pbml0OgotZXJyX21kaW9faW9yZW1hcDoKIAlpb3VubWFwKGh3LSZndDtjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTsKIAlpb3VubWFwKGh3LSZndDtod19hZGRyKTsKIGVycl9pb3JlbWFwOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwppbmRleCAzMGMzYTRkYjdkNjExLi44NWE3NGNkNmVhMWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwpAQCAtNzkzLDcgJiM0Mzs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sCiAJCQkJICAgcmV0LAogCQkJCSAgIGxpYmllX2FxX3N0cihwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSwKIAkJCQkgICBwaW5fdHlwZV9uYW1lW3Bpbl90eXBlXSwgcGluLSZndDtpZHgpOwotCWVsc2UKJiM0MzsJZWxzZSBpZiAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSkKIAkJZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSwKIAkJCQkgICAgJiMzNDtlcnI6JWQgJXMgZmFpbGVkIHRvIHVwZGF0ZSAlcyBwaW46JXVcbiYjMzQ7LAogCQkJCSAgICByZXQsCkBAIC0zMDI0LDcgJiM0MzszMDI0LDggQEAgc3RhdGljIGludCBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMoc3RydWN0IGljZV9wZiAqcGYsCiAJKnBoYXNlX29mZnNldF9waW5zX3VwZGF0ZWQgPSAwOwogCXJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKCZhbXA7cGYtJmd0O2h3LCBEUExMX1RZUEVfUFBTLCBtZWFzLAogCQkJCQkgICAgICAgQVJSQVlfU0laRShtZWFzKSk7Ci0JaWYgKHJldCAmYW1wOyZhbXA7IHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7CiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHwKJiM0MzsJCSAgICBwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VCVVNZKSkgewogCQlyZXR1cm4gMDsKIAl9IGVsc2UgaWYgKHJldCkgewogCQlkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLApAQCAtMzA4NiwxMCAmIzQzOzMwODcsMTIgQEAgaWNlX2RwbGxfdXBkYXRlX3N0YXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGwgKmQsIGJvb2wgaW5pdCkKIAkJZC0mZ3Q7ZHBsbF9pZHgsIGQtJmd0O3ByZXZfaW5wdXRfaWR4LCBkLSZndDtpbnB1dF9pZHgsCiAJCWQtJmd0O2RwbGxfc3RhdGUsIGQtJmd0O3ByZXZfZHBsbF9zdGF0ZSwgZC0mZ3Q7bW9kZSk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLAotCQkJJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xuJiMzNDssCi0JCQlkLSZndDtkcGxsX2lkeCwgcmV0LAotCQkJbGliaWVfYXFfc3RyKHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTsKJiM0MzsJCS8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSwgZG9uJiMzOTt0IGxvZyBlcnJvciAqLwomIzQzOwkJaWYgKHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpCiYjNDM7CQkJZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSwKJiM0MzsJCQkJJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xuJiMzNDssCiYjNDM7CQkJCWQtJmd0O2RwbGxfaWR4LCByZXQsCiYjNDM7CQkJCWxpYmllX2FxX3N0cihwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7CiAJCXJldHVybiByZXQ7CiAJfQogCWlmIChpbml0KSB7CkBAIC0zMTU4LDcgJiM0MzszMTYxLDkgQEAgc3RhdGljIHZvaWQgaWNlX2RwbGxfcGVyaW9kaWNfd29yayhzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKQogCSAgICBkLSZndDtwZXJpb2RpY19jb3VudGVyICUgZHAtJmd0O3BoYXNlX29mZnNldF9tb25pdG9yX3BlcmlvZCA9PSAwKQogCQlyZXQgPSBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMocGYsICZhbXA7cGhhc2Vfb2Zmc2V0X250Zik7CiAJaWYgKHJldCkgewotCQlkLSZndDtjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7OwomIzQzOwkJLyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5ICovCiYjNDM7CQlpZiAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSkKJiM0MzsJCQlkLSZndDtjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7OwogCQkvKiBzdG9wIHJlc2NoZWR1bGluZyB0aGlzIHdvcmtlciAqLwogCQlpZiAoZC0mZ3Q7Y2d1X3N0YXRlX2FjcV9lcnJfbnVtICZndDsKIAkJICAgIElDRV9DR1VfU1RBVEVfQUNRX0VSUl9USFJFU0hPTEQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKaW5kZXggNDkzNzFiMDY1ODQ1OC4uN2ViMzgwYmU3ZWQyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKQEAgLTEwNjksMTggJiM0MzsxMDY5LDE4IEBAIHN0YXRpYyBpbnQgaWNlX2xidGVzdF9wcmVwYXJlX3JpbmdzKHN0cnVjdCBpY2VfdnNpICp2c2kpCiAKIAlzdGF0dXMgPSBpY2VfdnNpX2NmZ19sYW4odnNpKTsKIAlpZiAoc3RhdHVzKQotCQlnb3RvIGVycl9zZXR1cF9yeF9yaW5nOwomIzQzOwkJZ290byBlcnJfY2ZnX2xhbjsKIAogCXN0YXR1cyA9IGljZV92c2lfc3RhcnRfYWxsX3J4X3JpbmdzKHZzaSk7CiAJaWYgKHN0YXR1cykKLQkJZ290byBlcnJfc3RhcnRfcnhfcmluZzsKJiM0MzsJCWdvdG8gZXJyX2NmZ19sYW47CiAKIAlyZXR1cm4gMDsKIAotZXJyX3N0YXJ0X3J4X3Jpbmc6Ci0JaWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7Ci1lcnJfc2V0dXBfcnhfcmluZzoKJiM0MztlcnJfY2ZnX2xhbjoKIAlpY2VfdnNpX3N0b3BfbGFuX3R4X3JpbmdzKHZzaSwgSUNFX05PX1JFU0VULCAwKTsKJiM0MztlcnJfc2V0dXBfcnhfcmluZzoKJiM0MzsJaWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7CiBlcnJfc2V0dXBfdHhfcmluZzoKIAlpY2VfdnNpX2ZyZWVfdHhfcmluZ3ModnNpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwppbmRleCBlMmZkMmRhYjAzZTM2Li5kODg4MzU0ODJkM2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwpAQCAtNTYzNyw2ICYjNDM7NTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCS8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqLwogCW1vZF90aW1lcigmYW1wO3BmLSZndDtzZXJ2X3Rtciwgcm91bmRfamlmZmllcyhqaWZmaWVzICYjNDM7IHBmLSZndDtzZXJ2X3Rtcl9wZXJpb2QpKTsKIAomIzQzOwkvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZQomIzQzOwkgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2UKJiM0MzsJICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGUKJiM0MzsJICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS4KJiM0MzsJICovCiYjNDM7CXJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtXYWl0IGZvciByZXNldCB0aW1lZCBvdXQgKDEwcykgZHVyaW5nIHJlc3VtZTogJWRcbiYjMzQ7LAomIzQzOwkJCXJldCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jCmluZGV4IDkwNTJlNzFlOWM5OWUuLmE1NGNiMmI4ZDNjNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwpAQCAtODQ4LDYgJiM0Mzs4NDgsMzAgQEAgc3RhdGljIHZvaWQgaWNlX25vdGlmeV92Zl9yZXNldChzdHJ1Y3QgaWNlX3ZmICp2ZikKIAkJCSAgICAgIE5VTEwpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX3Jlc2V0X2ludGVycnVwdHMgLSBjbGVhciBhbGwgcXVldWUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZm9yIGEgVlNJCiYjNDM7ICogQHZzaTogdGhlIFZTSSB3aG9zZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHNob3VsZCBiZSBjbGVhcmVkCiYjNDM7ICoKJiM0MzsgKiBaZXJvIHRoZSBRSU5UX1JRQ1RMIGFuZCBRSU5UX1RRQ1RMIHJlZ2lzdGVycyBmb3IgYWxsIGFsbG9jYXRlZCBxdWV1ZXMKJiM0MzsgKiBpbiB0aGUgVlNJLiBUaGlzIGNsZWFycyB0aGUgZW50aXJlIHJlZ2lzdGVyIGluY2x1ZGluZyBNU0lYX0lORFgsIElUUl9JTkRYLAomIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seQomIzQzOyAqIGNsZWFycyB0aGUgQ0FVU0VfRU5BIGJpdC4KJiM0MzsgKi8KJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS0mZ3Q7YmFjazsKJiM0MzsJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3BmLSZndDtodzsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CWljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKQomIzQzOwkJd3IzMihodywgUUlOVF9SUUNUTCh2c2ktJmd0O3J4cV9tYXBbaV0pLCAwKTsKJiM0MzsKJiM0MzsJaWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpCiYjNDM7CQl3cjMyKGh3LCBRSU5UX1RRQ1RMKHZzaS0mZ3Q7dHhxX21hcFtpXSksIDApOwomIzQzOwomIzQzOwlpY2VfZmx1c2goaHcpOwomIzQzO30KJiM0MzsKIC8qKgogICogaWNlX3Jlc2V0X3ZmIC0gUmVzZXQgYSBwYXJ0aWN1bGFyIFZGCiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZQpAQCAtOTE5LDYgJiM0Mzs5NDMsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpCiAKIAlpY2VfZGlzX3ZmX3FzKHZmKTsKIAomIzQzOwkvKiBjbGVhbnVwIGludGVycnVwdCByZWdpc3RlcnMgKi8KJiM0MzsJaWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTsKJiM0MzsKIAkvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmUKIAkgKiBlbmFibGVkLiBUaGlzIGlzIG5lZWRlZCBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIFZGUi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaAppbmRleCA1MzkyYjA0MDQ5ODYyLi4zMjFkMjljMjViN2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oCkBAIC0yNiw2ICYjNDM7MjYsNyBAQAogdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7CiB2b2lkIGljZV9kZWluaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpOwogdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTsKJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpOwogaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTsKIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTsKIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCmluZGV4IDMxYmUyZjc2MTgxYzAuLjQzMWM5YzU0NmIwNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCkBAIC0yMjQsNiAmIzQzOzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpCiAJd3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCAtIGRpc2FibGUgUnggcXVldWUgaW50ZXJydXB0IHZpYSBRSU5UX1JRQ1RMCiYjNDM7ICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmUKJiM0MzsgKiBAcV9pZHg6IFZGIHF1ZXVlIGluZGV4IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBxdWV1ZSBpbiB0aGUgUEYmIzM5O3Mgc3BhY2UKJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KQomIzQzO3sKJiM0MzsJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3ZzaS0mZ3Q7YmFjay0mZ3Q7aHc7CiYjNDM7CXUzMiBwZnEgPSB2c2ktJmd0O3J4cV9tYXBbcV9pZHhdOwomIzQzOwl1MzIgcmVnOwomIzQzOwomIzQzOwlyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpOwomIzQzOwlyZWcgJmFtcDs9IH5RSU5UX1JRQ1RMX0NBVVNFX0VOQV9NOwomIzQzOwl3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7CiYjNDM7CiYjNDM7CWljZV9mbHVzaChodyk7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpY2VfdmNfZW5hX3FzX21zZwogICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBpbmZvCkBAIC00MTYsNiAmIzQzOzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZykKIAkJCWdvdG8gZXJyb3JfcGFyYW07CiAJCX0KIAomIzQzOwkJZm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCAmYW1wO3FfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpCiYjNDM7CQkJaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7CiAJCWJpdG1hcF96ZXJvKHZmLSZndDtyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpOwogCX0gZWxzZSBpZiAocV9tYXApIHsKIAkJZm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCAmYW1wO3FfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHsKQEAgLTQzNiw2ICYjNDM7NDU2LDcgQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKQogCQkJCWdvdG8gZXJyb3JfcGFyYW07CiAJCQl9CiAKJiM0MzsJCQlpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTsKIAkJCS8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi8KIAkJCWNsZWFyX2JpdCh2Zl9xX2lkLCB2Zi0mZ3Q7cnhxX2VuYSk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYwppbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jCkBAIC04Nyw3ICYjNDM7ODcsNyBAQCBzdGF0aWMgaW50IGlkcGZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsCiAJaWYgKCFyZWdfdmFscykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpOwomIzQzOwludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpOwogCWlmIChudW1fcmVncyAmbHQ7IG51bV92ZWNzKSB7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZnJlZV9yZWdfdmFsczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYwppbmRleCBjZjk2NmZlNmM3NTljLi5iYjgxZTYyMGM1Yzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jCkBAIC0xMzksNyAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcikKIAlpZiAoZXJyKSB7CiAJCWRldl9lcnIoJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYsCiAJCQkmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXG4mIzM0OywgZXJyKTsKLQomIzQzOwkJa2ZyZWUobmFtZSk7CiAJCXJldHVybiBlcnI7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYwppbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKQEAgLTMwOTcsMTAgJiM0MzszMDk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlkcGZfdHhfc3BsaXRxX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJdHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFOwogCQl0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QOwotCQkvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgJiMzNDtjbGVhbiYjMzQ7IHRoZSBkZXNjcmlwdG9yIHJpbmcuCi0JCSAqIE1JTl9HQVAgaXMgc2V0IHRvIE1JTl9SSU5HIHNpemUgdG8gZW5zdXJlIGl0IHdpbGwgYmUgc2V0IGF0Ci0JCSAqIGxlYXN0IG9uY2UgZWFjaCB0aW1lIGFyb3VuZCB0aGUgcmluZy4KLQkJICovCiYjNDM7CQkvKiBTZXQgdGhlIFJFIGJpdCBwZXJpb2RpY2FsbHkgdG8gJiMzNDtjbGVhbiYjMzQ7IHRoZSBkZXNjcmlwdG9yIHJpbmcgKi8KIAkJaWYgKGlkcGZfdHhfc3BsaXRxX25lZWRfcmUodHhfcSkpIHsKIAkJCXR4X3BhcmFtcy5lb3BfY21kIHw9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfUkU7CiAJCQl0eF9xLSZndDt0eHFfZ3JwLSZndDtudW1fY29tcGxldGlvbnNfcGVuZGluZyYjNDM7JiM0Mzs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaAppbmRleCA0YmU1YjNiNmQzZWQyLi45MDhkZmEyODY3NGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgKQEAgLTIxLDcgJiM0MzsyMSw3IEBACiAvKiBNYWlsYm94IFF1ZXVlICovCiAjZGVmaW5lIElEUEZfTUFYX01CWFEJCQkJMQogCi0jZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDCQkJNjQKJiM0MzsjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDCQkJMTI4CiAjZGVmaW5lIElEUEZfTUlOX1JYUV9ERVNDCQkJNjQKICNkZWZpbmUgSURQRl9NSU5fVFhRX0NPTVBMUV9ERVNDCQkyNTYKICNkZWZpbmUgSURQRl9NQVhfUUlEUwkJCQkyNTYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYwppbmRleCBhMDdkN2U4MDhjYTliLi42NzI2MDg0ZjZjZmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jCkBAIC04Niw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IGlkcGZfdmZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsCiAJaWYgKCFyZWdfdmFscykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpOwomIzQzOwludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpOwogCWlmIChudW1fcmVncyAmbHQ7IG51bV92ZWNzKSB7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZnJlZV9yZWdfdmFsczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKQEAgLTEzMTgsMTEgJiM0MzsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLAogICogaWRwZl9nZXRfcmVnX2ludHJfdmVjcyAtIEdldCB2ZWN0b3IgcXVldWUgcmVnaXN0ZXIgb2Zmc2V0CiAgKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZWN0b3IgY2h1bmtzCiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW4KJiM0MzsgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGQKICAqCiAgKiBSZXR1cm46IG51bWJlciBvZiByZWdpc3RlcnMgdGhhdCBnb3QgcG9wdWxhdGVkCiAgKi8KIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsCi0JCQkgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpCiYjNDM7CQkJICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpCiB7CiAJc3RydWN0IHZpcnRjaG5sMl92ZWN0b3JfY2h1bmtzICpjaHVua3M7CiAJc3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDsKQEAgLTEzNDYsNyAmIzQzOzEzNDcsNyBAQCBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLAogCQlkeW5jdGxfcmVnX3NwYWNpbmcgPSBsZTMyX3RvX2NwdShjaHVuay0mZ3Q7ZHluY3RsX3JlZ19zcGFjaW5nKTsKIAkJaXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLSZndDtpdHJuX3JlZ19zcGFjaW5nKTsKIAotCQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3ZlYzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmVjICZhbXA7JmFtcDsgbnVtX3JlZ3MgJmx0OyBudW1fdmVjczsgaSYjNDM7JiM0MzspIHsKIAkJCXJlZ192YWxzW251bV9yZWdzXS5keW5fY3RsX3JlZyA9IHJlZ192YWwuZHluX2N0bF9yZWc7CiAJCQlyZWdfdmFsc1tudW1fcmVnc10uaXRybl9yZWcgPSByZWdfdmFsLml0cm5fcmVnOwogCQkJcmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5faW5kZXhfc3BhY2luZyA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCmluZGV4IDY4NzZlM2VkOWQxYmUuLjliMWM5Yzg2ZjZlYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCkBAIC0xMDQsNyAmIzQzOzEwNCw3IEBAIGludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTsKIHZvaWQgaWRwZl92Y19jb3JlX2RlaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTsKIAogaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciwKLQkJCSAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscyk7CiYjNDM7CQkJICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpOwogaW50IGlkcGZfcXVldWVfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LAogCQkJc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYywKIAkJCXN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvICpjaHVua3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwppbmRleCAwYTNkMGExY2JhNDMzLi5jNjg2ZWUxMjBhMTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwpAQCAtMjE5MCw4ICYjNDM7MjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJYnVmZmVyX2luZm8tJmd0O3RpbWVfc3RhbXAgPSAwOwogCWJ1ZmZlcl9pbmZvLSZndDtsZW5ndGggPSAwOwogCWJ1ZmZlcl9pbmZvLSZndDttYXBwZWRfYXNfcGFnZSA9IGZhbHNlOwotCWlmIChjb3VudCkKLQkJY291bnQtLTsKIAogCS8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi8KIAl3aGlsZSAoY291bnQtLSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwppbmRleCAyYzllMmRmZDg0OTkxLi5iMzg4M2E1YTdkN2FlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwpAQCAtNTM1Miw5ICYjNDM7NTM1Miw4IEBAIHZvaWQgaWdjX2Rvd24oc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFkYXB0ZXItJmd0O251bV9xX3ZlY3RvcnM7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChhZGFwdGVyLSZndDtxX3ZlY3RvcltpXSkgewotCQkJbmFwaV9zeW5jaHJvbml6ZSgmYW1wO2FkYXB0ZXItJmd0O3FfdmVjdG9yW2ldLSZndDtuYXBpKTsKLQkJCWlnY19zZXRfcXVldWVfbmFwaShhZGFwdGVyLCBpLCBOVUxMKTsKIAkJCW5hcGlfZGlzYWJsZSgmYW1wO2FkYXB0ZXItJmd0O3FfdmVjdG9yW2ldLSZndDtuYXBpKTsKJiM0MzsJCQlpZ2Nfc2V0X3F1ZXVlX25hcGkoYWRhcHRlciwgaSwgTlVMTCk7CiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMyNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEFuYWx5c2lzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzOiBgZTEwMDBgLCBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbmQgYGlnY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGZ1enppbmcgc3RyYXRlZ3kuCgpIZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgdGhlIGNoYW5nZXMgYW5kIG15IHRob3VnaHRzIG9uIHRoZWlyIHRlc3RhYmlsaXR5OgoKMS4gICoqYGUxMDAwYDoqKiBGaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBlMTAwMF9wcm9iZWAuIExvb2tzIGxpa2UgYSBzaW1wbGUgc3dhcCBvZiBlcnJvciBsYWJlbHMgKGBlcnJfc3dfaW5pdGAgYW5kIGBlcnJfbWRpb19pb3JlbWFwYCksIHdoaWNoIHdvdWxkIGhhdmUgY2F1c2VkIGFuIGlzc3VlIHdpdGggZnJlZWluZyByZXNvdXJjZXMgb24gYSBmYWlsdXJlLiBUaGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB2aWEgZmF1bHQgaW5qZWN0aW9uLCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gQW5kLCBpbXBvcnRhbnRseSwgYGUxMDAwYCAqaXMqIGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgbWFrZXMgaXQgYSBwb3RlbnRpYWwgdGFyZ2V0LgoyLiAgKipgaWNlYDoqKiBBIGJ1bmNoIG9mIGNoYW5nZXMgaW4gYGljZV9kcGxsLmNgLCBgaWNlX2V0aHRvb2wuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2VfdmZfbGliLmNgLiBUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHJlc2V0IHJlY292ZXJ5LCBhbmQgaW50ZXJydXB0IGNsZWFyaW5nIHdpdGhpbiBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKS4gSXQmIzM5O3MgYmFzZWQgb24gSW50ZWwmIzM5O3MgRTgwMCBzZXJpZXMuIEkgZG9uJiMzOTt0IHRoaW5rIHN0YW5kYXJkIFFFTVUgZW11bGF0ZXMgYGljZWAgZGlyZWN0bHkuCjMuICAqKmBpZHBmYDoqKiBUd2Vha3MgaW4gc2V2ZXJhbCBmaWxlcyAoYGlkcGZfZGV2LmNgLCBgaWRwZl92Zl9kZXYuY2AsIGBpZHBmX3ZpcnRjaG5sLmNgLCBgaWRwZl9saWIuY2AsIGBpZHBmX3R4cnguY2ApLiBUaGlzIHNlZW1zIHRvIGluY2x1ZGUgYSBib3VuZHMgY2hlY2sgaW4gYGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3NgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcywgYSBtZW1vcnkgbGVhayBmaXggaW4gYGlkcGZfbWJfaW50cl9yZXFfaXJxYCwgYW5kIGEgZGVzY3JpcHRvciBzaXplIGNoYW5nZS4gYGlkcGZgIGlzIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbi4gSXQgaXNuJiMzOTt0IGVtdWxhdGVkLgo0LiAgKipgaWdidmZgOioqIEEgZml4IGluIGBuZXRkZXYuY2AgcmVnYXJkaW5nIGxvZ2ljIGluIGBpZ2J2Zl90eF9tYXBfYWR2YC4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIGEgcmVkdW5kYW50IGBjb3VudC0tYC4gYGlnYnZmYCBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGlnYmAgKmlzKiBlbXVsYXRlZCBpbiBRRU1VLCBhbmQgUUVNVSBoYXMgYWRkZWQgU1ItSU9WIHN1cHBvcnQgd2hpY2ggbWFrZXMgYGlnYnZmYCBwb3RlbnRpYWxseSB0ZXN0YWJsZS4gVGhpcyBpcyBhIHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuCjUuICAqKmBpZ2NgOioqIEEgc3dhcCBvZiBgbmFwaV9kaXNhYmxlYCBhbmQgYGlnY19zZXRfcXVldWVfbmFwaWAgaW4gYGlnY19kb3duYCBpbiBgaWdjX21haW4uY2AuIGBpZ2NgIGlzIHRoZSBJbnRlbCAyLjVHIEV0aGVybmV0IChJMjI1L0kyMjYpIGRyaXZlci4gSXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuCgpHaXZlbiB0aGUgcHJvbXB0IGFib3V0IGVtdWxhdGVkIGhhcmR3YXJlLCBteSBpbml0aWFsIGh1bmNoIGlzIHRvIGZvY3VzIG9uIGBlMTAwMGAgYW5kIGBpZ2J2ZmAsIGJlY2F1c2UgdGhleSYjMzk7cmUgdGhlIG9uZXMgdGhhdCAqY2FuKiBiZSB0ZXN0ZWQuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBrZXkgcGFydHM6CgpGb3IgYGUxMDAwYCwgdGhlIGNoYW5nZSBpbiBgZTEwMDBfcHJvYmVgIGlzIHZlcnkgaW50ZXJlc3Rpbmc6IGl0IG1vZGlmaWVzIGFuIGVycm9yIHBhdGguIFRoaXMgY291bGQgYmUgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZywgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyB0aGUgZXJyb3Igd2l0aCBmYXVsdCBpbmplY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYWdhaW4uCgpgYGBjCiAJaWYgKGh3LSZndDtmbGFzaF9hZGRyZXNzKQogCQlpb3VubWFwKGh3LSZndDtmbGFzaF9hZGRyZXNzKTsKJiM0MztlcnJfbWRpb19pb3JlbWFwOgogCWtmcmVlKGFkYXB0ZXItJmd0O3R4X3JpbmcpOwogCWtmcmVlKGFkYXB0ZXItJmd0O3J4X3JpbmcpOwogZXJyX2RtYToKIGVycl9zd19pbml0OgotZXJyX21kaW9faW9yZW1hcDoKIAlpb3VubWFwKGh3LSZndDtjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTsKIAlpb3VubWFwKGh3LSZndDtod19hZGRyKTsKIGVycl9pb3JlbWFwOgpgYGAKCkZvciBgaWdidmZgLCB0aGUgY2hhbmdlIGluIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBub3QgYSB2ZXJ5IGV4Y2l0aW5nIGNoYW5nZSwgYnV0IGl0IGlzIGluIHRoZSBjcml0aWNhbCB0cmFuc21pdCBwYXRoLgoKYGBgYwogCWJ1ZmZlcl9pbmZvLSZndDt0aW1lX3N0YW1wID0gMDsKIAlidWZmZXJfaW5mby0mZ3Q7bGVuZ3RoID0gMDsKIAlidWZmZXJfaW5mby0mZ3Q7bWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTsKLQlpZiAoY291bnQpCi0JCWNvdW50LS07CiAKIAkvKiBjbGVhciB0aW1lc3RhbXAgYW5kIGRtYSBtYXBwaW5ncyBmb3IgcmVtYWluaW5nIHBvcnRpb24gb2YgcGFja2V0ICovCiAJd2hpbGUgKGNvdW50LS0pIHsKYGBgCgpTbywgd2hpbGUgdGhlIG90aGVyIGRyaXZlcnMgYXJlIGludGVyZXN0aW5nIGluIHRoZWlyIG93biByaWdodCwgdGhlIFFFTVUgZW11bGF0aW9uIG9mIGBlMTAwMGAKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo4NjpzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGUxMDAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVx0LmlkX3RhYmxlID0gZTEwMDBfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy0xODQtXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTg1MT1zdGF0aWMgaW50IGUxMDAwX2luaXRfaHdfc3RydWN0KHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTA1OiAqIGUxMDAwX3Byb2JlIC0gRGV2aWNlIEluaXRpYWxpemF0aW9uIFJvdXRpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxMC0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDU4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczoKCioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgZTEwMDBfcHJvYmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQmIzM5O3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBlMTAwMGAgZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIGEgbWF0Y2hpbmcgUENJIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEdvb2QsIHRoYXQgZXN0YWJsaXNoZXMgdGhlIGNvbnRleHQgZm9yIHRoYXQgZHJpdmVyLiBOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIGBpZ2J2Zl90eF9tYXBfYWR2YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0JiMzOTtzIHdpdGhpbiB0aGUgYGlnYnZmYCBtb2R1bGUuIFJpZ2h0LCBsZXQgbWUgcHVsbCB0aGF0IGNvZGUgdXAgYW5kIHNlZSB3aGF0IGl0IGRvZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBUWCBtYXBwaW5nIGlzIGhhbmRsZWQgaW4gdGhhdCBwYXJ0aWN1bGFyIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnYnZmX3R4X21hcF9hZHYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjEwNz1zdGF0aWMgaW50IGlnYnZmX21heWJlX3N0b3BfdHgoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIxMzY6c3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIxMzctXHRcdFx0XHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMjY1PXN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMyMi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcdGNvdW50ID0gaWdidmZfdHhfbWFwX2FkdihhZGFwdGVyLCB0eF9yaW5nLCBza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkFuYWx5emluZyB0aGUgSUdCVkYgVHJhbnNtaXQgUGF0aCoqCgpPa2F5LCBzbyBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiBpbiB0aGUgdHJhbnNtaXQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBgbmRvX3N0YXJ0X3htaXRgIOKAkyB0aGUgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uIGZvciBzdGFydGluZyBhIHRyYW5zbWl0LCBzbyB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4gVGhlcmVmb3JlLCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgbmVlZHMgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjIwNj1zdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfdHhfcXVldWVfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMjY1OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMjY2LVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjMzOT1zdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzUyOlx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MjkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgRHJpdmVyIENvZGUgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBgaWdidmZfeG1pdF9mcmFtZWAgZGVmaW5pdGVseSBjYWxscyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIHdoaWNoIG1lYW5zIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBpbmRlZWQgaW4gdGhlICYjMzQ7aG90IHBhdGgmIzM0Oy4gQnV0IHdhaXQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQmIzM5O3MgYSBnb29kIHBvaW50Li4uIG9oLCBidXQgYGlnYnZmX3R4X21hcF9hZHZgIGlzIGlubGluZWQsIHNvIHRoYXQmIzM5O3MgcHJvYmFibHkgbGVzcyBvZiBhIGNvbmNlcm4uCgpOb3csIGBlMTAwMF9wcm9iZWAgbG9va3MgcHJvbWlzaW5nLiBQcm9iZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gUENJIGhvdHBsdWcgb3IgZHJpdmVyIGxvYWRpbmcgcG9zc2liaWxpdGllcy4gVGhhdCYjMzk7cyBhIHNvbGlkIGNhbmRpZGF0ZS4KCldoYXQgYWJvdXQgb3RoZXIgZHJpdmVycyBsaWtlIGBpY2VgLCBgaWRwZmAsIG9yIGBpZ2NgPyBIbSwgdGhvc2UgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGxpbWl0YXRpb24gcmlnaHQgdGhlcmUuIEJ1dCB3YWl0LCBJJiMzOTttIGZvcmdldHRpbmcgc29tZXRoaW5nLiBgZTEwMDBgICppcyogZW11bGF0ZWQsIGFuZCBgaWdidmZgIGlzIHRvbyAoaWYgUUVNVSBzdXBwb3J0cyBgaWdiYCBTUi1JT1YsIHdoaWNoIGl0IGRvZXMgYXMgb2YgUUVNVSA4LjApLiBTbyB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJvdGggYGUxMDAwYCBhbmQgYGlnYnZmYCB0aGF0IGFyZSBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBlbXVsYXRvci4gVGhpcyBpcyB2ZXJ5IGdvb2QgbmV3cy4KClRpbWUgdG8gY29uZmlybSB0aGlzOyBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdG8gbWFrZSBzdXJlIHRoZXkmIzM5O3JlIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgYXQgbGVhc3QgZWFzaWx5IGNvbmZpZ3VyYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEUxMDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjI9Y29uZmlnIEUxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo0NTpjb25maWcgRTEwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6ODE6Y29uZmlnIEUxMDAwRV9IV1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTgyLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IEhXIGNyb3NzLXRpbWVzdGFtcCBvbiBQQ0ggZGV2aWNlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUwNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBLY29uZmlnIGZvciBgaWdidmZgKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBpZ2J2ZmAgS2NvbmZpZy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyBtb2R1bGFyLCBpZiBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBmaXJtd2FyZSB2ZXJzaW9ucywgd2hhdCBvdGhlciBkcml2ZXJzIGl0IG1pZ2h0IGNvbmZsaWN0IHdpdGgsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMuIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW4gdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJR0JWRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTEyMD1jb25maWcgSUdCX0RDQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxMjk6Y29uZmlnIElHQlZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIDgyNTc2IFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzc5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGBlMTAwMGAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgbWV0aG9kaWNhbCBjaGVjay4gVGltZSB0byBnZXQgZ3JhbnVsYXIuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiBgZTEwMDBgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGV2ZW4gZmlybXdhcmUgcmVseSBvbiB0aGlzIGVsZW1lbnQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgYSBkZXRhaWxlZCBkZXBlbmRlbmN5IG1hcC4gVGhhdCBtZWFucyBkaXZpbmcgZGVlcCBpbnRvIHRoZSBjb2RlLCBjb25maWd1cmF0aW9uIGZpbGVzLCBidWlsZCBzeXN0ZW1zLi4uZXZlcnl0aGluZyB0aGF0IHRvdWNoZXMgYGUxMDAwYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyIGFkanVzdG1lbnRzIG9yIGFuYWx5c2lzIEkmIzM5O20gYWJvdXQgdG8gZG8gd29uJiMzOTt0IHRyaWdnZXIgYSBjYXNjYWRlIG9mIHVuZm9yZXNlZW4gZWZmZWN0cyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIGluZGlyZWN0IG9uZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgY29udGV4dCBhcm91bmQgYGUxMDAwYCBpcyBwYXJhbW91bnQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0Y29uZmlnIEUxMDAwXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIFBSTy8xMDAwIGdpZ2FiaXQgZXRoZXJuZXQgZmFtaWx5IG9mXG4gIDUwOlx0XHQgIGFkYXB0ZXJzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAgNTE6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuICA1MjpcdFxuICA1MzpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAgNTQ6XHRcbiAgNTU6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDU2Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAwLnJzdFx1MDAzZS5cbiAgNTc6XHRcbiAgNTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA1OTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBlMTAwMC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IGBpZ2J2ZmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgaWdidmZgIG1vZHVsZSBvciBsaWJyYXJ5LiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJiMzOTt0IGV2ZW4gKnRoaW5rKiBhYm91dCBtb2RpZnlpbmcsIGRlYnVnZ2luZywgb3IgaW50ZWdyYXRpbmcgaXQgd2l0aG91dCBrbm93aW5nIHdoYXQgaXQmIzM5O3MgbGVhbmluZyBvbiBhbmQgd2hhdCBpdCBwcm92aWRlcy4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBhIHF1aWNrIGdsYW5jZSBhdCBhIHBhY2thZ2UgbWFuaWZlc3QsIGVpdGhlci4gSSBuZWVkIGEgcmVhbCwgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wYWN0IGFueSBjaGFuZ2UgbWlnaHQgaGF2ZS4gSXMgaXQgc29tZXRoaW5nIHNpbXBsZSwgbWF5YmUganVzdCBhIGhhbmRmdWwgb2Ygc3RyYWlnaHRmb3J3YXJkIGludGVyZmFjZXMsIG9yIGlzIGl0IGEgc3ByYXdsaW5nIHdlYiBvZiBjb21wbGV4LCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcz8gVGhlIGFuc3dlcnMgd2lsbCBzaGFwZSBteSBhcHByb2FjaCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gVGltZSB0byBkaWcgaW4gYW5kIG1hcCBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI5Olx0Y29uZmlnIElHQlZGXG4gMTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAxMzE6XHRcdGRlcGVuZHMgb24gUENJXG4gMTMyOlx0XHRoZWxwXG4gMTMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIDgyNTc2IHZpcnR1YWwgZnVuY3Rpb25zLiAgRm9yIG1vcmVcbiAxMzQ6XHRcdCAgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ28gdG8gdGhlIEFkYXB0ZXIgXHUwMDI2XG4gMTM1Olx0XHQgIERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDEzNjpcdFxuIDEzNzpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAxMzg6XHRcbiAxMzk6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMTQwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYnZmLnJzdFx1MDAzZS5cbiAxNDE6XHRcbiAxNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuIDE0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBpZ2J2Zi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3ODgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRnVuY3Rpb25zIGZvciBUZXN0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSB0d28gY29uZmlndXJhdGlvbnMsIGBFMTAwMGAgYW5kIGBJR0JWRmAsIGFuZCB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgaW4gdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAuIGBlMTAwMF9wcm9iZWAgc2VlbXMgbGlrZSBhIGdvb2QsIGZvY3VzZWQgc3ltYm9sIHRvIHRhcmdldC4gSXQmIzM5O3MgYSBjbGVhciBlbnRyeSBwb2ludC4KCk5vdywgYGlnYnZmX3R4X21hcF9hZHZgLi4uIHRoYXQmIzM5O3Mgc3RhdGljIGlubGluZSwgc28gaXQgd29uJiMzOTt0IGJlIGEgZGlyZWN0IHN5bWJvbC4gVGhlIGNhbGxlciBpcyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIGFsc28gc3RhdGljIGlubGluZSwgbWVhbmluZyB0aGUgcmVhbCBzeW1ib2wgaXMgYGlnYnZmX3htaXRfZnJhbWVgLiBCdXQgd2FpdCwgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGEgaG90LXBhdGggZnVuY3Rpb24sIGxpa2VseSB0aGUgYG5kb19zdGFydF94bWl0YCBlbnRyeSBwb2ludC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gZ2V0IGEgYmV0dGVyIHRlc3QgZGlzdHJpYnV0aW9uLiBTbywgSSBzaG91bGRuJiMzOTt0IGluY2x1ZGUgdGhhdC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIHRhcmdldD8gV2hhdCBhYm91dCBgaWRwZmAsIGBpY2VgLCBvciBgaWdjYD8gVGhvc2UgYXJlbiYjMzk7dCBlbXVsYXRlZC4gU28sIGl0IGxvb2tzIGxpa2UgYGUxMDAwX3Byb2JlYCBpcyB0aGUgb25seSBmb2N1cyBzeW1ib2wuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byAmIzM0O0F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiYjMzQ7IFRoaXMgc2VhbHMgaXQsIEkgY2FuJiMzOTt0IGluY2x1ZGUgdGhhdC4KCk9rYXksIGxldCBtZSBjaGVjayBgZTEwMDBfcHJvYmVgIGluIGBlMTAwMF9tYWluLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo4NjpzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGUxMDAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVx0LmlkX3RhYmxlID0gZTEwMDBfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy0xODQtXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTg1MT1zdGF0aWMgaW50IGUxMDAwX2luaXRfaHdfc3RydWN0KHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTA1OiAqIGUxMDAwX3Byb2JlIC0gRGV2aWNlIEluaXRpYWxpemF0aW9uIFJvdXRpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxMC0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI3NQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiA5NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGFyZSBmdXp6YWJsZSB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGUxMDAwX3Byb2JlYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBub3QgaW5saW5lZCwgYW5kIGl0IGRvZXMgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBXYWl0LCB0aGUgcHJvbXB0IHNheXMgaXQgaXMgb2theSBpZiB0aGlzIGlzIGFuIEFQSSBlbnRyeXBvaW50LCB3aGljaCB0aGlzIGlzISBFeGNlbGxlbnQsIGluY2x1ZGUgaXQuCgpOZXh0LCBJIG5lZWQgdG8gcnVuIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBxdWlja2x5IHRvIGRldGVybWluZSB0aGVpciBzdGF0dXM6IGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBzdGF0aWMgaW5saW5lOyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgc3RhdGljIGlubGluZTsgYW5kLCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgc3RhdGljIGFzIHdlbGwgYmVjYXVzZSBpdCYjMzk7cyB0aGUgYG5kb19zdGFydF94bWl0YCBjYWxsYmFjay4KCkkgdGhlbiB3ZW50IHRocm91Z2ggYSBsaXN0IG9mIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzZWUgaWYgdGhleSB3ZXJlIGluIGVtdWxhdGVkIGRyaXZlcnMuIGBpZ2NfZG93bmAsIGBpZHBmX21iX2ludHJfcmVxX2lycWAsIGFuZCBgaWNlX2RwbGxfcHBzX3VwZGF0ZV9waGFzZV9vZmZzZXRzYCBhcmUgbm90IGVtdWxhdGVkLCBzbyB0aGV5IGNhbiBiZSBydWxlZCBvdXQuIFRoaXMgbGVhdmVzIG9ubHkgYGUxMDAwYCBhbmQgYGlnYnZmYCBhcyB0aGUgZW11bGF0ZWQgZHJpdmVycy4gVGhlcmVmb3JlLCB0aGUgYXBwbGljYWJsZSBjb25maWdzIGFyZSBgRTEwMDBgIGFuZCBgSUdCVkZgLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IGlmIHRoZSBjb2RlIGlzIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNpbmNlIHRoZSBwYXRjaCBkZWFscyB3aXRoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAsIGJvdGggb2Ygd2hpY2ggYXJlIGVtdWxhdGVkLCB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCkkgdGhlbiByZXZpc2l0ZWQgdGhlIGZvY3VzIGZ1bmN0aW9uLCBgZTEwMDBfcHJvYmVgLiBBZnRlciBhIHF1aWNrIHJldmlldywgSSBjb25jbHVkZWQgdGhhdCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgaW4gdGhlIGhvdCBwYXRoLCBhbmQgY2FuIGJlIGV4Y2x1ZGVkLCBhbmQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgaWdidmZfdHhfbWFwX2FkdmAsIGlzIGlubGluZWQgaW50byB0aGUgaG90IHBhdGguIFRoZW4sIGNvbmZpcm1pbmcsIHRoZXJlIGFyZSBubyBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgaW4gYGUxMDAwYCBvciBgaWdidmZgLiBUaGVyZWZvcmUsIG9ubHkgYGUxMDAwX3Byb2JlYCBpcyBhIGZvY3VzIHN5bWJvbC4KCk15IGZpbmFsIHRob3VnaHQgd2FzIHRvIGNvbmZpcm0gd2hldGhlciBgRTEwMDBgIG9yIGBJR0JWRmAgZGVwZW5kcyBvbiBhbnl0aGluZyB3ZWlyZC4gQm90aCBgRTEwMDBgIChgUENJICZhbXA7JmFtcDsgSEFTX0lPUE9SVGApIGFuZCBgSUdCVkZgIChgUENJYCkgaGF2ZSBzdGFuZGFyZCBkZXBlbmRlbmNpZXMuCgpKdXN0IHRvIGJlIHNhZmUsIEkgYWdhaW4gdmVyaWZpZWQgdGhhdCBgaWdjYCwgYGljZWAsIGFuZCBgaWRwZmAgYXJlIG5vdCBlbXVsYXRlZCwgc2luY2UgdGhleSBjb3VsZCB0aHJvdyBvZmYgdGhlIGFuYWx5c2lzLgoKSW4gc3VtbWFyeSwgdGhpcyBwYXRjaCBpcyBmdXp6YWJsZS4gVGhlIHJhdGlvbmFsZSBpcyB0aGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgYGljZWAsIGBpZHBmYCwgYW5kIGBpZ2NgIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgYGUxMDAwYCBhbmQgYGlnYnZmYCBhcmUuIFRoZSBwYXRjaCBmaXhlcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdGhyb3VnaCBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uL2ZhdWx0IGluamVjdGlvbi4KClRoZXJlZm9yZSwgdGhlIHJlc3VsdHMgYXJlOgoqICAgV29ydGhGdXp6aW5nID0gdHJ1ZQoqICAgRm9jdXNTeW1ib2xzID0gYFsmIzM0O2UxMDAwX3Byb2JlJiMzNDtdYAoqICAgRW5hYmxlQ29uZmlncyA9IGBbJiMzNDtFMTAwMCYjMzQ7LCAmIzM0O0lHQlZGJiMzNDtdYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMDAmIzM0OywKICAgICYjMzQ7SUdCVkYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwMF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIGljZSwgaWRwZiwgYW5kIGlnYyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBlMTAwMCBhbmQgaWdidmYgZHJpdmVycyBhcmUgc3VwcG9ydGVkIChRRU1VIGVtdWxhdGVzIGUxMDAwIGFuZCBpZ2Igd2l0aCBTUi1JT1YpLiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBlMTAwMF9wcm9iZSBhbmQgYSBsb2dpYyBidWcgaW4gaWdidmZfdHhfbWFwX2FkdiAod2hpY2ggaXMgaW5saW5lZCBpbnRvIHRoZSB0cmFuc21pdCBob3QtcGF0aCkuIFdlIGNhbiBmdXp6IHRoZSBlMTAwMF9wcm9iZSBmdW5jdGlvbiB2aWEgUENJIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgZmF1bHQgaW5qZWN0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwMCYjMzQ7LAogICAgJiMzNDtJR0JWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDAwX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgaWNlLCBpZHBmLCBhbmQgaWdjIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIGUxMDAwIGFuZCBpZ2J2ZiBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQgKFFFTVUgZW11bGF0ZXMgZTEwMDAgYW5kIGlnYiB3aXRoIFNSLUlPVikuIFRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGUxMDAwX3Byb2JlIGFuZCBhIGxvZ2ljIGJ1ZyBpbiBpZ2J2Zl90eF9tYXBfYWR2ICh3aGljaCBpcyBpbmxpbmVkIGludG8gdGhlIHRyYW5zbWl0IGhvdC1wYXRoKS4gV2UgY2FuIGZ1enogdGhlIGUxMDAwX3Byb2JlIGZ1bmN0aW9uIHZpYSBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBmYXVsdCBpbmplY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTozMS4yNjM0NjExMThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg5ODcyNzE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwMFwiLFxuICAgIFwiSUdCVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwMF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgaWNlLCBpZHBmLCBhbmQgaWdjIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIGUxMDAwIGFuZCBpZ2J2ZiBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQgKFFFTVUgZW11bGF0ZXMgZTEwMDAgYW5kIGlnYiB3aXRoIFNSLUlPVikuIFRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGUxMDAwX3Byb2JlIGFuZCBhIGxvZ2ljIGJ1ZyBpbiBpZ2J2Zl90eF9tYXBfYWR2ICh3aGljaCBpcyBpbmxpbmVkIGludG8gdGhlIHRyYW5zbWl0IGhvdC1wYXRoKS4gV2UgY2FuIGZ1enogdGhlIGUxMDAwX3Byb2JlIGZ1bmN0aW9uIHZpYSBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBmYXVsdCBpbmplY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjMxLjI2MzQ3MzA0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1NTQzNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQ3YmZiNWM1NGFiOGFiMDE4NjMzOWE1OWM4NzcwODUyMjBhN2E4N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcXG5pbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xcbkBAIC0xMjIyLDExICsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcbiBcXHRpZiAoaHctXFx1MDAzZWZsYXNoX2FkZHJlc3MpXFxuIFxcdFxcdGlvdW5tYXAoaHctXFx1MDAzZWZsYXNoX2FkZHJlc3MpO1xcbitlcnJfbWRpb19pb3JlbWFwOlxcbiBcXHRrZnJlZShhZGFwdGVyLVxcdTAwM2V0eF9yaW5nKTtcXG4gXFx0a2ZyZWUoYWRhcHRlci1cXHUwMDNlcnhfcmluZyk7XFxuIGVycl9kbWE6XFxuIGVycl9zd19pbml0Olxcbi1lcnJfbWRpb19pb3JlbWFwOlxcbiBcXHRpb3VubWFwKGh3LVxcdTAwM2VjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTtcXG4gXFx0aW91bm1hcChody1cXHUwMDNlaHdfYWRkcik7XFxuIGVycl9pb3JlbWFwOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuaW5kZXggMzBjM2E0ZGI3ZDYxMS4uODVhNzRjZDZlYTFmMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuQEAgLTc5Myw3ICs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sXFxuIFxcdFxcdFxcdFxcdCAgIHJldCxcXG4gXFx0XFx0XFx0XFx0ICAgbGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpLFxcbiBcXHRcXHRcXHRcXHQgICBwaW5fdHlwZV9uYW1lW3Bpbl90eXBlXSwgcGluLVxcdTAwM2VpZHgpO1xcbi1cXHRlbHNlXFxuK1xcdGVsc2UgaWYgKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpXFxuIFxcdFxcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoaWNlX3BmX3RvX2RldihwZiksXFxuIFxcdFxcdFxcdFxcdCAgICBcXFwiZXJyOiVkICVzIGZhaWxlZCB0byB1cGRhdGUgJXMgcGluOiV1XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcmV0LFxcbkBAIC0zMDI0LDcgKzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcXG4gXFx0KnBoYXNlX29mZnNldF9waW5zX3VwZGF0ZWQgPSAwO1xcbiBcXHRyZXQgPSBpY2VfYXFfZ2V0X2NndV9pbnB1dF9waW5fbWVhc3VyZShcXHUwMDI2cGYtXFx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XFxuLVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcGYtXFx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4pIHtcXG4rXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAocGYtXFx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHxcXG4rXFx0XFx0ICAgIHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUJVU1kpKSB7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9IGVsc2UgaWYgKHJldCkge1xcbiBcXHRcXHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxcbkBAIC0zMDg2LDEwICszMDg3LDEyIEBAIGljZV9kcGxsX3VwZGF0ZV9zdGF0ZShzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9kcGxsICpkLCBib29sIGluaXQpXFxuIFxcdFxcdGQtXFx1MDAzZWRwbGxfaWR4LCBkLVxcdTAwM2VwcmV2X2lucHV0X2lkeCwgZC1cXHUwMDNlaW5wdXRfaWR4LFxcbiBcXHRcXHRkLVxcdTAwM2VkcGxsX3N0YXRlLCBkLVxcdTAwM2VwcmV2X2RwbGxfc3RhdGUsIGQtXFx1MDAzZW1vZGUpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXFxuLVxcdFxcdFxcdFxcXCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0ZC1cXHUwMDNlZHBsbF9pZHgsIHJldCxcXG4tXFx0XFx0XFx0bGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4rXFx0XFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24ndCBsb2cgZXJyb3IgKi9cXG4rXFx0XFx0aWYgKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpXFxuK1xcdFxcdFxcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXFxuK1xcdFxcdFxcdFxcdFxcXCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHBsbF9pZHgsIHJldCxcXG4rXFx0XFx0XFx0XFx0bGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXHRpZiAoaW5pdCkge1xcbkBAIC0zMTU4LDcgKzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXFxuIFxcdCAgICBkLVxcdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXFx1MDAzZXBoYXNlX29mZnNldF9tb25pdG9yX3BlcmlvZCA9PSAwKVxcbiBcXHRcXHRyZXQgPSBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMocGYsIFxcdTAwMjZwaGFzZV9vZmZzZXRfbnRmKTtcXG4gXFx0aWYgKHJldCkge1xcbi1cXHRcXHRkLVxcdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0rKztcXG4rXFx0XFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5ICovXFxuK1xcdFxcdGlmIChwZi1cXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxcbitcXHRcXHRcXHRkLVxcdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0rKztcXG4gXFx0XFx0Lyogc3RvcCByZXNjaGVkdWxpbmcgdGhpcyB3b3JrZXIgKi9cXG4gXFx0XFx0aWYgKGQtXFx1MDAzZWNndV9zdGF0ZV9hY3FfZXJyX251bSBcXHUwMDNlXFxuIFxcdFxcdCAgICBJQ0VfQ0dVX1NUQVRFX0FDUV9FUlJfVEhSRVNIT0xEKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCA0OTM3MWIwNjU4NDU4Li43ZWIzODBiZTdlZDI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5AQCAtMTA2OSwxOCArMTA2OSwxOCBAQCBzdGF0aWMgaW50IGljZV9sYnRlc3RfcHJlcGFyZV9yaW5ncyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiBcXG4gXFx0c3RhdHVzID0gaWNlX3ZzaV9jZmdfbGFuKHZzaSk7XFxuIFxcdGlmIChzdGF0dXMpXFxuLVxcdFxcdGdvdG8gZXJyX3NldHVwX3J4X3Jpbmc7XFxuK1xcdFxcdGdvdG8gZXJyX2NmZ19sYW47XFxuIFxcbiBcXHRzdGF0dXMgPSBpY2VfdnNpX3N0YXJ0X2FsbF9yeF9yaW5ncyh2c2kpO1xcbiBcXHRpZiAoc3RhdHVzKVxcbi1cXHRcXHRnb3RvIGVycl9zdGFydF9yeF9yaW5nO1xcbitcXHRcXHRnb3RvIGVycl9jZmdfbGFuO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1lcnJfc3RhcnRfcnhfcmluZzpcXG4tXFx0aWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7XFxuLWVycl9zZXR1cF9yeF9yaW5nOlxcbitlcnJfY2ZnX2xhbjpcXG4gXFx0aWNlX3ZzaV9zdG9wX2xhbl90eF9yaW5ncyh2c2ksIElDRV9OT19SRVNFVCwgMCk7XFxuK2Vycl9zZXR1cF9yeF9yaW5nOlxcbitcXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcXG4gZXJyX3NldHVwX3R4X3Jpbmc6XFxuIFxcdGljZV92c2lfZnJlZV90eF9yaW5ncyh2c2kpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGUyZmQyZGFiMDNlMzYuLmQ4ODgzNTQ4MmQzYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2cGYtXFx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XFxuIFxcbitcXHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxcbitcXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcXG4rXFx0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcXG4rXFx0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xcbkBAIC04NDgsNiArODQ4LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpXFxuIFxcdFxcdFxcdCAgICAgIE5VTEwpO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3Jlc2V0X2ludGVycnVwdHMgLSBjbGVhciBhbGwgcXVldWUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZm9yIGEgVlNJXFxuKyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZFxcbisgKlxcbisgKiBaZXJvIHRoZSBRSU5UX1JRQ1RMIGFuZCBRSU5UX1RRQ1RMIHJlZ2lzdGVycyBmb3IgYWxsIGFsbG9jYXRlZCBxdWV1ZXNcXG4rICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCxcXG4rICogQ0FVU0VfRU5BIGFuZCBORVhUUSBmaWVsZHMsIHVubGlrZSBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoKSB3aGljaCBvbmx5XFxuKyAqIGNsZWFycyB0aGUgQ0FVU0VfRU5BIGJpdC5cXG4rICovXFxuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4re1xcbitcXHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZWh3O1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxcbitcXHRcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHZzaS1cXHUwMDNlcnhxX21hcFtpXSksIDApO1xcbitcXG4rXFx0aWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpXFxuK1xcdFxcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVxcdTAwM2V0eHFfbWFwW2ldKSwgMCk7XFxuK1xcbitcXHRpY2VfZmx1c2goaHcpO1xcbit9XFxuK1xcbiAvKipcXG4gICogaWNlX3Jlc2V0X3ZmIC0gUmVzZXQgYSBwYXJ0aWN1bGFyIFZGXFxuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgc3RydWN0dXJlXFxuQEAgLTkxOSw2ICs5NDMsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpXFxuIFxcbiBcXHRpY2VfZGlzX3ZmX3FzKHZmKTtcXG4gXFxuK1xcdC8qIGNsZWFudXAgaW50ZXJydXB0IHJlZ2lzdGVycyAqL1xcbitcXHRpY2VfcmVzZXRfaW50ZXJydXB0cyh2c2kpO1xcbitcXG4gXFx0LyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlXFxuIFxcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuaW5kZXggNTM5MmIwNDA0OTg2Mi4uMzIxZDI5YzI1YjdjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG5AQCAtMjYsNiArMjYsNyBAQFxcbiB2b2lkIGljZV9pbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gdm9pZCBpY2VfZGVpbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcXG4gaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xcbiBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqaWNlX3ZmX2dldF9wb3J0X2luZm8oc3RydWN0IGljZV92ZiAqdmYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuaW5kZXggMzFiZTJmNzYxODFjMC4uNDMxYzljNTQ2YjA0ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxcbiBcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcXG4rICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmVcXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcXG4rICovXFxuK3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXFxuK3tcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2dnNpLVxcdTAwM2ViYWNrLVxcdTAwM2VodztcXG4rXFx0dTMyIHBmcSA9IHZzaS1cXHUwMDNlcnhxX21hcFtxX2lkeF07XFxuK1xcdHUzMiByZWc7XFxuK1xcbitcXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xcbitcXHRyZWcgXFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XFxuK1xcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdGJpdG1hcF96ZXJvKHZmLVxcdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xcbiBcXHR9IGVsc2UgaWYgKHFfbWFwKSB7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcXG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0XFx0fVxcbiBcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdFxcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cXG4gXFx0XFx0XFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVxcdTAwM2VyeHFfZW5hKTtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcXG5pbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xcbkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4gXFx0aWYgKCFyZWdfdmFscylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpO1xcbitcXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xcbiBcXHRpZiAobnVtX3JlZ3MgXFx1MDAzYyBudW1fdmVjcykge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIGZyZWVfcmVnX3ZhbHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuY1xcbmluZGV4IGNmOTY2ZmU2Yzc1OWMuLmJiODFlNjIwYzVjODcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXFxuQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgaW50IGlkcGZfbWJfaW50cl9yZXFfaXJxKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwiSVJRIHJlcXVlc3QgZm9yIG1haWxib3ggZmFpbGVkLCBlcnJvcjogJWRcXFxcblxcXCIsIGVycik7XFxuLVxcbitcXHRcXHRrZnJlZShuYW1lKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5pbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXFxuQEAgLTMwOTcsMTAgKzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdHR4X3BhcmFtcy5kdHlwZSA9IElEUEZfVFhfREVTQ19EVFlQRV9GTEVYX0ZMT1dfU0NIRTtcXG4gXFx0XFx0dHhfcGFyYW1zLmVvcF9jbWQgPSBJRFBGX1RYRF9GTEVYX0ZMT1dfQ01EX0VPUDtcXG4tXFx0XFx0LyogU2V0IHRoZSBSRSBiaXQgdG8gcGVyaW9kaWNhbGx5IFxcXCJjbGVhblxcXCIgdGhlIGRlc2NyaXB0b3IgcmluZy5cXG4tXFx0XFx0ICogTUlOX0dBUCBpcyBzZXQgdG8gTUlOX1JJTkcgc2l6ZSB0byBlbnN1cmUgaXQgd2lsbCBiZSBzZXQgYXRcXG4tXFx0XFx0ICogbGVhc3Qgb25jZSBlYWNoIHRpbWUgYXJvdW5kIHRoZSByaW5nLlxcbi1cXHRcXHQgKi9cXG4rXFx0XFx0LyogU2V0IHRoZSBSRSBiaXQgcGVyaW9kaWNhbGx5IHRvIFxcXCJjbGVhblxcXCIgdGhlIGRlc2NyaXB0b3IgcmluZyAqL1xcbiBcXHRcXHRpZiAoaWRwZl90eF9zcGxpdHFfbmVlZF9yZSh0eF9xKSkge1xcbiBcXHRcXHRcXHR0eF9wYXJhbXMuZW9wX2NtZCB8PSBJRFBGX1RYRF9GTEVYX0ZMT1dfQ01EX1JFO1xcbiBcXHRcXHRcXHR0eF9xLVxcdTAwM2V0eHFfZ3JwLVxcdTAwM2VudW1fY29tcGxldGlvbnNfcGVuZGluZysrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxcbmluZGV4IDRiZTViM2I2ZDNlZDIuLjkwOGRmYTI4Njc0ZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmhcXG5AQCAtMjEsNyArMjEsNyBAQFxcbiAvKiBNYWlsYm94IFF1ZXVlICovXFxuICNkZWZpbmUgSURQRl9NQVhfTUJYUVxcdFxcdFxcdFxcdDFcXG4gXFxuLSNkZWZpbmUgSURQRl9NSU5fVFhRX0RFU0NcXHRcXHRcXHQ2NFxcbisjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXFx0XFx0XFx0MTI4XFxuICNkZWZpbmUgSURQRl9NSU5fUlhRX0RFU0NcXHRcXHRcXHQ2NFxcbiAjZGVmaW5lIElEUEZfTUlOX1RYUV9DT01QTFFfREVTQ1xcdFxcdDI1NlxcbiAjZGVmaW5lIElEUEZfTUFYX1FJRFNcXHRcXHRcXHRcXHQyNTZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jXFxuaW5kZXggYTA3ZDdlODA4Y2E5Yi4uNjcyNjA4NGY2Y2ZhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcXG5AQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IGlkcGZfdmZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdGlmICghcmVnX3ZhbHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcXG4rXFx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzLCB0b3RhbF92ZWNzKTtcXG4gXFx0aWYgKG51bV9yZWdzIFxcdTAwM2MgbnVtX3ZlY3MpIHtcXG4gXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBmcmVlX3JlZ192YWxzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXFxuaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXFxuQEAgLTEzMTgsMTEgKzEzMTgsMTIgQEAgaWRwZl92cG9ydF9pbml0X3F1ZXVlX3JlZ19jaHVua3Moc3RydWN0IGlkcGZfdnBvcnRfY29uZmlnICp2cG9ydF9jb25maWcsXFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxcbiAgKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZWN0b3IgY2h1bmtzXFxuICAqIEByZWdfdmFsczogUmVnaXN0ZXIgb2Zmc2V0cyB0byBzdG9yZSBpblxcbisgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGRcXG4gICpcXG4gICogUmV0dXJuOiBudW1iZXIgb2YgcmVnaXN0ZXJzIHRoYXQgZ290IHBvcHVsYXRlZFxcbiAgKi9cXG4gaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tXFx0XFx0XFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKVxcbitcXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcylcXG4ge1xcbiBcXHRzdHJ1Y3QgdmlydGNobmwyX3ZlY3Rvcl9jaHVua3MgKmNodW5rcztcXG4gXFx0c3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDtcXG5AQCAtMTM0Niw3ICsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXFx1MDAzZWR5bmN0bF9yZWdfc3BhY2luZyk7XFxuIFxcdFxcdGl0cm5fcmVnX3NwYWNpbmcgPSBsZTMyX3RvX2NwdShjaHVuay1cXHUwMDNlaXRybl9yZWdfc3BhY2luZyk7XFxuIFxcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3ZlYzsgaSsrKSB7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmVjIFxcdTAwMjZcXHUwMDI2IG51bV9yZWdzIFxcdTAwM2MgbnVtX3ZlY3M7IGkrKykge1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uZHluX2N0bF9yZWcgPSByZWdfdmFsLmR5bl9jdGxfcmVnO1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9yZWcgPSByZWdfdmFsLml0cm5fcmVnO1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9pbmRleF9zcGFjaW5nID1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxcbmluZGV4IDY4NzZlM2VkOWQxYmUuLjliMWM5Yzg2ZjZlYWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxcbkBAIC0xMDQsNyArMTA0LDcgQEAgaW50IGlkcGZfdmNfY29yZV9pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbiB2b2lkIGlkcGZfdmNfY29yZV9kZWluaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XFxuIFxcbiBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbi1cXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpO1xcbitcXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcyk7XFxuIGludCBpZHBmX3F1ZXVlX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4gXFx0XFx0XFx0c3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyxcXG4gXFx0XFx0XFx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gKmNodW5rcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5pbmRleCAwYTNkMGExY2JhNDMzLi5jNjg2ZWUxMjBhMTQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5AQCAtMjE5MCw4ICsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0YnVmZmVyX2luZm8tXFx1MDAzZXRpbWVfc3RhbXAgPSAwO1xcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNlbGVuZ3RoID0gMDtcXG4gXFx0YnVmZmVyX2luZm8tXFx1MDAzZW1hcHBlZF9hc19wYWdlID0gZmFsc2U7XFxuLVxcdGlmIChjb3VudClcXG4tXFx0XFx0Y291bnQtLTtcXG4gXFxuIFxcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cXG4gXFx0d2hpbGUgKGNvdW50LS0pIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbmluZGV4IDJjOWUyZGZkODQ5OTEuLmIzODgzYTVhN2Q3YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbkBAIC01MzUyLDkgKzUzNTIsOCBAQCB2b2lkIGlnY19kb3duKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcilcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2VudW1fcV92ZWN0b3JzOyBpKyspIHtcXG4gXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldKSB7XFxuLVxcdFxcdFxcdG5hcGlfc3luY2hyb25pemUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldLVxcdTAwM2VuYXBpKTtcXG4tXFx0XFx0XFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xcbiBcXHRcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldLVxcdTAwM2VuYXBpKTtcXG4rXFx0XFx0XFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjMxLjk3OTk5NDM3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3MTgyMTgxNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDAwXCIsXG4gICAgXCJJR0JWRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDAwX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQ3YmZiNWM1NGFiOGFiMDE4NjMzOWE1OWM4NzcwODUyMjBhN2E4N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDAzOjAxOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jXG5pbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbkBAIC0xMjIyLDExICsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRpZiAoaHctXHUwMDNlZmxhc2hfYWRkcmVzcylcbiBcdFx0aW91bm1hcChody1cdTAwM2VmbGFzaF9hZGRyZXNzKTtcbitlcnJfbWRpb19pb3JlbWFwOlxuIFx0a2ZyZWUoYWRhcHRlci1cdTAwM2V0eF9yaW5nKTtcbiBcdGtmcmVlKGFkYXB0ZXItXHUwMDNlcnhfcmluZyk7XG4gZXJyX2RtYTpcbiBlcnJfc3dfaW5pdDpcbi1lcnJfbWRpb19pb3JlbWFwOlxuIFx0aW91bm1hcChody1cdTAwM2VjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTtcbiBcdGlvdW5tYXAoaHctXHUwMDNlaHdfYWRkcik7XG4gZXJyX2lvcmVtYXA6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuaW5kZXggMzBjM2E0ZGI3ZDYxMS4uODVhNzRjZDZlYTFmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuQEAgLTc5Myw3ICs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sXG4gXHRcdFx0XHQgICByZXQsXG4gXHRcdFx0XHQgICBsaWJpZV9hcV9zdHIocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSxcbiBcdFx0XHRcdCAgIHBpbl90eXBlX25hbWVbcGluX3R5cGVdLCBwaW4tXHUwMDNlaWR4KTtcbi1cdGVsc2VcbitcdGVsc2UgaWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiBcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSxcbiBcdFx0XHRcdCAgICBcImVycjolZCAlcyBmYWlsZWQgdG8gdXBkYXRlICVzIHBpbjoldVxcblwiLFxuIFx0XHRcdFx0ICAgIHJldCxcbkBAIC0zMDI0LDcgKzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcbiBcdCpwaGFzZV9vZmZzZXRfcGluc191cGRhdGVkID0gMDtcbiBcdHJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKFx1MDAyNnBmLVx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxuIFx0XHRcdFx0XHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XG4tXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7XG4rXHRpZiAocmV0IFx1MDAyNlx1MDAyNiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VBR0FJTiB8fFxuK1x0XHQgICAgcGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VCVVNZKSkge1xuIFx0XHRyZXR1cm4gMDtcbiBcdH0gZWxzZSBpZiAocmV0KSB7XG4gXHRcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXG5AQCAtMzA4NiwxMCArMzA4NywxMiBAQCBpY2VfZHBsbF91cGRhdGVfc3RhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbCAqZCwgYm9vbCBpbml0KVxuIFx0XHRkLVx1MDAzZWRwbGxfaWR4LCBkLVx1MDAzZXByZXZfaW5wdXRfaWR4LCBkLVx1MDAzZWlucHV0X2lkeCxcbiBcdFx0ZC1cdTAwM2VkcGxsX3N0YXRlLCBkLVx1MDAzZXByZXZfZHBsbF9zdGF0ZSwgZC1cdTAwM2Vtb2RlKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbi1cdFx0XHRcInVwZGF0ZSBkcGxsPSVkIHN0YXRlIGZhaWxlZCwgcmV0PSVkICVzXFxuXCIsXG4tXHRcdFx0ZC1cdTAwM2VkcGxsX2lkeCwgcmV0LFxuLVx0XHRcdGxpYmllX2FxX3N0cihwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcbitcdFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24ndCBsb2cgZXJyb3IgKi9cbitcdFx0aWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbitcdFx0XHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxuK1x0XHRcdFx0XCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcblwiLFxuK1x0XHRcdFx0ZC1cdTAwM2VkcGxsX2lkeCwgcmV0LFxuK1x0XHRcdFx0bGliaWVfYXFfc3RyKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFx0aWYgKGluaXQpIHtcbkBAIC0zMTU4LDcgKzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4gXHQgICAgZC1cdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXHUwMDNlcGhhc2Vfb2Zmc2V0X21vbml0b3JfcGVyaW9kID09IDApXG4gXHRcdHJldCA9IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhwZiwgXHUwMDI2cGhhc2Vfb2Zmc2V0X250Zik7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtKys7XG4rXHRcdC8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSAqL1xuK1x0XHRpZiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxuK1x0XHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtKys7XG4gXHRcdC8qIHN0b3AgcmVzY2hlZHVsaW5nIHRoaXMgd29ya2VyICovXG4gXHRcdGlmIChkLVx1MDAzZWNndV9zdGF0ZV9hY3FfZXJyX251bSBcdTAwM2VcbiBcdFx0ICAgIElDRV9DR1VfU1RBVEVfQUNRX0VSUl9USFJFU0hPTEQpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5pbmRleCA0OTM3MWIwNjU4NDU4Li43ZWIzODBiZTdlZDI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMTA2OSwxOCArMTA2OSwxOCBAQCBzdGF0aWMgaW50IGljZV9sYnRlc3RfcHJlcGFyZV9yaW5ncyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9jZmdfbGFuKHZzaSk7XG4gXHRpZiAoc3RhdHVzKVxuLVx0XHRnb3RvIGVycl9zZXR1cF9yeF9yaW5nO1xuK1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9zdGFydF9hbGxfcnhfcmluZ3ModnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3N0YXJ0X3J4X3Jpbmc7XG4rXHRcdGdvdG8gZXJyX2NmZ19sYW47XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfc3RhcnRfcnhfcmluZzpcbi1cdGljZV92c2lfZnJlZV9yeF9yaW5ncyh2c2kpO1xuLWVycl9zZXR1cF9yeF9yaW5nOlxuK2Vycl9jZmdfbGFuOlxuIFx0aWNlX3ZzaV9zdG9wX2xhbl90eF9yaW5ncyh2c2ksIElDRV9OT19SRVNFVCwgMCk7XG4rZXJyX3NldHVwX3J4X3Jpbmc6XG4rXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcbiBlcnJfc2V0dXBfdHhfcmluZzpcbiBcdGljZV92c2lfZnJlZV90eF9yaW5ncyh2c2kpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYuLmQ4ODgzNTQ4MmQzYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqL1xuIFx0bW9kX3RpbWVyKFx1MDAyNnBmLVx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cdTAwM2VzZXJ2X3Rtcl9wZXJpb2QpKTtcbiBcbitcdC8qIEJlc3QtZWZmb3J0IHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIHNvIHRoYXQgdGhlXG4rXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcbitcdCAqIChlLmcuIE5ldHdvcmtNYW5hZ2VyKSBtYXkgdHJ5IHRvIG9wZW4gdGhlIG5ldCBkZXZpY2Ugd2hpbGUgdGhlXG4rXHQgKiBhc3luY2hyb25vdXMgcmVzZXQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MsIGhpdHRpbmcgLUVCVVNZLlxuK1x0ICovXG4rXHRyZXQgPSBpY2Vfd2FpdF9mb3JfcmVzZXQocGYsIHNlY3NfdG9famlmZmllcygxMCkpO1xuK1x0aWYgKHJldClcbitcdFx0ZGV2X2VycihkZXYsIFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxuXCIsXG4rXHRcdFx0cmV0KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDgsNiArODQ4LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpXG4gXHRcdFx0ICAgICAgTlVMTCk7XG4gfVxuIFxuKy8qKlxuKyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuKyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZFxuKyAqXG4rICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4rICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCxcbisgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHlcbisgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4rICovXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuK3tcbitcdHN0cnVjdCBpY2VfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZWh3O1xuK1x0aW50IGk7XG4rXG4rXHRpY2VfZm9yX2VhY2hfYWxsb2NfcnhxKHZzaSwgaSlcbitcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuK1xuK1x0aWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpXG4rXHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbitcbitcdGljZV9mbHVzaChodyk7XG4rfVxuK1xuIC8qKlxuICAqIGljZV9yZXNldF92ZiAtIFJlc2V0IGEgcGFydGljdWxhciBWRlxuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgc3RydWN0dXJlXG5AQCAtOTE5LDYgKzk0Myw5IEBAIGludCBpY2VfcmVzZXRfdmYoc3RydWN0IGljZV92ZiAqdmYsIHUzMiBmbGFncylcbiBcbiBcdGljZV9kaXNfdmZfcXModmYpO1xuIFxuK1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4rXHRpY2VfcmVzZXRfaW50ZXJydXB0cyh2c2kpO1xuK1xuIFx0LyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlXG4gXHQgKiBlbmFibGVkLiBUaGlzIGlzIG5lZWRlZCBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIFZGUi5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuaW5kZXggNTM5MmIwNDA0OTg2Mi4uMzIxZDI5YzI1YjdjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5AQCAtMjYsNiArMjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbit2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMC4uNDMxYzljNTQ2YjA0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuIFx0d3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTtcbiB9XG4gXG4rLyoqXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcbisgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZVxuKyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRidzIHNwYWNlXG4rICovXG4rc3RhdGljIHZvaWQgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeClcbit7XG4rXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnZzaS1cdTAwM2ViYWNrLVx1MDAzZWh3O1xuK1x0dTMyIHBmcSA9IHZzaS1cdTAwM2VyeHFfbWFwW3FfaWR4XTtcbitcdHUzMiByZWc7XG4rXG4rXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xuK1x0cmVnIFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XG4rXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7XG4rXG4rXHRpY2VfZmx1c2goaHcpO1xuK31cbitcbiAvKipcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgaW5mb1xuQEAgLTQxNiw2ICs0MzQsOCBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpXG4gXHRcdFx0Z290byBlcnJvcl9wYXJhbTtcbiBcdFx0fVxuIFxuK1x0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpXG4rXHRcdFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XG4gXHRcdGJpdG1hcF96ZXJvKHZmLVx1MDAzZXJ4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7XG4gXHR9IGVsc2UgaWYgKHFfbWFwKSB7XG4gXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikge1xuQEAgLTQzNiw2ICs0NTYsNyBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpXG4gXHRcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHRcdH1cbiBcbitcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0XHQvKiBDbGVhciBlbmFibGVkIHF1ZXVlcyBmbGFnICovXG4gXHRcdFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVx1MDAzZXJ4cV9lbmEpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jXG5pbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbitcdG51bV9yZWdzID0gaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhhZGFwdGVyLCByZWdfdmFscywgdG90YWxfdmVjcyk7XG4gXHRpZiAobnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gZnJlZV9yZWdfdmFscztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbmluZGV4IGNmOTY2ZmU2Yzc1OWMuLmJiODFlNjIwYzVjODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuY1xuQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgaW50IGlkcGZfbWJfaW50cl9yZXFfaXJxKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcIklSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCIsIGVycik7XG4tXG4rXHRcdGtmcmVlKG5hbWUpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG5pbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuQEAgLTMwOTcsMTAgKzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0dHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFO1xuIFx0XHR0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QO1xuLVx0XHQvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgXCJjbGVhblwiIHRoZSBkZXNjcmlwdG9yIHJpbmcuXG4tXHRcdCAqIE1JTl9HQVAgaXMgc2V0IHRvIE1JTl9SSU5HIHNpemUgdG8gZW5zdXJlIGl0IHdpbGwgYmUgc2V0IGF0XG4tXHRcdCAqIGxlYXN0IG9uY2UgZWFjaCB0aW1lIGFyb3VuZCB0aGUgcmluZy5cbi1cdFx0ICovXG4rXHRcdC8qIFNldCB0aGUgUkUgYml0IHBlcmlvZGljYWxseSB0byBcImNsZWFuXCIgdGhlIGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0XHRpZiAoaWRwZl90eF9zcGxpdHFfbmVlZF9yZSh0eF9xKSkge1xuIFx0XHRcdHR4X3BhcmFtcy5lb3BfY21kIHw9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfUkU7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eHFfZ3JwLVx1MDAzZW51bV9jb21wbGV0aW9uc19wZW5kaW5nKys7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmhcbmluZGV4IDRiZTViM2I2ZDNlZDIuLjkwOGRmYTI4Njc0ZWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG5AQCAtMjEsNyArMjEsNyBAQFxuIC8qIE1haWxib3ggUXVldWUgKi9cbiAjZGVmaW5lIElEUEZfTUFYX01CWFFcdFx0XHRcdDFcbiBcbi0jZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0NjRcbisjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0MTI4XG4gI2RlZmluZSBJRFBGX01JTl9SWFFfREVTQ1x0XHRcdDY0XG4gI2RlZmluZSBJRFBGX01JTl9UWFFfQ09NUExRX0RFU0NcdFx0MjU2XG4gI2RlZmluZSBJRFBGX01BWF9RSURTXHRcdFx0XHQyNTZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbmluZGV4IGEwN2Q3ZTgwOGNhOWIuLjY3MjYwODRmNmNmYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuY1xuQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGludCBpZHBmX3ZmX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0aWYgKCFyZWdfdmFscylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpO1xuK1x0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzLCB0b3RhbF92ZWNzKTtcbiBcdGlmIChudW1fcmVncyBcdTAwM2MgbnVtX3ZlY3MpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBmcmVlX3JlZ192YWxzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmNcbmluZGV4IGRjNWFkNzg0ZjQ1NmYuLjhiZDZjY2E2NGM5YmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmNcbkBAIC0xMzE4LDExICsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxuICAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlY3RvciBjaHVua3NcbiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW5cbisgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGRcbiAgKlxuICAqIFJldHVybjogbnVtYmVyIG9mIHJlZ2lzdGVycyB0aGF0IGdvdCBwb3B1bGF0ZWRcbiAgKi9cbiBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLVx0XHRcdCAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscylcbitcdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcylcbiB7XG4gXHRzdHJ1Y3QgdmlydGNobmwyX3ZlY3Rvcl9jaHVua3MgKmNodW5rcztcbiBcdHN0cnVjdCBpZHBmX3ZlY19yZWdzIHJlZ192YWw7XG5AQCAtMTM0Niw3ICsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXHUwMDNlZHluY3RsX3JlZ19zcGFjaW5nKTtcbiBcdFx0aXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLVx1MDAzZWl0cm5fcmVnX3NwYWNpbmcpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmVjOyBpKyspIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZlYyBcdTAwMjZcdTAwMjYgbnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzOyBpKyspIHtcbiBcdFx0XHRyZWdfdmFsc1tudW1fcmVnc10uZHluX2N0bF9yZWcgPSByZWdfdmFsLmR5bl9jdGxfcmVnO1xuIFx0XHRcdHJlZ192YWxzW251bV9yZWdzXS5pdHJuX3JlZyA9IHJlZ192YWwuaXRybl9yZWc7XG4gXHRcdFx0cmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5faW5kZXhfc3BhY2luZyA9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxuaW5kZXggNjg3NmUzZWQ5ZDFiZS4uOWIxYzljODZmNmVhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxuQEAgLTEwNCw3ICsxMDQsNyBAQCBpbnQgaWRwZl92Y19jb3JlX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG4gdm9pZCBpZHBmX3ZjX2NvcmVfZGVpbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuIFxuIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tXHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKTtcbitcdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcyk7XG4gaW50IGlkcGZfcXVldWVfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRcdHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMsXG4gXHRcdFx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gKmNodW5rcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuaW5kZXggMGEzZDBhMWNiYTQzMy4uYzY4NmVlMTIwYTE0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuQEAgLTIxOTAsOCArMjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRidWZmZXJfaW5mby1cdTAwM2V0aW1lX3N0YW1wID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZWxlbmd0aCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VtYXBwZWRfYXNfcGFnZSA9IGZhbHNlO1xuLVx0aWYgKGNvdW50KVxuLVx0XHRjb3VudC0tO1xuIFxuIFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xuIFx0d2hpbGUgKGNvdW50LS0pIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG5pbmRleCAyYzllMmRmZDg0OTkxLi5iMzg4M2E1YTdkN2FlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG5AQCAtNTM1Miw5ICs1MzUyLDggQEAgdm9pZCBpZ2NfZG93bihzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV9xX3ZlY3RvcnM7IGkrKykge1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXSkge1xuLVx0XHRcdG5hcGlfc3luY2hyb25pemUoXHUwMDI2YWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXS1cdTAwM2VuYXBpKTtcbi1cdFx0XHRpZ2Nfc2V0X3F1ZXVlX25hcGkoYWRhcHRlciwgaSwgTlVMTCk7XG4gXHRcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlcV92ZWN0b3JbaV0tXHUwMDNlbmFwaSk7XG4rXHRcdFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTozMS45Nzk5OTc0NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQ4MDI4MTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBTZXJpZXMgQW5hbHlzaXMgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzOiBgZTEwMDBgLCBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbmQgYGlnY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGZ1enppbmcgc3RyYXRlZ3kuXG5cbkhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHRoZSBjaGFuZ2VzIGFuZCBteSB0aG91Z2h0cyBvbiB0aGVpciB0ZXN0YWJpbGl0eTpcblxuMS4gICoqYGUxMDAwYDoqKiBGaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBlMTAwMF9wcm9iZWAuIExvb2tzIGxpa2UgYSBzaW1wbGUgc3dhcCBvZiBlcnJvciBsYWJlbHMgKGBlcnJfc3dfaW5pdGAgYW5kIGBlcnJfbWRpb19pb3JlbWFwYCksIHdoaWNoIHdvdWxkIGhhdmUgY2F1c2VkIGFuIGlzc3VlIHdpdGggZnJlZWluZyByZXNvdXJjZXMgb24gYSBmYWlsdXJlLiBUaGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB2aWEgZmF1bHQgaW5qZWN0aW9uLCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBgZTEwMDBgICppcyogZW11bGF0ZWQgaW4gUUVNVS4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQuXG4yLiAgKipgaWNlYDoqKiBBIGJ1bmNoIG9mIGNoYW5nZXMgaW4gYGljZV9kcGxsLmNgLCBgaWNlX2V0aHRvb2wuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2VfdmZfbGliLmNgLiBUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHJlc2V0IHJlY292ZXJ5LCBhbmQgaW50ZXJydXB0IGNsZWFyaW5nIHdpdGhpbiBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKS4gSXQncyBiYXNlZCBvbiBJbnRlbCdzIEU4MDAgc2VyaWVzLiBJIGRvbid0IHRoaW5rIHN0YW5kYXJkIFFFTVUgZW11bGF0ZXMgYGljZWAgZGlyZWN0bHkuXG4zLiAgKipgaWRwZmA6KiogVHdlYWtzIGluIHNldmVyYWwgZmlsZXMgKGBpZHBmX2Rldi5jYCwgYGlkcGZfdmZfZGV2LmNgLCBgaWRwZl92aXJ0Y2hubC5jYCwgYGlkcGZfbGliLmNgLCBgaWRwZl90eHJ4LmNgKS4gVGhpcyBzZWVtcyB0byBpbmNsdWRlIGEgYm91bmRzIGNoZWNrIGluIGBpZHBmX2dldF9yZWdfaW50cl92ZWNzYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMsIGEgbWVtb3J5IGxlYWsgZml4IGluIGBpZHBmX21iX2ludHJfcmVxX2lycWAsIGFuZCBhIGRlc2NyaXB0b3Igc2l6ZSBjaGFuZ2UuIGBpZHBmYCBpcyBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIEl0IGlzbid0IGVtdWxhdGVkLlxuNC4gICoqYGlnYnZmYDoqKiBBIGZpeCBpbiBgbmV0ZGV2LmNgIHJlZ2FyZGluZyBsb2dpYyBpbiBgaWdidmZfdHhfbWFwX2FkdmAuIFNwZWNpZmljYWxseSwgaXQgcmVtb3ZlcyBhIHJlZHVuZGFudCBgY291bnQtLWAuIGBpZ2J2ZmAgaXMgdGhlIFZGIGRyaXZlciBmb3IgYGlnYmAuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIGBpZ2JgICppcyogZW11bGF0ZWQgaW4gUUVNVSwgYW5kIFFFTVUgaGFzIGFkZGVkIFNSLUlPViBzdXBwb3J0IHdoaWNoIG1ha2VzIGBpZ2J2ZmAgcG90ZW50aWFsbHkgdGVzdGFibGUuIFRoaXMgaXMgYSBwb2ludCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLlxuNS4gICoqYGlnY2A6KiogQSBzd2FwIG9mIGBuYXBpX2Rpc2FibGVgIGFuZCBgaWdjX3NldF9xdWV1ZV9uYXBpYCBpbiBgaWdjX2Rvd25gIGluIGBpZ2NfbWFpbi5jYC4gYGlnY2AgaXMgdGhlIEludGVsIDIuNUcgRXRoZXJuZXQgKEkyMjUvSTIyNikgZHJpdmVyLiBJdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVS5cblxuR2l2ZW4gdGhlIHByb21wdCBhYm91dCBlbXVsYXRlZCBoYXJkd2FyZSwgbXkgaW5pdGlhbCBodW5jaCBpcyB0byBmb2N1cyBvbiBgZTEwMDBgIGFuZCBgaWdidmZgLCBiZWNhdXNlIHRoZXkncmUgdGhlIG9uZXMgdGhhdCAqY2FuKiBiZSB0ZXN0ZWQuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGtleSBwYXJ0czpcblxuRm9yIGBlMTAwMGAsIHRoZSBjaGFuZ2UgaW4gYGUxMDAwX3Byb2JlYCBpcyB2ZXJ5IGludGVyZXN0aW5nOiBpdCBtb2RpZmllcyBhbiBlcnJvciBwYXRoLiBUaGlzIGNvdWxkIGJlIGFuIGV4Y2VsbGVudCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIHBvdGVudGlhbGx5IHRyaWdnZXJpbmcgdGhlIGVycm9yIHdpdGggZmF1bHQgaW5qZWN0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYWdhaW4uXG5cbmBgYGNcbiBcdGlmIChody1cdTAwM2VmbGFzaF9hZGRyZXNzKVxuIFx0XHRpb3VubWFwKGh3LVx1MDAzZWZsYXNoX2FkZHJlc3MpO1xuK2Vycl9tZGlvX2lvcmVtYXA6XG4gXHRrZnJlZShhZGFwdGVyLVx1MDAzZXR4X3JpbmcpO1xuIFx0a2ZyZWUoYWRhcHRlci1cdTAwM2VyeF9yaW5nKTtcbiBlcnJfZG1hOlxuIGVycl9zd19pbml0OlxuLWVycl9tZGlvX2lvcmVtYXA6XG4gXHRpb3VubWFwKGh3LVx1MDAzZWNlNDEwMF9nYmVfbWRpb19iYXNlX3ZpcnQpO1xuIFx0aW91bm1hcChody1cdTAwM2Vod19hZGRyKTtcbiBlcnJfaW9yZW1hcDpcbmBgYFxuXG5Gb3IgYGlnYnZmYCwgdGhlIGNoYW5nZSBpbiBgaWdidmZfdHhfbWFwX2FkdmAgaXMgbm90IGEgdmVyeSBleGNpdGluZyBjaGFuZ2UsIGJ1dCBpdCBpcyBpbiB0aGUgY3JpdGljYWwgdHJhbnNtaXQgcGF0aC5cblxuYGBgY1xuIFx0YnVmZmVyX2luZm8tXHUwMDNldGltZV9zdGFtcCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VsZW5ndGggPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcbi1cdGlmIChjb3VudClcbi1cdFx0Y291bnQtLTtcbiBcbiBcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cbiBcdHdoaWxlIChjb3VudC0tKSB7XG5gYGBcblxuU28sIHdoaWxlIHRoZSBvdGhlciBkcml2ZXJzIGFyZSBpbnRlcmVzdGluZyBpbiB0aGVpciBvd24gcmlnaHQsIHRoZSBRRU1VIGVtdWxhdGlvbiBvZiBgZTEwMDBgXG5cbiIsIklucHV0VG9rZW5zIjo4MzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjQ2LjQ2MDI4MjU4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk4NTEzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6ODY6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTg3LXN0YXRpYyB2b2lkIGUxMDAwX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlMTAwMF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVxcdC5pZF90YWJsZSA9IGUxMDAwX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjE4MzpcXHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTg0LVxcdC5yZW1vdmUgICA9IGUxMDAwX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NTE9c3RhdGljIGludCBlMTAwMF9pbml0X2h3X3N0cnVjdChzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkwNTogKiBlMTAwMF9wcm9iZSAtIERldmljZSBJbml0aWFsaXphdGlvbiBSb3V0aW5lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkwNi0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTAtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTExOiAqIGUxMDAwX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTQtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDE6NDYuNjAwMTM5NDg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMjExNDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGUxMDAwX3Byb2JlYCBmdW5jdGlvbi4gUmlnaHQsIGl0J3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBlMTAwMGAgZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIGEgbWF0Y2hpbmcgUENJIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEdvb2QsIHRoYXQgZXN0YWJsaXNoZXMgdGhlIGNvbnRleHQgZm9yIHRoYXQgZHJpdmVyLiBOb3csIGxldCdzIHN3aXRjaCBnZWFycyBhIGJpdC4gSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgYGlnYnZmX3R4X21hcF9hZHZgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoYXQncyB3aXRoaW4gdGhlIGBpZ2J2ZmAgbW9kdWxlLiBSaWdodCwgbGV0IG1lIHB1bGwgdGhhdCBjb2RlIHVwIGFuZCBzZWUgd2hhdCBpdCBkb2VzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgVFggbWFwcGluZyBpcyBoYW5kbGVkIGluIHRoYXQgcGFydGljdWxhciBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1MC4xMzIyNTY4MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NzM0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3R4X21hcF9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIxMDc9c3RhdGljIGludCBpZ2J2Zl9tYXliZV9zdG9wX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMTM2OnN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzMjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcXHRjb3VudCA9IGlnYnZmX3R4X21hcF9hZHYoYWRhcHRlciwgdHhfcmluZywgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1MC4zMzg5OTYzNTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQyMzI2MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipBbmFseXppbmcgdGhlIElHQlZGIFRyYW5zbWl0IFBhdGgqKlxuXG5Pa2F5LCBzbyBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiBpbiB0aGUgdHJhbnNtaXQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0J3MgY2FsbGVkIGZyb20gYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgLCB3aGljaCwgb2YgY291cnNlLCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGBuZG9fc3RhcnRfeG1pdGAg4oCTIHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24gZm9yIHN0YXJ0aW5nIGEgdHJhbnNtaXQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGVyZWZvcmUsIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCBuZWVkcyBhIGNsb3NlciBsb29rLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1NC43ODEzMjUxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1ODI2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjIwNj1zdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfdHhfcXVldWVfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMjY1OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2Ni1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMzM5PXN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIzNTI6XFx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1NC44ODQ5MTM2OThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA2OTUxODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIERyaXZlciBDb2RlIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBgaWdidmZfeG1pdF9mcmFtZWAgZGVmaW5pdGVseSBjYWxscyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIHdoaWNoIG1lYW5zIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBpbmRlZWQgaW4gdGhlIFwiaG90IHBhdGhcIi4gQnV0IHdhaXQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQncyBhIGdvb2QgcG9pbnQuLi4gb2gsIGJ1dCBgaWdidmZfdHhfbWFwX2FkdmAgaXMgaW5saW5lZCwgc28gdGhhdCdzIHByb2JhYmx5IGxlc3Mgb2YgYSBjb25jZXJuLlxuXG5Ob3csIGBlMTAwMF9wcm9iZWAgbG9va3MgcHJvbWlzaW5nLiBQcm9iZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gUENJIGhvdHBsdWcgb3IgZHJpdmVyIGxvYWRpbmcgcG9zc2liaWxpdGllcy4gVGhhdCdzIGEgc29saWQgY2FuZGlkYXRlLlxuXG5XaGF0IGFib3V0IG90aGVyIGRyaXZlcnMgbGlrZSBgaWNlYCwgYGlkcGZgLCBvciBgaWdjYD8gSG0sIHRob3NlIGFyZW4ndCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIGEgbGltaXRhdGlvbiByaWdodCB0aGVyZS4gQnV0IHdhaXQsIEknbSBmb3JnZXR0aW5nIHNvbWV0aGluZy4gYGUxMDAwYCAqaXMqIGVtdWxhdGVkLCBhbmQgYGlnYnZmYCBpcyB0b28gKGlmIFFFTVUgc3VwcG9ydHMgYGlnYmAgU1ItSU9WLCB3aGljaCBpdCBkb2VzIGFzIG9mIFFFTVUgOC4wKS4gU28gdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdGhhdCBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIHZpYSB0aGUgZW11bGF0b3IuIFRoaXMgaXMgdmVyeSBnb29kIG5ld3MuXG5cblRpbWUgdG8gY29uZmlybSB0aGlzOyBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdG8gbWFrZSBzdXJlIHRoZXkncmUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBhdCBsZWFzdCBlYXNpbHkgY29uZmlndXJhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYyOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMC4xOTE4Njg0M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTM5NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFMTAwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMj1jb25maWcgRTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjAwLjM2NDgxNDA5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI0NDk5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgYGlnYnZmYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYGlnYnZmYCBLY29uZmlnLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQncyBtb2R1bGFyLCBpZiBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBmaXJtd2FyZSB2ZXJzaW9ucywgd2hhdCBvdGhlciBkcml2ZXJzIGl0IG1pZ2h0IGNvbmZsaWN0IHdpdGgsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMuIEknbGwgYmUgZGlnZ2luZyBpbiB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMy4xODkzMTY0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjQ1MTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCVkZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTIwPWNvbmZpZyBJR0JfRENBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMy40MjU3NzM4NjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwMTM2NjE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBgZTEwMDBgIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgbWV0aG9kaWNhbCBjaGVjay4gVGltZSB0byBnZXQgZ3JhbnVsYXIuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiBgZTEwMDBgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgZXZlbiBmaXJtd2FyZSByZWx5IG9uIHRoaXMgZWxlbWVudC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIGEgZGV0YWlsZWQgZGVwZW5kZW5jeSBtYXAuIFRoYXQgbWVhbnMgZGl2aW5nIGRlZXAgaW50byB0aGUgY29kZSwgY29uZmlndXJhdGlvbiBmaWxlcywgYnVpbGQgc3lzdGVtcy4uLmV2ZXJ5dGhpbmcgdGhhdCB0b3VjaGVzIGBlMTAwMGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB3aGF0ZXZlciBhZGp1c3RtZW50cyBvciBhbmFseXNpcyBJJ20gYWJvdXQgdG8gZG8gd29uJ3QgdHJpZ2dlciBhIGNhc2NhZGUgb2YgdW5mb3Jlc2VlbiBlZmZlY3RzIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgbm90IG9ubHkgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGJ1dCBhbHNvIHRoZSBpbmRpcmVjdCBvbmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGBlMTAwMGAgaXMgcGFyYW1vdW50LiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowNi43MjcxNDI2NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0Y29uZmlnIEUxMDAwXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgNDg6XFx0XFx0aGVscFxcbiAgNDk6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwMCBnaWdhYml0IGV0aGVybmV0IGZhbWlseSBvZlxcbiAgNTA6XFx0XFx0ICBhZGFwdGVycy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvXFxuICA1MTpcXHRcXHQgIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDU0OlxcdFxcbiAgNTU6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDU2OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAwLnJzdFxcdTAwM2UuXFxuICA1NzpcXHRcXG4gIDU4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgNTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBlMTAwMC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDI6MDYuNzI3MjQ5NjY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTg0MTQ3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogYGlnYnZmYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgaWdidmZgIG1vZHVsZSBvciBsaWJyYXJ5LiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBldmVuICp0aGluayogYWJvdXQgbW9kaWZ5aW5nLCBkZWJ1Z2dpbmcsIG9yIGludGVncmF0aW5nIGl0IHdpdGhvdXQga25vd2luZyB3aGF0IGl0J3MgbGVhbmluZyBvbiBhbmQgd2hhdCBpdCBwcm92aWRlcy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGEgcXVpY2sgZ2xhbmNlIGF0IGEgcGFja2FnZSBtYW5pZmVzdCwgZWl0aGVyLiBJIG5lZWQgYSByZWFsLCBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBhY3QgYW55IGNoYW5nZSBtaWdodCBoYXZlLiBJcyBpdCBzb21ldGhpbmcgc2ltcGxlLCBtYXliZSBqdXN0IGEgaGFuZGZ1bCBvZiBzdHJhaWdodGZvcndhcmQgaW50ZXJmYWNlcywgb3IgaXMgaXQgYSBzcHJhd2xpbmcgd2ViIG9mIGNvbXBsZXgsIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzPyBUaGUgYW5zd2VycyB3aWxsIHNoYXBlIG15IGFwcHJvYWNoIGZyb20gdGhpcyBwb2ludCBmb3J3YXJkLiBUaW1lIHRvIGRpZyBpbiBhbmQgbWFwIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjEwLjI4NTY2NjY0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyOSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyOTpcXHRjb25maWcgSUdCVkZcXG4gMTMwOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuIDEzMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMzI6XFx0XFx0aGVscFxcbiAxMzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSA4MjU3NiB2aXJ0dWFsIGZ1bmN0aW9ucy4gIEZvciBtb3JlXFxuIDEzNDpcXHRcXHQgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjZcXG4gMTM1OlxcdFxcdCAgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuIDEzNjpcXHRcXG4gMTM3OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gMTM4OlxcdFxcbiAxMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gMTQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYnZmLnJzdFxcdTAwM2UuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAxNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpZ2J2Zi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDI6MTAuMjg1NzczMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NjA0Mzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgZm9yIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0d28gY29uZmlndXJhdGlvbnMsIGBFMTAwMGAgYW5kIGBJR0JWRmAsIGFuZCB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgaW4gdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAuIGBlMTAwMF9wcm9iZWAgc2VlbXMgbGlrZSBhIGdvb2QsIGZvY3VzZWQgc3ltYm9sIHRvIHRhcmdldC4gSXQncyBhIGNsZWFyIGVudHJ5IHBvaW50LlxuXG5Ob3csIGBpZ2J2Zl90eF9tYXBfYWR2YC4uLiB0aGF0J3Mgc3RhdGljIGlubGluZSwgc28gaXQgd29uJ3QgYmUgYSBkaXJlY3Qgc3ltYm9sLiBUaGUgY2FsbGVyIGlzIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCwgYWxzbyBzdGF0aWMgaW5saW5lLCBtZWFuaW5nIHRoZSByZWFsIHN5bWJvbCBpcyBgaWdidmZfeG1pdF9mcmFtZWAuIEJ1dCB3YWl0LCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbiwgbGlrZWx5IHRoZSBgbmRvX3N0YXJ0X3htaXRgIGVudHJ5IHBvaW50LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgdGVzdCBkaXN0cmlidXRpb24uIFNvLCBJIHNob3VsZG4ndCBpbmNsdWRlIHRoYXQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG8gdGFyZ2V0PyBXaGF0IGFib3V0IGBpZHBmYCwgYGljZWAsIG9yIGBpZ2NgPyBUaG9zZSBhcmVuJ3QgZW11bGF0ZWQuIFNvLCBpdCBsb29rcyBsaWtlIGBlMTAwMF9wcm9iZWAgaXMgdGhlIG9ubHkgZm9jdXMgc3ltYm9sLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byBcIkF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlwiIFRoaXMgc2VhbHMgaXQsIEkgY2FuJ3QgaW5jbHVkZSB0aGF0LlxuXG5Pa2F5LCBsZXQgbWUgY2hlY2sgYGUxMDAwX3Byb2JlYCBpbiBgZTEwMDBfbWFpbi5jYCB0byBjb25maXJtIG15IGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc4OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjE2LjA4MTgyODk3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODY1Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDAwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9ODU9c3RhdGljIHZvaWQgZTEwMDBfZXhpdF9tb2R1bGUodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjg2OnN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTE4MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZTEwMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE4Mi1cXHQuaWRfdGFibGUgPSBlMTAwMF9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XFx0LnByb2JlICAgID0gZTEwMDBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE4NC1cXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9ODUxPXN0YXRpYyBpbnQgZTEwMDBfaW5pdF9od19zdHJ1Y3Qoc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTA0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MDU6ICogZTEwMDBfcHJvYmUgLSBEZXZpY2UgSW5pdGlhbGl6YXRpb24gUm91dGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTEwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTEyLSAqIFRoZSBPUyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJpbmcgb2YgdGhlIGFkYXB0ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTE1OnN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjE2LjU2NTcwMTMxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDI1NDg1NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgYXJlIGZ1enphYmxlIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgc2F5cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMDBfcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIHNvIGl0J3Mgbm90IGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gV2FpdCwgdGhlIHByb21wdCBzYXlzIGl0IGlzIG9rYXkgaWYgdGhpcyBpcyBhbiBBUEkgZW50cnlwb2ludCwgd2hpY2ggdGhpcyBpcyEgRXhjZWxsZW50LCBpbmNsdWRlIGl0LlxuXG5OZXh0LCBJIG5lZWQgdG8gcnVuIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBxdWlja2x5IHRvIGRldGVybWluZSB0aGVpciBzdGF0dXM6IGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBzdGF0aWMgaW5saW5lOyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgc3RhdGljIGlubGluZTsgYW5kLCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgc3RhdGljIGFzIHdlbGwgYmVjYXVzZSBpdCdzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGNhbGxiYWNrLlxuXG5JIHRoZW4gd2VudCB0aHJvdWdoIGEgbGlzdCBvZiBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMgdG8gc2VlIGlmIHRoZXkgd2VyZSBpbiBlbXVsYXRlZCBkcml2ZXJzLiBgaWdjX2Rvd25gLCBgaWRwZl9tYl9pbnRyX3JlcV9pcnFgLCBhbmQgYGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0c2AgYXJlIG5vdCBlbXVsYXRlZCwgc28gdGhleSBjYW4gYmUgcnVsZWQgb3V0LiBUaGlzIGxlYXZlcyBvbmx5IGBlMTAwMGAgYW5kIGBpZ2J2ZmAgYXMgdGhlIGVtdWxhdGVkIGRyaXZlcnMuIFRoZXJlZm9yZSwgdGhlIGFwcGxpY2FibGUgY29uZmlncyBhcmUgYEUxMDAwYCBhbmQgYElHQlZGYC5cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkbid0IGZ1enogaWYgdGhlIGNvZGUgaXMgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gU2luY2UgdGhlIHBhdGNoIGRlYWxzIHdpdGggYGUxMDAwYCBhbmQgYGlnYnZmYCwgYm90aCBvZiB3aGljaCBhcmUgZW11bGF0ZWQsIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbkkgdGhlbiByZXZpc2l0ZWQgdGhlIGZvY3VzIGZ1bmN0aW9uLCBgZTEwMDBfcHJvYmVgLiBBZnRlciBhIHF1aWNrIHJldmlldywgSSBjb25jbHVkZWQgdGhhdCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgaW4gdGhlIGhvdCBwYXRoLCBhbmQgY2FuIGJlIGV4Y2x1ZGVkLCBhbmQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgaWdidmZfdHhfbWFwX2FkdmAsIGlzIGlubGluZWQgaW50byB0aGUgaG90IHBhdGguIFRoZW4sIGNvbmZpcm1pbmcsIHRoZXJlIGFyZSBubyBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgaW4gYGUxMDAwYCBvciBgaWdidmZgLiBUaGVyZWZvcmUsIG9ubHkgYGUxMDAwX3Byb2JlYCBpcyBhIGZvY3VzIHN5bWJvbC5cblxuTXkgZmluYWwgdGhvdWdodCB3YXMgdG8gY29uZmlybSB3aGV0aGVyIGBFMTAwMGAgb3IgYElHQlZGYCBkZXBlbmRzIG9uIGFueXRoaW5nIHdlaXJkLiBCb3RoIGBFMTAwMGAgKGBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlRgKSBhbmQgYElHQlZGYCAoYFBDSWApIGhhdmUgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuXG5KdXN0IHRvIGJlIHNhZmUsIEkgYWdhaW4gdmVyaWZpZWQgdGhhdCBgaWdjYCwgYGljZWAsIGFuZCBgaWRwZmAgYXJlIG5vdCBlbXVsYXRlZCwgc2luY2UgdGhleSBjb3VsZCB0aHJvdyBvZmYgdGhlIGFuYWx5c2lzLlxuXG5JbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGZ1enphYmxlLiBUaGUgcmF0aW9uYWxlIGlzIHRoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBgaWNlYCwgYGlkcGZgLCBhbmQgYGlnY2AgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBgZTEwMDBgIGFuZCBgaWdidmZgIGFyZS4gVGhlIHBhdGNoIGZpeGVzIGBlMTAwMF9wcm9iZWAgYW5kIGBpZ2J2Zl90eF9tYXBfYWR2YCwgd2hpY2ggY2FuIGJlIGZ1enplZCB0aHJvdWdoIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vZmF1bHQgaW5qZWN0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSByZXN1bHRzIGFyZTpcbiogICBXb3J0aEZ1enppbmcgPSB0cnVlXG4qICAgRm9jdXNTeW1ib2xzID0gYFtcImUxMDAwX3Byb2JlXCJdYFxuKiAgIEVuYWJsZUNvbmZpZ3MgPSBgW1wiRTEwMDBcIiwgXCJJR0JWRlwiXWBcblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNzUsIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjI4Ljk5MTE4OTU0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDk4MTcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMDBcIixcbiAgICBcIklHQlZGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMDBfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIGljZSwgaWRwZiwgYW5kIGlnYyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBlMTAwMCBhbmQgaWdidmYgZHJpdmVycyBhcmUgc3VwcG9ydGVkIChRRU1VIGVtdWxhdGVzIGUxMDAwIGFuZCBpZ2Igd2l0aCBTUi1JT1YpLiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBlMTAwMF9wcm9iZSBhbmQgYSBsb2dpYyBidWcgaW4gaWdidmZfdHhfbWFwX2FkdiAod2hpY2ggaXMgaW5saW5lZCBpbnRvIHRoZSB0cmFuc21pdCBob3QtcGF0aCkuIFdlIGNhbiBmdXp6IHRoZSBlMTAwMF9wcm9iZSBmdW5jdGlvbiB2aWEgUENJIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgZmF1bHQgaW5qZWN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDAwXCIsXG4gICAgXCJJR0JWRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDAwX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 02:40:35 +0000 UTC FinishedAt: 2026-07-30 03:02:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "51b093a7ba27476e1f639455f005e8d2e75390e4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E1000", "IGBVF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "51b093a7ba27476e1f639455f005e8d2e75390e4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E1000", "IGBVF" ], "series_id": "402a8d48-3a59-467c-a5c0-1db37380e84e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "e1000_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAwJiMzNDssCiAgICAmIzM0O0lHQlZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMDBfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI0N2JmYjVjNTRhYjhhYjAxODYzMzlhNTljODc3MDg1MjIwYTdhODdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbmluZGV4IDliMDllYjE0NGI4MTEuLmQ3ZjVjNmYxNjE0MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xuQEAgLTEyMjIsMTEgJiM0MzsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRpZiAoaHctXHUwMDNlZmxhc2hfYWRkcmVzcylcbiBcdFx0aW91bm1hcChody1cdTAwM2VmbGFzaF9hZGRyZXNzKTtcbiYjNDM7ZXJyX21kaW9faW9yZW1hcDpcbiBcdGtmcmVlKGFkYXB0ZXItXHUwMDNldHhfcmluZyk7XG4gXHRrZnJlZShhZGFwdGVyLVx1MDAzZXJ4X3JpbmcpO1xuIGVycl9kbWE6XG4gZXJyX3N3X2luaXQ6XG4tZXJyX21kaW9faW9yZW1hcDpcbiBcdGlvdW5tYXAoaHctXHUwMDNlY2U0MTAwX2diZV9tZGlvX2Jhc2VfdmlydCk7XG4gXHRpb3VubWFwKGh3LVx1MDAzZWh3X2FkZHIpO1xuIGVycl9pb3JlbWFwOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbmluZGV4IDMwYzNhNGRiN2Q2MTEuLjg1YTc0Y2Q2ZWExZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbkBAIC03OTMsNyAmIzQzOzc5Myw3IEBAIGljZV9kcGxsX3Bpbl9zdGF0ZV91cGRhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbF9waW4gKnBpbixcbiBcdFx0XHRcdCAgIHJldCxcbiBcdFx0XHRcdCAgIGxpYmllX2FxX3N0cihwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpLFxuIFx0XHRcdFx0ICAgcGluX3R5cGVfbmFtZVtwaW5fdHlwZV0sIHBpbi1cdTAwM2VpZHgpO1xuLVx0ZWxzZVxuJiM0MztcdGVsc2UgaWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiBcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSxcbiBcdFx0XHRcdCAgICBcJiMzNDtlcnI6JWQgJXMgZmFpbGVkIHRvIHVwZGF0ZSAlcyBwaW46JXVcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgcmV0LFxuQEAgLTMwMjQsNyAmIzQzOzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcbiBcdCpwaGFzZV9vZmZzZXRfcGluc191cGRhdGVkID0gMDtcbiBcdHJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKFx1MDAyNnBmLVx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxuIFx0XHRcdFx0XHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XG4tXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7XG4mIzQzO1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHxcbiYjNDM7XHRcdCAgICBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUJVU1kpKSB7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIGlmIChyZXQpIHtcbiBcdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbkBAIC0zMDg2LDEwICYjNDM7MzA4NywxMiBAQCBpY2VfZHBsbF91cGRhdGVfc3RhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbCAqZCwgYm9vbCBpbml0KVxuIFx0XHRkLVx1MDAzZWRwbGxfaWR4LCBkLVx1MDAzZXByZXZfaW5wdXRfaWR4LCBkLVx1MDAzZWlucHV0X2lkeCxcbiBcdFx0ZC1cdTAwM2VkcGxsX3N0YXRlLCBkLVx1MDAzZXByZXZfZHBsbF9zdGF0ZSwgZC1cdTAwM2Vtb2RlKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbi1cdFx0XHRcJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcblwmIzM0Oyxcbi1cdFx0XHRkLVx1MDAzZWRwbGxfaWR4LCByZXQsXG4tXHRcdFx0bGliaWVfYXFfc3RyKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuJiM0MztcdFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24mIzM5O3QgbG9nIGVycm9yICovXG4mIzQzO1x0XHRpZiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxuJiM0MztcdFx0XHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxuJiM0MztcdFx0XHRcdFwmIzM0O3VwZGF0ZSBkcGxsPSVkIHN0YXRlIGZhaWxlZCwgcmV0PSVkICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGQtXHUwMDNlZHBsbF9pZHgsIHJldCxcbiYjNDM7XHRcdFx0XHRsaWJpZV9hcV9zdHIocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXHRpZiAoaW5pdCkge1xuQEAgLTMxNTgsNyAmIzQzOzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4gXHQgICAgZC1cdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXHUwMDNlcGhhc2Vfb2Zmc2V0X21vbml0b3JfcGVyaW9kID09IDApXG4gXHRcdHJldCA9IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhwZiwgXHUwMDI2cGhhc2Vfb2Zmc2V0X250Zik7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtJiM0MzsmIzQzOztcbiYjNDM7XHRcdC8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSAqL1xuJiM0MztcdFx0aWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiYjNDM7XHRcdFx0ZC1cdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7O1xuIFx0XHQvKiBzdG9wIHJlc2NoZWR1bGluZyB0aGlzIHdvcmtlciAqL1xuIFx0XHRpZiAoZC1cdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0gXHUwMDNlXG4gXHRcdCAgICBJQ0VfQ0dVX1NUQVRFX0FDUV9FUlJfVEhSRVNIT0xEKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggNDkzNzFiMDY1ODQ1OC4uN2ViMzgwYmU3ZWQyNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTEwNjksMTggJiM0MzsxMDY5LDE4IEBAIHN0YXRpYyBpbnQgaWNlX2xidGVzdF9wcmVwYXJlX3JpbmdzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4gXG4gXHRzdGF0dXMgPSBpY2VfdnNpX2NmZ19sYW4odnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3NldHVwX3J4X3Jpbmc7XG4mIzQzO1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9zdGFydF9hbGxfcnhfcmluZ3ModnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3N0YXJ0X3J4X3Jpbmc7XG4mIzQzO1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX3N0YXJ0X3J4X3Jpbmc6XG4tXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcbi1lcnJfc2V0dXBfcnhfcmluZzpcbiYjNDM7ZXJyX2NmZ19sYW46XG4gXHRpY2VfdnNpX3N0b3BfbGFuX3R4X3JpbmdzKHZzaSwgSUNFX05PX1JFU0VULCAwKTtcbiYjNDM7ZXJyX3NldHVwX3J4X3Jpbmc6XG4mIzQzO1x0aWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7XG4gZXJyX3NldHVwX3R4X3Jpbmc6XG4gXHRpY2VfdnNpX2ZyZWVfdHhfcmluZ3ModnNpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZkMmRhYjAzZTM2Li5kODg4MzU0ODJkM2FhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5AQCAtNTYzNyw2ICYjNDM7NTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXG4gXHRtb2RfdGltZXIoXHUwMDI2cGYtXHUwMDNlc2Vydl90bXIsIHJvdW5kX2ppZmZpZXMoamlmZmllcyAmIzQzOyBwZi1cdTAwM2VzZXJ2X3Rtcl9wZXJpb2QpKTtcbiBcbiYjNDM7XHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxuJiM0MztcdCAqIGRldmljZSBpcyBvcGVyYXRpb25hbCBiZWZvcmUgcmV0dXJuaW5nLiBXaXRob3V0IHRoaXMsIHVzZXJzcGFjZVxuJiM0MztcdCAqIChlLmcuIE5ldHdvcmtNYW5hZ2VyKSBtYXkgdHJ5IHRvIG9wZW4gdGhlIG5ldCBkZXZpY2Ugd2hpbGUgdGhlXG4mIzQzO1x0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBpY2Vfd2FpdF9mb3JfcmVzZXQocGYsIHNlY3NfdG9famlmZmllcygxMCkpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRkZXZfZXJyKGRldiwgXCYjMzQ7V2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRyZXQpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDgsNiAmIzQzOzg0OCwzMCBAQCBzdGF0aWMgdm9pZCBpY2Vfbm90aWZ5X3ZmX3Jlc2V0KHN0cnVjdCBpY2VfdmYgKnZmKVxuIFx0XHRcdCAgICAgIE5VTEwpO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuJiM0MzsgKiBAdnNpOiB0aGUgVlNJIHdob3NlIGludGVycnVwdCByZWdpc3RlcnMgc2hvdWxkIGJlIGNsZWFyZWRcbiYjNDM7ICpcbiYjNDM7ICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4mIzQzOyAqIGluIHRoZSBWU0kuIFRoaXMgY2xlYXJzIHRoZSBlbnRpcmUgcmVnaXN0ZXIgaW5jbHVkaW5nIE1TSVhfSU5EWCwgSVRSX0lORFgsXG4mIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seVxuJiM0MzsgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cdTAwM2ViYWNrO1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxuJiM0MztcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuJiM0MztcbiYjNDM7XHRpY2VfZm9yX2VhY2hfYWxsb2NfdHhxKHZzaSwgaSlcbiYjNDM7XHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfcmVzZXRfdmYgLSBSZXNldCBhIHBhcnRpY3VsYXIgVkZcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZVxuQEAgLTkxOSw2ICYjNDM7OTQzLDkgQEAgaW50IGljZV9yZXNldF92ZihzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTMyIGZsYWdzKVxuIFxuIFx0aWNlX2Rpc192Zl9xcyh2Zik7XG4gXG4mIzQzO1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4mIzQzO1x0aWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTtcbiYjNDM7XG4gXHQvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmVcbiBcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5pbmRleCA1MzkyYjA0MDQ5ODYyLi4zMjFkMjljMjViN2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcbkBAIC0yNiw2ICYjNDM7MjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbiYjNDM7dm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcbiBpbnQgaWNlX2NoZWNrX3ZmX2luaXQoc3RydWN0IGljZV92ZiAqdmYpO1xuIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTtcbiBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqaWNlX3ZmX2dldF9wb3J0X2luZm8oc3RydWN0IGljZV92ZiAqdmYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbmluZGV4IDMxYmUyZjc2MTgxYzAuLjQzMWM5YzU0NmIwNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmNcbkBAIC0yMjQsNiAmIzQzOzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXG4gXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCAtIGRpc2FibGUgUnggcXVldWUgaW50ZXJydXB0IHZpYSBRSU5UX1JRQ1RMXG4mIzQzOyAqIEB2c2k6IFZTSSBvZiB0aGUgVkYgdG8gY29uZmlndXJlXG4mIzQzOyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRiYjMzk7cyBzcGFjZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2dnNpLVx1MDAzZWJhY2stXHUwMDNlaHc7XG4mIzQzO1x0dTMyIHBmcSA9IHZzaS1cdTAwM2VyeHFfbWFwW3FfaWR4XTtcbiYjNDM7XHR1MzIgcmVnO1xuJiM0MztcbiYjNDM7XHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xuJiM0MztcdHJlZyBcdTAwMjY9IH5RSU5UX1JRQ1RMX0NBVVNFX0VOQV9NO1xuJiM0MztcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcbiYjNDM7XG4mIzQzO1x0aWNlX2ZsdXNoKGh3KTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgaW5mb1xuQEAgLTQxNiw2ICYjNDM7NDM0LDggQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKVxuIFx0XHRcdGdvdG8gZXJyb3JfcGFyYW07XG4gXHRcdH1cbiBcbiYjNDM7XHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcbiYjNDM7XHRcdFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XG4gXHRcdGJpdG1hcF96ZXJvKHZmLVx1MDAzZXJ4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7XG4gXHR9IGVsc2UgaWYgKHFfbWFwKSB7XG4gXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikge1xuQEAgLTQzNiw2ICYjNDM7NDU2LDcgQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKVxuIFx0XHRcdFx0Z290byBlcnJvcl9wYXJhbTtcbiBcdFx0XHR9XG4gXG4mIzQzO1x0XHRcdGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCh2c2ksIHZmX3FfaWQpO1xuIFx0XHRcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cbiBcdFx0XHRjbGVhcl9iaXQodmZfcV9pZCwgdmYtXHUwMDNlcnhxX2VuYSk7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbmluZGV4IDFhMGM3MWM5NWVmMTIuLjQwNzlhNzg3NjU3ZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xuQEAgLTg3LDcgJiM0Mzs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbiYjNDM7XHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xuIFx0aWYgKG51bV9yZWdzIFx1MDAzYyBudW1fdmVjcykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGZyZWVfcmVnX3ZhbHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXG5pbmRleCBjZjk2NmZlNmM3NTljLi5iYjgxZTYyMGM1Yzg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbkBAIC0xMzksNyAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuLVxuJiM0MztcdFx0a2ZyZWUobmFtZSk7XG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcbmluZGV4IDdmOTA1NjQwNGY2NGYuLmM3MjRkNDI5YTdhYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG5AQCAtMzA5NywxMCAmIzQzOzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0dHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFO1xuIFx0XHR0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QO1xuLVx0XHQvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgXCYjMzQ7Y2xlYW5cJiMzNDsgdGhlIGRlc2NyaXB0b3IgcmluZy5cbi1cdFx0ICogTUlOX0dBUCBpcyBzZXQgdG8gTUlOX1JJTkcgc2l6ZSB0byBlbnN1cmUgaXQgd2lsbCBiZSBzZXQgYXRcbi1cdFx0ICogbGVhc3Qgb25jZSBlYWNoIHRpbWUgYXJvdW5kIHRoZSByaW5nLlxuLVx0XHQgKi9cbiYjNDM7XHRcdC8qIFNldCB0aGUgUkUgYml0IHBlcmlvZGljYWxseSB0byBcJiMzNDtjbGVhblwmIzM0OyB0aGUgZGVzY3JpcHRvciByaW5nICovXG4gXHRcdGlmIChpZHBmX3R4X3NwbGl0cV9uZWVkX3JlKHR4X3EpKSB7XG4gXHRcdFx0dHhfcGFyYW1zLmVvcF9jbWQgfD0gSURQRl9UWERfRkxFWF9GTE9XX0NNRF9SRTtcbiBcdFx0XHR0eF9xLVx1MDAzZXR4cV9ncnAtXHUwMDNlbnVtX2NvbXBsZXRpb25zX3BlbmRpbmcmIzQzOyYjNDM7O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG5pbmRleCA0YmU1YjNiNmQzZWQyLi45MDhkZmEyODY3NGViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxuQEAgLTIxLDcgJiM0MzsyMSw3IEBAXG4gLyogTWFpbGJveCBRdWV1ZSAqL1xuICNkZWZpbmUgSURQRl9NQVhfTUJYUVx0XHRcdFx0MVxuIFxuLSNkZWZpbmUgSURQRl9NSU5fVFhRX0RFU0NcdFx0XHQ2NFxuJiM0MzsjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0MTI4XG4gI2RlZmluZSBJRFBGX01JTl9SWFFfREVTQ1x0XHRcdDY0XG4gI2RlZmluZSBJRFBGX01JTl9UWFFfQ09NUExRX0RFU0NcdFx0MjU2XG4gI2RlZmluZSBJRFBGX01BWF9RSURTXHRcdFx0XHQyNTZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbmluZGV4IGEwN2Q3ZTgwOGNhOWIuLjY3MjYwODRmNmNmYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuY1xuQEAgLTg2LDcgJiM0Mzs4Niw3IEBAIHN0YXRpYyBpbnQgaWRwZl92Zl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbiYjNDM7XHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xuIFx0aWYgKG51bV9yZWdzIFx1MDAzYyBudW1fdmVjcykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGZyZWVfcmVnX3ZhbHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuQEAgLTEzMTgsMTEgJiM0MzsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxuICAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlY3RvciBjaHVua3NcbiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW5cbiYjNDM7ICogQG51bV92ZWNzOiBudW1iZXIgb2YgZW50cmllcyB0aGUgQHJlZ192YWxzIGFycmF5IGNhbiBob2xkXG4gICpcbiAgKiBSZXR1cm46IG51bWJlciBvZiByZWdpc3RlcnMgdGhhdCBnb3QgcG9wdWxhdGVkXG4gICovXG4gaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbi1cdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpXG4mIzQzO1x0XHRcdCAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscywgaW50IG51bV92ZWNzKVxuIHtcbiBcdHN0cnVjdCB2aXJ0Y2hubDJfdmVjdG9yX2NodW5rcyAqY2h1bmtzO1xuIFx0c3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDtcbkBAIC0xMzQ2LDcgJiM0MzsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXHUwMDNlZHluY3RsX3JlZ19zcGFjaW5nKTtcbiBcdFx0aXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLVx1MDAzZWl0cm5fcmVnX3NwYWNpbmcpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmVjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZlYyBcdTAwMjZcdTAwMjYgbnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdHJlZ192YWxzW251bV9yZWdzXS5keW5fY3RsX3JlZyA9IHJlZ192YWwuZHluX2N0bF9yZWc7XG4gXHRcdFx0cmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5fcmVnID0gcmVnX3ZhbC5pdHJuX3JlZztcbiBcdFx0XHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9pbmRleF9zcGFjaW5nID1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG5pbmRleCA2ODc2ZTNlZDlkMWJlLi45YjFjOWM4NmY2ZWFjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG5AQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBpbnQgaWRwZl92Y19jb3JlX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG4gdm9pZCBpZHBmX3ZjX2NvcmVfZGVpbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuIFxuIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tXHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKTtcbiYjNDM7XHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpO1xuIGludCBpZHBmX3F1ZXVlX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdFx0XHRzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjLFxuIFx0XHRcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvICpjaHVua3MpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbmluZGV4IDBhM2QwYTFjYmE0MzMuLmM2ODZlZTEyMGExNDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcbkBAIC0yMTkwLDggJiM0MzsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZXRpbWVfc3RhbXAgPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbGVuZ3RoID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZW1hcHBlZF9hc19wYWdlID0gZmFsc2U7XG4tXHRpZiAoY291bnQpXG4tXHRcdGNvdW50LS07XG4gXG4gXHQvKiBjbGVhciB0aW1lc3RhbXAgYW5kIGRtYSBtYXBwaW5ncyBmb3IgcmVtYWluaW5nIHBvcnRpb24gb2YgcGFja2V0ICovXG4gXHR3aGlsZSAoY291bnQtLSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbmluZGV4IDJjOWUyZGZkODQ5OTEuLmIzODgzYTVhN2Q3YWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbkBAIC01MzUyLDkgJiM0Mzs1MzUyLDggQEAgdm9pZCBpZ2NfZG93bihzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV9xX3ZlY3RvcnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZXFfdmVjdG9yW2ldKSB7XG4tXHRcdFx0bmFwaV9zeW5jaHJvbml6ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXFfdmVjdG9yW2ldLVx1MDAzZW5hcGkpO1xuLVx0XHRcdGlnY19zZXRfcXVldWVfbmFwaShhZGFwdGVyLCBpLCBOVUxMKTtcbiBcdFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2YWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXS1cdTAwM2VuYXBpKTtcbiYjNDM7XHRcdFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xuIFx0XHR9XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAwJiMzNDssCiAgICAmIzM0O0lHQlZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMDBfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0N2JmYjVjNTRhYjhhYjAxODYzMzlhNTljODc3MDg1MjIwYTdhODcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYwppbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jCkBAIC0xMjIyLDExICYjNDM7MTIyMiwxMSBAQCBzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCiAJaWYgKGh3LSZndDtmbGFzaF9hZGRyZXNzKQogCQlpb3VubWFwKGh3LSZndDtmbGFzaF9hZGRyZXNzKTsKJiM0MztlcnJfbWRpb19pb3JlbWFwOgogCWtmcmVlKGFkYXB0ZXItJmd0O3R4X3JpbmcpOwogCWtmcmVlKGFkYXB0ZXItJmd0O3J4X3JpbmcpOwogZXJyX2RtYToKIGVycl9zd19pbml0OgotZXJyX21kaW9faW9yZW1hcDoKIAlpb3VubWFwKGh3LSZndDtjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTsKIAlpb3VubWFwKGh3LSZndDtod19hZGRyKTsKIGVycl9pb3JlbWFwOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwppbmRleCAzMGMzYTRkYjdkNjExLi44NWE3NGNkNmVhMWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYwpAQCAtNzkzLDcgJiM0Mzs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sCiAJCQkJICAgcmV0LAogCQkJCSAgIGxpYmllX2FxX3N0cihwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSwKIAkJCQkgICBwaW5fdHlwZV9uYW1lW3Bpbl90eXBlXSwgcGluLSZndDtpZHgpOwotCWVsc2UKJiM0MzsJZWxzZSBpZiAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSkKIAkJZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSwKIAkJCQkgICAgJiMzNDtlcnI6JWQgJXMgZmFpbGVkIHRvIHVwZGF0ZSAlcyBwaW46JXVcbiYjMzQ7LAogCQkJCSAgICByZXQsCkBAIC0zMDI0LDcgJiM0MzszMDI0LDggQEAgc3RhdGljIGludCBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMoc3RydWN0IGljZV9wZiAqcGYsCiAJKnBoYXNlX29mZnNldF9waW5zX3VwZGF0ZWQgPSAwOwogCXJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKCZhbXA7cGYtJmd0O2h3LCBEUExMX1RZUEVfUFBTLCBtZWFzLAogCQkJCQkgICAgICAgQVJSQVlfU0laRShtZWFzKSk7Ci0JaWYgKHJldCAmYW1wOyZhbXA7IHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7CiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHwKJiM0MzsJCSAgICBwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VCVVNZKSkgewogCQlyZXR1cm4gMDsKIAl9IGVsc2UgaWYgKHJldCkgewogCQlkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLApAQCAtMzA4NiwxMCAmIzQzOzMwODcsMTIgQEAgaWNlX2RwbGxfdXBkYXRlX3N0YXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGwgKmQsIGJvb2wgaW5pdCkKIAkJZC0mZ3Q7ZHBsbF9pZHgsIGQtJmd0O3ByZXZfaW5wdXRfaWR4LCBkLSZndDtpbnB1dF9pZHgsCiAJCWQtJmd0O2RwbGxfc3RhdGUsIGQtJmd0O3ByZXZfZHBsbF9zdGF0ZSwgZC0mZ3Q7bW9kZSk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLAotCQkJJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xuJiMzNDssCi0JCQlkLSZndDtkcGxsX2lkeCwgcmV0LAotCQkJbGliaWVfYXFfc3RyKHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTsKJiM0MzsJCS8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSwgZG9uJiMzOTt0IGxvZyBlcnJvciAqLwomIzQzOwkJaWYgKHBmLSZndDtody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpCiYjNDM7CQkJZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSwKJiM0MzsJCQkJJiMzNDt1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xuJiMzNDssCiYjNDM7CQkJCWQtJmd0O2RwbGxfaWR4LCByZXQsCiYjNDM7CQkJCWxpYmllX2FxX3N0cihwZi0mZ3Q7aHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7CiAJCXJldHVybiByZXQ7CiAJfQogCWlmIChpbml0KSB7CkBAIC0zMTU4LDcgJiM0MzszMTYxLDkgQEAgc3RhdGljIHZvaWQgaWNlX2RwbGxfcGVyaW9kaWNfd29yayhzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKQogCSAgICBkLSZndDtwZXJpb2RpY19jb3VudGVyICUgZHAtJmd0O3BoYXNlX29mZnNldF9tb25pdG9yX3BlcmlvZCA9PSAwKQogCQlyZXQgPSBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMocGYsICZhbXA7cGhhc2Vfb2Zmc2V0X250Zik7CiAJaWYgKHJldCkgewotCQlkLSZndDtjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7OwomIzQzOwkJLyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5ICovCiYjNDM7CQlpZiAocGYtJmd0O2h3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSkKJiM0MzsJCQlkLSZndDtjZ3Vfc3RhdGVfYWNxX2Vycl9udW0mIzQzOyYjNDM7OwogCQkvKiBzdG9wIHJlc2NoZWR1bGluZyB0aGlzIHdvcmtlciAqLwogCQlpZiAoZC0mZ3Q7Y2d1X3N0YXRlX2FjcV9lcnJfbnVtICZndDsKIAkJICAgIElDRV9DR1VfU1RBVEVfQUNRX0VSUl9USFJFU0hPTEQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKaW5kZXggNDkzNzFiMDY1ODQ1OC4uN2ViMzgwYmU3ZWQyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKQEAgLTEwNjksMTggJiM0MzsxMDY5LDE4IEBAIHN0YXRpYyBpbnQgaWNlX2xidGVzdF9wcmVwYXJlX3JpbmdzKHN0cnVjdCBpY2VfdnNpICp2c2kpCiAKIAlzdGF0dXMgPSBpY2VfdnNpX2NmZ19sYW4odnNpKTsKIAlpZiAoc3RhdHVzKQotCQlnb3RvIGVycl9zZXR1cF9yeF9yaW5nOwomIzQzOwkJZ290byBlcnJfY2ZnX2xhbjsKIAogCXN0YXR1cyA9IGljZV92c2lfc3RhcnRfYWxsX3J4X3JpbmdzKHZzaSk7CiAJaWYgKHN0YXR1cykKLQkJZ290byBlcnJfc3RhcnRfcnhfcmluZzsKJiM0MzsJCWdvdG8gZXJyX2NmZ19sYW47CiAKIAlyZXR1cm4gMDsKIAotZXJyX3N0YXJ0X3J4X3Jpbmc6Ci0JaWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7Ci1lcnJfc2V0dXBfcnhfcmluZzoKJiM0MztlcnJfY2ZnX2xhbjoKIAlpY2VfdnNpX3N0b3BfbGFuX3R4X3JpbmdzKHZzaSwgSUNFX05PX1JFU0VULCAwKTsKJiM0MztlcnJfc2V0dXBfcnhfcmluZzoKJiM0MzsJaWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7CiBlcnJfc2V0dXBfdHhfcmluZzoKIAlpY2VfdnNpX2ZyZWVfdHhfcmluZ3ModnNpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwppbmRleCBlMmZkMmRhYjAzZTM2Li5kODg4MzU0ODJkM2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwpAQCAtNTYzNyw2ICYjNDM7NTYzNywxNiBAQCBzdGF0aWMgaW50IGljZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCS8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqLwogCW1vZF90aW1lcigmYW1wO3BmLSZndDtzZXJ2X3Rtciwgcm91bmRfamlmZmllcyhqaWZmaWVzICYjNDM7IHBmLSZndDtzZXJ2X3Rtcl9wZXJpb2QpKTsKIAomIzQzOwkvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZQomIzQzOwkgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2UKJiM0MzsJICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGUKJiM0MzsJICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS4KJiM0MzsJICovCiYjNDM7CXJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtXYWl0IGZvciByZXNldCB0aW1lZCBvdXQgKDEwcykgZHVyaW5nIHJlc3VtZTogJWRcbiYjMzQ7LAomIzQzOwkJCXJldCk7CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jCmluZGV4IDkwNTJlNzFlOWM5OWUuLmE1NGNiMmI4ZDNjNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwpAQCAtODQ4LDYgJiM0Mzs4NDgsMzAgQEAgc3RhdGljIHZvaWQgaWNlX25vdGlmeV92Zl9yZXNldChzdHJ1Y3QgaWNlX3ZmICp2ZikKIAkJCSAgICAgIE5VTEwpOwogfQogCiYjNDM7LyoqCiYjNDM7ICogaWNlX3Jlc2V0X2ludGVycnVwdHMgLSBjbGVhciBhbGwgcXVldWUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZm9yIGEgVlNJCiYjNDM7ICogQHZzaTogdGhlIFZTSSB3aG9zZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHNob3VsZCBiZSBjbGVhcmVkCiYjNDM7ICoKJiM0MzsgKiBaZXJvIHRoZSBRSU5UX1JRQ1RMIGFuZCBRSU5UX1RRQ1RMIHJlZ2lzdGVycyBmb3IgYWxsIGFsbG9jYXRlZCBxdWV1ZXMKJiM0MzsgKiBpbiB0aGUgVlNJLiBUaGlzIGNsZWFycyB0aGUgZW50aXJlIHJlZ2lzdGVyIGluY2x1ZGluZyBNU0lYX0lORFgsIElUUl9JTkRYLAomIzQzOyAqIENBVVNFX0VOQSBhbmQgTkVYVFEgZmllbGRzLCB1bmxpa2UgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KCkgd2hpY2ggb25seQomIzQzOyAqIGNsZWFycyB0aGUgQ0FVU0VfRU5BIGJpdC4KJiM0MzsgKi8KJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS0mZ3Q7YmFjazsKJiM0MzsJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3BmLSZndDtodzsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CWljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKQomIzQzOwkJd3IzMihodywgUUlOVF9SUUNUTCh2c2ktJmd0O3J4cV9tYXBbaV0pLCAwKTsKJiM0MzsKJiM0MzsJaWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpCiYjNDM7CQl3cjMyKGh3LCBRSU5UX1RRQ1RMKHZzaS0mZ3Q7dHhxX21hcFtpXSksIDApOwomIzQzOwomIzQzOwlpY2VfZmx1c2goaHcpOwomIzQzO30KJiM0MzsKIC8qKgogICogaWNlX3Jlc2V0X3ZmIC0gUmVzZXQgYSBwYXJ0aWN1bGFyIFZGCiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIHN0cnVjdHVyZQpAQCAtOTE5LDYgJiM0Mzs5NDMsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpCiAKIAlpY2VfZGlzX3ZmX3FzKHZmKTsKIAomIzQzOwkvKiBjbGVhbnVwIGludGVycnVwdCByZWdpc3RlcnMgKi8KJiM0MzsJaWNlX3Jlc2V0X2ludGVycnVwdHModnNpKTsKJiM0MzsKIAkvKiBDYWxsIERpc2FibGUgTEFOIFR4IHF1ZXVlIEFRIHdoZXRoZXIgb3Igbm90IHF1ZXVlcyBhcmUKIAkgKiBlbmFibGVkLiBUaGlzIGlzIG5lZWRlZCBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIFZGUi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaAppbmRleCA1MzkyYjA0MDQ5ODYyLi4zMjFkMjljMjViN2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oCkBAIC0yNiw2ICYjNDM7MjYsNyBAQAogdm9pZCBpY2VfaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7CiB2b2lkIGljZV9kZWluaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpOwogdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTsKJiM0Mzt2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpOwogaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTsKIGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgaWNlX2Vycl90b192aXJ0X2VycihpbnQgZXJyKTsKIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCmluZGV4IDMxYmUyZjc2MTgxYzAuLjQzMWM5YzU0NmIwNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jCkBAIC0yMjQsNiAmIzQzOzIyNCwyNCBAQCB2b2lkIGljZV92Zl9lbmFfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpCiAJd3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCAtIGRpc2FibGUgUnggcXVldWUgaW50ZXJydXB0IHZpYSBRSU5UX1JRQ1RMCiYjNDM7ICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmUKJiM0MzsgKiBAcV9pZHg6IFZGIHF1ZXVlIGluZGV4IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBxdWV1ZSBpbiB0aGUgUEYmIzM5O3Mgc3BhY2UKJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KQomIzQzO3sKJiM0MzsJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3ZzaS0mZ3Q7YmFjay0mZ3Q7aHc7CiYjNDM7CXUzMiBwZnEgPSB2c2ktJmd0O3J4cV9tYXBbcV9pZHhdOwomIzQzOwl1MzIgcmVnOwomIzQzOwomIzQzOwlyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpOwomIzQzOwlyZWcgJmFtcDs9IH5RSU5UX1JRQ1RMX0NBVVNFX0VOQV9NOwomIzQzOwl3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7CiYjNDM7CiYjNDM7CWljZV9mbHVzaChodyk7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBpY2VfdmNfZW5hX3FzX21zZwogICogQHZmOiBwb2ludGVyIHRvIHRoZSBWRiBpbmZvCkBAIC00MTYsNiAmIzQzOzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZykKIAkJCWdvdG8gZXJyb3JfcGFyYW07CiAJCX0KIAomIzQzOwkJZm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCAmYW1wO3FfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpCiYjNDM7CQkJaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7CiAJCWJpdG1hcF96ZXJvKHZmLSZndDtyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpOwogCX0gZWxzZSBpZiAocV9tYXApIHsKIAkJZm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCAmYW1wO3FfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHsKQEAgLTQzNiw2ICYjNDM7NDU2LDcgQEAgaW50IGljZV92Y19kaXNfcXNfbXNnKHN0cnVjdCBpY2VfdmYgKnZmLCB1OCAqbXNnKQogCQkJCWdvdG8gZXJyb3JfcGFyYW07CiAJCQl9CiAKJiM0MzsJCQlpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTsKIAkJCS8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi8KIAkJCWNsZWFyX2JpdCh2Zl9xX2lkLCB2Zi0mZ3Q7cnhxX2VuYSk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuYwppbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jCkBAIC04Nyw3ICYjNDM7ODcsNyBAQCBzdGF0aWMgaW50IGlkcGZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsCiAJaWYgKCFyZWdfdmFscykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpOwomIzQzOwludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpOwogCWlmIChudW1fcmVncyAmbHQ7IG51bV92ZWNzKSB7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZnJlZV9yZWdfdmFsczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYwppbmRleCBjZjk2NmZlNmM3NTljLi5iYjgxZTYyMGM1Yzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jCkBAIC0xMzksNyAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgaWRwZl9tYl9pbnRyX3JlcV9pcnEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcikKIAlpZiAoZXJyKSB7CiAJCWRldl9lcnIoJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYsCiAJCQkmIzM0O0lSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXG4mIzM0OywgZXJyKTsKLQomIzQzOwkJa2ZyZWUobmFtZSk7CiAJCXJldHVybiBlcnI7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYwppbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMKQEAgLTMwOTcsMTAgJiM0MzszMDk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlkcGZfdHhfc3BsaXRxX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJdHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFOwogCQl0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QOwotCQkvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgJiMzNDtjbGVhbiYjMzQ7IHRoZSBkZXNjcmlwdG9yIHJpbmcuCi0JCSAqIE1JTl9HQVAgaXMgc2V0IHRvIE1JTl9SSU5HIHNpemUgdG8gZW5zdXJlIGl0IHdpbGwgYmUgc2V0IGF0Ci0JCSAqIGxlYXN0IG9uY2UgZWFjaCB0aW1lIGFyb3VuZCB0aGUgcmluZy4KLQkJICovCiYjNDM7CQkvKiBTZXQgdGhlIFJFIGJpdCBwZXJpb2RpY2FsbHkgdG8gJiMzNDtjbGVhbiYjMzQ7IHRoZSBkZXNjcmlwdG9yIHJpbmcgKi8KIAkJaWYgKGlkcGZfdHhfc3BsaXRxX25lZWRfcmUodHhfcSkpIHsKIAkJCXR4X3BhcmFtcy5lb3BfY21kIHw9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfUkU7CiAJCQl0eF9xLSZndDt0eHFfZ3JwLSZndDtudW1fY29tcGxldGlvbnNfcGVuZGluZyYjNDM7JiM0Mzs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaAppbmRleCA0YmU1YjNiNmQzZWQyLi45MDhkZmEyODY3NGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmgKQEAgLTIxLDcgJiM0MzsyMSw3IEBACiAvKiBNYWlsYm94IFF1ZXVlICovCiAjZGVmaW5lIElEUEZfTUFYX01CWFEJCQkJMQogCi0jZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDCQkJNjQKJiM0MzsjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDCQkJMTI4CiAjZGVmaW5lIElEUEZfTUlOX1JYUV9ERVNDCQkJNjQKICNkZWZpbmUgSURQRl9NSU5fVFhRX0NPTVBMUV9ERVNDCQkyNTYKICNkZWZpbmUgSURQRl9NQVhfUUlEUwkJCQkyNTYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuYwppbmRleCBhMDdkN2U4MDhjYTliLi42NzI2MDg0ZjZjZmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jCkBAIC04Niw3ICYjNDM7ODYsNyBAQCBzdGF0aWMgaW50IGlkcGZfdmZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsCiAJaWYgKCFyZWdfdmFscykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpOwomIzQzOwludW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpOwogCWlmIChudW1fcmVncyAmbHQ7IG51bV92ZWNzKSB7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZnJlZV9yZWdfdmFsczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmMKQEAgLTEzMTgsMTEgJiM0MzsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLAogICogaWRwZl9nZXRfcmVnX2ludHJfdmVjcyAtIEdldCB2ZWN0b3IgcXVldWUgcmVnaXN0ZXIgb2Zmc2V0CiAgKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZWN0b3IgY2h1bmtzCiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW4KJiM0MzsgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGQKICAqCiAgKiBSZXR1cm46IG51bWJlciBvZiByZWdpc3RlcnMgdGhhdCBnb3QgcG9wdWxhdGVkCiAgKi8KIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsCi0JCQkgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpCiYjNDM7CQkJICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpCiB7CiAJc3RydWN0IHZpcnRjaG5sMl92ZWN0b3JfY2h1bmtzICpjaHVua3M7CiAJc3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDsKQEAgLTEzNDYsNyAmIzQzOzEzNDcsNyBAQCBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLAogCQlkeW5jdGxfcmVnX3NwYWNpbmcgPSBsZTMyX3RvX2NwdShjaHVuay0mZ3Q7ZHluY3RsX3JlZ19zcGFjaW5nKTsKIAkJaXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLSZndDtpdHJuX3JlZ19zcGFjaW5nKTsKIAotCQlmb3IgKGkgPSAwOyBpICZsdDsgbnVtX3ZlYzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmVjICZhbXA7JmFtcDsgbnVtX3JlZ3MgJmx0OyBudW1fdmVjczsgaSYjNDM7JiM0MzspIHsKIAkJCXJlZ192YWxzW251bV9yZWdzXS5keW5fY3RsX3JlZyA9IHJlZ192YWwuZHluX2N0bF9yZWc7CiAJCQlyZWdfdmFsc1tudW1fcmVnc10uaXRybl9yZWcgPSByZWdfdmFsLml0cm5fcmVnOwogCQkJcmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5faW5kZXhfc3BhY2luZyA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCmluZGV4IDY4NzZlM2VkOWQxYmUuLjliMWM5Yzg2ZjZlYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oCkBAIC0xMDQsNyAmIzQzOzEwNCw3IEBAIGludCBpZHBmX3ZjX2NvcmVfaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTsKIHZvaWQgaWRwZl92Y19jb3JlX2RlaW5pdChzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTsKIAogaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciwKLQkJCSAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscyk7CiYjNDM7CQkJICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzLCBpbnQgbnVtX3ZlY3MpOwogaW50IGlkcGZfcXVldWVfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LAogCQkJc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYywKIAkJCXN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvICpjaHVua3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwppbmRleCAwYTNkMGExY2JhNDMzLi5jNjg2ZWUxMjBhMTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYwpAQCAtMjE5MCw4ICYjNDM7MjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJYnVmZmVyX2luZm8tJmd0O3RpbWVfc3RhbXAgPSAwOwogCWJ1ZmZlcl9pbmZvLSZndDtsZW5ndGggPSAwOwogCWJ1ZmZlcl9pbmZvLSZndDttYXBwZWRfYXNfcGFnZSA9IGZhbHNlOwotCWlmIChjb3VudCkKLQkJY291bnQtLTsKIAogCS8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi8KIAl3aGlsZSAoY291bnQtLSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwppbmRleCAyYzllMmRmZDg0OTkxLi5iMzg4M2E1YTdkN2FlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYwpAQCAtNTM1Miw5ICYjNDM7NTM1Miw4IEBAIHZvaWQgaWdjX2Rvd24oc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFkYXB0ZXItJmd0O251bV9xX3ZlY3RvcnM7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChhZGFwdGVyLSZndDtxX3ZlY3RvcltpXSkgewotCQkJbmFwaV9zeW5jaHJvbml6ZSgmYW1wO2FkYXB0ZXItJmd0O3FfdmVjdG9yW2ldLSZndDtuYXBpKTsKLQkJCWlnY19zZXRfcXVldWVfbmFwaShhZGFwdGVyLCBpLCBOVUxMKTsKIAkJCW5hcGlfZGlzYWJsZSgmYW1wO2FkYXB0ZXItJmd0O3FfdmVjdG9yW2ldLSZndDtuYXBpKTsKJiM0MzsJCQlpZ2Nfc2V0X3F1ZXVlX25hcGkoYWRhcHRlciwgaSwgTlVMTCk7CiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMyNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggU2VyaWVzIEFuYWx5c2lzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzOiBgZTEwMDBgLCBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbmQgYGlnY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGZ1enppbmcgc3RyYXRlZ3kuCgpIZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgdGhlIGNoYW5nZXMgYW5kIG15IHRob3VnaHRzIG9uIHRoZWlyIHRlc3RhYmlsaXR5OgoKMS4gICoqYGUxMDAwYDoqKiBGaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBlMTAwMF9wcm9iZWAuIExvb2tzIGxpa2UgYSBzaW1wbGUgc3dhcCBvZiBlcnJvciBsYWJlbHMgKGBlcnJfc3dfaW5pdGAgYW5kIGBlcnJfbWRpb19pb3JlbWFwYCksIHdoaWNoIHdvdWxkIGhhdmUgY2F1c2VkIGFuIGlzc3VlIHdpdGggZnJlZWluZyByZXNvdXJjZXMgb24gYSBmYWlsdXJlLiBUaGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB2aWEgZmF1bHQgaW5qZWN0aW9uLCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gQW5kLCBpbXBvcnRhbnRseSwgYGUxMDAwYCAqaXMqIGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgbWFrZXMgaXQgYSBwb3RlbnRpYWwgdGFyZ2V0LgoyLiAgKipgaWNlYDoqKiBBIGJ1bmNoIG9mIGNoYW5nZXMgaW4gYGljZV9kcGxsLmNgLCBgaWNlX2V0aHRvb2wuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2VfdmZfbGliLmNgLiBUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHJlc2V0IHJlY292ZXJ5LCBhbmQgaW50ZXJydXB0IGNsZWFyaW5nIHdpdGhpbiBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKS4gSXQmIzM5O3MgYmFzZWQgb24gSW50ZWwmIzM5O3MgRTgwMCBzZXJpZXMuIEkgZG9uJiMzOTt0IHRoaW5rIHN0YW5kYXJkIFFFTVUgZW11bGF0ZXMgYGljZWAgZGlyZWN0bHkuCjMuICAqKmBpZHBmYDoqKiBUd2Vha3MgaW4gc2V2ZXJhbCBmaWxlcyAoYGlkcGZfZGV2LmNgLCBgaWRwZl92Zl9kZXYuY2AsIGBpZHBmX3ZpcnRjaG5sLmNgLCBgaWRwZl9saWIuY2AsIGBpZHBmX3R4cnguY2ApLiBUaGlzIHNlZW1zIHRvIGluY2x1ZGUgYSBib3VuZHMgY2hlY2sgaW4gYGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3NgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcywgYSBtZW1vcnkgbGVhayBmaXggaW4gYGlkcGZfbWJfaW50cl9yZXFfaXJxYCwgYW5kIGEgZGVzY3JpcHRvciBzaXplIGNoYW5nZS4gYGlkcGZgIGlzIEludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbi4gSXQgaXNuJiMzOTt0IGVtdWxhdGVkLgo0LiAgKipgaWdidmZgOioqIEEgZml4IGluIGBuZXRkZXYuY2AgcmVnYXJkaW5nIGxvZ2ljIGluIGBpZ2J2Zl90eF9tYXBfYWR2YC4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIGEgcmVkdW5kYW50IGBjb3VudC0tYC4gYGlnYnZmYCBpcyB0aGUgVkYgZHJpdmVyIGZvciBgaWdiYC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gYGlnYmAgKmlzKiBlbXVsYXRlZCBpbiBRRU1VLCBhbmQgUUVNVSBoYXMgYWRkZWQgU1ItSU9WIHN1cHBvcnQgd2hpY2ggbWFrZXMgYGlnYnZmYCBwb3RlbnRpYWxseSB0ZXN0YWJsZS4gVGhpcyBpcyBhIHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuCjUuICAqKmBpZ2NgOioqIEEgc3dhcCBvZiBgbmFwaV9kaXNhYmxlYCBhbmQgYGlnY19zZXRfcXVldWVfbmFwaWAgaW4gYGlnY19kb3duYCBpbiBgaWdjX21haW4uY2AuIGBpZ2NgIGlzIHRoZSBJbnRlbCAyLjVHIEV0aGVybmV0IChJMjI1L0kyMjYpIGRyaXZlci4gSXQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuCgpHaXZlbiB0aGUgcHJvbXB0IGFib3V0IGVtdWxhdGVkIGhhcmR3YXJlLCBteSBpbml0aWFsIGh1bmNoIGlzIHRvIGZvY3VzIG9uIGBlMTAwMGAgYW5kIGBpZ2J2ZmAsIGJlY2F1c2UgdGhleSYjMzk7cmUgdGhlIG9uZXMgdGhhdCAqY2FuKiBiZSB0ZXN0ZWQuCgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBrZXkgcGFydHM6CgpGb3IgYGUxMDAwYCwgdGhlIGNoYW5nZSBpbiBgZTEwMDBfcHJvYmVgIGlzIHZlcnkgaW50ZXJlc3Rpbmc6IGl0IG1vZGlmaWVzIGFuIGVycm9yIHBhdGguIFRoaXMgY291bGQgYmUgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZywgcG90ZW50aWFsbHkgdHJpZ2dlcmluZyB0aGUgZXJyb3Igd2l0aCBmYXVsdCBpbmplY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYWdhaW4uCgpgYGBjCiAJaWYgKGh3LSZndDtmbGFzaF9hZGRyZXNzKQogCQlpb3VubWFwKGh3LSZndDtmbGFzaF9hZGRyZXNzKTsKJiM0MztlcnJfbWRpb19pb3JlbWFwOgogCWtmcmVlKGFkYXB0ZXItJmd0O3R4X3JpbmcpOwogCWtmcmVlKGFkYXB0ZXItJmd0O3J4X3JpbmcpOwogZXJyX2RtYToKIGVycl9zd19pbml0OgotZXJyX21kaW9faW9yZW1hcDoKIAlpb3VubWFwKGh3LSZndDtjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTsKIAlpb3VubWFwKGh3LSZndDtod19hZGRyKTsKIGVycl9pb3JlbWFwOgpgYGAKCkZvciBgaWdidmZgLCB0aGUgY2hhbmdlIGluIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBub3QgYSB2ZXJ5IGV4Y2l0aW5nIGNoYW5nZSwgYnV0IGl0IGlzIGluIHRoZSBjcml0aWNhbCB0cmFuc21pdCBwYXRoLgoKYGBgYwogCWJ1ZmZlcl9pbmZvLSZndDt0aW1lX3N0YW1wID0gMDsKIAlidWZmZXJfaW5mby0mZ3Q7bGVuZ3RoID0gMDsKIAlidWZmZXJfaW5mby0mZ3Q7bWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTsKLQlpZiAoY291bnQpCi0JCWNvdW50LS07CiAKIAkvKiBjbGVhciB0aW1lc3RhbXAgYW5kIGRtYSBtYXBwaW5ncyBmb3IgcmVtYWluaW5nIHBvcnRpb24gb2YgcGFja2V0ICovCiAJd2hpbGUgKGNvdW50LS0pIHsKYGBgCgpTbywgd2hpbGUgdGhlIG90aGVyIGRyaXZlcnMgYXJlIGludGVyZXN0aW5nIGluIHRoZWlyIG93biByaWdodCwgdGhlIFFFTVUgZW11bGF0aW9uIG9mIGBlMTAwMGAKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo4NjpzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGUxMDAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVx0LmlkX3RhYmxlID0gZTEwMDBfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy0xODQtXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTg1MT1zdGF0aWMgaW50IGUxMDAwX2luaXRfaHdfc3RydWN0KHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTA1OiAqIGUxMDAwX3Byb2JlIC0gRGV2aWNlIEluaXRpYWxpemF0aW9uIFJvdXRpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxMC0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDU4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczoKCioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgZTEwMDBfcHJvYmVgIGZ1bmN0aW9uLiBSaWdodCwgaXQmIzM5O3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBlMTAwMGAgZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIGEgbWF0Y2hpbmcgUENJIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEdvb2QsIHRoYXQgZXN0YWJsaXNoZXMgdGhlIGNvbnRleHQgZm9yIHRoYXQgZHJpdmVyLiBOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byBjaGVjayBvdXQgdGhlIGBpZ2J2Zl90eF9tYXBfYWR2YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGF0JiMzOTtzIHdpdGhpbiB0aGUgYGlnYnZmYCBtb2R1bGUuIFJpZ2h0LCBsZXQgbWUgcHVsbCB0aGF0IGNvZGUgdXAgYW5kIHNlZSB3aGF0IGl0IGRvZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBUWCBtYXBwaW5nIGlzIGhhbmRsZWQgaW4gdGhhdCBwYXJ0aWN1bGFyIHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnYnZmX3R4X21hcF9hZHYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjEwNz1zdGF0aWMgaW50IGlnYnZmX21heWJlX3N0b3BfdHgoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIxMzY6c3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIxMzctXHRcdFx0XHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMjY1PXN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMyMi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcdGNvdW50ID0gaWdidmZfdHhfbWFwX2FkdihhZGFwdGVyLCB0eF9yaW5nLCBza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjMyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkFuYWx5emluZyB0aGUgSUdCVkYgVHJhbnNtaXQgUGF0aCoqCgpPa2F5LCBzbyBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiBpbiB0aGUgdHJhbnNtaXQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBgbmRvX3N0YXJ0X3htaXRgIOKAkyB0aGUgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uIGZvciBzdGFydGluZyBhIHRyYW5zbWl0LCBzbyB0aGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gaGFwcGVucy4gVGhlcmVmb3JlLCBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgbmVlZHMgYSBjbG9zZXIgbG9vay4gSSYjMzk7bGwgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjIwNj1zdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfdHhfcXVldWVfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIyNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMjY1OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMjY2LVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjMzOT1zdGF0aWMgbmV0ZGV2X3R4X3QgaWdidmZfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMzUyOlx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjM1My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MjkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgRHJpdmVyIENvZGUgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBgaWdidmZfeG1pdF9mcmFtZWAgZGVmaW5pdGVseSBjYWxscyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIHdoaWNoIG1lYW5zIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBpbmRlZWQgaW4gdGhlICYjMzQ7aG90IHBhdGgmIzM0Oy4gQnV0IHdhaXQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQmIzM5O3MgYSBnb29kIHBvaW50Li4uIG9oLCBidXQgYGlnYnZmX3R4X21hcF9hZHZgIGlzIGlubGluZWQsIHNvIHRoYXQmIzM5O3MgcHJvYmFibHkgbGVzcyBvZiBhIGNvbmNlcm4uCgpOb3csIGBlMTAwMF9wcm9iZWAgbG9va3MgcHJvbWlzaW5nLiBQcm9iZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gUENJIGhvdHBsdWcgb3IgZHJpdmVyIGxvYWRpbmcgcG9zc2liaWxpdGllcy4gVGhhdCYjMzk7cyBhIHNvbGlkIGNhbmRpZGF0ZS4KCldoYXQgYWJvdXQgb3RoZXIgZHJpdmVycyBsaWtlIGBpY2VgLCBgaWRwZmAsIG9yIGBpZ2NgPyBIbSwgdGhvc2UgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGxpbWl0YXRpb24gcmlnaHQgdGhlcmUuIEJ1dCB3YWl0LCBJJiMzOTttIGZvcmdldHRpbmcgc29tZXRoaW5nLiBgZTEwMDBgICppcyogZW11bGF0ZWQsIGFuZCBgaWdidmZgIGlzIHRvbyAoaWYgUUVNVSBzdXBwb3J0cyBgaWdiYCBTUi1JT1YsIHdoaWNoIGl0IGRvZXMgYXMgb2YgUUVNVSA4LjApLiBTbyB0aGUgcGF0Y2ggaXMgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJvdGggYGUxMDAwYCBhbmQgYGlnYnZmYCB0aGF0IGFyZSBhY3R1YWxseSByZWFjaGFibGUgdmlhIHRoZSBlbXVsYXRvci4gVGhpcyBpcyB2ZXJ5IGdvb2QgbmV3cy4KClRpbWUgdG8gY29uZmlybSB0aGlzOyBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdG8gbWFrZSBzdXJlIHRoZXkmIzM5O3JlIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgYXQgbGVhc3QgZWFzaWx5IGNvbmZpZ3VyYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEUxMDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjI9Y29uZmlnIEUxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo0NTpjb25maWcgRTEwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6ODE6Y29uZmlnIEUxMDAwRV9IV1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTgyLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IEhXIGNyb3NzLXRpbWVzdGFtcCBvbiBQQ0ggZGV2aWNlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUwNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBLY29uZmlnIGZvciBgaWdidmZgKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBpZ2J2ZmAgS2NvbmZpZy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgdmlydHVhbCBmdW5jdGlvbiBkcml2ZXIsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyBtb2R1bGFyLCBpZiBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBmaXJtd2FyZSB2ZXJzaW9ucywgd2hhdCBvdGhlciBkcml2ZXJzIGl0IG1pZ2h0IGNvbmZsaWN0IHdpdGgsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMuIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW4gdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJR0JWRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTEyMD1jb25maWcgSUdCX0RDQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxMjk6Y29uZmlnIElHQlZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIDgyNTc2IFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzc5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGBlMTAwMGAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgbWV0aG9kaWNhbCBjaGVjay4gVGltZSB0byBnZXQgZ3JhbnVsYXIuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiBgZTEwMDBgLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGV2ZW4gZmlybXdhcmUgcmVseSBvbiB0aGlzIGVsZW1lbnQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgYSBkZXRhaWxlZCBkZXBlbmRlbmN5IG1hcC4gVGhhdCBtZWFucyBkaXZpbmcgZGVlcCBpbnRvIHRoZSBjb2RlLCBjb25maWd1cmF0aW9uIGZpbGVzLCBidWlsZCBzeXN0ZW1zLi4uZXZlcnl0aGluZyB0aGF0IHRvdWNoZXMgYGUxMDAwYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyIGFkanVzdG1lbnRzIG9yIGFuYWx5c2lzIEkmIzM5O20gYWJvdXQgdG8gZG8gd29uJiMzOTt0IHRyaWdnZXIgYSBjYXNjYWRlIG9mIHVuZm9yZXNlZW4gZWZmZWN0cyB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIGluZGlyZWN0IG9uZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgY29udGV4dCBhcm91bmQgYGUxMDAwYCBpcyBwYXJhbW91bnQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0Y29uZmlnIEUxMDAwXG4gIDQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIFBSTy8xMDAwIGdpZ2FiaXQgZXRoZXJuZXQgZmFtaWx5IG9mXG4gIDUwOlx0XHQgIGFkYXB0ZXJzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAgNTE6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuICA1MjpcdFxuICA1MzpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAgNTQ6XHRcbiAgNTU6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDU2Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAwLnJzdFx1MDAzZS5cbiAgNTc6XHRcbiAgNTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA1OTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBlMTAwMC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IGBpZ2J2ZmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgaWdidmZgIG1vZHVsZSBvciBsaWJyYXJ5LiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXA7IEkgY2FuJiMzOTt0IGV2ZW4gKnRoaW5rKiBhYm91dCBtb2RpZnlpbmcsIGRlYnVnZ2luZywgb3IgaW50ZWdyYXRpbmcgaXQgd2l0aG91dCBrbm93aW5nIHdoYXQgaXQmIzM5O3MgbGVhbmluZyBvbiBhbmQgd2hhdCBpdCBwcm92aWRlcy4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBhIHF1aWNrIGdsYW5jZSBhdCBhIHBhY2thZ2UgbWFuaWZlc3QsIGVpdGhlci4gSSBuZWVkIGEgcmVhbCwgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wYWN0IGFueSBjaGFuZ2UgbWlnaHQgaGF2ZS4gSXMgaXQgc29tZXRoaW5nIHNpbXBsZSwgbWF5YmUganVzdCBhIGhhbmRmdWwgb2Ygc3RyYWlnaHRmb3J3YXJkIGludGVyZmFjZXMsIG9yIGlzIGl0IGEgc3ByYXdsaW5nIHdlYiBvZiBjb21wbGV4LCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcz8gVGhlIGFuc3dlcnMgd2lsbCBzaGFwZSBteSBhcHByb2FjaCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gVGltZSB0byBkaWcgaW4gYW5kIG1hcCBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI5Olx0Y29uZmlnIElHQlZGXG4gMTMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAxMzE6XHRcdGRlcGVuZHMgb24gUENJXG4gMTMyOlx0XHRoZWxwXG4gMTMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIDgyNTc2IHZpcnR1YWwgZnVuY3Rpb25zLiAgRm9yIG1vcmVcbiAxMzQ6XHRcdCAgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ28gdG8gdGhlIEFkYXB0ZXIgXHUwMDI2XG4gMTM1Olx0XHQgIERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDEzNjpcdFxuIDEzNzpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAxMzg6XHRcbiAxMzk6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMTQwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYnZmLnJzdFx1MDAzZS5cbiAxNDE6XHRcbiAxNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuIDE0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBpZ2J2Zi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDM6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3ODgKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAzMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRnVuY3Rpb25zIGZvciBUZXN0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSB0d28gY29uZmlndXJhdGlvbnMsIGBFMTAwMGAgYW5kIGBJR0JWRmAsIGFuZCB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgaW4gdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAuIGBlMTAwMF9wcm9iZWAgc2VlbXMgbGlrZSBhIGdvb2QsIGZvY3VzZWQgc3ltYm9sIHRvIHRhcmdldC4gSXQmIzM5O3MgYSBjbGVhciBlbnRyeSBwb2ludC4KCk5vdywgYGlnYnZmX3R4X21hcF9hZHZgLi4uIHRoYXQmIzM5O3Mgc3RhdGljIGlubGluZSwgc28gaXQgd29uJiMzOTt0IGJlIGEgZGlyZWN0IHN5bWJvbC4gVGhlIGNhbGxlciBpcyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIGFsc28gc3RhdGljIGlubGluZSwgbWVhbmluZyB0aGUgcmVhbCBzeW1ib2wgaXMgYGlnYnZmX3htaXRfZnJhbWVgLiBCdXQgd2FpdCwgYGlnYnZmX3htaXRfZnJhbWVgIGlzIGEgaG90LXBhdGggZnVuY3Rpb24sIGxpa2VseSB0aGUgYG5kb19zdGFydF94bWl0YCBlbnRyeSBwb2ludC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gZ2V0IGEgYmV0dGVyIHRlc3QgZGlzdHJpYnV0aW9uLiBTbywgSSBzaG91bGRuJiMzOTt0IGluY2x1ZGUgdGhhdC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIHRhcmdldD8gV2hhdCBhYm91dCBgaWRwZmAsIGBpY2VgLCBvciBgaWdjYD8gVGhvc2UgYXJlbiYjMzk7dCBlbXVsYXRlZC4gU28sIGl0IGxvb2tzIGxpa2UgYGUxMDAwX3Byb2JlYCBpcyB0aGUgb25seSBmb2N1cyBzeW1ib2wuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byAmIzM0O0F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiYjMzQ7IFRoaXMgc2VhbHMgaXQsIEkgY2FuJiMzOTt0IGluY2x1ZGUgdGhhdC4KCk9rYXksIGxldCBtZSBjaGVjayBgZTEwMDBfcHJvYmVgIGluIGBlMTAwMF9tYWluLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDAzOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo4NjpzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xODA9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGUxMDAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVx0LmlkX3RhYmxlID0gZTEwMDBfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy0xODQtXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTg1MT1zdGF0aWMgaW50IGUxMDAwX2luaXRfaHdfc3RydWN0KHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTA1OiAqIGUxMDAwX3Byb2JlIC0gRGV2aWNlIEluaXRpYWxpemF0aW9uIFJvdXRpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxMC0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI3NQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiA5NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGFyZSBmdXp6YWJsZSB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGUxMDAwX3Byb2JlYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBub3QgaW5saW5lZCwgYW5kIGl0IGRvZXMgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBXYWl0LCB0aGUgcHJvbXB0IHNheXMgaXQgaXMgb2theSBpZiB0aGlzIGlzIGFuIEFQSSBlbnRyeXBvaW50LCB3aGljaCB0aGlzIGlzISBFeGNlbGxlbnQsIGluY2x1ZGUgaXQuCgpOZXh0LCBJIG5lZWQgdG8gcnVuIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBxdWlja2x5IHRvIGRldGVybWluZSB0aGVpciBzdGF0dXM6IGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBzdGF0aWMgaW5saW5lOyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgc3RhdGljIGlubGluZTsgYW5kLCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgc3RhdGljIGFzIHdlbGwgYmVjYXVzZSBpdCYjMzk7cyB0aGUgYG5kb19zdGFydF94bWl0YCBjYWxsYmFjay4KCkkgdGhlbiB3ZW50IHRocm91Z2ggYSBsaXN0IG9mIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyB0byBzZWUgaWYgdGhleSB3ZXJlIGluIGVtdWxhdGVkIGRyaXZlcnMuIGBpZ2NfZG93bmAsIGBpZHBmX21iX2ludHJfcmVxX2lycWAsIGFuZCBgaWNlX2RwbGxfcHBzX3VwZGF0ZV9waGFzZV9vZmZzZXRzYCBhcmUgbm90IGVtdWxhdGVkLCBzbyB0aGV5IGNhbiBiZSBydWxlZCBvdXQuIFRoaXMgbGVhdmVzIG9ubHkgYGUxMDAwYCBhbmQgYGlnYnZmYCBhcyB0aGUgZW11bGF0ZWQgZHJpdmVycy4gVGhlcmVmb3JlLCB0aGUgYXBwbGljYWJsZSBjb25maWdzIGFyZSBgRTEwMDBgIGFuZCBgSUdCVkZgLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IGlmIHRoZSBjb2RlIGlzIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNpbmNlIHRoZSBwYXRjaCBkZWFscyB3aXRoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAsIGJvdGggb2Ygd2hpY2ggYXJlIGVtdWxhdGVkLCB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCkkgdGhlbiByZXZpc2l0ZWQgdGhlIGZvY3VzIGZ1bmN0aW9uLCBgZTEwMDBfcHJvYmVgLiBBZnRlciBhIHF1aWNrIHJldmlldywgSSBjb25jbHVkZWQgdGhhdCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgaW4gdGhlIGhvdCBwYXRoLCBhbmQgY2FuIGJlIGV4Y2x1ZGVkLCBhbmQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgaWdidmZfdHhfbWFwX2FkdmAsIGlzIGlubGluZWQgaW50byB0aGUgaG90IHBhdGguIFRoZW4sIGNvbmZpcm1pbmcsIHRoZXJlIGFyZSBubyBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgaW4gYGUxMDAwYCBvciBgaWdidmZgLiBUaGVyZWZvcmUsIG9ubHkgYGUxMDAwX3Byb2JlYCBpcyBhIGZvY3VzIHN5bWJvbC4KCk15IGZpbmFsIHRob3VnaHQgd2FzIHRvIGNvbmZpcm0gd2hldGhlciBgRTEwMDBgIG9yIGBJR0JWRmAgZGVwZW5kcyBvbiBhbnl0aGluZyB3ZWlyZC4gQm90aCBgRTEwMDBgIChgUENJICZhbXA7JmFtcDsgSEFTX0lPUE9SVGApIGFuZCBgSUdCVkZgIChgUENJYCkgaGF2ZSBzdGFuZGFyZCBkZXBlbmRlbmNpZXMuCgpKdXN0IHRvIGJlIHNhZmUsIEkgYWdhaW4gdmVyaWZpZWQgdGhhdCBgaWdjYCwgYGljZWAsIGFuZCBgaWRwZmAgYXJlIG5vdCBlbXVsYXRlZCwgc2luY2UgdGhleSBjb3VsZCB0aHJvdyBvZmYgdGhlIGFuYWx5c2lzLgoKSW4gc3VtbWFyeSwgdGhpcyBwYXRjaCBpcyBmdXp6YWJsZS4gVGhlIHJhdGlvbmFsZSBpcyB0aGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgYGljZWAsIGBpZHBmYCwgYW5kIGBpZ2NgIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgYGUxMDAwYCBhbmQgYGlnYnZmYCBhcmUuIFRoZSBwYXRjaCBmaXhlcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdGhyb3VnaCBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uL2ZhdWx0IGluamVjdGlvbi4KClRoZXJlZm9yZSwgdGhlIHJlc3VsdHMgYXJlOgoqICAgV29ydGhGdXp6aW5nID0gdHJ1ZQoqICAgRm9jdXNTeW1ib2xzID0gYFsmIzM0O2UxMDAwX3Byb2JlJiMzNDtdYAoqICAgRW5hYmxlQ29uZmlncyA9IGBbJiMzNDtFMTAwMCYjMzQ7LCAmIzM0O0lHQlZGJiMzNDtdYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwMzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMDAmIzM0OywKICAgICYjMzQ7SUdCVkYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwMF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIGljZSwgaWRwZiwgYW5kIGlnYyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBlMTAwMCBhbmQgaWdidmYgZHJpdmVycyBhcmUgc3VwcG9ydGVkIChRRU1VIGVtdWxhdGVzIGUxMDAwIGFuZCBpZ2Igd2l0aCBTUi1JT1YpLiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBlMTAwMF9wcm9iZSBhbmQgYSBsb2dpYyBidWcgaW4gaWdidmZfdHhfbWFwX2FkdiAod2hpY2ggaXMgaW5saW5lZCBpbnRvIHRoZSB0cmFuc21pdCBob3QtcGF0aCkuIFdlIGNhbiBmdXp6IHRoZSBlMTAwMF9wcm9iZSBmdW5jdGlvbiB2aWEgUENJIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgZmF1bHQgaW5qZWN0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwMCYjMzQ7LAogICAgJiMzNDtJR0JWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDAwX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgaWNlLCBpZHBmLCBhbmQgaWdjIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIGUxMDAwIGFuZCBpZ2J2ZiBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQgKFFFTVUgZW11bGF0ZXMgZTEwMDAgYW5kIGlnYiB3aXRoIFNSLUlPVikuIFRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGUxMDAwX3Byb2JlIGFuZCBhIGxvZ2ljIGJ1ZyBpbiBpZ2J2Zl90eF9tYXBfYWR2ICh3aGljaCBpcyBpbmxpbmVkIGludG8gdGhlIHRyYW5zbWl0IGhvdC1wYXRoKS4gV2UgY2FuIGZ1enogdGhlIGUxMDAwX3Byb2JlIGZ1bmN0aW9uIHZpYSBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBmYXVsdCBpbmplY3Rpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTozMS4yNjM0NjExMThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg5ODcyNzE5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwMFwiLFxuICAgIFwiSUdCVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwMF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgSW50ZWwgZXRoZXJuZXQgZHJpdmVycy4gV2hpbGUgaWNlLCBpZHBmLCBhbmQgaWdjIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhlIGUxMDAwIGFuZCBpZ2J2ZiBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQgKFFFTVUgZW11bGF0ZXMgZTEwMDAgYW5kIGlnYiB3aXRoIFNSLUlPVikuIFRoZSBwYXRjaCBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGUxMDAwX3Byb2JlIGFuZCBhIGxvZ2ljIGJ1ZyBpbiBpZ2J2Zl90eF9tYXBfYWR2ICh3aGljaCBpcyBpbmxpbmVkIGludG8gdGhlIHRyYW5zbWl0IGhvdC1wYXRoKS4gV2UgY2FuIGZ1enogdGhlIGUxMDAwX3Byb2JlIGZ1bmN0aW9uIHZpYSBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBmYXVsdCBpbmplY3Rpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjMxLjI2MzQ3MzA0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1NTQzNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQ3YmZiNWM1NGFiOGFiMDE4NjMzOWE1OWM4NzcwODUyMjBhN2E4N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAwMzowMTozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcXG5pbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1xcbkBAIC0xMjIyLDExICsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIFxcbiBcXHRpZiAoaHctXFx1MDAzZWZsYXNoX2FkZHJlc3MpXFxuIFxcdFxcdGlvdW5tYXAoaHctXFx1MDAzZWZsYXNoX2FkZHJlc3MpO1xcbitlcnJfbWRpb19pb3JlbWFwOlxcbiBcXHRrZnJlZShhZGFwdGVyLVxcdTAwM2V0eF9yaW5nKTtcXG4gXFx0a2ZyZWUoYWRhcHRlci1cXHUwMDNlcnhfcmluZyk7XFxuIGVycl9kbWE6XFxuIGVycl9zd19pbml0Olxcbi1lcnJfbWRpb19pb3JlbWFwOlxcbiBcXHRpb3VubWFwKGh3LVxcdTAwM2VjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTtcXG4gXFx0aW91bm1hcChody1cXHUwMDNlaHdfYWRkcik7XFxuIGVycl9pb3JlbWFwOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuaW5kZXggMzBjM2E0ZGI3ZDYxMS4uODVhNzRjZDZlYTFmMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuQEAgLTc5Myw3ICs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sXFxuIFxcdFxcdFxcdFxcdCAgIHJldCxcXG4gXFx0XFx0XFx0XFx0ICAgbGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpLFxcbiBcXHRcXHRcXHRcXHQgICBwaW5fdHlwZV9uYW1lW3Bpbl90eXBlXSwgcGluLVxcdTAwM2VpZHgpO1xcbi1cXHRlbHNlXFxuK1xcdGVsc2UgaWYgKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpXFxuIFxcdFxcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoaWNlX3BmX3RvX2RldihwZiksXFxuIFxcdFxcdFxcdFxcdCAgICBcXFwiZXJyOiVkICVzIGZhaWxlZCB0byB1cGRhdGUgJXMgcGluOiV1XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcmV0LFxcbkBAIC0zMDI0LDcgKzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcXG4gXFx0KnBoYXNlX29mZnNldF9waW5zX3VwZGF0ZWQgPSAwO1xcbiBcXHRyZXQgPSBpY2VfYXFfZ2V0X2NndV9pbnB1dF9waW5fbWVhc3VyZShcXHUwMDI2cGYtXFx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XFxuLVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcGYtXFx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4pIHtcXG4rXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAocGYtXFx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyA9PSBMSUJJRV9BUV9SQ19FQUdBSU4gfHxcXG4rXFx0XFx0ICAgIHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUJVU1kpKSB7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9IGVsc2UgaWYgKHJldCkge1xcbiBcXHRcXHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxcbkBAIC0zMDg2LDEwICszMDg3LDEyIEBAIGljZV9kcGxsX3VwZGF0ZV9zdGF0ZShzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9kcGxsICpkLCBib29sIGluaXQpXFxuIFxcdFxcdGQtXFx1MDAzZWRwbGxfaWR4LCBkLVxcdTAwM2VwcmV2X2lucHV0X2lkeCwgZC1cXHUwMDNlaW5wdXRfaWR4LFxcbiBcXHRcXHRkLVxcdTAwM2VkcGxsX3N0YXRlLCBkLVxcdTAwM2VwcmV2X2RwbGxfc3RhdGUsIGQtXFx1MDAzZW1vZGUpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXFxuLVxcdFxcdFxcdFxcXCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0ZC1cXHUwMDNlZHBsbF9pZHgsIHJldCxcXG4tXFx0XFx0XFx0bGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4rXFx0XFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24ndCBsb2cgZXJyb3IgKi9cXG4rXFx0XFx0aWYgKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgIT0gTElCSUVfQVFfUkNfRUJVU1kpXFxuK1xcdFxcdFxcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXFxuK1xcdFxcdFxcdFxcdFxcXCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHBsbF9pZHgsIHJldCxcXG4rXFx0XFx0XFx0XFx0bGliaWVfYXFfc3RyKHBmLVxcdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXHRpZiAoaW5pdCkge1xcbkBAIC0zMTU4LDcgKzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXFxuIFxcdCAgICBkLVxcdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXFx1MDAzZXBoYXNlX29mZnNldF9tb25pdG9yX3BlcmlvZCA9PSAwKVxcbiBcXHRcXHRyZXQgPSBpY2VfZHBsbF9wcHNfdXBkYXRlX3BoYXNlX29mZnNldHMocGYsIFxcdTAwMjZwaGFzZV9vZmZzZXRfbnRmKTtcXG4gXFx0aWYgKHJldCkge1xcbi1cXHRcXHRkLVxcdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0rKztcXG4rXFx0XFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5ICovXFxuK1xcdFxcdGlmIChwZi1cXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxcbitcXHRcXHRcXHRkLVxcdTAwM2VjZ3Vfc3RhdGVfYWNxX2Vycl9udW0rKztcXG4gXFx0XFx0Lyogc3RvcCByZXNjaGVkdWxpbmcgdGhpcyB3b3JrZXIgKi9cXG4gXFx0XFx0aWYgKGQtXFx1MDAzZWNndV9zdGF0ZV9hY3FfZXJyX251bSBcXHUwMDNlXFxuIFxcdFxcdCAgICBJQ0VfQ0dVX1NUQVRFX0FDUV9FUlJfVEhSRVNIT0xEKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCA0OTM3MWIwNjU4NDU4Li43ZWIzODBiZTdlZDI3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5AQCAtMTA2OSwxOCArMTA2OSwxOCBAQCBzdGF0aWMgaW50IGljZV9sYnRlc3RfcHJlcGFyZV9yaW5ncyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxcbiBcXG4gXFx0c3RhdHVzID0gaWNlX3ZzaV9jZmdfbGFuKHZzaSk7XFxuIFxcdGlmIChzdGF0dXMpXFxuLVxcdFxcdGdvdG8gZXJyX3NldHVwX3J4X3Jpbmc7XFxuK1xcdFxcdGdvdG8gZXJyX2NmZ19sYW47XFxuIFxcbiBcXHRzdGF0dXMgPSBpY2VfdnNpX3N0YXJ0X2FsbF9yeF9yaW5ncyh2c2kpO1xcbiBcXHRpZiAoc3RhdHVzKVxcbi1cXHRcXHRnb3RvIGVycl9zdGFydF9yeF9yaW5nO1xcbitcXHRcXHRnb3RvIGVycl9jZmdfbGFuO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1lcnJfc3RhcnRfcnhfcmluZzpcXG4tXFx0aWNlX3ZzaV9mcmVlX3J4X3JpbmdzKHZzaSk7XFxuLWVycl9zZXR1cF9yeF9yaW5nOlxcbitlcnJfY2ZnX2xhbjpcXG4gXFx0aWNlX3ZzaV9zdG9wX2xhbl90eF9yaW5ncyh2c2ksIElDRV9OT19SRVNFVCwgMCk7XFxuK2Vycl9zZXR1cF9yeF9yaW5nOlxcbitcXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcXG4gZXJyX3NldHVwX3R4X3Jpbmc6XFxuIFxcdGljZV92c2lfZnJlZV90eF9yaW5ncyh2c2kpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbmluZGV4IGUyZmQyZGFiMDNlMzYuLmQ4ODgzNTQ4MmQzYWEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0LyogUmVzdGFydCB0aGUgc2VydmljZSB0YXNrICovXFxuIFxcdG1vZF90aW1lcihcXHUwMDI2cGYtXFx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cXHUwMDNlc2Vydl90bXJfcGVyaW9kKSk7XFxuIFxcbitcXHQvKiBCZXN0LWVmZm9ydCB3YWl0IGZvciB0aGUgc2NoZWR1bGVkIHJlc2V0IHRvIGZpbmlzaCBzbyB0aGF0IHRoZVxcbitcXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcXG4rXFx0ICogKGUuZy4gTmV0d29ya01hbmFnZXIpIG1heSB0cnkgdG8gb3BlbiB0aGUgbmV0IGRldmljZSB3aGlsZSB0aGVcXG4rXFx0ICogYXN5bmNocm9ub3VzIHJlc2V0IGlzIHN0aWxsIGluIHByb2dyZXNzLCBoaXR0aW5nIC1FQlVTWS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IGljZV93YWl0X2Zvcl9yZXNldChwZiwgc2Vjc190b19qaWZmaWVzKDEwKSk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRyZXQpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xcbkBAIC04NDgsNiArODQ4LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpXFxuIFxcdFxcdFxcdCAgICAgIE5VTEwpO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3Jlc2V0X2ludGVycnVwdHMgLSBjbGVhciBhbGwgcXVldWUgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gZm9yIGEgVlNJXFxuKyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZFxcbisgKlxcbisgKiBaZXJvIHRoZSBRSU5UX1JRQ1RMIGFuZCBRSU5UX1RRQ1RMIHJlZ2lzdGVycyBmb3IgYWxsIGFsbG9jYXRlZCBxdWV1ZXNcXG4rICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCxcXG4rICogQ0FVU0VfRU5BIGFuZCBORVhUUSBmaWVsZHMsIHVubGlrZSBpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQoKSB3aGljaCBvbmx5XFxuKyAqIGNsZWFycyB0aGUgQ0FVU0VfRU5BIGJpdC5cXG4rICovXFxuK3ZvaWQgaWNlX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4re1xcbitcXHRzdHJ1Y3QgaWNlX3BmICpwZiA9IHZzaS1cXHUwMDNlYmFjaztcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2cGYtXFx1MDAzZWh3O1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGljZV9mb3JfZWFjaF9hbGxvY19yeHEodnNpLCBpKVxcbitcXHRcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHZzaS1cXHUwMDNlcnhxX21hcFtpXSksIDApO1xcbitcXG4rXFx0aWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpXFxuK1xcdFxcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVxcdTAwM2V0eHFfbWFwW2ldKSwgMCk7XFxuK1xcbitcXHRpY2VfZmx1c2goaHcpO1xcbit9XFxuK1xcbiAvKipcXG4gICogaWNlX3Jlc2V0X3ZmIC0gUmVzZXQgYSBwYXJ0aWN1bGFyIFZGXFxuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgc3RydWN0dXJlXFxuQEAgLTkxOSw2ICs5NDMsOSBAQCBpbnQgaWNlX3Jlc2V0X3ZmKHN0cnVjdCBpY2VfdmYgKnZmLCB1MzIgZmxhZ3MpXFxuIFxcbiBcXHRpY2VfZGlzX3ZmX3FzKHZmKTtcXG4gXFxuK1xcdC8qIGNsZWFudXAgaW50ZXJydXB0IHJlZ2lzdGVycyAqL1xcbitcXHRpY2VfcmVzZXRfaW50ZXJydXB0cyh2c2kpO1xcbitcXG4gXFx0LyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlXFxuIFxcdCAqIGVuYWJsZWQuIFRoaXMgaXMgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgVkZSLlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXFxuaW5kZXggNTM5MmIwNDA0OTg2Mi4uMzIxZDI5YzI1YjdjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYl9wcml2YXRlLmhcXG5AQCAtMjYsNiArMjYsNyBAQFxcbiB2b2lkIGljZV9pbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gdm9pZCBpY2VfZGVpbml0aWFsaXplX3ZmX2VudHJ5KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKTtcXG4gaW50IGljZV9jaGVja192Zl9pbml0KHN0cnVjdCBpY2VfdmYgKnZmKTtcXG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xcbiBzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqaWNlX3ZmX2dldF9wb3J0X2luZm8oc3RydWN0IGljZV92ZiAqdmYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuaW5kZXggMzFiZTJmNzYxODFjMC4uNDMxYzljNTQ2YjA0ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXFxuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxcbiBcXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyB8IFFJTlRfUlFDVExfQ0FVU0VfRU5BX00pO1xcbiB9XFxuIFxcbisvKipcXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcXG4rICogQHZzaTogVlNJIG9mIHRoZSBWRiB0byBjb25maWd1cmVcXG4rICogQHFfaWR4OiBWRiBxdWV1ZSBpbmRleCB1c2VkIHRvIGRldGVybWluZSB0aGUgcXVldWUgaW4gdGhlIFBGJ3Mgc3BhY2VcXG4rICovXFxuK3N0YXRpYyB2b2lkIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdChzdHJ1Y3QgaWNlX3ZzaSAqdnNpLCB1MzIgcV9pZHgpXFxuK3tcXG4rXFx0c3RydWN0IGljZV9odyAqaHcgPSBcXHUwMDI2dnNpLVxcdTAwM2ViYWNrLVxcdTAwM2VodztcXG4rXFx0dTMyIHBmcSA9IHZzaS1cXHUwMDNlcnhxX21hcFtxX2lkeF07XFxuK1xcdHUzMiByZWc7XFxuK1xcbitcXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xcbitcXHRyZWcgXFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XFxuK1xcdHdyMzIoaHcsIFFJTlRfUlFDVEwocGZxKSwgcmVnKTtcXG4rXFxuK1xcdGljZV9mbHVzaChodyk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xcbiAgKiBAdmY6IHBvaW50ZXIgdG8gdGhlIFZGIGluZm9cXG5AQCAtNDE2LDYgKzQzNCw4IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdCh2Zl9xX2lkLCBcXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRilcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdGJpdG1hcF96ZXJvKHZmLVxcdTAwM2VyeHFfZW5hLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpO1xcbiBcXHR9IGVsc2UgaWYgKHFfbWFwKSB7XFxuIFxcdFxcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpIHtcXG5AQCAtNDM2LDYgKzQ1Niw3IEBAIGludCBpY2VfdmNfZGlzX3FzX21zZyhzdHJ1Y3QgaWNlX3ZmICp2ZiwgdTggKm1zZylcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcl9wYXJhbTtcXG4gXFx0XFx0XFx0fVxcbiBcXG4rXFx0XFx0XFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XFxuIFxcdFxcdFxcdC8qIENsZWFyIGVuYWJsZWQgcXVldWVzIGZsYWcgKi9cXG4gXFx0XFx0XFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVxcdTAwM2VyeHFfZW5hKTtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcXG5pbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9kZXYuY1xcbkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4gXFx0aWYgKCFyZWdfdmFscylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpO1xcbitcXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMsIHRvdGFsX3ZlY3MpO1xcbiBcXHRpZiAobnVtX3JlZ3MgXFx1MDAzYyBudW1fdmVjcykge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIGZyZWVfcmVnX3ZhbHM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuY1xcbmluZGV4IGNmOTY2ZmU2Yzc1OWMuLmJiODFlNjIwYzVjODcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2xpYi5jXFxuQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgaW50IGlkcGZfbWJfaW50cl9yZXFfaXJxKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXFwiSVJRIHJlcXVlc3QgZm9yIG1haWxib3ggZmFpbGVkLCBlcnJvcjogJWRcXFxcblxcXCIsIGVycik7XFxuLVxcbitcXHRcXHRrZnJlZShuYW1lKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG5pbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXFxuQEAgLTMwOTcsMTAgKzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdHR4X3BhcmFtcy5kdHlwZSA9IElEUEZfVFhfREVTQ19EVFlQRV9GTEVYX0ZMT1dfU0NIRTtcXG4gXFx0XFx0dHhfcGFyYW1zLmVvcF9jbWQgPSBJRFBGX1RYRF9GTEVYX0ZMT1dfQ01EX0VPUDtcXG4tXFx0XFx0LyogU2V0IHRoZSBSRSBiaXQgdG8gcGVyaW9kaWNhbGx5IFxcXCJjbGVhblxcXCIgdGhlIGRlc2NyaXB0b3IgcmluZy5cXG4tXFx0XFx0ICogTUlOX0dBUCBpcyBzZXQgdG8gTUlOX1JJTkcgc2l6ZSB0byBlbnN1cmUgaXQgd2lsbCBiZSBzZXQgYXRcXG4tXFx0XFx0ICogbGVhc3Qgb25jZSBlYWNoIHRpbWUgYXJvdW5kIHRoZSByaW5nLlxcbi1cXHRcXHQgKi9cXG4rXFx0XFx0LyogU2V0IHRoZSBSRSBiaXQgcGVyaW9kaWNhbGx5IHRvIFxcXCJjbGVhblxcXCIgdGhlIGRlc2NyaXB0b3IgcmluZyAqL1xcbiBcXHRcXHRpZiAoaWRwZl90eF9zcGxpdHFfbmVlZF9yZSh0eF9xKSkge1xcbiBcXHRcXHRcXHR0eF9wYXJhbXMuZW9wX2NtZCB8PSBJRFBGX1RYRF9GTEVYX0ZMT1dfQ01EX1JFO1xcbiBcXHRcXHRcXHR0eF9xLVxcdTAwM2V0eHFfZ3JwLVxcdTAwM2VudW1fY29tcGxldGlvbnNfcGVuZGluZysrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxcbmluZGV4IDRiZTViM2I2ZDNlZDIuLjkwOGRmYTI4Njc0ZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmhcXG5AQCAtMjEsNyArMjEsNyBAQFxcbiAvKiBNYWlsYm94IFF1ZXVlICovXFxuICNkZWZpbmUgSURQRl9NQVhfTUJYUVxcdFxcdFxcdFxcdDFcXG4gXFxuLSNkZWZpbmUgSURQRl9NSU5fVFhRX0RFU0NcXHRcXHRcXHQ2NFxcbisjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXFx0XFx0XFx0MTI4XFxuICNkZWZpbmUgSURQRl9NSU5fUlhRX0RFU0NcXHRcXHRcXHQ2NFxcbiAjZGVmaW5lIElEUEZfTUlOX1RYUV9DT01QTFFfREVTQ1xcdFxcdDI1NlxcbiAjZGVmaW5lIElEUEZfTUFYX1FJRFNcXHRcXHRcXHRcXHQyNTZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZmX2Rldi5jXFxuaW5kZXggYTA3ZDdlODA4Y2E5Yi4uNjcyNjA4NGY2Y2ZhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcXG5AQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IGlkcGZfdmZfaW50cl9yZWdfaW5pdChzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQsXFxuIFxcdGlmICghcmVnX3ZhbHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcXG4rXFx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzLCB0b3RhbF92ZWNzKTtcXG4gXFx0aWYgKG51bV9yZWdzIFxcdTAwM2MgbnVtX3ZlY3MpIHtcXG4gXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBmcmVlX3JlZ192YWxzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXFxuaW5kZXggZGM1YWQ3ODRmNDU2Zi4uOGJkNmNjYTY0YzliZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jXFxuQEAgLTEzMTgsMTEgKzEzMTgsMTIgQEAgaWRwZl92cG9ydF9pbml0X3F1ZXVlX3JlZ19jaHVua3Moc3RydWN0IGlkcGZfdnBvcnRfY29uZmlnICp2cG9ydF9jb25maWcsXFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxcbiAgKiBAYWRhcHRlcjogYWRhcHRlciBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZWN0b3IgY2h1bmtzXFxuICAqIEByZWdfdmFsczogUmVnaXN0ZXIgb2Zmc2V0cyB0byBzdG9yZSBpblxcbisgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGRcXG4gICpcXG4gICogUmV0dXJuOiBudW1iZXIgb2YgcmVnaXN0ZXJzIHRoYXQgZ290IHBvcHVsYXRlZFxcbiAgKi9cXG4gaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4tXFx0XFx0XFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKVxcbitcXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcylcXG4ge1xcbiBcXHRzdHJ1Y3QgdmlydGNobmwyX3ZlY3Rvcl9jaHVua3MgKmNodW5rcztcXG4gXFx0c3RydWN0IGlkcGZfdmVjX3JlZ3MgcmVnX3ZhbDtcXG5AQCAtMTM0Niw3ICsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXFx1MDAzZWR5bmN0bF9yZWdfc3BhY2luZyk7XFxuIFxcdFxcdGl0cm5fcmVnX3NwYWNpbmcgPSBsZTMyX3RvX2NwdShjaHVuay1cXHUwMDNlaXRybl9yZWdfc3BhY2luZyk7XFxuIFxcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3ZlYzsgaSsrKSB7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmVjIFxcdTAwMjZcXHUwMDI2IG51bV9yZWdzIFxcdTAwM2MgbnVtX3ZlY3M7IGkrKykge1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uZHluX2N0bF9yZWcgPSByZWdfdmFsLmR5bl9jdGxfcmVnO1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9yZWcgPSByZWdfdmFsLml0cm5fcmVnO1xcbiBcXHRcXHRcXHRyZWdfdmFsc1tudW1fcmVnc10uaXRybl9pbmRleF9zcGFjaW5nID1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxcbmluZGV4IDY4NzZlM2VkOWQxYmUuLjliMWM5Yzg2ZjZlYWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxcbkBAIC0xMDQsNyArMTA0LDcgQEAgaW50IGlkcGZfdmNfY29yZV9pbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbiB2b2lkIGlkcGZfdmNfY29yZV9kZWluaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XFxuIFxcbiBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbi1cXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMpO1xcbitcXHRcXHRcXHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcyk7XFxuIGludCBpZHBmX3F1ZXVlX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG4gXFx0XFx0XFx0c3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyxcXG4gXFx0XFx0XFx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gKmNodW5rcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5pbmRleCAwYTNkMGExY2JhNDMzLi5jNjg2ZWUxMjBhMTQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmNcXG5AQCAtMjE5MCw4ICsyMTkwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgaWdidmZfdHhfbWFwX2FkdihzdHJ1Y3QgaWdidmZfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0YnVmZmVyX2luZm8tXFx1MDAzZXRpbWVfc3RhbXAgPSAwO1xcbiBcXHRidWZmZXJfaW5mby1cXHUwMDNlbGVuZ3RoID0gMDtcXG4gXFx0YnVmZmVyX2luZm8tXFx1MDAzZW1hcHBlZF9hc19wYWdlID0gZmFsc2U7XFxuLVxcdGlmIChjb3VudClcXG4tXFx0XFx0Y291bnQtLTtcXG4gXFxuIFxcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cXG4gXFx0d2hpbGUgKGNvdW50LS0pIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbmluZGV4IDJjOWUyZGZkODQ5OTEuLmIzODgzYTVhN2Q3YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uY1xcbkBAIC01MzUyLDkgKzUzNTIsOCBAQCB2b2lkIGlnY19kb3duKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlcilcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2VudW1fcV92ZWN0b3JzOyBpKyspIHtcXG4gXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldKSB7XFxuLVxcdFxcdFxcdG5hcGlfc3luY2hyb25pemUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldLVxcdTAwM2VuYXBpKTtcXG4tXFx0XFx0XFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xcbiBcXHRcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXFfdmVjdG9yW2ldLVxcdTAwM2VuYXBpKTtcXG4rXFx0XFx0XFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjMxLjk3OTk5NDM3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3MTgyMTgxNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDAwXCIsXG4gICAgXCJJR0JWRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDAwX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQ3YmZiNWM1NGFiOGFiMDE4NjMzOWE1OWM4NzcwODUyMjBhN2E4N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDAzOjAxOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jXG5pbmRleCA5YjA5ZWIxNDRiODExLi5kN2Y1YzZmMTYxNDIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmNcbkBAIC0xMjIyLDExICsxMjIyLDExIEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXG4gXHRpZiAoaHctXHUwMDNlZmxhc2hfYWRkcmVzcylcbiBcdFx0aW91bm1hcChody1cdTAwM2VmbGFzaF9hZGRyZXNzKTtcbitlcnJfbWRpb19pb3JlbWFwOlxuIFx0a2ZyZWUoYWRhcHRlci1cdTAwM2V0eF9yaW5nKTtcbiBcdGtmcmVlKGFkYXB0ZXItXHUwMDNlcnhfcmluZyk7XG4gZXJyX2RtYTpcbiBlcnJfc3dfaW5pdDpcbi1lcnJfbWRpb19pb3JlbWFwOlxuIFx0aW91bm1hcChody1cdTAwM2VjZTQxMDBfZ2JlX21kaW9fYmFzZV92aXJ0KTtcbiBcdGlvdW5tYXAoaHctXHUwMDNlaHdfYWRkcik7XG4gZXJyX2lvcmVtYXA6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuaW5kZXggMzBjM2E0ZGI3ZDYxMS4uODVhNzRjZDZlYTFmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuQEAgLTc5Myw3ICs3OTMsNyBAQCBpY2VfZHBsbF9waW5fc3RhdGVfdXBkYXRlKHN0cnVjdCBpY2VfcGYgKnBmLCBzdHJ1Y3QgaWNlX2RwbGxfcGluICpwaW4sXG4gXHRcdFx0XHQgICByZXQsXG4gXHRcdFx0XHQgICBsaWJpZV9hcV9zdHIocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSxcbiBcdFx0XHRcdCAgIHBpbl90eXBlX25hbWVbcGluX3R5cGVdLCBwaW4tXHUwMDNlaWR4KTtcbi1cdGVsc2VcbitcdGVsc2UgaWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbiBcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChpY2VfcGZfdG9fZGV2KHBmKSxcbiBcdFx0XHRcdCAgICBcImVycjolZCAlcyBmYWlsZWQgdG8gdXBkYXRlICVzIHBpbjoldVxcblwiLFxuIFx0XHRcdFx0ICAgIHJldCxcbkBAIC0zMDI0LDcgKzMwMjQsOCBAQCBzdGF0aWMgaW50IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhzdHJ1Y3QgaWNlX3BmICpwZixcbiBcdCpwaGFzZV9vZmZzZXRfcGluc191cGRhdGVkID0gMDtcbiBcdHJldCA9IGljZV9hcV9nZXRfY2d1X2lucHV0X3Bpbl9tZWFzdXJlKFx1MDAyNnBmLVx1MDAzZWh3LCBEUExMX1RZUEVfUFBTLCBtZWFzLFxuIFx0XHRcdFx0XHQgICAgICAgQVJSQVlfU0laRShtZWFzKSk7XG4tXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMgPT0gTElCSUVfQVFfUkNfRUFHQUlOKSB7XG4rXHRpZiAocmV0IFx1MDAyNlx1MDAyNiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VBR0FJTiB8fFxuK1x0XHQgICAgcGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzID09IExJQklFX0FRX1JDX0VCVVNZKSkge1xuIFx0XHRyZXR1cm4gMDtcbiBcdH0gZWxzZSBpZiAocmV0KSB7XG4gXHRcdGRldl9lcnIoaWNlX3BmX3RvX2RldihwZiksXG5AQCAtMzA4NiwxMCArMzA4NywxMiBAQCBpY2VfZHBsbF91cGRhdGVfc3RhdGUoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfZHBsbCAqZCwgYm9vbCBpbml0KVxuIFx0XHRkLVx1MDAzZWRwbGxfaWR4LCBkLVx1MDAzZXByZXZfaW5wdXRfaWR4LCBkLVx1MDAzZWlucHV0X2lkeCxcbiBcdFx0ZC1cdTAwM2VkcGxsX3N0YXRlLCBkLVx1MDAzZXByZXZfZHBsbF9zdGF0ZSwgZC1cdTAwM2Vtb2RlKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihpY2VfcGZfdG9fZGV2KHBmKSxcbi1cdFx0XHRcInVwZGF0ZSBkcGxsPSVkIHN0YXRlIGZhaWxlZCwgcmV0PSVkICVzXFxuXCIsXG4tXHRcdFx0ZC1cdTAwM2VkcGxsX2lkeCwgcmV0LFxuLVx0XHRcdGxpYmllX2FxX3N0cihwZi1cdTAwM2Vody5hZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcbitcdFx0LyogRUJVU1kgaXMgZXhwZWN0ZWQgZHVyaW5nIHJlc2V0IHJlY292ZXJ5LCBkb24ndCBsb2cgZXJyb3IgKi9cbitcdFx0aWYgKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cyAhPSBMSUJJRV9BUV9SQ19FQlVTWSlcbitcdFx0XHRkZXZfZXJyKGljZV9wZl90b19kZXYocGYpLFxuK1x0XHRcdFx0XCJ1cGRhdGUgZHBsbD0lZCBzdGF0ZSBmYWlsZWQsIHJldD0lZCAlc1xcblwiLFxuK1x0XHRcdFx0ZC1cdTAwM2VkcGxsX2lkeCwgcmV0LFxuK1x0XHRcdFx0bGliaWVfYXFfc3RyKHBmLVx1MDAzZWh3LmFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFx0aWYgKGluaXQpIHtcbkBAIC0zMTU4LDcgKzMxNjEsOSBAQCBzdGF0aWMgdm9pZCBpY2VfZHBsbF9wZXJpb2RpY193b3JrKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG4gXHQgICAgZC1cdTAwM2VwZXJpb2RpY19jb3VudGVyICUgZHAtXHUwMDNlcGhhc2Vfb2Zmc2V0X21vbml0b3JfcGVyaW9kID09IDApXG4gXHRcdHJldCA9IGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0cyhwZiwgXHUwMDI2cGhhc2Vfb2Zmc2V0X250Zik7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtKys7XG4rXHRcdC8qIEVCVVNZIGlzIGV4cGVjdGVkIGR1cmluZyByZXNldCByZWNvdmVyeSAqL1xuK1x0XHRpZiAocGYtXHUwMDNlaHcuYWRtaW5xLnNxX2xhc3Rfc3RhdHVzICE9IExJQklFX0FRX1JDX0VCVVNZKVxuK1x0XHRcdGQtXHUwMDNlY2d1X3N0YXRlX2FjcV9lcnJfbnVtKys7XG4gXHRcdC8qIHN0b3AgcmVzY2hlZHVsaW5nIHRoaXMgd29ya2VyICovXG4gXHRcdGlmIChkLVx1MDAzZWNndV9zdGF0ZV9hY3FfZXJyX251bSBcdTAwM2VcbiBcdFx0ICAgIElDRV9DR1VfU1RBVEVfQUNRX0VSUl9USFJFU0hPTEQpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5pbmRleCA0OTM3MWIwNjU4NDU4Li43ZWIzODBiZTdlZDI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMTA2OSwxOCArMTA2OSwxOCBAQCBzdGF0aWMgaW50IGljZV9sYnRlc3RfcHJlcGFyZV9yaW5ncyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9jZmdfbGFuKHZzaSk7XG4gXHRpZiAoc3RhdHVzKVxuLVx0XHRnb3RvIGVycl9zZXR1cF9yeF9yaW5nO1xuK1x0XHRnb3RvIGVycl9jZmdfbGFuO1xuIFxuIFx0c3RhdHVzID0gaWNlX3ZzaV9zdGFydF9hbGxfcnhfcmluZ3ModnNpKTtcbiBcdGlmIChzdGF0dXMpXG4tXHRcdGdvdG8gZXJyX3N0YXJ0X3J4X3Jpbmc7XG4rXHRcdGdvdG8gZXJyX2NmZ19sYW47XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfc3RhcnRfcnhfcmluZzpcbi1cdGljZV92c2lfZnJlZV9yeF9yaW5ncyh2c2kpO1xuLWVycl9zZXR1cF9yeF9yaW5nOlxuK2Vycl9jZmdfbGFuOlxuIFx0aWNlX3ZzaV9zdG9wX2xhbl90eF9yaW5ncyh2c2ksIElDRV9OT19SRVNFVCwgMCk7XG4rZXJyX3NldHVwX3J4X3Jpbmc6XG4rXHRpY2VfdnNpX2ZyZWVfcnhfcmluZ3ModnNpKTtcbiBlcnJfc2V0dXBfdHhfcmluZzpcbiBcdGljZV92c2lfZnJlZV90eF9yaW5ncyh2c2kpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmQyZGFiMDNlMzYuLmQ4ODgzNTQ4MmQzYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC01NjM3LDYgKzU2MzcsMTYgQEAgc3RhdGljIGludCBpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdC8qIFJlc3RhcnQgdGhlIHNlcnZpY2UgdGFzayAqL1xuIFx0bW9kX3RpbWVyKFx1MDAyNnBmLVx1MDAzZXNlcnZfdG1yLCByb3VuZF9qaWZmaWVzKGppZmZpZXMgKyBwZi1cdTAwM2VzZXJ2X3Rtcl9wZXJpb2QpKTtcbiBcbitcdC8qIEJlc3QtZWZmb3J0IHdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgcmVzZXQgdG8gZmluaXNoIHNvIHRoYXQgdGhlXG4rXHQgKiBkZXZpY2UgaXMgb3BlcmF0aW9uYWwgYmVmb3JlIHJldHVybmluZy4gV2l0aG91dCB0aGlzLCB1c2Vyc3BhY2VcbitcdCAqIChlLmcuIE5ldHdvcmtNYW5hZ2VyKSBtYXkgdHJ5IHRvIG9wZW4gdGhlIG5ldCBkZXZpY2Ugd2hpbGUgdGhlXG4rXHQgKiBhc3luY2hyb25vdXMgcmVzZXQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MsIGhpdHRpbmcgLUVCVVNZLlxuK1x0ICovXG4rXHRyZXQgPSBpY2Vfd2FpdF9mb3JfcmVzZXQocGYsIHNlY3NfdG9famlmZmllcygxMCkpO1xuK1x0aWYgKHJldClcbitcdFx0ZGV2X2VycihkZXYsIFwiV2FpdCBmb3IgcmVzZXQgdGltZWQgb3V0ICgxMHMpIGR1cmluZyByZXN1bWU6ICVkXFxuXCIsXG4rXHRcdFx0cmV0KTtcbitcbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggOTA1MmU3MWU5Yzk5ZS4uYTU0Y2IyYjhkM2M3NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04NDgsNiArODQ4LDMwIEBAIHN0YXRpYyB2b2lkIGljZV9ub3RpZnlfdmZfcmVzZXQoc3RydWN0IGljZV92ZiAqdmYpXG4gXHRcdFx0ICAgICAgTlVMTCk7XG4gfVxuIFxuKy8qKlxuKyAqIGljZV9yZXNldF9pbnRlcnJ1cHRzIC0gY2xlYXIgYWxsIHF1ZXVlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFZTSVxuKyAqIEB2c2k6IHRoZSBWU0kgd2hvc2UgaW50ZXJydXB0IHJlZ2lzdGVycyBzaG91bGQgYmUgY2xlYXJlZFxuKyAqXG4rICogWmVybyB0aGUgUUlOVF9SUUNUTCBhbmQgUUlOVF9UUUNUTCByZWdpc3RlcnMgZm9yIGFsbCBhbGxvY2F0ZWQgcXVldWVzXG4rICogaW4gdGhlIFZTSS4gVGhpcyBjbGVhcnMgdGhlIGVudGlyZSByZWdpc3RlciBpbmNsdWRpbmcgTVNJWF9JTkRYLCBJVFJfSU5EWCxcbisgKiBDQVVTRV9FTkEgYW5kIE5FWFRRIGZpZWxkcywgdW5saWtlIGljZV92Zl9kaXNfcnhxX2ludGVycnVwdCgpIHdoaWNoIG9ubHlcbisgKiBjbGVhcnMgdGhlIENBVVNFX0VOQSBiaXQuXG4rICovXG4rdm9pZCBpY2VfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuK3tcbitcdHN0cnVjdCBpY2VfcGYgKnBmID0gdnNpLVx1MDAzZWJhY2s7XG4rXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnBmLVx1MDAzZWh3O1xuK1x0aW50IGk7XG4rXG4rXHRpY2VfZm9yX2VhY2hfYWxsb2NfcnhxKHZzaSwgaSlcbitcdFx0d3IzMihodywgUUlOVF9SUUNUTCh2c2ktXHUwMDNlcnhxX21hcFtpXSksIDApO1xuK1xuK1x0aWNlX2Zvcl9lYWNoX2FsbG9jX3R4cSh2c2ksIGkpXG4rXHRcdHdyMzIoaHcsIFFJTlRfVFFDVEwodnNpLVx1MDAzZXR4cV9tYXBbaV0pLCAwKTtcbitcbitcdGljZV9mbHVzaChodyk7XG4rfVxuK1xuIC8qKlxuICAqIGljZV9yZXNldF92ZiAtIFJlc2V0IGEgcGFydGljdWxhciBWRlxuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgc3RydWN0dXJlXG5AQCAtOTE5LDYgKzk0Myw5IEBAIGludCBpY2VfcmVzZXRfdmYoc3RydWN0IGljZV92ZiAqdmYsIHUzMiBmbGFncylcbiBcbiBcdGljZV9kaXNfdmZfcXModmYpO1xuIFxuK1x0LyogY2xlYW51cCBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovXG4rXHRpY2VfcmVzZXRfaW50ZXJydXB0cyh2c2kpO1xuK1xuIFx0LyogQ2FsbCBEaXNhYmxlIExBTiBUeCBxdWV1ZSBBUSB3aGV0aGVyIG9yIG5vdCBxdWV1ZXMgYXJlXG4gXHQgKiBlbmFibGVkLiBUaGlzIGlzIG5lZWRlZCBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIFZGUi5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuaW5kZXggNTM5MmIwNDA0OTg2Mi4uMzIxZDI5YzI1YjdjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliX3ByaXZhdGUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWJfcHJpdmF0ZS5oXG5AQCAtMjYsNiArMjYsNyBAQFxuIHZvaWQgaWNlX2luaXRpYWxpemVfdmZfZW50cnkoc3RydWN0IGljZV92ZiAqdmYpO1xuIHZvaWQgaWNlX2RlaW5pdGlhbGl6ZV92Zl9lbnRyeShzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gdm9pZCBpY2VfZGlzX3ZmX3FzKHN0cnVjdCBpY2VfdmYgKnZmKTtcbit2b2lkIGljZV9yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpY2VfdnNpICp2c2kpO1xuIGludCBpY2VfY2hlY2tfdmZfaW5pdChzdHJ1Y3QgaWNlX3ZmICp2Zik7XG4gZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSBpY2VfZXJyX3RvX3ZpcnRfZXJyKGludCBlcnIpO1xuIHN0cnVjdCBpY2VfcG9ydF9pbmZvICppY2VfdmZfZ2V0X3BvcnRfaW5mbyhzdHJ1Y3QgaWNlX3ZmICp2Zik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL3ZpcnQvcXVldWVzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuaW5kZXggMzFiZTJmNzYxODFjMC4uNDMxYzljNTQ2YjA0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS92aXJ0L3F1ZXVlcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvdmlydC9xdWV1ZXMuY1xuQEAgLTIyNCw2ICsyMjQsMjQgQEAgdm9pZCBpY2VfdmZfZW5hX3J4cV9pbnRlcnJ1cHQoc3RydWN0IGljZV92c2kgKnZzaSwgdTMyIHFfaWR4KVxuIFx0d3IzMihodywgUUlOVF9SUUNUTChwZnEpLCByZWcgfCBRSU5UX1JRQ1RMX0NBVVNFX0VOQV9NKTtcbiB9XG4gXG4rLyoqXG4rICogaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0IC0gZGlzYWJsZSBSeCBxdWV1ZSBpbnRlcnJ1cHQgdmlhIFFJTlRfUlFDVExcbisgKiBAdnNpOiBWU0kgb2YgdGhlIFZGIHRvIGNvbmZpZ3VyZVxuKyAqIEBxX2lkeDogVkYgcXVldWUgaW5kZXggdXNlZCB0byBkZXRlcm1pbmUgdGhlIHF1ZXVlIGluIHRoZSBQRidzIHNwYWNlXG4rICovXG4rc3RhdGljIHZvaWQgaWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHN0cnVjdCBpY2VfdnNpICp2c2ksIHUzMiBxX2lkeClcbit7XG4rXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFx1MDAyNnZzaS1cdTAwM2ViYWNrLVx1MDAzZWh3O1xuK1x0dTMyIHBmcSA9IHZzaS1cdTAwM2VyeHFfbWFwW3FfaWR4XTtcbitcdHUzMiByZWc7XG4rXG4rXHRyZWcgPSByZDMyKGh3LCBRSU5UX1JRQ1RMKHBmcSkpO1xuK1x0cmVnIFx1MDAyNj0gflFJTlRfUlFDVExfQ0FVU0VfRU5BX007XG4rXHR3cjMyKGh3LCBRSU5UX1JRQ1RMKHBmcSksIHJlZyk7XG4rXG4rXHRpY2VfZmx1c2goaHcpO1xuK31cbitcbiAvKipcbiAgKiBpY2VfdmNfZW5hX3FzX21zZ1xuICAqIEB2ZjogcG9pbnRlciB0byB0aGUgVkYgaW5mb1xuQEAgLTQxNiw2ICs0MzQsOCBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpXG4gXHRcdFx0Z290byBlcnJvcl9wYXJhbTtcbiBcdFx0fVxuIFxuK1x0XHRmb3JfZWFjaF9zZXRfYml0KHZmX3FfaWQsIFx1MDAyNnFfbWFwLCBJQ0VfTUFYX1JTU19RU19QRVJfVkYpXG4rXHRcdFx0aWNlX3ZmX2Rpc19yeHFfaW50ZXJydXB0KHZzaSwgdmZfcV9pZCk7XG4gXHRcdGJpdG1hcF96ZXJvKHZmLVx1MDAzZXJ4cV9lbmEsIElDRV9NQVhfUlNTX1FTX1BFUl9WRik7XG4gXHR9IGVsc2UgaWYgKHFfbWFwKSB7XG4gXHRcdGZvcl9lYWNoX3NldF9iaXQodmZfcV9pZCwgXHUwMDI2cV9tYXAsIElDRV9NQVhfUlNTX1FTX1BFUl9WRikge1xuQEAgLTQzNiw2ICs0NTYsNyBAQCBpbnQgaWNlX3ZjX2Rpc19xc19tc2coc3RydWN0IGljZV92ZiAqdmYsIHU4ICptc2cpXG4gXHRcdFx0XHRnb3RvIGVycm9yX3BhcmFtO1xuIFx0XHRcdH1cbiBcbitcdFx0XHRpY2VfdmZfZGlzX3J4cV9pbnRlcnJ1cHQodnNpLCB2Zl9xX2lkKTtcbiBcdFx0XHQvKiBDbGVhciBlbmFibGVkIHF1ZXVlcyBmbGFnICovXG4gXHRcdFx0Y2xlYXJfYml0KHZmX3FfaWQsIHZmLVx1MDAzZXJ4cV9lbmEpO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jXG5pbmRleCAxYTBjNzFjOTVlZjEyLi40MDc5YTc4NzY1N2YxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX2Rldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZGV2LmNcbkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9pbnRyX3JlZ19pbml0KHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcbiBcdGlmICghcmVnX3ZhbHMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzKTtcbitcdG51bV9yZWdzID0gaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhhZGFwdGVyLCByZWdfdmFscywgdG90YWxfdmVjcyk7XG4gXHRpZiAobnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzKSB7XG4gXHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gZnJlZV9yZWdfdmFscztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbmluZGV4IGNmOTY2ZmU2Yzc1OWMuLmJiODFlNjIwYzVjODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9saWIuY1xuQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgaW50IGlkcGZfbWJfaW50cl9yZXFfaXJxKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcIklSUSByZXF1ZXN0IGZvciBtYWlsYm94IGZhaWxlZCwgZXJyb3I6ICVkXFxuXCIsIGVycik7XG4tXG4rXHRcdGtmcmVlKG5hbWUpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jXG5pbmRleCA3ZjkwNTY0MDRmNjRmLi5jNzI0ZDQyOWE3YWE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguY1xuQEAgLTMwOTcsMTAgKzMwOTcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaWRwZl90eF9zcGxpdHFfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0dHhfcGFyYW1zLmR0eXBlID0gSURQRl9UWF9ERVNDX0RUWVBFX0ZMRVhfRkxPV19TQ0hFO1xuIFx0XHR0eF9wYXJhbXMuZW9wX2NtZCA9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfRU9QO1xuLVx0XHQvKiBTZXQgdGhlIFJFIGJpdCB0byBwZXJpb2RpY2FsbHkgXCJjbGVhblwiIHRoZSBkZXNjcmlwdG9yIHJpbmcuXG4tXHRcdCAqIE1JTl9HQVAgaXMgc2V0IHRvIE1JTl9SSU5HIHNpemUgdG8gZW5zdXJlIGl0IHdpbGwgYmUgc2V0IGF0XG4tXHRcdCAqIGxlYXN0IG9uY2UgZWFjaCB0aW1lIGFyb3VuZCB0aGUgcmluZy5cbi1cdFx0ICovXG4rXHRcdC8qIFNldCB0aGUgUkUgYml0IHBlcmlvZGljYWxseSB0byBcImNsZWFuXCIgdGhlIGRlc2NyaXB0b3IgcmluZyAqL1xuIFx0XHRpZiAoaWRwZl90eF9zcGxpdHFfbmVlZF9yZSh0eF9xKSkge1xuIFx0XHRcdHR4X3BhcmFtcy5lb3BfY21kIHw9IElEUEZfVFhEX0ZMRVhfRkxPV19DTURfUkU7XG4gXHRcdFx0dHhfcS1cdTAwM2V0eHFfZ3JwLVx1MDAzZW51bV9jb21wbGV0aW9uc19wZW5kaW5nKys7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmhcbmluZGV4IDRiZTViM2I2ZDNlZDIuLjkwOGRmYTI4Njc0ZWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5oXG5AQCAtMjEsNyArMjEsNyBAQFxuIC8qIE1haWxib3ggUXVldWUgKi9cbiAjZGVmaW5lIElEUEZfTUFYX01CWFFcdFx0XHRcdDFcbiBcbi0jZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0NjRcbisjZGVmaW5lIElEUEZfTUlOX1RYUV9ERVNDXHRcdFx0MTI4XG4gI2RlZmluZSBJRFBGX01JTl9SWFFfREVTQ1x0XHRcdDY0XG4gI2RlZmluZSBJRFBGX01JTl9UWFFfQ09NUExRX0RFU0NcdFx0MjU2XG4gI2RlZmluZSBJRFBGX01BWF9RSURTXHRcdFx0XHQyNTZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbmluZGV4IGEwN2Q3ZTgwOGNhOWIuLjY3MjYwODRmNmNmYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmZfZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92Zl9kZXYuY1xuQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGludCBpZHBmX3ZmX2ludHJfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0aWYgKCFyZWdfdmFscylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRudW1fcmVncyA9IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MoYWRhcHRlciwgcmVnX3ZhbHMpO1xuK1x0bnVtX3JlZ3MgPSBpZHBmX2dldF9yZWdfaW50cl92ZWNzKGFkYXB0ZXIsIHJlZ192YWxzLCB0b3RhbF92ZWNzKTtcbiBcdGlmIChudW1fcmVncyBcdTAwM2MgbnVtX3ZlY3MpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBmcmVlX3JlZ192YWxzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmNcbmluZGV4IGRjNWFkNzg0ZjQ1NmYuLjhiZDZjY2E2NGM5YmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmNcbkBAIC0xMzE4LDExICsxMzE4LDEyIEBAIGlkcGZfdnBvcnRfaW5pdF9xdWV1ZV9yZWdfY2h1bmtzKHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqdnBvcnRfY29uZmlnLFxuICAqIGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3MgLSBHZXQgdmVjdG9yIHF1ZXVlIHJlZ2lzdGVyIG9mZnNldFxuICAqIEBhZGFwdGVyOiBhZGFwdGVyIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlY3RvciBjaHVua3NcbiAgKiBAcmVnX3ZhbHM6IFJlZ2lzdGVyIG9mZnNldHMgdG8gc3RvcmUgaW5cbisgKiBAbnVtX3ZlY3M6IG51bWJlciBvZiBlbnRyaWVzIHRoZSBAcmVnX3ZhbHMgYXJyYXkgY2FuIGhvbGRcbiAgKlxuICAqIFJldHVybjogbnVtYmVyIG9mIHJlZ2lzdGVycyB0aGF0IGdvdCBwb3B1bGF0ZWRcbiAgKi9cbiBpbnQgaWRwZl9nZXRfcmVnX2ludHJfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuLVx0XHRcdCAgIHN0cnVjdCBpZHBmX3ZlY19yZWdzICpyZWdfdmFscylcbitcdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcylcbiB7XG4gXHRzdHJ1Y3QgdmlydGNobmwyX3ZlY3Rvcl9jaHVua3MgKmNodW5rcztcbiBcdHN0cnVjdCBpZHBmX3ZlY19yZWdzIHJlZ192YWw7XG5AQCAtMTM0Niw3ICsxMzQ3LDcgQEAgaW50IGlkcGZfZ2V0X3JlZ19pbnRyX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0ZHluY3RsX3JlZ19zcGFjaW5nID0gbGUzMl90b19jcHUoY2h1bmstXHUwMDNlZHluY3RsX3JlZ19zcGFjaW5nKTtcbiBcdFx0aXRybl9yZWdfc3BhY2luZyA9IGxlMzJfdG9fY3B1KGNodW5rLVx1MDAzZWl0cm5fcmVnX3NwYWNpbmcpO1xuIFxuLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmVjOyBpKyspIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3ZlYyBcdTAwMjZcdTAwMjYgbnVtX3JlZ3MgXHUwMDNjIG51bV92ZWNzOyBpKyspIHtcbiBcdFx0XHRyZWdfdmFsc1tudW1fcmVnc10uZHluX2N0bF9yZWcgPSByZWdfdmFsLmR5bl9jdGxfcmVnO1xuIFx0XHRcdHJlZ192YWxzW251bV9yZWdzXS5pdHJuX3JlZyA9IHJlZ192YWwuaXRybl9yZWc7XG4gXHRcdFx0cmVnX3ZhbHNbbnVtX3JlZ3NdLml0cm5faW5kZXhfc3BhY2luZyA9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3ZpcnRjaG5sLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxuaW5kZXggNjg3NmUzZWQ5ZDFiZS4uOWIxYzljODZmNmVhYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl92aXJ0Y2hubC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdmlydGNobmwuaFxuQEAgLTEwNCw3ICsxMDQsNyBAQCBpbnQgaWRwZl92Y19jb3JlX2luaXQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG4gdm9pZCBpZHBmX3ZjX2NvcmVfZGVpbml0KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuIFxuIGludCBpZHBmX2dldF9yZWdfaW50cl92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tXHRcdFx0ICAgc3RydWN0IGlkcGZfdmVjX3JlZ3MgKnJlZ192YWxzKTtcbitcdFx0XHQgICBzdHJ1Y3QgaWRwZl92ZWNfcmVncyAqcmVnX3ZhbHMsIGludCBudW1fdmVjcyk7XG4gaW50IGlkcGZfcXVldWVfcmVnX2luaXQoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuIFx0XHRcdHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgKnJzcmMsXG4gXHRcdFx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gKmNodW5rcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuaW5kZXggMGEzZDBhMWNiYTQzMy4uYzY4NmVlMTIwYTE0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuY1xuQEAgLTIxOTAsOCArMjE5MCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRidWZmZXJfaW5mby1cdTAwM2V0aW1lX3N0YW1wID0gMDtcbiBcdGJ1ZmZlcl9pbmZvLVx1MDAzZWxlbmd0aCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VtYXBwZWRfYXNfcGFnZSA9IGZhbHNlO1xuLVx0aWYgKGNvdW50KVxuLVx0XHRjb3VudC0tO1xuIFxuIFx0LyogY2xlYXIgdGltZXN0YW1wIGFuZCBkbWEgbWFwcGluZ3MgZm9yIHJlbWFpbmluZyBwb3J0aW9uIG9mIHBhY2tldCAqL1xuIFx0d2hpbGUgKGNvdW50LS0pIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG5pbmRleCAyYzllMmRmZDg0OTkxLi5iMzg4M2E1YTdkN2FlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jXG5AQCAtNTM1Miw5ICs1MzUyLDggQEAgdm9pZCBpZ2NfZG93bihzdHJ1Y3QgaWdjX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW51bV9xX3ZlY3RvcnM7IGkrKykge1xuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXSkge1xuLVx0XHRcdG5hcGlfc3luY2hyb25pemUoXHUwMDI2YWRhcHRlci1cdTAwM2VxX3ZlY3RvcltpXS1cdTAwM2VuYXBpKTtcbi1cdFx0XHRpZ2Nfc2V0X3F1ZXVlX25hcGkoYWRhcHRlciwgaSwgTlVMTCk7XG4gXHRcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlcV92ZWN0b3JbaV0tXHUwMDNlbmFwaSk7XG4rXHRcdFx0aWdjX3NldF9xdWV1ZV9uYXBpKGFkYXB0ZXIsIGksIE5VTEwpO1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTozMS45Nzk5OTc0NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDQ4MDI4MTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBTZXJpZXMgQW5hbHlzaXMgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzOiBgZTEwMDBgLCBgaWNlYCwgYGlkcGZgLCBgaWdidmZgLCBhbmQgYGlnY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBldmVuICp0ZXN0YWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGZ1enppbmcgc3RyYXRlZ3kuXG5cbkhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHRoZSBjaGFuZ2VzIGFuZCBteSB0aG91Z2h0cyBvbiB0aGVpciB0ZXN0YWJpbGl0eTpcblxuMS4gICoqYGUxMDAwYDoqKiBGaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBlMTAwMF9wcm9iZWAuIExvb2tzIGxpa2UgYSBzaW1wbGUgc3dhcCBvZiBlcnJvciBsYWJlbHMgKGBlcnJfc3dfaW5pdGAgYW5kIGBlcnJfbWRpb19pb3JlbWFwYCksIHdoaWNoIHdvdWxkIGhhdmUgY2F1c2VkIGFuIGlzc3VlIHdpdGggZnJlZWluZyByZXNvdXJjZXMgb24gYSBmYWlsdXJlLiBUaGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB2aWEgZmF1bHQgaW5qZWN0aW9uLCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBgZTEwMDBgICppcyogZW11bGF0ZWQgaW4gUUVNVS4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCB0YXJnZXQuXG4yLiAgKipgaWNlYDoqKiBBIGJ1bmNoIG9mIGNoYW5nZXMgaW4gYGljZV9kcGxsLmNgLCBgaWNlX2V0aHRvb2wuY2AsIGBpY2VfbWFpbi5jYCwgYW5kIGBpY2VfdmZfbGliLmNgLiBUaGVzZSBzZWVtIHRvIGJlIHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHJlc2V0IHJlY292ZXJ5LCBhbmQgaW50ZXJydXB0IGNsZWFyaW5nIHdpdGhpbiBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKS4gSXQncyBiYXNlZCBvbiBJbnRlbCdzIEU4MDAgc2VyaWVzLiBJIGRvbid0IHRoaW5rIHN0YW5kYXJkIFFFTVUgZW11bGF0ZXMgYGljZWAgZGlyZWN0bHkuXG4zLiAgKipgaWRwZmA6KiogVHdlYWtzIGluIHNldmVyYWwgZmlsZXMgKGBpZHBmX2Rldi5jYCwgYGlkcGZfdmZfZGV2LmNgLCBgaWRwZl92aXJ0Y2hubC5jYCwgYGlkcGZfbGliLmNgLCBgaWRwZl90eHJ4LmNgKS4gVGhpcyBzZWVtcyB0byBpbmNsdWRlIGEgYm91bmRzIGNoZWNrIGluIGBpZHBmX2dldF9yZWdfaW50cl92ZWNzYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMsIGEgbWVtb3J5IGxlYWsgZml4IGluIGBpZHBmX21iX2ludHJfcmVxX2lycWAsIGFuZCBhIGRlc2NyaXB0b3Igc2l6ZSBjaGFuZ2UuIGBpZHBmYCBpcyBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24uIEl0IGlzbid0IGVtdWxhdGVkLlxuNC4gICoqYGlnYnZmYDoqKiBBIGZpeCBpbiBgbmV0ZGV2LmNgIHJlZ2FyZGluZyBsb2dpYyBpbiBgaWdidmZfdHhfbWFwX2FkdmAuIFNwZWNpZmljYWxseSwgaXQgcmVtb3ZlcyBhIHJlZHVuZGFudCBgY291bnQtLWAuIGBpZ2J2ZmAgaXMgdGhlIFZGIGRyaXZlciBmb3IgYGlnYmAuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIGBpZ2JgICppcyogZW11bGF0ZWQgaW4gUUVNVSwgYW5kIFFFTVUgaGFzIGFkZGVkIFNSLUlPViBzdXBwb3J0IHdoaWNoIG1ha2VzIGBpZ2J2ZmAgcG90ZW50aWFsbHkgdGVzdGFibGUuIFRoaXMgaXMgYSBwb2ludCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLlxuNS4gICoqYGlnY2A6KiogQSBzd2FwIG9mIGBuYXBpX2Rpc2FibGVgIGFuZCBgaWdjX3NldF9xdWV1ZV9uYXBpYCBpbiBgaWdjX2Rvd25gIGluIGBpZ2NfbWFpbi5jYC4gYGlnY2AgaXMgdGhlIEludGVsIDIuNUcgRXRoZXJuZXQgKEkyMjUvSTIyNikgZHJpdmVyLiBJdCBpcyBub3QgZW11bGF0ZWQgaW4gUUVNVS5cblxuR2l2ZW4gdGhlIHByb21wdCBhYm91dCBlbXVsYXRlZCBoYXJkd2FyZSwgbXkgaW5pdGlhbCBodW5jaCBpcyB0byBmb2N1cyBvbiBgZTEwMDBgIGFuZCBgaWdidmZgLCBiZWNhdXNlIHRoZXkncmUgdGhlIG9uZXMgdGhhdCAqY2FuKiBiZSB0ZXN0ZWQuXG5cbkxldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGtleSBwYXJ0czpcblxuRm9yIGBlMTAwMGAsIHRoZSBjaGFuZ2UgaW4gYGUxMDAwX3Byb2JlYCBpcyB2ZXJ5IGludGVyZXN0aW5nOiBpdCBtb2RpZmllcyBhbiBlcnJvciBwYXRoLiBUaGlzIGNvdWxkIGJlIGFuIGV4Y2VsbGVudCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIHBvdGVudGlhbGx5IHRyaWdnZXJpbmcgdGhlIGVycm9yIHdpdGggZmF1bHQgaW5qZWN0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgYWdhaW4uXG5cbmBgYGNcbiBcdGlmIChody1cdTAwM2VmbGFzaF9hZGRyZXNzKVxuIFx0XHRpb3VubWFwKGh3LVx1MDAzZWZsYXNoX2FkZHJlc3MpO1xuK2Vycl9tZGlvX2lvcmVtYXA6XG4gXHRrZnJlZShhZGFwdGVyLVx1MDAzZXR4X3JpbmcpO1xuIFx0a2ZyZWUoYWRhcHRlci1cdTAwM2VyeF9yaW5nKTtcbiBlcnJfZG1hOlxuIGVycl9zd19pbml0OlxuLWVycl9tZGlvX2lvcmVtYXA6XG4gXHRpb3VubWFwKGh3LVx1MDAzZWNlNDEwMF9nYmVfbWRpb19iYXNlX3ZpcnQpO1xuIFx0aW91bm1hcChody1cdTAwM2Vod19hZGRyKTtcbiBlcnJfaW9yZW1hcDpcbmBgYFxuXG5Gb3IgYGlnYnZmYCwgdGhlIGNoYW5nZSBpbiBgaWdidmZfdHhfbWFwX2FkdmAgaXMgbm90IGEgdmVyeSBleGNpdGluZyBjaGFuZ2UsIGJ1dCBpdCBpcyBpbiB0aGUgY3JpdGljYWwgdHJhbnNtaXQgcGF0aC5cblxuYGBgY1xuIFx0YnVmZmVyX2luZm8tXHUwMDNldGltZV9zdGFtcCA9IDA7XG4gXHRidWZmZXJfaW5mby1cdTAwM2VsZW5ndGggPSAwO1xuIFx0YnVmZmVyX2luZm8tXHUwMDNlbWFwcGVkX2FzX3BhZ2UgPSBmYWxzZTtcbi1cdGlmIChjb3VudClcbi1cdFx0Y291bnQtLTtcbiBcbiBcdC8qIGNsZWFyIHRpbWVzdGFtcCBhbmQgZG1hIG1hcHBpbmdzIGZvciByZW1haW5pbmcgcG9ydGlvbiBvZiBwYWNrZXQgKi9cbiBcdHdoaWxlIChjb3VudC0tKSB7XG5gYGBcblxuU28sIHdoaWxlIHRoZSBvdGhlciBkcml2ZXJzIGFyZSBpbnRlcmVzdGluZyBpbiB0aGVpciBvd24gcmlnaHQsIHRoZSBRRU1VIGVtdWxhdGlvbiBvZiBgZTEwMDBgXG5cbiIsIklucHV0VG9rZW5zIjo4MzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAxOjQ2LjQ2MDI4MjU4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk4NTEzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NT1zdGF0aWMgdm9pZCBlMTAwMF9leGl0X21vZHVsZSh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6ODY6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTg3LXN0YXRpYyB2b2lkIGUxMDAwX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTgwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBlMTAwMF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTgyLVxcdC5pZF90YWJsZSA9IGUxMDAwX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjE4MzpcXHQucHJvYmUgICAgPSBlMTAwMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTg0LVxcdC5yZW1vdmUgICA9IGUxMDAwX3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz04NTE9c3RhdGljIGludCBlMTAwMF9pbml0X2h3X3N0cnVjdChzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkwNTogKiBlMTAwMF9wcm9iZSAtIERldmljZSBJbml0aWFsaXphdGlvbiBSb3V0aW5lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkwNi0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTAtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTExOiAqIGUxMDAwX3Byb2JlIGluaXRpYWxpemVzIGFuIGFkYXB0ZXIgaWRlbnRpZmllZCBieSBhIHBjaV9kZXYgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTItICogVGhlIE9TIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmluZyBvZiB0aGUgYWRhcHRlciBwcml2YXRlIHN0cnVjdHVyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MTQtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MTU6c3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDE6NDYuNjAwMTM5NDg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMjExNDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIERyaXZlciBJbml0aWFsaXphdGlvbiBhbmQgRnVuY3Rpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGUxMDAwX3Byb2JlYCBmdW5jdGlvbi4gUmlnaHQsIGl0J3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGBlMTAwMGAgZHJpdmVyLiBUaGF0IG1ha2VzIHNlbnNlLCBzbyB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIGEgbWF0Y2hpbmcgUENJIGRldmljZSBpcyBkZXRlY3RlZCBhbmQgdGhlIGRyaXZlciBpcyBsb2FkZWQuIEdvb2QsIHRoYXQgZXN0YWJsaXNoZXMgdGhlIGNvbnRleHQgZm9yIHRoYXQgZHJpdmVyLiBOb3csIGxldCdzIHN3aXRjaCBnZWFycyBhIGJpdC4gSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgYGlnYnZmX3R4X21hcF9hZHZgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHRoYXQncyB3aXRoaW4gdGhlIGBpZ2J2ZmAgbW9kdWxlLiBSaWdodCwgbGV0IG1lIHB1bGwgdGhhdCBjb2RlIHVwIGFuZCBzZWUgd2hhdCBpdCBkb2VzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgVFggbWFwcGluZyBpcyBoYW5kbGVkIGluIHRoYXQgcGFydGljdWxhciBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1MC4xMzIyNTY4MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NzM0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYnZmX3R4X21hcF9hZHZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIxMDc9c3RhdGljIGludCBpZ2J2Zl9tYXliZV9zdG9wX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMTM2OnN0YXRpYyBpbmxpbmUgaW50IGlnYnZmX3R4X21hcF9hZHYoc3RydWN0IGlnYnZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjEzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWdidmZfcmluZyAqdHhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jPTIyNjU9c3RhdGljIG5ldGRldl90eF90IGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzMjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM6MjMyMzpcXHRjb3VudCA9IGlnYnZmX3R4X21hcF9hZHYoYWRhcHRlciwgdHhfcmluZywgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1MC4zMzg5OTYzNTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQyMzI2MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipBbmFseXppbmcgdGhlIElHQlZGIFRyYW5zbWl0IFBhdGgqKlxuXG5Pa2F5LCBzbyBgaWdidmZfdHhfbWFwX2FkdmAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiBpbiB0aGUgdHJhbnNtaXQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0J3MgY2FsbGVkIGZyb20gYGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHZgLCB3aGljaCwgb2YgY291cnNlLCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGBuZG9fc3RhcnRfeG1pdGAg4oCTIHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24gZm9yIHN0YXJ0aW5nIGEgdHJhbnNtaXQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGVyZWZvcmUsIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCBuZWVkcyBhIGNsb3NlciBsb29rLiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNTgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1NC43ODEzMjUxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1ODI2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmM9MjIwNj1zdGF0aWMgaW5saW5lIHZvaWQgaWdidmZfdHhfcXVldWVfYWR2KHN0cnVjdCBpZ2J2Zl9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYzoyMjY1OnN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdidmYvbmV0ZGV2LmMtMjI2Ni1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYz0yMzM5PXN0YXRpYyBuZXRkZXZfdHhfdCBpZ2J2Zl94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2J2Zi9uZXRkZXYuYy0yMzUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jOjIzNTI6XFx0cmV0dXJuIGlnYnZmX3htaXRfZnJhbWVfcmluZ19hZHYoc2tiLCBuZXRkZXYsIHR4X3JpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYnZmL25ldGRldi5jLTIzNTMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMTo1NC44ODQ5MTM2OThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA2OTUxODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIERyaXZlciBDb2RlIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBgaWdidmZfeG1pdF9mcmFtZWAgZGVmaW5pdGVseSBjYWxscyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAsIHdoaWNoIG1lYW5zIGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBpbmRlZWQgaW4gdGhlIFwiaG90IHBhdGhcIi4gQnV0IHdhaXQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQncyBhIGdvb2QgcG9pbnQuLi4gb2gsIGJ1dCBgaWdidmZfdHhfbWFwX2FkdmAgaXMgaW5saW5lZCwgc28gdGhhdCdzIHByb2JhYmx5IGxlc3Mgb2YgYSBjb25jZXJuLlxuXG5Ob3csIGBlMTAwMF9wcm9iZWAgbG9va3MgcHJvbWlzaW5nLiBQcm9iZSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRhcmdldHMgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gUENJIGhvdHBsdWcgb3IgZHJpdmVyIGxvYWRpbmcgcG9zc2liaWxpdGllcy4gVGhhdCdzIGEgc29saWQgY2FuZGlkYXRlLlxuXG5XaGF0IGFib3V0IG90aGVyIGRyaXZlcnMgbGlrZSBgaWNlYCwgYGlkcGZgLCBvciBgaWdjYD8gSG0sIHRob3NlIGFyZW4ndCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIGEgbGltaXRhdGlvbiByaWdodCB0aGVyZS4gQnV0IHdhaXQsIEknbSBmb3JnZXR0aW5nIHNvbWV0aGluZy4gYGUxMDAwYCAqaXMqIGVtdWxhdGVkLCBhbmQgYGlnYnZmYCBpcyB0b28gKGlmIFFFTVUgc3VwcG9ydHMgYGlnYmAgU1ItSU9WLCB3aGljaCBpdCBkb2VzIGFzIG9mIFFFTVUgOC4wKS4gU28gdGhlIHBhdGNoIGlzIGludHJvZHVjaW5nIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdGhhdCBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIHZpYSB0aGUgZW11bGF0b3IuIFRoaXMgaXMgdmVyeSBnb29kIG5ld3MuXG5cblRpbWUgdG8gY29uZmlybSB0aGlzOyBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBlMTAwMGAgYW5kIGBpZ2J2ZmAgdG8gbWFrZSBzdXJlIHRoZXkncmUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBhdCBsZWFzdCBlYXNpbHkgY29uZmlndXJhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYyOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMC4xOTE4Njg0M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTM5NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFMTAwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMj1jb25maWcgRTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjAwLjM2NDgxNDA5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI0NDk5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgYGlnYnZmYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYGlnYnZmYCBLY29uZmlnLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCB2aXJ0dWFsIGZ1bmN0aW9uIGRyaXZlciwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQncyBtb2R1bGFyLCBpZiBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBvciBmaXJtd2FyZSB2ZXJzaW9ucywgd2hhdCBvdGhlciBkcml2ZXJzIGl0IG1pZ2h0IGNvbmZsaWN0IHdpdGgsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMuIEknbGwgYmUgZGlnZ2luZyBpbiB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MDcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMy4xODkzMTY0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjQ1MTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCVkZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTIwPWNvbmZpZyBJR0JfRENBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowMy40MjU3NzM4NjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwMTM2NjE2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBgZTEwMDBgIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgbWV0aG9kaWNhbCBjaGVjay4gVGltZSB0byBnZXQgZ3JhbnVsYXIuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBvZiBgZTEwMDBgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgZXZlbiBmaXJtd2FyZSByZWx5IG9uIHRoaXMgZWxlbWVudC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIGEgZGV0YWlsZWQgZGVwZW5kZW5jeSBtYXAuIFRoYXQgbWVhbnMgZGl2aW5nIGRlZXAgaW50byB0aGUgY29kZSwgY29uZmlndXJhdGlvbiBmaWxlcywgYnVpbGQgc3lzdGVtcy4uLmV2ZXJ5dGhpbmcgdGhhdCB0b3VjaGVzIGBlMTAwMGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB3aGF0ZXZlciBhZGp1c3RtZW50cyBvciBhbmFseXNpcyBJJ20gYWJvdXQgdG8gZG8gd29uJ3QgdHJpZ2dlciBhIGNhc2NhZGUgb2YgdW5mb3Jlc2VlbiBlZmZlY3RzIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgbm90IG9ubHkgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGJ1dCBhbHNvIHRoZSBpbmRpcmVjdCBvbmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYXJvdW5kIGBlMTAwMGAgaXMgcGFyYW1vdW50LiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwMzowMjowNi43MjcxNDI2NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0Y29uZmlnIEUxMDAwXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgNDg6XFx0XFx0aGVscFxcbiAgNDk6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwMCBnaWdhYml0IGV0aGVybmV0IGZhbWlseSBvZlxcbiAgNTA6XFx0XFx0ICBhZGFwdGVycy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvXFxuICA1MTpcXHRcXHQgIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDU0OlxcdFxcbiAgNTU6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDU2OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAwLnJzdFxcdTAwM2UuXFxuICA1NzpcXHRcXG4gIDU4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgNTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBlMTAwMC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDI6MDYuNzI3MjQ5NjY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTg0MTQ3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogYGlnYnZmYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBgaWdidmZgIG1vZHVsZSBvciBsaWJyYXJ5LiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBldmVuICp0aGluayogYWJvdXQgbW9kaWZ5aW5nLCBkZWJ1Z2dpbmcsIG9yIGludGVncmF0aW5nIGl0IHdpdGhvdXQga25vd2luZyB3aGF0IGl0J3MgbGVhbmluZyBvbiBhbmQgd2hhdCBpdCBwcm92aWRlcy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGEgcXVpY2sgZ2xhbmNlIGF0IGEgcGFja2FnZSBtYW5pZmVzdCwgZWl0aGVyLiBJIG5lZWQgYSByZWFsLCBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBhY3QgYW55IGNoYW5nZSBtaWdodCBoYXZlLiBJcyBpdCBzb21ldGhpbmcgc2ltcGxlLCBtYXliZSBqdXN0IGEgaGFuZGZ1bCBvZiBzdHJhaWdodGZvcndhcmQgaW50ZXJmYWNlcywgb3IgaXMgaXQgYSBzcHJhd2xpbmcgd2ViIG9mIGNvbXBsZXgsIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzPyBUaGUgYW5zd2VycyB3aWxsIHNoYXBlIG15IGFwcHJvYWNoIGZyb20gdGhpcyBwb2ludCBmb3J3YXJkLiBUaW1lIHRvIGRpZyBpbiBhbmQgbWFwIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjEwLjI4NTY2NjY0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyOSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyOTpcXHRjb25maWcgSUdCVkZcXG4gMTMwOlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NiBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuIDEzMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMzI6XFx0XFx0aGVscFxcbiAxMzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSA4MjU3NiB2aXJ0dWFsIGZ1bmN0aW9ucy4gIEZvciBtb3JlXFxuIDEzNDpcXHRcXHQgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyIFxcdTAwMjZcXG4gMTM1OlxcdFxcdCAgRHJpdmVyIElEIEd1aWRlIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuIDEzNjpcXHRcXG4gMTM3OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gMTM4OlxcdFxcbiAxMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gMTQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYnZmLnJzdFxcdTAwM2UuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAxNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBpZ2J2Zi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDM6MDI6MTAuMjg1NzczMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NjA0Mzc0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRhcmdldCBGdW5jdGlvbnMgZm9yIFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0d28gY29uZmlndXJhdGlvbnMsIGBFMTAwMGAgYW5kIGBJR0JWRmAsIGFuZCB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgY2hhbmdlcyBhcmUgaW4gdGhlIHBhdGNoLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMDBfcHJvYmVgIGFuZCBgaWdidmZfdHhfbWFwX2FkdmAuIGBlMTAwMF9wcm9iZWAgc2VlbXMgbGlrZSBhIGdvb2QsIGZvY3VzZWQgc3ltYm9sIHRvIHRhcmdldC4gSXQncyBhIGNsZWFyIGVudHJ5IHBvaW50LlxuXG5Ob3csIGBpZ2J2Zl90eF9tYXBfYWR2YC4uLiB0aGF0J3Mgc3RhdGljIGlubGluZSwgc28gaXQgd29uJ3QgYmUgYSBkaXJlY3Qgc3ltYm9sLiBUaGUgY2FsbGVyIGlzIGBpZ2J2Zl94bWl0X2ZyYW1lX3JpbmdfYWR2YCwgYWxzbyBzdGF0aWMgaW5saW5lLCBtZWFuaW5nIHRoZSByZWFsIHN5bWJvbCBpcyBgaWdidmZfeG1pdF9mcmFtZWAuIEJ1dCB3YWl0LCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbiwgbGlrZWx5IHRoZSBgbmRvX3N0YXJ0X3htaXRgIGVudHJ5IHBvaW50LiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgdGVzdCBkaXN0cmlidXRpb24uIFNvLCBJIHNob3VsZG4ndCBpbmNsdWRlIHRoYXQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG8gdGFyZ2V0PyBXaGF0IGFib3V0IGBpZHBmYCwgYGljZWAsIG9yIGBpZ2NgPyBUaG9zZSBhcmVuJ3QgZW11bGF0ZWQuIFNvLCBpdCBsb29rcyBsaWtlIGBlMTAwMF9wcm9iZWAgaXMgdGhlIG9ubHkgZm9jdXMgc3ltYm9sLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBpZ2J2Zl94bWl0X2ZyYW1lYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byBcIkF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlwiIFRoaXMgc2VhbHMgaXQsIEkgY2FuJ3QgaW5jbHVkZSB0aGF0LlxuXG5Pa2F5LCBsZXQgbWUgY2hlY2sgYGUxMDAwX3Byb2JlYCBpbiBgZTEwMDBfbWFpbi5jYCB0byBjb25maXJtIG15IGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc4OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjE2LjA4MTgyODk3NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODY1Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDAwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9ODU9c3RhdGljIHZvaWQgZTEwMDBfZXhpdF9tb2R1bGUodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjg2OnN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy04Ny1zdGF0aWMgdm9pZCBlMTAwMF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTE4MD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZTEwMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE4Mi1cXHQuaWRfdGFibGUgPSBlMTAwMF9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxODM6XFx0LnByb2JlICAgID0gZTEwMDBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE4NC1cXHQucmVtb3ZlICAgPSBlMTAwMF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9ODUxPXN0YXRpYyBpbnQgZTEwMDBfaW5pdF9od19zdHJ1Y3Qoc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTA0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo5MDU6ICogZTEwMDBfcHJvYmUgLSBEZXZpY2UgSW5pdGlhbGl6YXRpb24gUm91dGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy05MDYtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTEwLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjkxMTogKiBlMTAwMF9wcm9iZSBpbml0aWFsaXplcyBhbiBhZGFwdGVyIGlkZW50aWZpZWQgYnkgYSBwY2lfZGV2IHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTEyLSAqIFRoZSBPUyBpbml0aWFsaXphdGlvbiwgY29uZmlndXJpbmcgb2YgdGhlIGFkYXB0ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtOTE0LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6OTE1OnN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTkxNi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjE2LjU2NTcwMTMxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDI1NDg1NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgYXJlIGZ1enphYmxlIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgc2F5cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMDBfcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIHNvIGl0J3Mgbm90IGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gV2FpdCwgdGhlIHByb21wdCBzYXlzIGl0IGlzIG9rYXkgaWYgdGhpcyBpcyBhbiBBUEkgZW50cnlwb2ludCwgd2hpY2ggdGhpcyBpcyEgRXhjZWxsZW50LCBpbmNsdWRlIGl0LlxuXG5OZXh0LCBJIG5lZWQgdG8gcnVuIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBxdWlja2x5IHRvIGRldGVybWluZSB0aGVpciBzdGF0dXM6IGBpZ2J2Zl90eF9tYXBfYWR2YCBpcyBzdGF0aWMgaW5saW5lOyBgaWdidmZfeG1pdF9mcmFtZV9yaW5nX2FkdmAgaXMgc3RhdGljIGlubGluZTsgYW5kLCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgc3RhdGljIGFzIHdlbGwgYmVjYXVzZSBpdCdzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGNhbGxiYWNrLlxuXG5JIHRoZW4gd2VudCB0aHJvdWdoIGEgbGlzdCBvZiBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmdW5jdGlvbnMgdG8gc2VlIGlmIHRoZXkgd2VyZSBpbiBlbXVsYXRlZCBkcml2ZXJzLiBgaWdjX2Rvd25gLCBgaWRwZl9tYl9pbnRyX3JlcV9pcnFgLCBhbmQgYGljZV9kcGxsX3Bwc191cGRhdGVfcGhhc2Vfb2Zmc2V0c2AgYXJlIG5vdCBlbXVsYXRlZCwgc28gdGhleSBjYW4gYmUgcnVsZWQgb3V0LiBUaGlzIGxlYXZlcyBvbmx5IGBlMTAwMGAgYW5kIGBpZ2J2ZmAgYXMgdGhlIGVtdWxhdGVkIGRyaXZlcnMuIFRoZXJlZm9yZSwgdGhlIGFwcGxpY2FibGUgY29uZmlncyBhcmUgYEUxMDAwYCBhbmQgYElHQlZGYC5cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkbid0IGZ1enogaWYgdGhlIGNvZGUgaXMgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gU2luY2UgdGhlIHBhdGNoIGRlYWxzIHdpdGggYGUxMDAwYCBhbmQgYGlnYnZmYCwgYm90aCBvZiB3aGljaCBhcmUgZW11bGF0ZWQsIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbkkgdGhlbiByZXZpc2l0ZWQgdGhlIGZvY3VzIGZ1bmN0aW9uLCBgZTEwMDBfcHJvYmVgLiBBZnRlciBhIHF1aWNrIHJldmlldywgSSBjb25jbHVkZWQgdGhhdCBgaWdidmZfeG1pdF9mcmFtZWAgaXMgaW4gdGhlIGhvdCBwYXRoLCBhbmQgY2FuIGJlIGV4Y2x1ZGVkLCBhbmQgdGhlIG90aGVyIGZ1bmN0aW9uLCBgaWdidmZfdHhfbWFwX2FkdmAsIGlzIGlubGluZWQgaW50byB0aGUgaG90IHBhdGguIFRoZW4sIGNvbmZpcm1pbmcsIHRoZXJlIGFyZSBubyBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgaW4gYGUxMDAwYCBvciBgaWdidmZgLiBUaGVyZWZvcmUsIG9ubHkgYGUxMDAwX3Byb2JlYCBpcyBhIGZvY3VzIHN5bWJvbC5cblxuTXkgZmluYWwgdGhvdWdodCB3YXMgdG8gY29uZmlybSB3aGV0aGVyIGBFMTAwMGAgb3IgYElHQlZGYCBkZXBlbmRzIG9uIGFueXRoaW5nIHdlaXJkLiBCb3RoIGBFMTAwMGAgKGBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlRgKSBhbmQgYElHQlZGYCAoYFBDSWApIGhhdmUgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuXG5KdXN0IHRvIGJlIHNhZmUsIEkgYWdhaW4gdmVyaWZpZWQgdGhhdCBgaWdjYCwgYGljZWAsIGFuZCBgaWRwZmAgYXJlIG5vdCBlbXVsYXRlZCwgc2luY2UgdGhleSBjb3VsZCB0aHJvdyBvZmYgdGhlIGFuYWx5c2lzLlxuXG5JbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGZ1enphYmxlLiBUaGUgcmF0aW9uYWxlIGlzIHRoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBgaWNlYCwgYGlkcGZgLCBhbmQgYGlnY2AgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBgZTEwMDBgIGFuZCBgaWdidmZgIGFyZS4gVGhlIHBhdGNoIGZpeGVzIGBlMTAwMF9wcm9iZWAgYW5kIGBpZ2J2Zl90eF9tYXBfYWR2YCwgd2hpY2ggY2FuIGJlIGZ1enplZCB0aHJvdWdoIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vZmF1bHQgaW5qZWN0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSByZXN1bHRzIGFyZTpcbiogICBXb3J0aEZ1enppbmcgPSB0cnVlXG4qICAgRm9jdXNTeW1ib2xzID0gYFtcImUxMDAwX3Byb2JlXCJdYFxuKiAgIEVuYWJsZUNvbmZpZ3MgPSBgW1wiRTEwMDBcIiwgXCJJR0JWRlwiXWBcblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNzUsIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDAzOjAyOjI4Ljk5MTE4OTU0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDk4MTcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMDBcIixcbiAgICBcIklHQlZGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMDBfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzZXZlcmFsIEludGVsIGV0aGVybmV0IGRyaXZlcnMuIFdoaWxlIGljZSwgaWRwZiwgYW5kIGlnYyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoZSBlMTAwMCBhbmQgaWdidmYgZHJpdmVycyBhcmUgc3VwcG9ydGVkIChRRU1VIGVtdWxhdGVzIGUxMDAwIGFuZCBpZ2Igd2l0aCBTUi1JT1YpLiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBlMTAwMF9wcm9iZSBhbmQgYSBsb2dpYyBidWcgaW4gaWdidmZfdHhfbWFwX2FkdiAod2hpY2ggaXMgaW5saW5lZCBpbnRvIHRoZSB0cmFuc21pdCBob3QtcGF0aCkuIFdlIGNhbiBmdXp6IHRoZSBlMTAwMF9wcm9iZSBmdW5jdGlvbiB2aWEgUENJIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgZmF1bHQgaW5qZWN0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDAwXCIsXG4gICAgXCJJR0JWRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDAwX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBJbnRlbCBldGhlcm5ldCBkcml2ZXJzLiBXaGlsZSBpY2UsIGlkcGYsIGFuZCBpZ2MgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGUgZTEwMDAgYW5kIGlnYnZmIGRyaXZlcnMgYXJlIHN1cHBvcnRlZCAoUUVNVSBlbXVsYXRlcyBlMTAwMCBhbmQgaWdiIHdpdGggU1ItSU9WKS4gVGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gZTEwMDBfcHJvYmUgYW5kIGEgbG9naWMgYnVnIGluIGlnYnZmX3R4X21hcF9hZHYgKHdoaWNoIGlzIGlubGluZWQgaW50byB0aGUgdHJhbnNtaXQgaG90LXBhdGgpLiBXZSBjYW4gZnV6eiB0aGUgZTEwMDBfcHJvYmUgZnVuY3Rpb24gdmlhIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGZhdWx0IGluamVjdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[1] Phase: Succeeded StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 03:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 03:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2] Phase: Succeeded StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 03:03:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 03:02:41 +0000 UTC FinishedAt: 2026-07-30 03:03:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-convert-artifact-2045935347/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 03:03:14 +0000 UTC FinishedAt: 2026-07-30 03:27:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 03:03:14 +0000 UTC FinishedAt: 2026-07-30 03:27:04 +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:*c803798a-387e-4056-919e-c15d6733db61,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-workflowvfftw/series-workflowvfftw-convert-artifact-2045935347/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": "a6a851cc-a015-41f3-a48f-ffd3106558fc", "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-workflowvfftw/series-workflowvfftw-build-action-2962022817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 03:03:14 +0000 UTC FinishedAt: 2026-07-30 03:26:54 +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:*c803798a-387e-4056-919e-c15d6733db61,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-workflowvfftw/series-workflowvfftw-convert-artifact-2045935347/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": "a6a851cc-a015-41f3-a48f-ffd3106558fc", "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-workflowvfftw/series-workflowvfftw-build-action-2962022817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 03:27:04 +0000 UTC FinishedAt: 2026-07-30 03:27:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 03:27:04 +0000 UTC FinishedAt: 2026-07-30 03:27:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 03:27:04 +0000 UTC FinishedAt: 2026-07-30 03:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 03:27:04 +0000 UTC FinishedAt: 2026-07-30 03:27:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-convert-artifact-2384375530/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 03:27:14 +0000 UTC FinishedAt: 2026-07-30 03:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 03:27:14 +0000 UTC FinishedAt: 2026-07-30 03:28:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a6a851cc-a015-41f3-a48f-ffd3106558fc,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-workflowvfftw/series-workflowvfftw-build-action-2962022817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 03:29:08 +0000 UTC FinishedAt: 2026-07-30 03:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 03:29:08 +0000 UTC FinishedAt: 2026-07-30 03:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 03:29:08 +0000 UTC FinishedAt: 2026-07-30 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 03:29:08 +0000 UTC FinishedAt: 2026-07-30 03:47:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c803798a-387e-4056-919e-c15d6733db61,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-workflowvfftw/series-workflowvfftw-convert-artifact-2384375530/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": "907a6b46-8853-49b9-bb56-94c18b6327e6", "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-workflowvfftw/series-workflowvfftw-build-action-10935054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 03:29:08 +0000 UTC FinishedAt: 2026-07-30 03:47:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c803798a-387e-4056-919e-c15d6733db61,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-workflowvfftw/series-workflowvfftw-convert-artifact-2384375530/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": "907a6b46-8853-49b9-bb56-94c18b6327e6", "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-workflowvfftw/series-workflowvfftw-build-action-10935054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 03:47:34 +0000 UTC FinishedAt: 2026-07-30 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 03:47:34 +0000 UTC FinishedAt: 2026-07-30 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 03:47:34 +0000 UTC FinishedAt: 2026-07-30 03:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 03:47:34 +0000 UTC FinishedAt: 2026-07-30 03:49:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*907a6b46-8853-49b9-bb56-94c18b6327e6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-build-action-10935054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a6a851cc-a015-41f3-a48f-ffd3106558fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*907a6b46-8853-49b9-bb56-94c18b6327e6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-build-action-2962022817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-build-action-10935054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 03:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 03:49:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-convert-artifact-2684516223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 03:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 03:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 03:49:11 +0000 UTC FinishedAt: 2026-07-30 03:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 03:49:21 +0000 UTC FinishedAt: 2026-07-30 06:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfftw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["e1000_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"51b093a7ba27476e1f639455f005e8d2e75390e4","config_name":"upstream-apparmor-kasan.config","enable_configs":["E1000","IGBVF"],"series_id":"402a8d48-3a59-467c-a5c0-1db37380e84e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 03:49:21 +0000 UTC FinishedAt: 2026-07-30 06:50:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a6a851cc-a015-41f3-a48f-ffd3106558fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*907a6b46-8853-49b9-bb56-94c18b6327e6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-build-action-2962022817/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-build-action-10935054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfftw/series-workflowvfftw-convert-artifact-2684516223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}