Name: series-workflowtmsrt Phase: Succeeded StartedAt: 2026-07-01 06:43:05 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[0] Phase: Succeeded StartedAt: 2026-07-01 06:43:05 +0000 UTC FinishedAt: 2026-07-01 06:50:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 06:43:05 +0000 UTC FinishedAt: 2026-07-01 06:50:17 +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": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE" ], "series_id": "6b8c0604-c8a9-4258-892c-8d801fda7c0e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "gve_rx_starvation_timer", "gve_rx_stop_ring_dqo", "gve_rx_free_ring_dqo", "gve_rx_alloc_ring_dqo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d2ZV9yeF9zdGFydmF0aW9uX3RpbWVyJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9zdG9wX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9mcmVlX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9hbGxvY19yaW5nX2RxbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3RhcnZhdGlvbiB0aW1lciB0byB0aGUgUlggcmluZyBpbiB0aGUgR1ZFIGRyaXZlciAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBUaGlzIGludHJvZHVjZXMgbmV3IHRpbWVyIGxvZ2ljIGFuZCBtb2RpZmllcyB0aGUgc2V0dXAvdGVhcmRvd24gcGF0aHMgb2YgdGhlIFJYIHJpbmcuIFNpbmNlIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBvbiBHQ0UgKHdoZXJlIHN5emthbGxlciBydW5zKSwgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjQ5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG5pbmRleCAxZDY2ZDM4MzRmN2U2Yy4uM2IyZjk4NjQyZTAwMjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91NjRfc3RhdHNfc3luYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcdTAwM2VcbkBAIC00MSw2ICYjNDM7NDIsNyBAQFxuIFxuIC8qIEludGVydmFsIHRvIHNjaGVkdWxlIGEgc3RhdHMgcmVwb3J0IHVwZGF0ZSwgMjAwMDBtcy4gKi9cbiAjZGVmaW5lIEdWRV9TVEFUU19SRVBPUlRfVElNRVJfUEVSSU9EXHQyMDAwMFxuJiM0MzsjZGVmaW5lIEdWRV9SWF9OQVBJX1JFU0NIRURfTVMgMjAgLyogbXNlY3MgKi9cbiBcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXG4gI2RlZmluZSBOSUNfVFhfU1RBVFNfUkVQT1JUX05VTVx0MFxuQEAgLTMxOCw2ICYjNDM7MzIwLDcgQEAgc3RydWN0IGd2ZV9yeF9yaW5nIHtcbiBcdHU2NCByeF9jb3BpZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgdG90YWwgbnVtYmVyIG9mIGNvcGllZCBwYWNrZXRzICovXG4gXHR1NjQgcnhfc2tiX2FsbG9jX2ZhaWw7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBza2IgYWxsb2MgZmFpbHMgKi9cbiBcdHU2NCByeF9idWZfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIGJ1ZmZlciBhbGxvYyBmYWlscyAqL1xuJiM0MztcdHU2NCByeF9jcml0aWNhbF9sb3dfYnVmczsgLyogY291bnQgb2YgY3JpdGljYWwgbG93IGJ1ZmZlciBldmVudHMgKi9cbiBcdHU2NCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHBhY2tldHMgZHJvcHBlZCBieSBkZXNjcmlwdG9yIGVycm9yICovXG4gXHQvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgdW5zcGxpdCBwYWNrZXRzIGR1ZSB0byBoZWFkZXIgYnVmZmVyIG92ZXJmbG93IG9yIGhkcl9sZW4gaXMgMCAqL1xuIFx0dTY0IHJ4X2hzcGxpdF91bnNwbGl0X3BrdDtcbkBAIC0zMzQsNiAmIzQzOzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XG4gXHRzdHJ1Y3QgZ3ZlX3F1ZXVlX3Jlc291cmNlcyAqcV9yZXNvdXJjZXM7IC8qIGhlYWQgYW5kIHRhaWwgcG9pbnRlciBpZHggKi9cbiBcdGRtYV9hZGRyX3QgcV9yZXNvdXJjZXNfYnVzOyAvKiBkbWEgYWRkcmVzcyBmb3IgdGhlIHF1ZXVlIHJlc291cmNlcyAqL1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbiYjNDM7XHRzdHJ1Y3QgdGltZXJfbGlzdCBzdGFydmF0aW9uX3RpbWVyOyAvKiBmb3IgcXVldWUgc3RhcnZhdGlvbiByZWNvdmVyeSAqL1xuIFxuIFx0c3RydWN0IGd2ZV9yeF9jdHggY3R4OyAvKiBJbmZvIGZvciBwYWNrZXQgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGlzIHJpbmcuICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG5pbmRleCA4MTk5NzM4YmE5NzllZS4uNTNmYzYzMzEzZGEzYTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19tYWluX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiBcdFwmIzM0O3J4X2hzcGxpdF91bnNwbGl0X3BrdFwmIzM0OyxcbiBcdFwmIzM0O2ludGVyZmFjZV91cF9jbnRcJiMzNDssIFwmIzM0O2ludGVyZmFjZV9kb3duX2NudFwmIzM0OywgXCYjMzQ7cmVzZXRfY250XCYjMzQ7LFxuIFx0XCYjMzQ7cGFnZV9hbGxvY19mYWlsXCYjMzQ7LCBcJiMzNDtkbWFfbWFwcGluZ19lcnJvclwmIzM0OywgXCYjMzQ7c3RhdHNfcmVwb3J0X3RyaWdnZXJfY250XCYjMzQ7LFxuJiM0MztcdFwmIzM0O3J4X2NyaXRpY2FsX2xvd19idWZzXCYjMzQ7LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3J4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC01OCw2ICYjNDM7NTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuIFx0XCYjMzQ7cnhfeGRwX2Fib3J0ZWRbJXVdXCYjMzQ7LCBcJiMzNDtyeF94ZHBfZHJvcFsldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9wYXNzWyV1XVwmIzM0OyxcbiBcdFwmIzM0O3J4X3hkcF90eFsldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9yZWRpcmVjdFsldV1cJiMzNDssXG4gXHRcJiMzNDtyeF94ZHBfdHhfZXJyb3JzWyV1XVwmIzM0OywgXCYjMzQ7cnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9hbGxvY19mYWlsc1sldV1cJiMzNDssXG4mIzQzO1x0XCYjMzQ7cnhfY3JpdGljYWxfbG93X2J1ZnNbJXVdXCYjMzQ7LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC0xNTEsMTIgJiM0MzsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4ge1xuIFx0dTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLFxuIFx0XHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCxcbiYjNDM7XHRcdHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcyxcbiBcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxuIFx0XHR0bXBfdHhfcGt0cywgdG1wX3R4X2J5dGVzLFxuIFx0XHR0bXBfeGRwX3R4X2Vycm9ycywgdG1wX3hkcF9yZWRpcmVjdF9lcnJvcnM7XG4gXHR1NjQgcnhfYnVmX2FsbG9jX2ZhaWwsIHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCByeF9oc3BsaXRfdW5zcGxpdF9wa3QsXG4gXHRcdHJ4X3BrdHMsIHJ4X2hzcGxpdF9wa3QsIHJ4X3NrYl9hbGxvY19mYWlsLCByeF9ieXRlcywgdHhfcGt0cywgdHhfYnl0ZXMsXG4tXHRcdHR4X2Ryb3BwZWQsIHhkcF90eF9lcnJvcnMsIHhkcF9yZWRpcmVjdF9lcnJvcnM7XG4mIzQzO1x0XHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcbiYjNDM7XHRcdHhkcF9yZWRpcmVjdF9lcnJvcnM7XG4gXHRpbnQgcnhfYmFzZV9zdGF0c19pZHgsIG1heF9yeF9zdGF0c19pZHgsIG1heF90eF9zdGF0c19pZHg7XG4gXHRpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuO1xuIFx0c3RydWN0IHN0YXRzICpyZXBvcnRfc3RhdHM7XG5AQCAtMTk3LDYgJiM0MzsyMDEsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcbiBcdGZvciAocnhfcGt0cyA9IDAsIHJ4X2J5dGVzID0gMCwgcnhfaHNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHJ4X3NrYl9hbGxvY19mYWlsID0gMCwgcnhfYnVmX2FsbG9jX2ZhaWwgPSAwLFxuJiM0MztcdCAgICAgcnhfY3JpdGljYWxfbG93X2J1ZnMgPSAwLFxuIFx0ICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcbiBcdCAgICAgcmluZyA9IDA7XG5AQCAtMjEyLDYgJiM0MzsyMTcsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdHRtcF9yeF9ieXRlcyA9IHJ4LVx1MDAzZXJieXRlcztcbiBcdFx0XHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X3NrYl9hbGxvY19mYWlsO1xuIFx0XHRcdFx0dG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfYnVmX2FsbG9jX2ZhaWw7XG4mIzQzO1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbiYjNDM7XHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID1cbkBAIC0yMjYsNiAmIzQzOzIzMyw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHJ4X2J5dGVzICYjNDM7PSB0bXBfcnhfYnl0ZXM7XG4gXHRcdFx0cnhfc2tiX2FsbG9jX2ZhaWwgJiM0Mzs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRyeF9idWZfYWxsb2NfZmFpbCAmIzQzOz0gdG1wX3J4X2J1Zl9hbGxvY19mYWlsO1xuJiM0MztcdFx0XHRyeF9jcml0aWNhbF9sb3dfYnVmcyAmIzQzOz0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICYjNDM7PSB0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0cnhfaHNwbGl0X3Vuc3BsaXRfcGt0ICYjNDM7PSB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0O1xuIFx0XHRcdHhkcF90eF9lcnJvcnMgJiM0Mzs9IHRtcF94ZHBfdHhfZXJyb3JzO1xuQEAgLTI2OSw2ICYjNDM7Mjc3LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRkYXRhW2kmIzQzOyYjNDM7XSA9IHByaXYtXHUwMDNlcGFnZV9hbGxvY19mYWlsO1xuIFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LVx1MDAzZWRtYV9tYXBwaW5nX2Vycm9yO1xuIFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LVx1MDAzZXN0YXRzX3JlcG9ydF90cmlnZ2VyX2NudDtcbiYjNDM7XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0aSA9IEdWRV9NQUlOX1NUQVRTX0xFTjtcbiBcbiBcdHJ4X2Jhc2Vfc3RhdHNfaWR4ID0gMDtcbkBAIC0zMzMsNiAmIzQzOzM0Miw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0dG1wX3J4X2hzcGxpdF9ieXRlcyA9IHJ4LVx1MDAzZXJ4X2hzcGxpdF9ieXRlcztcbiBcdFx0XHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X3NrYl9hbGxvY19mYWlsO1xuIFx0XHRcdFx0dG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfYnVmX2FsbG9jX2ZhaWw7XG4mIzQzO1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbiYjNDM7XHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfeGRwX3R4X2Vycm9ycyA9IHJ4LVx1MDAzZXhkcF90eF9lcnJvcnM7XG5AQCAtMzc3LDYgJiM0MzszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHR9IHdoaWxlICh1NjRfc3RhdHNfZmV0Y2hfcmV0cnkoXHUwMDI2cHJpdi1cdTAwM2VyeFtyaW5nXS5zdGF0c3MsXG4gXHRcdFx0XHRcdFx0ICAgICAgIHN0YXJ0KSk7XG4gXHRcdFx0aSAmIzQzOz0gR1ZFX1hEUF9BQ1RJT05TICYjNDM7IDM7IC8qIFhEUCByeCBjb3VudGVycyAqL1xuJiM0MztcdFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcztcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0aSAmIzQzOz0gcHJpdi1cdTAwM2VyeF9jZmcubnVtX3F1ZXVlcyAqIE5VTV9HVkVfUlhfQ05UUztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXG5pbmRleCAwMmNiYTI4MGQ4MWE4Ni4uMzAzZGI0ZmE2NzdiMzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmNcbkBAIC0xOCw2ICYjNDM7MTgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcdTAwM2VcbiBcbiYjNDM7c3RhdGljIHZvaWQgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcbiYjNDM7XHRzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSByeC1cdTAwM2VndmU7XG4mIzQzO1x0c3RydWN0IGd2ZV9ub3RpZnlfYmxvY2sgKmJsb2NrO1xuJiM0MztcbiYjNDM7XHRibG9jayA9IFx1MDAyNnByaXYtXHUwMDNlbnRmeV9ibG9ja3NbcngtXHUwMDNlbnRmeV9pZF07XG4mIzQzO1x0bmFwaV9zY2hlZHVsZShcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBndmVfcnhfZnJlZV9oZHJfYnVmcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqaGRldiA9IFx1MDAyNnByaXYtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5AQCAtMTIwLDYgJiM0MzsxMzAsNyBAQCB2b2lkIGd2ZV9yeF9zdG9wX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcbiBcbiBcdGlmIChyeC1cdTAwM2VkcW8ucGFnZV9wb29sKVxuIFx0XHRwYWdlX3Bvb2xfZGlzYWJsZV9kaXJlY3RfcmVjeWNsaW5nKHJ4LVx1MDAzZWRxby5wYWdlX3Bvb2wpO1xuJiM0MztcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuIFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcbiBcdGd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpO1xuIFx0Z3ZlX3J4X3Jlc2V0X3JpbmdfZHFvKHByaXYsIGlkeCk7XG5AQCAtMTM2LDYgJiM0MzsxNDcsOCBAQCB2b2lkIGd2ZV9yeF9mcmVlX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCxcbiBcdHUzMiBxcGxfaWQ7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuJiM0MztcbiBcdGNvbXBsZXRpb25fcXVldWVfc2xvdHMgPSByeC1cdTAwM2VkcW8uY29tcGxxLm1hc2sgJiM0MzsgMTtcbiBcdGJ1ZmZlcl9xdWV1ZV9zbG90cyA9IHJ4LVx1MDAzZWRxby5idWZxLm1hc2sgJiM0MzsgMTtcbiBcbkBAIC0yMzIsNiAmIzQzOzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFx0cngtXHUwMDNlZ3ZlID0gcHJpdjtcbiBcdHJ4LVx1MDAzZXFfbnVtID0gaWR4O1xuIFx0cngtXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcbiYjNDM7XHR0aW1lcl9zZXR1cChcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XG4gXG4gXHRpZiAoY2ZnLVx1MDAzZXhkcCkge1xuIFx0XHRyeC1cdTAwM2VwYWNrZXRfYnVmZmVyX3RydWVzaXplID0gR1ZFX1hEUF9SWF9CVUZGRVJfU0laRV9EUU87XG5AQCAtMzY1LDYgJiM0MzszNzksNyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4gXHRzdHJ1Y3QgZ3ZlX3J4X2NvbXBsX3F1ZXVlX2RxbyAqY29tcGxxID0gXHUwMDI2cngtXHUwMDNlZHFvLmNvbXBscTtcbiBcdHN0cnVjdCBndmVfcnhfYnVmX3F1ZXVlX2RxbyAqYnVmcSA9IFx1MDAyNnJ4LVx1MDAzZWRxby5idWZxO1xuIFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXHUwMDNlZ3ZlO1xuJiM0MztcdHUzMiBudW1fYnVmc19hdmFpbF90b19odztcbiBcdHUzMiBudW1fYXZhaWxfc2xvdHM7XG4gXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XG4gXHR1MzIgbnVtX3Bvc3RlZCA9IDA7XG5AQCAtNDAwLDYgJiM0Mzs0MTUsMjMgQEAgdm9pZCBndmVfcnhfcG9zdF9idWZmZXJzX2RxbyhzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxuIFx0fVxuIFxuIFx0cngtXHUwMDNlZmlsbF9jbnQgJiM0Mzs9IG51bV9wb3N0ZWQ7XG4mIzQzO1xuJiM0MztcdC8qIElmIHRoZSBxdWV1ZSBoYXMgZmV3ZXIgdGhhbiBHVkVfUlhfQlVGX1RIUkVTSF9EUU8gZGVzY3JpcHRvcnNcbiYjNDM7XHQgKiB2aXNpYmxlIHRvIHRoZSBoYXJkd2FyZSwgYW5kIG5vIGRvb3JiZWxsIHdhcyB3cml0dGVuLCB0aGUgaGFyZHdhcmVcbiYjNDM7XHQgKiBpcyBpbiBkYW5nZXIgb2Ygc3RhcnZpbmcgYW5kIGNhbm5vdCB0cmlnZ2VyIGludGVycnVwdHMuIFN0YXJ0IHRoZVxuJiM0MztcdCAqIHRpbWVyIHRvIHBlcmlvZGljYWxseSByZXNjaGVkdWxlIE5BUEkgYW5kIHJlY292ZXIgZnJvbSBzdGFydmF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdG51bV9idWZzX2F2YWlsX3RvX2h3ID1cbiYjNDM7XHRcdCgoYnVmcS1cdTAwM2V0YWlsIFx1MDAyNiB+KEdWRV9SWF9CVUZfVEhSRVNIX0RRTyAtIDEpKSAtXG4mIzQzO1x0XHQgYnVmcS1cdTAwM2VoZWFkKSBcdTAwMjYgYnVmcS1cdTAwM2VtYXNrO1xuJiM0MztcbiYjNDM7XHRpZiAobnVtX2J1ZnNfYXZhaWxfdG9faHcgXHUwMDNjIEdWRV9SWF9CVUZfVEhSRVNIX0RRTykge1xuJiM0MztcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeC1cdTAwM2VzdGF0c3MpO1xuJiM0MztcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbiYjNDM7XHRcdG1vZF90aW1lcihcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLFxuJiM0MztcdFx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBndmVfcnhfc2tiX2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICAgJiMzNDtndmVfcnhfc3RvcF9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfZnJlZV9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA2OjQ5OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgKaW5kZXggMWQ2NmQzODM0ZjdlNmMuLjNiMmY5ODY0MmUwMDIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgKQEAgLTEzLDYgJiM0MzsxMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0X3RzdGFtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BjaS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90aW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91NjRfc3RhdHNfc3luYy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwpAQCAtNDEsNiAmIzQzOzQyLDcgQEAKIAogLyogSW50ZXJ2YWwgdG8gc2NoZWR1bGUgYSBzdGF0cyByZXBvcnQgdXBkYXRlLCAyMDAwMG1zLiAqLwogI2RlZmluZSBHVkVfU1RBVFNfUkVQT1JUX1RJTUVSX1BFUklPRAkyMDAwMAomIzQzOyNkZWZpbmUgR1ZFX1JYX05BUElfUkVTQ0hFRF9NUyAyMCAvKiBtc2VjcyAqLwogCiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovCiAjZGVmaW5lIE5JQ19UWF9TVEFUU19SRVBPUlRfTlVNCTAKQEAgLTMxOCw2ICYjNDM7MzIwLDcgQEAgc3RydWN0IGd2ZV9yeF9yaW5nIHsKIAl1NjQgcnhfY29waWVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIHRvdGFsIG51bWJlciBvZiBjb3BpZWQgcGFja2V0cyAqLwogCXU2NCByeF9za2JfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHNrYiBhbGxvYyBmYWlscyAqLwogCXU2NCByeF9idWZfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIGJ1ZmZlciBhbGxvYyBmYWlscyAqLwomIzQzOwl1NjQgcnhfY3JpdGljYWxfbG93X2J1ZnM7IC8qIGNvdW50IG9mIGNyaXRpY2FsIGxvdyBidWZmZXIgZXZlbnRzICovCiAJdTY0IHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgcGFja2V0cyBkcm9wcGVkIGJ5IGRlc2NyaXB0b3IgZXJyb3IgKi8KIAkvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgdW5zcGxpdCBwYWNrZXRzIGR1ZSB0byBoZWFkZXIgYnVmZmVyIG92ZXJmbG93IG9yIGhkcl9sZW4gaXMgMCAqLwogCXU2NCByeF9oc3BsaXRfdW5zcGxpdF9wa3Q7CkBAIC0zMzQsNiAmIzQzOzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7CiAJc3RydWN0IGd2ZV9xdWV1ZV9yZXNvdXJjZXMgKnFfcmVzb3VyY2VzOyAvKiBoZWFkIGFuZCB0YWlsIHBvaW50ZXIgaWR4ICovCiAJZG1hX2FkZHJfdCBxX3Jlc291cmNlc19idXM7IC8qIGRtYSBhZGRyZXNzIGZvciB0aGUgcXVldWUgcmVzb3VyY2VzICovCiAJc3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi8KJiM0MzsJc3RydWN0IHRpbWVyX2xpc3Qgc3RhcnZhdGlvbl90aW1lcjsgLyogZm9yIHF1ZXVlIHN0YXJ2YXRpb24gcmVjb3ZlcnkgKi8KIAogCXN0cnVjdCBndmVfcnhfY3R4IGN0eDsgLyogSW5mbyBmb3IgcGFja2V0IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgaW4gdGhpcyByaW5nLiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKaW5kZXggODE5OTczOGJhOTc5ZWUuLjUzZmM2MzMxM2RhM2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3NfbWFpbl9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CiAJJiMzNDtyeF9oc3BsaXRfdW5zcGxpdF9wa3QmIzM0OywKIAkmIzM0O2ludGVyZmFjZV91cF9jbnQmIzM0OywgJiMzNDtpbnRlcmZhY2VfZG93bl9jbnQmIzM0OywgJiMzNDtyZXNldF9jbnQmIzM0OywKIAkmIzM0O3BhZ2VfYWxsb2NfZmFpbCYjMzQ7LCAmIzM0O2RtYV9tYXBwaW5nX2Vycm9yJiMzNDssICYjMzQ7c3RhdHNfcmVwb3J0X3RyaWdnZXJfY250JiMzNDssCiYjNDM7CSYjMzQ7cnhfY3JpdGljYWxfbG93X2J1ZnMmIzM0OywKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19yeF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CkBAIC01OCw2ICYjNDM7NTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0gewogCSYjMzQ7cnhfeGRwX2Fib3J0ZWRbJXVdJiMzNDssICYjMzQ7cnhfeGRwX2Ryb3BbJXVdJiMzNDssICYjMzQ7cnhfeGRwX3Bhc3NbJXVdJiMzNDssCiAJJiMzNDtyeF94ZHBfdHhbJXVdJiMzNDssICYjMzQ7cnhfeGRwX3JlZGlyZWN0WyV1XSYjMzQ7LAogCSYjMzQ7cnhfeGRwX3R4X2Vycm9yc1sldV0mIzM0OywgJiMzNDtyeF94ZHBfcmVkaXJlY3RfZXJyb3JzWyV1XSYjMzQ7LCAmIzM0O3J4X3hkcF9hbGxvY19mYWlsc1sldV0mIzM0OywKJiM0MzsJJiMzNDtyeF9jcml0aWNhbF9sb3dfYnVmc1sldV0mIzM0OywKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc190eF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CkBAIC0xNTEsMTIgJiM0MzsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiB7CiAJdTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLAogCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCwKJiM0MzsJCXRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcywKIAkJdG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LAogCQl0bXBfdHhfcGt0cywgdG1wX3R4X2J5dGVzLAogCQl0bXBfeGRwX3R4X2Vycm9ycywgdG1wX3hkcF9yZWRpcmVjdF9lcnJvcnM7CiAJdTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LAogCQlyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLAotCQl0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzOwomIzQzOwkJcnhfY3JpdGljYWxfbG93X2J1ZnMsIHR4X2Ryb3BwZWQsIHhkcF90eF9lcnJvcnMsCiYjNDM7CQl4ZHBfcmVkaXJlY3RfZXJyb3JzOwogCWludCByeF9iYXNlX3N0YXRzX2lkeCwgbWF4X3J4X3N0YXRzX2lkeCwgbWF4X3R4X3N0YXRzX2lkeDsKIAlpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuOwogCXN0cnVjdCBzdGF0cyAqcmVwb3J0X3N0YXRzOwpAQCAtMTk3LDYgJiM0MzsyMDEsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAogCWZvciAocnhfcGt0cyA9IDAsIHJ4X2J5dGVzID0gMCwgcnhfaHNwbGl0X3BrdCA9IDAsCiAJICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCwKJiM0MzsJICAgICByeF9jcml0aWNhbF9sb3dfYnVmcyA9IDAsCiAJICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsCiAJICAgICB4ZHBfdHhfZXJyb3JzID0gMCwgeGRwX3JlZGlyZWN0X2Vycm9ycyA9IDAsCiAJICAgICByaW5nID0gMDsKQEAgLTIxMiw2ICYjNDM7MjE3LDggQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQkJdG1wX3J4X2J5dGVzID0gcngtJmd0O3JieXRlczsKIAkJCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC0mZ3Q7cnhfc2tiX2FsbG9jX2ZhaWw7CiAJCQkJdG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtJmd0O3J4X2J1Zl9hbGxvY19mYWlsOwomIzQzOwkJCQl0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMgPQomIzQzOwkJCQkJcngtJmd0O3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQkJCXRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9CiAJCQkJCXJ4LSZndDtyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsKIAkJCQl0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID0KQEAgLTIyNiw2ICYjNDM7MjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQlyeF9ieXRlcyAmIzQzOz0gdG1wX3J4X2J5dGVzOwogCQkJcnhfc2tiX2FsbG9jX2ZhaWwgJiM0Mzs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDsKIAkJCXJ4X2J1Zl9hbGxvY19mYWlsICYjNDM7PSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7CiYjNDM7CQkJcnhfY3JpdGljYWxfbG93X2J1ZnMgJiM0Mzs9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmczsKIAkJCXJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICYjNDM7PSB0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7CiAJCQlyeF9oc3BsaXRfdW5zcGxpdF9wa3QgJiM0Mzs9IHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3Q7CiAJCQl4ZHBfdHhfZXJyb3JzICYjNDM7PSB0bXBfeGRwX3R4X2Vycm9yczsKQEAgLTI2OSw2ICYjNDM7Mjc3LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LSZndDtwYWdlX2FsbG9jX2ZhaWw7CiAJZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LSZndDtkbWFfbWFwcGluZ19lcnJvcjsKIAlkYXRhW2kmIzQzOyYjNDM7XSA9IHByaXYtJmd0O3N0YXRzX3JlcG9ydF90cmlnZ2VyX2NudDsKJiM0MzsJZGF0YVtpJiM0MzsmIzQzO10gPSByeF9jcml0aWNhbF9sb3dfYnVmczsKIAlpID0gR1ZFX01BSU5fU1RBVFNfTEVOOwogCiAJcnhfYmFzZV9zdGF0c19pZHggPSAwOwpAQCAtMzMzLDYgJiM0MzszNDIsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQl0bXBfcnhfaHNwbGl0X2J5dGVzID0gcngtJmd0O3J4X2hzcGxpdF9ieXRlczsKIAkJCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC0mZ3Q7cnhfc2tiX2FsbG9jX2ZhaWw7CiAJCQkJdG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtJmd0O3J4X2J1Zl9hbGxvY19mYWlsOwomIzQzOwkJCQl0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMgPQomIzQzOwkJCQkJcngtJmd0O3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQkJCXRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9CiAJCQkJCXJ4LSZndDtyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsKIAkJCQl0bXBfeGRwX3R4X2Vycm9ycyA9IHJ4LSZndDt4ZHBfdHhfZXJyb3JzOwpAQCAtMzc3LDYgJiM0MzszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCX0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmYW1wO3ByaXYtJmd0O3J4W3JpbmddLnN0YXRzcywKIAkJCQkJCSAgICAgICBzdGFydCkpOwogCQkJaSAmIzQzOz0gR1ZFX1hEUF9BQ1RJT05TICYjNDM7IDM7IC8qIFhEUCByeCBjb3VudGVycyAqLwomIzQzOwkJCWRhdGFbaSYjNDM7JiM0MztdID0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQl9CiAJfSBlbHNlIHsKIAkJaSAmIzQzOz0gcHJpdi0mZ3Q7cnhfY2ZnLm51bV9xdWV1ZXMgKiBOVU1fR1ZFX1JYX0NOVFM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jCmluZGV4IDAyY2JhMjgwZDgxYTg2Li4zMDNkYjRmYTY3N2IzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMKQEAgLTE4LDYgJiM0MzsxOCwxNiBAQAogI2luY2x1ZGUgJmx0O25ldC90Y3AuaCZndDsKICNpbmNsdWRlICZsdDtuZXQveGRwX3NvY2tfZHJ2LmgmZ3Q7CiAKJiM0MztzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBndmVfcnhfcmluZyAqcnggPSB0aW1lcl9jb250YWluZXJfb2YocngsIHQsIHN0YXJ2YXRpb25fdGltZXIpOwomIzQzOwlzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSByeC0mZ3Q7Z3ZlOwomIzQzOwlzdHJ1Y3QgZ3ZlX25vdGlmeV9ibG9jayAqYmxvY2s7CiYjNDM7CiYjNDM7CWJsb2NrID0gJmFtcDtwcml2LSZndDtudGZ5X2Jsb2Nrc1tyeC0mZ3Q7bnRmeV9pZF07CiYjNDM7CW5hcGlfc2NoZWR1bGUoJmFtcDtibG9jay0mZ3Q7bmFwaSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZ3ZlX3J4X2ZyZWVfaGRyX2J1ZnMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KQogewogCXN0cnVjdCBkZXZpY2UgKmhkZXYgPSAmYW1wO3ByaXYtJmd0O3BkZXYtJmd0O2RldjsKQEAgLTEyMCw2ICYjNDM7MTMwLDcgQEAgdm9pZCBndmVfcnhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpCiAKIAlpZiAocngtJmd0O2Rxby5wYWdlX3Bvb2wpCiAJCXBhZ2VfcG9vbF9kaXNhYmxlX2RpcmVjdF9yZWN5Y2xpbmcocngtJmd0O2Rxby5wYWdlX3Bvb2wpOwomIzQzOwl0aW1lcl9kZWxldGVfc3luYygmYW1wO3J4LSZndDtzdGFydmF0aW9uX3RpbWVyKTsKIAlndmVfcmVtb3ZlX25hcGkocHJpdiwgbnRmeV9pZHgpOwogCWd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpOwogCWd2ZV9yeF9yZXNldF9yaW5nX2Rxbyhwcml2LCBpZHgpOwpAQCAtMTM2LDYgJiM0MzsxNDcsOCBAQCB2b2lkIGd2ZV9yeF9mcmVlX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwKIAl1MzIgcXBsX2lkOwogCWludCBpOwogCiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtyeC0mZ3Q7c3RhcnZhdGlvbl90aW1lcik7CiYjNDM7CiAJY29tcGxldGlvbl9xdWV1ZV9zbG90cyA9IHJ4LSZndDtkcW8uY29tcGxxLm1hc2sgJiM0MzsgMTsKIAlidWZmZXJfcXVldWVfc2xvdHMgPSByeC0mZ3Q7ZHFvLmJ1ZnEubWFzayAmIzQzOyAxOwogCkBAIC0yMzIsNiAmIzQzOzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LAogCXJ4LSZndDtndmUgPSBwcml2OwogCXJ4LSZndDtxX251bSA9IGlkeDsKIAlyeC0mZ3Q7cGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLSZndDtwYWNrZXRfYnVmZmVyX3NpemU7CiYjNDM7CXRpbWVyX3NldHVwKCZhbXA7cngtJmd0O3N0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTsKIAogCWlmIChjZmctJmd0O3hkcCkgewogCQlyeC0mZ3Q7cGFja2V0X2J1ZmZlcl90cnVlc2l6ZSA9IEdWRV9YRFBfUlhfQlVGRkVSX1NJWkVfRFFPOwpAQCAtMzY1LDYgJiM0MzszNzksNyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpCiAJc3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9ICZhbXA7cngtJmd0O2Rxby5jb21wbHE7CiAJc3RydWN0IGd2ZV9yeF9idWZfcXVldWVfZHFvICpidWZxID0gJmFtcDtyeC0mZ3Q7ZHFvLmJ1ZnE7CiAJc3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtJmd0O2d2ZTsKJiM0MzsJdTMyIG51bV9idWZzX2F2YWlsX3RvX2h3OwogCXUzMiBudW1fYXZhaWxfc2xvdHM7CiAJdTMyIG51bV9mdWxsX3Nsb3RzOwogCXUzMiBudW1fcG9zdGVkID0gMDsKQEAgLTQwMCw2ICYjNDM7NDE1LDIzIEBAIHZvaWQgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW8oc3RydWN0IGd2ZV9yeF9yaW5nICpyeCkKIAl9CiAKIAlyeC0mZ3Q7ZmlsbF9jbnQgJiM0Mzs9IG51bV9wb3N0ZWQ7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBxdWV1ZSBoYXMgZmV3ZXIgdGhhbiBHVkVfUlhfQlVGX1RIUkVTSF9EUU8gZGVzY3JpcHRvcnMKJiM0MzsJICogdmlzaWJsZSB0byB0aGUgaGFyZHdhcmUsIGFuZCBubyBkb29yYmVsbCB3YXMgd3JpdHRlbiwgdGhlIGhhcmR3YXJlCiYjNDM7CSAqIGlzIGluIGRhbmdlciBvZiBzdGFydmluZyBhbmQgY2Fubm90IHRyaWdnZXIgaW50ZXJydXB0cy4gU3RhcnQgdGhlCiYjNDM7CSAqIHRpbWVyIHRvIHBlcmlvZGljYWxseSByZXNjaGVkdWxlIE5BUEkgYW5kIHJlY292ZXIgZnJvbSBzdGFydmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJbnVtX2J1ZnNfYXZhaWxfdG9faHcgPQomIzQzOwkJKChidWZxLSZndDt0YWlsICZhbXA7IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC0KJiM0MzsJCSBidWZxLSZndDtoZWFkKSAmYW1wOyBidWZxLSZndDttYXNrOwomIzQzOwomIzQzOwlpZiAobnVtX2J1ZnNfYXZhaWxfdG9faHcgJmx0OyBHVkVfUlhfQlVGX1RIUkVTSF9EUU8pIHsKJiM0MzsJCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtyeC0mZ3Q7c3RhdHNzKTsKJiM0MzsJCXJ4LSZndDtyeF9jcml0aWNhbF9sb3dfYnVmcyYjNDM7JiM0Mzs7CiYjNDM7CQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3J4LSZndDtzdGF0c3MpOwomIzQzOwkJbW9kX3RpbWVyKCZhbXA7cngtJmd0O3N0YXJ2YXRpb25fdGltZXIsCiYjNDM7CQkJICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoR1ZFX1JYX05BUElfUkVTQ0hFRF9NUykpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIGd2ZV9yeF9za2JfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1ZFIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIHRhcmdldGluZyB0aGUgYGd2ZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgUlggcmluZyBpbiBEUU8gKERpcmVjdCBRdWV1ZSBPZmZsb2FkKSBtb2RlLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGFkZGluZyBhIHN0YXJ2YXRpb24gdGltZXIuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhIG1lY2hhbmlzbSB0byBraWNrc3RhcnQgTkFQSSByZXNjaGVkdWxpbmcgd2hlbiB0aGUgZHJpdmVyJiMzOTtzIGJ1ZmZlcnMgYXJlIGNyaXRpY2FsbHkgbG93LiBUaGF0IHNob3VsZCBoZWxwIGFkZHJlc3MgcG90ZW50aWFsIFJYIHN0YXJ2YXRpb24gaXNzdWVzLgoKTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgd2FudCB0byBjaGVjayB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoZSBgZ3ZlYCBkcml2ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2Ugb3IgYmUgaW5mbHVlbmNlZCBieSB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBzY2FuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IHRoZSBvcHRpb25zIGFyZS4gSSBleHBlY3QgdG8gZmluZCBzb21lIG9wdGlvbnMgcmVsYXRlZCB0byBEUU8gYW5kIFJYIGJ1ZmZlciBtYW5hZ2VtZW50IGluIHRoZXJlLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGltcGFjdCBhbmQgaW50ZWdyYXRpb24gd2l0aCBleGlzdGluZyBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR1ZFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX0dPT0dMRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoxODpjb25maWcgR1ZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0dvb2dsZSBWaXJ0dWFsIE5JQyAoZ1ZOSUMpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkdWRSBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBjb25maWcgaXMgYEdWRWAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBhIGZldyBvdGhlcnMgcmVsYXRlZCB0byB0aGUgcmVjZWl2ZSBwYXRoOiBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGZ1enphYmxlLiBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IGEgaG90IHBhdGggc2luY2UgaXQmIzM5O3MgdXNlZCB0byBwb3N0IGJ1ZmZlcnMsIGxpa2VseSBpbiB0aGUgTkFQSSBwb2xsIGxvb3AsIHNvIGl0JiMzOTtzIHdvcnRoIGEgbG9vay4gYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCBpcyBqdXN0IGEgdGltZXIgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIG5vdCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoZSBvdGhlciB0aHJlZSBsb29rIGxpa2UgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4KClRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgdGltZXIgdG8gYWRkcmVzcyBxdWV1ZSBzdGFydmF0aW9uLiBIbW0sIHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBmb3IgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQuIEl0JiMzOTtzIHZpcnR1YWwsIGJ1dCBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHdoaWNoIG9wZW5zIHRoaW5ncyB1cCBhIGJpdC4gQ2FuIHN5emthbGxlciBnZXQgdG8gdGhpcz8gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBHVkUgZW11bGF0b3IsIGJ1dCBpdCBjYW4gZnV6eiB0aGUgY29udHJvbCBwYXRoIChldGh0b29sLCBuZXRsaW5rLCBldGMuKSwgbWF5YmUgZXZlbiB0aGUgUENJIHNpZGUgaWYgdGhhdCYjMzk7cyBzdXBwb3J0ZWQuCgpXYWl0LCBob2xkIG9uLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIEJ1dCBHVkUgaXMgR29vZ2xlIFZpcnR1YWwgTklDLCB1c2VkIGluIEdvb2dsZSBDbG91ZCAoR0NFKS4gV2FpdCBhIHNlY29uZCwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBzeXprYWxsZXIgcnVucyBpbiBHQ0UhIFRoaXMgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgaW4gc3l6a2FsbGVyJiMzOTtzIEdDRSBpbnN0YW5jZXMhCgpTbyBpdCAqaXMqIHJlYWNoYWJsZSBhbmQgYWN0aXZlbHkgdXNlZCBpbiBHQ0UsIGFuZCB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVudmlyb25tZW50IHN5emthbGxlciBydW5zIGluLiBJZiBJIGZ1enogaXQsIGl0IG1pZ2h0IGJyZWFrIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSB1c2VzIGEgc2VyaWFsIGNvbnNvbGUgZm9yIEdDRSwgb3IgbWF5YmUgaXQgZG9lc24mIzM5O3QgbWF0dGVyLCB3ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiBpdCYjMzk7cyByZWFjaGFibGUuIERlZmluaXRlbHkgcmVhY2hhYmxlIGluIEdDRS4KCkFscmlnaHQsIG5vdyBsZXQmIzM5O3MgZGlnIGludG8gYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MjE6c3RhdGljIHZvaWQgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjI5PWludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTI0Ny1cdHJ4LVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZSA9IGNmZy1cdTAwM2VwYWNrZXRfYnVmZmVyX3NpemU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyNDg6XHR0aW1lcl9zZXR1cChcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBSWCBSaW5nIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIFdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IG9uIHRoZSBob3QgcGF0aC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIG5vdCBpbnZvbHZlZCBoZXJlLiBBaCB5ZXMsIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgdGhlIHRpbWVyIGNhbGxiYWNrLiBUaGUgb3RoZXIgdGhyZWUgYXJlIGNsZWFybHkgc2V0dXAvdGVhcmRvd24gcmVsYXRlZC4KCkFscmlnaHQsIGxldCYjMzk7cyB2ZXJpZnkgaWYgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCBpcyBzdGF0aWMg4oCTIHllcywgaXQgaXMuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IEkgc2hvdWxkIGluY2x1ZGUgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IGBHVkVgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byBrZWVwIHRoaXMgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjE4OmNvbmZpZyBHVkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7R29vZ2xlIFZpcnR1YWwgTklDIChnVk5JQykgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEFsbG9jYXRpb24gTG9naWMqKgoKUmlnaHQsIHNvIGBHVkVgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZS4gVGhhdCYjMzk7cyBhIGdpdmVuLiBCdXQgaGFuZyBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyByZWdhcmRpbmcgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEl0JiMzOTtzIHVzZWQgd2hlbiB3ZSYjMzk7cmUgYWxsb2NhdGluZyByaW5ncyBmb3IgdGhlIERRTyBmb3JtYXQsIGlzbiYjMzk7dCBpdD8gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgRFFPIGlzIHRoZSAqZGVmYXVsdCogYmVoYXZpb3IsIG9yIGlmIGl0IHJlcXVpcmVzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFnIG9yIHNldHRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZGVwZW5kZW5jeSB0byBmdWxseSBncmFzcCBob3cgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGFuZCB3aGF0IG1pZ2h0IHRyaWdnZXIgdGhlIHVzZSBvZiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBjb2RlYmFzZSB0byBzZWUgaWYgRFFPIGlzIGVuYWJsZWQgaW1wbGljaXRseSwgb3IgaWYgaXQgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9kcW8uaD00OT12b2lkIGd2ZV90eF9zdG9wX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9kcW8uaDo1MDppbnQgZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oLTUxLVx0XHRcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjY2Mj1zdGF0aWMgaW50IGd2ZV9yeF9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjY3OS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNjgwOlx0XHRlcnIgPSBndmVfcnhfYWxsb2NfcmluZ19kcW8ocHJpdiwgXHUwMDI2Y2ZnLCBndmVfcGVyX3FfbWVtLCBpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI2ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjIxPXZvaWQgZ3ZlX3J4X3N0YXJ0X3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMjk6aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMzAtXHRcdFx0ICBzdHJ1Y3QgZ3ZlX3J4X2FsbG9jX3JpbmdzX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTMzMD1pbnQgZ3ZlX3J4X2FsbG9jX3JpbmdzX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY2ZnLVx1MDAzZXFjZmdfcngtXHUwMDNlbnVtX3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jOjM0MjpcdFx0ZXJyID0gZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvKHByaXYsIGNmZywgXHUwMDI2cnhbaV0sIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQzLVx0XHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODcKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEdWRSBSWCBSaW5nIFN0YXJ2YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvY2Agb3IgYGd2ZV9yeF9hbGxvY19yaW5nc19kcW9gIGZ1bmN0aW9ucy4gVGhlIGNvbm5lY3Rpb24gdG8gRFFPIGZvcm1hdCBhbmQgYW4gYWN0aXZlIGRldmljZSBtYWtlcyB0aGlzIGNvZGUgcGF0aCBoaWdobHkgcHJvYmFibGUuIENvbnNpZGVyaW5nIEdWRSYjMzk7cyByb2xlIGFzICp0aGUqIG5ldHdvcmsgaW50ZXJmYWNlIGZvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIHN5emthbGxlciBpcyBhY3RpdmVseSBkZXBsb3llZCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdGl2ZWx5IGhpdCBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbi4gVGhpcyBtYWtlcyB0aGVtIGEgcHJpbWUgdGFyZ2V0LgoKVGhlcmVmb3JlLCBJJiMzOTttIG1hcmtpbmcgYFdvcnRoRnV6emluZ2AgYXMgYHRydWVgLiBJJiMzOTtsbCB3YW50IHRvIGhvbWUgaW4gb24gc29tZSBrZXkgc3ltYm9scywgaW5jbHVkaW5nIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAsIHdoaWNoIGlzIGNydWNpYWwgZ2l2ZW4gdGhlIHBhdGNoJiMzOTtzIGZvY3VzIG9uIHRoZSBuZXcgdGltZXIgbG9naWMsIGFzIHdlbGwgYXMgYGd2ZV9yeF9zdG9wX3JpbmdfZHFvYCwgYGd2ZV9yeF9mcmVlX3JpbmdfZHFvYCwgYW5kIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gIHdoaWNoIHdpbGwgYmUgZXNzZW50aWFsIGluIHRlc3RpbmcgdGhlIHJlbGF0ZWQgY29kZSBwYXRoIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFJYIHJpbmcuCgpPZiBjb3Vyc2UsIHRoZSBgR1ZFYCBjb25maWd1cmF0aW9uIG11c3QgYmUgZW5hYmxlZC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHNwZWNpZmljYWxseSBpbnRyb2R1Y2VzIGEgc3RhcnZhdGlvbiB0aW1lciBmb3IgdGhlIFJYIHJpbmcgd2l0aGluIHRoZSBHVkUgZHJpdmVyLiBUaGlzIG1lYW5zIG5ldyB0aW1lci1yZWxhdGVkIGxvZ2ljIGFuZCBjaGFuZ2VzIHRvIHRoZSBSWCByaW5nJiMzOTtzIHNldHVwIGFuZCB0ZWFyZG93biBwaGFzZXMgYXJlIHByZXNlbnQuIFNpbmNlIHN5emthbGxlciBydW5zIGluIEdDRSwgYW5kIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSwgdGhpcyBuZXdseSBhZGRlZCBjb2RlIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGFuZCBkZW1hbmRzIHRob3JvdWdoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICAgJiMzNDtndmVfcnhfc3RvcF9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfZnJlZV9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d2ZV9yeF9zdGFydmF0aW9uX3RpbWVyJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9zdG9wX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9mcmVlX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9hbGxvY19yaW5nX2RxbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3RhcnZhdGlvbiB0aW1lciB0byB0aGUgUlggcmluZyBpbiB0aGUgR1ZFIGRyaXZlciAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBUaGlzIGludHJvZHVjZXMgbmV3IHRpbWVyIGxvZ2ljIGFuZCBtb2RpZmllcyB0aGUgc2V0dXAvdGVhcmRvd24gcGF0aHMgb2YgdGhlIFJYIHJpbmcuIFNpbmNlIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBvbiBHQ0UgKHdoZXJlIHN5emthbGxlciBydW5zKSwgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjI1Ljk5NDM3ODUzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTExODc0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyXCIsXG4gICAgXCJndmVfcnhfc3RvcF9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2ZyZWVfcmluZ19kcW9cIixcbiAgICBcImd2ZV9yeF9hbGxvY19yaW5nX2Rxb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzdGFydmF0aW9uIHRpbWVyIHRvIHRoZSBSWCByaW5nIGluIHRoZSBHVkUgZHJpdmVyIChHb29nbGUgVmlydHVhbCBFdGhlcm5ldCkuIFRoaXMgaW50cm9kdWNlcyBuZXcgdGltZXIgbG9naWMgYW5kIG1vZGlmaWVzIHRoZSBzZXR1cC90ZWFyZG93biBwYXRocyBvZiB0aGUgUlggcmluZy4gU2luY2UgR1ZFIGlzIHRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIG9uIEdDRSAod2hlcmUgc3l6a2FsbGVyIHJ1bnMpLCB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OToyNS45OTQzODc3OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTM3NjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwNjo0OToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxcbmluZGV4IDFkNjZkMzgzNGY3ZTZjLi4zYjJmOTg2NDJlMDAyMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxcbkBAIC0xMyw2ICsxMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BjaS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFxcdTAwM2VcXG5AQCAtNDEsNiArNDIsNyBAQFxcbiBcXG4gLyogSW50ZXJ2YWwgdG8gc2NoZWR1bGUgYSBzdGF0cyByZXBvcnQgdXBkYXRlLCAyMDAwMG1zLiAqL1xcbiAjZGVmaW5lIEdWRV9TVEFUU19SRVBPUlRfVElNRVJfUEVSSU9EXFx0MjAwMDBcXG4rI2RlZmluZSBHVkVfUlhfTkFQSV9SRVNDSEVEX01TIDIwIC8qIG1zZWNzICovXFxuIFxcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXFxuICNkZWZpbmUgTklDX1RYX1NUQVRTX1JFUE9SVF9OVU1cXHQwXFxuQEAgLTMxOCw2ICszMjAsNyBAQCBzdHJ1Y3QgZ3ZlX3J4X3Jpbmcge1xcbiBcXHR1NjQgcnhfY29waWVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIHRvdGFsIG51bWJlciBvZiBjb3BpZWQgcGFja2V0cyAqL1xcbiBcXHR1NjQgcnhfc2tiX2FsbG9jX2ZhaWw7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBza2IgYWxsb2MgZmFpbHMgKi9cXG4gXFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsOyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgYnVmZmVyIGFsbG9jIGZhaWxzICovXFxuK1xcdHU2NCByeF9jcml0aWNhbF9sb3dfYnVmczsgLyogY291bnQgb2YgY3JpdGljYWwgbG93IGJ1ZmZlciBldmVudHMgKi9cXG4gXFx0dTY0IHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgcGFja2V0cyBkcm9wcGVkIGJ5IGRlc2NyaXB0b3IgZXJyb3IgKi9cXG4gXFx0LyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHVuc3BsaXQgcGFja2V0cyBkdWUgdG8gaGVhZGVyIGJ1ZmZlciBvdmVyZmxvdyBvciBoZHJfbGVuIGlzIDAgKi9cXG4gXFx0dTY0IHJ4X2hzcGxpdF91bnNwbGl0X3BrdDtcXG5AQCAtMzM0LDYgKzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XFxuIFxcdHN0cnVjdCBndmVfcXVldWVfcmVzb3VyY2VzICpxX3Jlc291cmNlczsgLyogaGVhZCBhbmQgdGFpbCBwb2ludGVyIGlkeCAqL1xcbiBcXHRkbWFfYWRkcl90IHFfcmVzb3VyY2VzX2J1czsgLyogZG1hIGFkZHJlc3MgZm9yIHRoZSBxdWV1ZSByZXNvdXJjZXMgKi9cXG4gXFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cXG4rXFx0c3RydWN0IHRpbWVyX2xpc3Qgc3RhcnZhdGlvbl90aW1lcjsgLyogZm9yIHF1ZXVlIHN0YXJ2YXRpb24gcmVjb3ZlcnkgKi9cXG4gXFxuIFxcdHN0cnVjdCBndmVfcnhfY3R4IGN0eDsgLyogSW5mbyBmb3IgcGFja2V0IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgaW4gdGhpcyByaW5nLiAqL1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXFxuaW5kZXggODE5OTczOGJhOTc5ZWUuLjUzZmM2MzMxM2RhM2EzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19tYWluX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4gXFx0XFxcInJ4X2hzcGxpdF91bnNwbGl0X3BrdFxcXCIsXFxuIFxcdFxcXCJpbnRlcmZhY2VfdXBfY250XFxcIiwgXFxcImludGVyZmFjZV9kb3duX2NudFxcXCIsIFxcXCJyZXNldF9jbnRcXFwiLFxcbiBcXHRcXFwicGFnZV9hbGxvY19mYWlsXFxcIiwgXFxcImRtYV9tYXBwaW5nX2Vycm9yXFxcIiwgXFxcInN0YXRzX3JlcG9ydF90cmlnZ2VyX2NudFxcXCIsXFxuK1xcdFxcXCJyeF9jcml0aWNhbF9sb3dfYnVmc1xcXCIsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbkBAIC01OCw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19yeF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuIFxcdFxcXCJyeF94ZHBfYWJvcnRlZFsldV1cXFwiLCBcXFwicnhfeGRwX2Ryb3BbJXVdXFxcIiwgXFxcInJ4X3hkcF9wYXNzWyV1XVxcXCIsXFxuIFxcdFxcXCJyeF94ZHBfdHhbJXVdXFxcIiwgXFxcInJ4X3hkcF9yZWRpcmVjdFsldV1cXFwiLFxcbiBcXHRcXFwicnhfeGRwX3R4X2Vycm9yc1sldV1cXFwiLCBcXFwicnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cXFwiLCBcXFwicnhfeGRwX2FsbG9jX2ZhaWxzWyV1XVxcXCIsXFxuK1xcdFxcXCJyeF9jcml0aWNhbF9sb3dfYnVmc1sldV1cXFwiLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG5AQCAtMTUxLDEyICsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIHtcXG4gXFx0dTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLFxcbiBcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCxcXG4rXFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzLFxcbiBcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QsIHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3QsXFxuIFxcdFxcdHRtcF90eF9wa3RzLCB0bXBfdHhfYnl0ZXMsXFxuIFxcdFxcdHRtcF94ZHBfdHhfZXJyb3JzLCB0bXBfeGRwX3JlZGlyZWN0X2Vycm9ycztcXG4gXFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxcbiBcXHRcXHRyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLFxcbi1cXHRcXHR0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzO1xcbitcXHRcXHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcXG4rXFx0XFx0eGRwX3JlZGlyZWN0X2Vycm9ycztcXG4gXFx0aW50IHJ4X2Jhc2Vfc3RhdHNfaWR4LCBtYXhfcnhfc3RhdHNfaWR4LCBtYXhfdHhfc3RhdHNfaWR4O1xcbiBcXHRpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuO1xcbiBcXHRzdHJ1Y3Qgc3RhdHMgKnJlcG9ydF9zdGF0cztcXG5AQCAtMTk3LDYgKzIwMSw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXG4gXFx0Zm9yIChyeF9wa3RzID0gMCwgcnhfYnl0ZXMgPSAwLCByeF9oc3BsaXRfcGt0ID0gMCxcXG4gXFx0ICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCxcXG4rXFx0ICAgICByeF9jcml0aWNhbF9sb3dfYnVmcyA9IDAsXFxuIFxcdCAgICAgcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPSAwLCByeF9oc3BsaXRfdW5zcGxpdF9wa3QgPSAwLFxcbiBcXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcXG4gXFx0ICAgICByaW5nID0gMDtcXG5AQCAtMjEyLDYgKzIxNyw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHR0bXBfcnhfYnl0ZXMgPSByeC1cXHUwMDNlcmJ5dGVzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVxcdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcXG4rXFx0XFx0XFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cXG4rXFx0XFx0XFx0XFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxcbiBcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3QgPVxcbkBAIC0yMjYsNiArMjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdHJ4X2J5dGVzICs9IHRtcF9yeF9ieXRlcztcXG4gXFx0XFx0XFx0cnhfc2tiX2FsbG9jX2ZhaWwgKz0gdG1wX3J4X3NrYl9hbGxvY19mYWlsO1xcbiBcXHRcXHRcXHRyeF9idWZfYWxsb2NfZmFpbCArPSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7XFxuK1xcdFxcdFxcdHJ4X2NyaXRpY2FsX2xvd19idWZzICs9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcztcXG4gXFx0XFx0XFx0cnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgKz0gdG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0O1xcbiBcXHRcXHRcXHRyeF9oc3BsaXRfdW5zcGxpdF9wa3QgKz0gdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdDtcXG4gXFx0XFx0XFx0eGRwX3R4X2Vycm9ycyArPSB0bXBfeGRwX3R4X2Vycm9ycztcXG5AQCAtMjY5LDYgKzI3Nyw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRkYXRhW2krK10gPSBwcml2LVxcdTAwM2VwYWdlX2FsbG9jX2ZhaWw7XFxuIFxcdGRhdGFbaSsrXSA9IHByaXYtXFx1MDAzZWRtYV9tYXBwaW5nX2Vycm9yO1xcbiBcXHRkYXRhW2krK10gPSBwcml2LVxcdTAwM2VzdGF0c19yZXBvcnRfdHJpZ2dlcl9jbnQ7XFxuK1xcdGRhdGFbaSsrXSA9IHJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRpID0gR1ZFX01BSU5fU1RBVFNfTEVOO1xcbiBcXG4gXFx0cnhfYmFzZV9zdGF0c19pZHggPSAwO1xcbkBAIC0zMzMsNiArMzQyLDggQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9oc3BsaXRfYnl0ZXMgPSByeC1cXHUwMDNlcnhfaHNwbGl0X2J5dGVzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVxcdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcXG4rXFx0XFx0XFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cXG4rXFx0XFx0XFx0XFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxcbiBcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XFxuIFxcdFxcdFxcdFxcdHRtcF94ZHBfdHhfZXJyb3JzID0gcngtXFx1MDAzZXhkcF90eF9lcnJvcnM7XFxuQEAgLTM3Nyw2ICszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZwcml2LVxcdTAwM2VyeFtyaW5nXS5zdGF0c3MsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzdGFydCkpO1xcbiBcXHRcXHRcXHRpICs9IEdWRV9YRFBfQUNUSU9OUyArIDM7IC8qIFhEUCByeCBjb3VudGVycyAqL1xcbitcXHRcXHRcXHRkYXRhW2krK10gPSB0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnM7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0aSArPSBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlcyAqIE5VTV9HVkVfUlhfQ05UUztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xcbmluZGV4IDAyY2JhMjgwZDgxYTg2Li4zMDNkYjRmYTY3N2IzMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXFxuQEAgLTE4LDYgKzE4LDE2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcXHUwMDNlXFxuIFxcbitzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4re1xcbitcXHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcXG4rXFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXFx1MDAzZWd2ZTtcXG4rXFx0c3RydWN0IGd2ZV9ub3RpZnlfYmxvY2sgKmJsb2NrO1xcbitcXG4rXFx0YmxvY2sgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbnRmeV9ibG9ja3NbcngtXFx1MDAzZW50ZnlfaWRdO1xcbitcXHRuYXBpX3NjaGVkdWxlKFxcdTAwMjZibG9jay1cXHUwMDNlbmFwaSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGd2ZV9yeF9mcmVlX2hkcl9idWZzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcXG4ge1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpoZGV2ID0gXFx1MDAyNnByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG5AQCAtMTIwLDYgKzEzMCw3IEBAIHZvaWQgZ3ZlX3J4X3N0b3BfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBpbnQgaWR4KVxcbiBcXG4gXFx0aWYgKHJ4LVxcdTAwM2VkcW8ucGFnZV9wb29sKVxcbiBcXHRcXHRwYWdlX3Bvb2xfZGlzYWJsZV9kaXJlY3RfcmVjeWNsaW5nKHJ4LVxcdTAwM2VkcW8ucGFnZV9wb29sKTtcXG4rXFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNnJ4LVxcdTAwM2VzdGFydmF0aW9uX3RpbWVyKTtcXG4gXFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcXG4gXFx0Z3ZlX3J4X3JlbW92ZV9mcm9tX2Jsb2NrKHByaXYsIGlkeCk7XFxuIFxcdGd2ZV9yeF9yZXNldF9yaW5nX2Rxbyhwcml2LCBpZHgpO1xcbkBAIC0xMzYsNiArMTQ3LDggQEAgdm9pZCBndmVfcnhfZnJlZV9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngsXFxuIFxcdHUzMiBxcGxfaWQ7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2cngtXFx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xcbitcXG4gXFx0Y29tcGxldGlvbl9xdWV1ZV9zbG90cyA9IHJ4LVxcdTAwM2VkcW8uY29tcGxxLm1hc2sgKyAxO1xcbiBcXHRidWZmZXJfcXVldWVfc2xvdHMgPSByeC1cXHUwMDNlZHFvLmJ1ZnEubWFzayArIDE7XFxuIFxcbkBAIC0yMzIsNiArMjQ1LDcgQEAgaW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuIFxcdHJ4LVxcdTAwM2VndmUgPSBwcml2O1xcbiBcXHRyeC1cXHUwMDNlcV9udW0gPSBpZHg7XFxuIFxcdHJ4LVxcdTAwM2VwYWNrZXRfYnVmZmVyX3NpemUgPSBjZmctXFx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcXG4rXFx0dGltZXJfc2V0dXAoXFx1MDAyNnJ4LVxcdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XFxuIFxcbiBcXHRpZiAoY2ZnLVxcdTAwM2V4ZHApIHtcXG4gXFx0XFx0cngtXFx1MDAzZXBhY2tldF9idWZmZXJfdHJ1ZXNpemUgPSBHVkVfWERQX1JYX0JVRkZFUl9TSVpFX0RRTztcXG5AQCAtMzY1LDYgKzM3OSw3IEBAIHZvaWQgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW8oc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcXG4gXFx0c3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9IFxcdTAwMjZyeC1cXHUwMDNlZHFvLmNvbXBscTtcXG4gXFx0c3RydWN0IGd2ZV9yeF9idWZfcXVldWVfZHFvICpidWZxID0gXFx1MDAyNnJ4LVxcdTAwM2VkcW8uYnVmcTtcXG4gXFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXFx1MDAzZWd2ZTtcXG4rXFx0dTMyIG51bV9idWZzX2F2YWlsX3RvX2h3O1xcbiBcXHR1MzIgbnVtX2F2YWlsX3Nsb3RzO1xcbiBcXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XFxuIFxcdHUzMiBudW1fcG9zdGVkID0gMDtcXG5AQCAtNDAwLDYgKzQxNSwyMyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXFxuIFxcdH1cXG4gXFxuIFxcdHJ4LVxcdTAwM2VmaWxsX2NudCArPSBudW1fcG9zdGVkO1xcbitcXG4rXFx0LyogSWYgdGhlIHF1ZXVlIGhhcyBmZXdlciB0aGFuIEdWRV9SWF9CVUZfVEhSRVNIX0RRTyBkZXNjcmlwdG9yc1xcbitcXHQgKiB2aXNpYmxlIHRvIHRoZSBoYXJkd2FyZSwgYW5kIG5vIGRvb3JiZWxsIHdhcyB3cml0dGVuLCB0aGUgaGFyZHdhcmVcXG4rXFx0ICogaXMgaW4gZGFuZ2VyIG9mIHN0YXJ2aW5nIGFuZCBjYW5ub3QgdHJpZ2dlciBpbnRlcnJ1cHRzLiBTdGFydCB0aGVcXG4rXFx0ICogdGltZXIgdG8gcGVyaW9kaWNhbGx5IHJlc2NoZWR1bGUgTkFQSSBhbmQgcmVjb3ZlciBmcm9tIHN0YXJ2YXRpb24uXFxuK1xcdCAqL1xcbitcXHRudW1fYnVmc19hdmFpbF90b19odyA9XFxuK1xcdFxcdCgoYnVmcS1cXHUwMDNldGFpbCBcXHUwMDI2IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC1cXG4rXFx0XFx0IGJ1ZnEtXFx1MDAzZWhlYWQpIFxcdTAwMjYgYnVmcS1cXHUwMDNlbWFzaztcXG4rXFxuK1xcdGlmIChudW1fYnVmc19hdmFpbF90b19odyBcXHUwMDNjIEdWRV9SWF9CVUZfVEhSRVNIX0RRTykge1xcbitcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZyeC1cXHUwMDNlc3RhdHNzKTtcXG4rXFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzKys7XFxuK1xcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeC1cXHUwMDNlc3RhdHNzKTtcXG4rXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZyeC1cXHUwMDNlc3RhcnZhdGlvbl90aW1lcixcXG4rXFx0XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZ3ZlX3J4X3NrYl9jc3VtKHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjI2LjM5NDQzMDYwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3MTE4MDgwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWZlNGM3ZTQzMmNhOGI5ZGE5ODkzYWI5NWIwNTk3MTZmYTk3MzcwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDY6NDk6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuaW5kZXggMWQ2NmQzODM0ZjdlNmMuLjNiMmY5ODY0MmUwMDIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuQEAgLTEzLDYgKzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuQEAgLTQxLDYgKzQyLDcgQEBcbiBcbiAvKiBJbnRlcnZhbCB0byBzY2hlZHVsZSBhIHN0YXRzIHJlcG9ydCB1cGRhdGUsIDIwMDAwbXMuICovXG4gI2RlZmluZSBHVkVfU1RBVFNfUkVQT1JUX1RJTUVSX1BFUklPRFx0MjAwMDBcbisjZGVmaW5lIEdWRV9SWF9OQVBJX1JFU0NIRURfTVMgMjAgLyogbXNlY3MgKi9cbiBcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXG4gI2RlZmluZSBOSUNfVFhfU1RBVFNfUkVQT1JUX05VTVx0MFxuQEAgLTMxOCw2ICszMjAsNyBAQCBzdHJ1Y3QgZ3ZlX3J4X3Jpbmcge1xuIFx0dTY0IHJ4X2NvcGllZF9wa3Q7IC8qIGZyZWUtcnVubmluZyB0b3RhbCBudW1iZXIgb2YgY29waWVkIHBhY2tldHMgKi9cbiBcdHU2NCByeF9za2JfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHNrYiBhbGxvYyBmYWlscyAqL1xuIFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsOyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgYnVmZmVyIGFsbG9jIGZhaWxzICovXG4rXHR1NjQgcnhfY3JpdGljYWxfbG93X2J1ZnM7IC8qIGNvdW50IG9mIGNyaXRpY2FsIGxvdyBidWZmZXIgZXZlbnRzICovXG4gXHR1NjQgcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBwYWNrZXRzIGRyb3BwZWQgYnkgZGVzY3JpcHRvciBlcnJvciAqL1xuIFx0LyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHVuc3BsaXQgcGFja2V0cyBkdWUgdG8gaGVhZGVyIGJ1ZmZlciBvdmVyZmxvdyBvciBoZHJfbGVuIGlzIDAgKi9cbiBcdHU2NCByeF9oc3BsaXRfdW5zcGxpdF9wa3Q7XG5AQCAtMzM0LDYgKzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XG4gXHRzdHJ1Y3QgZ3ZlX3F1ZXVlX3Jlc291cmNlcyAqcV9yZXNvdXJjZXM7IC8qIGhlYWQgYW5kIHRhaWwgcG9pbnRlciBpZHggKi9cbiBcdGRtYV9hZGRyX3QgcV9yZXNvdXJjZXNfYnVzOyAvKiBkbWEgYWRkcmVzcyBmb3IgdGhlIHF1ZXVlIHJlc291cmNlcyAqL1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbitcdHN0cnVjdCB0aW1lcl9saXN0IHN0YXJ2YXRpb25fdGltZXI7IC8qIGZvciBxdWV1ZSBzdGFydmF0aW9uIHJlY292ZXJ5ICovXG4gXG4gXHRzdHJ1Y3QgZ3ZlX3J4X2N0eCBjdHg7IC8qIEluZm8gZm9yIHBhY2tldCBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGluIHRoaXMgcmluZy4gKi9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbmluZGV4IDgxOTk3MzhiYTk3OWVlLi41M2ZjNjMzMTNkYTNhMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG5AQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3NfbWFpbl9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4gXHRcInJ4X2hzcGxpdF91bnNwbGl0X3BrdFwiLFxuIFx0XCJpbnRlcmZhY2VfdXBfY250XCIsIFwiaW50ZXJmYWNlX2Rvd25fY250XCIsIFwicmVzZXRfY250XCIsXG4gXHRcInBhZ2VfYWxsb2NfZmFpbFwiLCBcImRtYV9tYXBwaW5nX2Vycm9yXCIsIFwic3RhdHNfcmVwb3J0X3RyaWdnZXJfY250XCIsXG4rXHRcInJ4X2NyaXRpY2FsX2xvd19idWZzXCIsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuQEAgLTU4LDYgKzU5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3J4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiBcdFwicnhfeGRwX2Fib3J0ZWRbJXVdXCIsIFwicnhfeGRwX2Ryb3BbJXVdXCIsIFwicnhfeGRwX3Bhc3NbJXVdXCIsXG4gXHRcInJ4X3hkcF90eFsldV1cIiwgXCJyeF94ZHBfcmVkaXJlY3RbJXVdXCIsXG4gXHRcInJ4X3hkcF90eF9lcnJvcnNbJXVdXCIsIFwicnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cIiwgXCJyeF94ZHBfYWxsb2NfZmFpbHNbJXVdXCIsXG4rXHRcInJ4X2NyaXRpY2FsX2xvd19idWZzWyV1XVwiLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC0xNTEsMTIgKzE1MywxNCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiB7XG4gXHR1NjQgdG1wX3J4X3BrdHMsIHRtcF9yeF9oc3BsaXRfcGt0LCB0bXBfcnhfYnl0ZXMsIHRtcF9yeF9oc3BsaXRfYnl0ZXMsXG4gXHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCwgdG1wX3J4X2J1Zl9hbGxvY19mYWlsLFxuK1x0XHR0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMsXG4gXHRcdHRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdCxcbiBcdFx0dG1wX3R4X3BrdHMsIHRtcF90eF9ieXRlcyxcbiBcdFx0dG1wX3hkcF90eF9lcnJvcnMsIHRtcF94ZHBfcmVkaXJlY3RfZXJyb3JzO1xuIFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxuIFx0XHRyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLFxuLVx0XHR0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzO1xuK1x0XHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcbitcdFx0eGRwX3JlZGlyZWN0X2Vycm9ycztcbiBcdGludCByeF9iYXNlX3N0YXRzX2lkeCwgbWF4X3J4X3N0YXRzX2lkeCwgbWF4X3R4X3N0YXRzX2lkeDtcbiBcdGludCBzdGF0c19pZHgsIHN0YXRzX3JlZ2lvbl9sZW4sIG5pY19zdGF0c19sZW47XG4gXHRzdHJ1Y3Qgc3RhdHMgKnJlcG9ydF9zdGF0cztcbkBAIC0xOTcsNiArMjAxLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXG4gXHRmb3IgKHJ4X3BrdHMgPSAwLCByeF9ieXRlcyA9IDAsIHJ4X2hzcGxpdF9wa3QgPSAwLFxuIFx0ICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCxcbitcdCAgICAgcnhfY3JpdGljYWxfbG93X2J1ZnMgPSAwLFxuIFx0ICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcbiBcdCAgICAgcmluZyA9IDA7XG5AQCAtMjEyLDYgKzIxNyw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0dG1wX3J4X2J5dGVzID0gcngtXHUwMDNlcmJ5dGVzO1xuIFx0XHRcdFx0dG1wX3J4X3NrYl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XG4gXHRcdFx0XHR0bXBfcnhfYnVmX2FsbG9jX2ZhaWwgPSByeC1cdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcbitcdFx0XHRcdHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcyA9XG4rXHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID1cbkBAIC0yMjYsNiArMjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0cnhfYnl0ZXMgKz0gdG1wX3J4X2J5dGVzO1xuIFx0XHRcdHJ4X3NrYl9hbGxvY19mYWlsICs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRyeF9idWZfYWxsb2NfZmFpbCArPSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7XG4rXHRcdFx0cnhfY3JpdGljYWxfbG93X2J1ZnMgKz0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICs9IHRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDtcbiBcdFx0XHRyeF9oc3BsaXRfdW5zcGxpdF9wa3QgKz0gdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdDtcbiBcdFx0XHR4ZHBfdHhfZXJyb3JzICs9IHRtcF94ZHBfdHhfZXJyb3JzO1xuQEAgLTI2OSw2ICsyNzcsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdGRhdGFbaSsrXSA9IHByaXYtXHUwMDNlcGFnZV9hbGxvY19mYWlsO1xuIFx0ZGF0YVtpKytdID0gcHJpdi1cdTAwM2VkbWFfbWFwcGluZ19lcnJvcjtcbiBcdGRhdGFbaSsrXSA9IHByaXYtXHUwMDNlc3RhdHNfcmVwb3J0X3RyaWdnZXJfY250O1xuK1x0ZGF0YVtpKytdID0gcnhfY3JpdGljYWxfbG93X2J1ZnM7XG4gXHRpID0gR1ZFX01BSU5fU1RBVFNfTEVOO1xuIFxuIFx0cnhfYmFzZV9zdGF0c19pZHggPSAwO1xuQEAgLTMzMyw2ICszNDIsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdHRtcF9yeF9oc3BsaXRfYnl0ZXMgPSByeC1cdTAwM2VyeF9oc3BsaXRfYnl0ZXM7XG4gXHRcdFx0XHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cdTAwM2VyeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X2J1Zl9hbGxvY19mYWlsO1xuK1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbitcdFx0XHRcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnM7XG4gXHRcdFx0XHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxuIFx0XHRcdFx0XHRyeC1cdTAwM2VyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDtcbiBcdFx0XHRcdHRtcF94ZHBfdHhfZXJyb3JzID0gcngtXHUwMDNleGRwX3R4X2Vycm9ycztcbkBAIC0zNzcsNiArMzg4LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnByaXYtXHUwMDNlcnhbcmluZ10uc3RhdHNzLFxuIFx0XHRcdFx0XHRcdCAgICAgICBzdGFydCkpO1xuIFx0XHRcdGkgKz0gR1ZFX1hEUF9BQ1RJT05TICsgMzsgLyogWERQIHJ4IGNvdW50ZXJzICovXG4rXHRcdFx0ZGF0YVtpKytdID0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRpICs9IHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXMgKiBOVU1fR1ZFX1JYX0NOVFM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xuaW5kZXggMDJjYmEyODBkODFhODYuLjMwM2RiNGZhNjc3YjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXG5AQCAtMTgsNiArMTgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcdTAwM2VcbiBcbitzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbit7XG4rXHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcbitcdHN0cnVjdCBndmVfcHJpdiAqcHJpdiA9IHJ4LVx1MDAzZWd2ZTtcbitcdHN0cnVjdCBndmVfbm90aWZ5X2Jsb2NrICpibG9jaztcbitcbitcdGJsb2NrID0gXHUwMDI2cHJpdi1cdTAwM2VudGZ5X2Jsb2Nrc1tyeC1cdTAwM2VudGZ5X2lkXTtcbitcdG5hcGlfc2NoZWR1bGUoXHUwMDI2YmxvY2stXHUwMDNlbmFwaSk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGd2ZV9yeF9mcmVlX2hkcl9idWZzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpoZGV2ID0gXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbkBAIC0xMjAsNiArMTMwLDcgQEAgdm9pZCBndmVfcnhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpXG4gXG4gXHRpZiAocngtXHUwMDNlZHFvLnBhZ2VfcG9vbClcbiBcdFx0cGFnZV9wb29sX2Rpc2FibGVfZGlyZWN0X3JlY3ljbGluZyhyeC1cdTAwM2VkcW8ucGFnZV9wb29sKTtcbitcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuIFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcbiBcdGd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpO1xuIFx0Z3ZlX3J4X3Jlc2V0X3JpbmdfZHFvKHByaXYsIGlkeCk7XG5AQCAtMTM2LDYgKzE0Nyw4IEBAIHZvaWQgZ3ZlX3J4X2ZyZWVfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxuIFx0dTMyIHFwbF9pZDtcbiBcdGludCBpO1xuIFxuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyKTtcbitcbiBcdGNvbXBsZXRpb25fcXVldWVfc2xvdHMgPSByeC1cdTAwM2VkcW8uY29tcGxxLm1hc2sgKyAxO1xuIFx0YnVmZmVyX3F1ZXVlX3Nsb3RzID0gcngtXHUwMDNlZHFvLmJ1ZnEubWFzayArIDE7XG4gXG5AQCAtMjMyLDYgKzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFx0cngtXHUwMDNlZ3ZlID0gcHJpdjtcbiBcdHJ4LVx1MDAzZXFfbnVtID0gaWR4O1xuIFx0cngtXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcbitcdHRpbWVyX3NldHVwKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTtcbiBcbiBcdGlmIChjZmctXHUwMDNleGRwKSB7XG4gXHRcdHJ4LVx1MDAzZXBhY2tldF9idWZmZXJfdHJ1ZXNpemUgPSBHVkVfWERQX1JYX0JVRkZFUl9TSVpFX0RRTztcbkBAIC0zNjUsNiArMzc5LDcgQEAgdm9pZCBndmVfcnhfcG9zdF9idWZmZXJzX2RxbyhzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxuIFx0c3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9IFx1MDAyNnJ4LVx1MDAzZWRxby5jb21wbHE7XG4gXHRzdHJ1Y3QgZ3ZlX3J4X2J1Zl9xdWV1ZV9kcW8gKmJ1ZnEgPSBcdTAwMjZyeC1cdTAwM2VkcW8uYnVmcTtcbiBcdHN0cnVjdCBndmVfcHJpdiAqcHJpdiA9IHJ4LVx1MDAzZWd2ZTtcbitcdHUzMiBudW1fYnVmc19hdmFpbF90b19odztcbiBcdHUzMiBudW1fYXZhaWxfc2xvdHM7XG4gXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XG4gXHR1MzIgbnVtX3Bvc3RlZCA9IDA7XG5AQCAtNDAwLDYgKzQxNSwyMyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4gXHR9XG4gXG4gXHRyeC1cdTAwM2VmaWxsX2NudCArPSBudW1fcG9zdGVkO1xuK1xuK1x0LyogSWYgdGhlIHF1ZXVlIGhhcyBmZXdlciB0aGFuIEdWRV9SWF9CVUZfVEhSRVNIX0RRTyBkZXNjcmlwdG9yc1xuK1x0ICogdmlzaWJsZSB0byB0aGUgaGFyZHdhcmUsIGFuZCBubyBkb29yYmVsbCB3YXMgd3JpdHRlbiwgdGhlIGhhcmR3YXJlXG4rXHQgKiBpcyBpbiBkYW5nZXIgb2Ygc3RhcnZpbmcgYW5kIGNhbm5vdCB0cmlnZ2VyIGludGVycnVwdHMuIFN0YXJ0IHRoZVxuK1x0ICogdGltZXIgdG8gcGVyaW9kaWNhbGx5IHJlc2NoZWR1bGUgTkFQSSBhbmQgcmVjb3ZlciBmcm9tIHN0YXJ2YXRpb24uXG4rXHQgKi9cbitcdG51bV9idWZzX2F2YWlsX3RvX2h3ID1cbitcdFx0KChidWZxLVx1MDAzZXRhaWwgXHUwMDI2IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC1cbitcdFx0IGJ1ZnEtXHUwMDNlaGVhZCkgXHUwMDI2IGJ1ZnEtXHUwMDNlbWFzaztcbitcbitcdGlmIChudW1fYnVmc19hdmFpbF90b19odyBcdTAwM2MgR1ZFX1JYX0JVRl9USFJFU0hfRFFPKSB7XG4rXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbitcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnMrKztcbitcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbitcdFx0bW9kX3RpbWVyKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIsXG4rXHRcdFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGd2ZV9yeF9za2JfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6MjYuMzk0NDMzMTU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5NDA3NDExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdWRSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIHRhcmdldGluZyB0aGUgYGd2ZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgUlggcmluZyBpbiBEUU8gKERpcmVjdCBRdWV1ZSBPZmZsb2FkKSBtb2RlLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGFkZGluZyBhIHN0YXJ2YXRpb24gdGltZXIuIEVzc2VudGlhbGx5LCBpdCdzIGEgbWVjaGFuaXNtIHRvIGtpY2tzdGFydCBOQVBJIHJlc2NoZWR1bGluZyB3aGVuIHRoZSBkcml2ZXIncyBidWZmZXJzIGFyZSBjcml0aWNhbGx5IGxvdy4gVGhhdCBzaG91bGQgaGVscCBhZGRyZXNzIHBvdGVudGlhbCBSWCBzdGFydmF0aW9uIGlzc3Vlcy5cblxuTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgd2FudCB0byBjaGVjayB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoZSBgZ3ZlYCBkcml2ZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSBvciBiZSBpbmZsdWVuY2VkIGJ5IHRoaXMgY2hhbmdlLiBMZXQncyB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgc2NhbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgb3B0aW9ucyBhcmUuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBvcHRpb25zIHJlbGF0ZWQgdG8gRFFPIGFuZCBSWCBidWZmZXIgbWFuYWdlbWVudCBpbiB0aGVyZS4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgcmVhbGx5IGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBpbXBhY3QgYW5kIGludGVncmF0aW9uIHdpdGggZXhpc3Rpbmcgc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTozMC43ODg1MDk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUwMDkyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTozMC45ODM1NTMzNTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTYzMTIwMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkdWRSBQYXRjaCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGNvbmZpZyBpcyBgR1ZFYC4gTGV0J3Mgc2VlIHdoYXQncyBjaGFuZ2VkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBhIGZldyBvdGhlcnMgcmVsYXRlZCB0byB0aGUgcmVjZWl2ZSBwYXRoOiBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGZ1enphYmxlLiBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IGEgaG90IHBhdGggc2luY2UgaXQncyB1c2VkIHRvIHBvc3QgYnVmZmVycywgbGlrZWx5IGluIHRoZSBOQVBJIHBvbGwgbG9vcCwgc28gaXQncyB3b3J0aCBhIGxvb2suIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMganVzdCBhIHRpbWVyIGNhbGxiYWNrLCBzbyBpdCdzIG5vdCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoZSBvdGhlciB0aHJlZSBsb29rIGxpa2UgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy5cblxuVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSB0aW1lciB0byBhZGRyZXNzIHF1ZXVlIHN0YXJ2YXRpb24uIEhtbSwgd29ydGggZnV6emluZz8gTGV0J3Mgc2VlLi4uIGl0J3MgYSBuZXR3b3JrIGRyaXZlciBmb3IgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQuIEl0J3MgdmlydHVhbCwgYnV0IGl0J3MgYSBQQ0kgZGV2aWNlLCB3aGljaCBvcGVucyB0aGluZ3MgdXAgYSBiaXQuIENhbiBzeXprYWxsZXIgZ2V0IHRvIHRoaXM/IFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBHVkUgZW11bGF0b3IsIGJ1dCBpdCBjYW4gZnV6eiB0aGUgY29udHJvbCBwYXRoIChldGh0b29sLCBuZXRsaW5rLCBldGMuKSwgbWF5YmUgZXZlbiB0aGUgUENJIHNpZGUgaWYgdGhhdCdzIHN1cHBvcnRlZC5cblxuV2FpdCwgaG9sZCBvbi4uLiB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIEJ1dCBHVkUgaXMgR29vZ2xlIFZpcnR1YWwgTklDLCB1c2VkIGluIEdvb2dsZSBDbG91ZCAoR0NFKS4gV2FpdCBhIHNlY29uZCwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBzeXprYWxsZXIgcnVucyBpbiBHQ0UhIFRoaXMgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgaW4gc3l6a2FsbGVyJ3MgR0NFIGluc3RhbmNlcyFcblxuU28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGFjdGl2ZWx5IHVzZWQgaW4gR0NFLCBhbmQgdGhhdCdzIHRoZSBwcmltYXJ5IGVudmlyb25tZW50IHN5emthbGxlciBydW5zIGluLiBJZiBJIGZ1enogaXQsIGl0IG1pZ2h0IGJyZWFrIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSB1c2VzIGEgc2VyaWFsIGNvbnNvbGUgZm9yIEdDRSwgb3IgbWF5YmUgaXQgZG9lc24ndCBtYXR0ZXIsIHdlIGp1c3QgbmVlZCB0byBrbm93IGlmIGl0J3MgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBHQ0UuXG5cbkFscmlnaHQsIG5vdyBsZXQncyBkaWcgaW50byBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzc0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjM5LjE0NjY3NjQyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY2OTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndmVfcnhfc3RhcnZhdGlvbl90aW1lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMTpzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYz0yMjk9aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDctXFx0cngtXFx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZSA9IGNmZy1cXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jOjI0ODpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cngtXFx1MDAzZXN0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjM5LjIwNjM1NTAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyNzIwMjQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBSWCBSaW5nIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAsIGBndmVfcnhfc3RvcF9yaW5nX2Rxb2AsIGBndmVfcnhfZnJlZV9yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvYC4gV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IGBndmVfcnhfcG9zdF9idWZmZXJzX2Rxb2AgaXMgcHJvYmFibHkgb24gdGhlIGhvdCBwYXRoLiBMZXQncyBtYWtlIHN1cmUgdGhhdCdzIG5vdCBpbnZvbHZlZCBoZXJlLiBBaCB5ZXMsIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgdGhlIHRpbWVyIGNhbGxiYWNrLiBUaGUgb3RoZXIgdGhyZWUgYXJlIGNsZWFybHkgc2V0dXAvdGVhcmRvd24gcmVsYXRlZC5cblxuQWxyaWdodCwgbGV0J3MgdmVyaWZ5IGlmIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgc3RhdGljIOKAkyB5ZXMsIGl0IGlzLiBHaXZlbiB0aGF0LCBJJ20gY29uZmlkZW50IEkgc2hvdWxkIGluY2x1ZGUgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEknbGwgZG91YmxlLWNoZWNrIHRoYXQgYEdWRWAgaXMgdGhlIG9ubHkgY29uZmlnIHRvIGtlZXAgdGhpcyBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDQuMTMzNTU5OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMDczMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTo0NC4xOTM2Nzc2MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzczNjkyNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEFsbG9jYXRpb24gTG9naWMqKlxuXG5SaWdodCwgc28gYEdWRWAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGF0J3MgYSBnaXZlbi4gQnV0IGhhbmcgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgcmVnYXJkaW5nIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gLiBJdCdzIHVzZWQgd2hlbiB3ZSdyZSBhbGxvY2F0aW5nIHJpbmdzIGZvciB0aGUgRFFPIGZvcm1hdCwgaXNuJ3QgaXQ/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIERRTyBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yLCBvciBpZiBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzZXR0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdG8gZnVsbHkgZ3Jhc3AgaG93IGFsbG9jYXRpb24gaXMgaGFuZGxlZCBhbmQgd2hhdCBtaWdodCB0cmlnZ2VyIHRoZSB1c2Ugb2YgdGhhdCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBjb2RlYmFzZSB0byBzZWUgaWYgRFFPIGlzIGVuYWJsZWQgaW1wbGljaXRseSwgb3IgaWYgaXQgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzQyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDcuOTY3MzczMTk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA1MTEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndmVfcnhfYWxsb2NfcmluZ19kcW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZHFvLmg9NDk9dm9pZCBndmVfdHhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oOjUwOmludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oLTUxLVxcdFxcdFxcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yNjYyPXN0YXRpYyBpbnQgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI2NzktXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNjgwOlxcdFxcdGVyciA9IGd2ZV9yeF9hbGxvY19yaW5nX2Rxbyhwcml2LCBcXHUwMDI2Y2ZnLCBndmVfcGVyX3FfbWVtLCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjIxPXZvaWQgZ3ZlX3J4X3N0YXJ0X3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMjk6aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMjMwLVxcdFxcdFxcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTMzMD1pbnQgZ3ZlX3J4X2FsbG9jX3JpbmdzX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0zNDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNmZy1cXHUwMDNlcWNmZ19yeC1cXHUwMDNlbnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MzQyOlxcdFxcdGVyciA9IGd2ZV9yeF9hbGxvY19yaW5nX2Rxbyhwcml2LCBjZmcsIFxcdTAwMjZyeFtpXSwgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQzLVxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDguMDI0NDMzMjcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTE3MTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgR1ZFIFJYIFJpbmcgU3RhcnZhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvY2Agb3IgYGd2ZV9yeF9hbGxvY19yaW5nc19kcW9gIGZ1bmN0aW9ucy4gVGhlIGNvbm5lY3Rpb24gdG8gRFFPIGZvcm1hdCBhbmQgYW4gYWN0aXZlIGRldmljZSBtYWtlcyB0aGlzIGNvZGUgcGF0aCBoaWdobHkgcHJvYmFibGUuIENvbnNpZGVyaW5nIEdWRSdzIHJvbGUgYXMgKnRoZSogbmV0d29yayBpbnRlcmZhY2UgZm9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSwgd2hlcmUgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IGRlcGxveWVkLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3RpdmVseSBoaXQgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uIFRoaXMgbWFrZXMgdGhlbSBhIHByaW1lIHRhcmdldC5cblxuVGhlcmVmb3JlLCBJJ20gbWFya2luZyBgV29ydGhGdXp6aW5nYCBhcyBgdHJ1ZWAuIEknbGwgd2FudCB0byBob21lIGluIG9uIHNvbWUga2V5IHN5bWJvbHMsIGluY2x1ZGluZyBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLCB3aGljaCBpcyBjcnVjaWFsIGdpdmVuIHRoZSBwYXRjaCdzIGZvY3VzIG9uIHRoZSBuZXcgdGltZXIgbG9naWMsIGFzIHdlbGwgYXMgYGd2ZV9yeF9zdG9wX3JpbmdfZHFvYCwgYGd2ZV9yeF9mcmVlX3JpbmdfZHFvYCwgYW5kIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gIHdoaWNoIHdpbGwgYmUgZXNzZW50aWFsIGluIHRlc3RpbmcgdGhlIHJlbGF0ZWQgY29kZSBwYXRoIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFJYIHJpbmcuXG5cbk9mIGNvdXJzZSwgdGhlIGBHVkVgIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGludHJvZHVjZXMgYSBzdGFydmF0aW9uIHRpbWVyIGZvciB0aGUgUlggcmluZyB3aXRoaW4gdGhlIEdWRSBkcml2ZXIuIFRoaXMgbWVhbnMgbmV3IHRpbWVyLXJlbGF0ZWQgbG9naWMgYW5kIGNoYW5nZXMgdG8gdGhlIFJYIHJpbmcncyBzZXR1cCBhbmQgdGVhcmRvd24gcGhhc2VzIGFyZSBwcmVzZW50LiBTaW5jZSBzeXprYWxsZXIgcnVucyBpbiBHQ0UsIGFuZCBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UsIHRoaXMgbmV3bHkgYWRkZWQgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgZGVtYW5kcyB0aG9yb3VnaCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Njg3LCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTo1NC4wMTYxNTUwODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDA3NzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 06:43:05 +0000 UTC FinishedAt: 2026-07-01 06:49:56 +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": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE" ], "series_id": "6b8c0604-c8a9-4258-892c-8d801fda7c0e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "gve_rx_starvation_timer", "gve_rx_stop_ring_dqo", "gve_rx_free_ring_dqo", "gve_rx_alloc_ring_dqo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d2ZV9yeF9zdGFydmF0aW9uX3RpbWVyJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9zdG9wX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9mcmVlX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9hbGxvY19yaW5nX2RxbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3RhcnZhdGlvbiB0aW1lciB0byB0aGUgUlggcmluZyBpbiB0aGUgR1ZFIGRyaXZlciAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBUaGlzIGludHJvZHVjZXMgbmV3IHRpbWVyIGxvZ2ljIGFuZCBtb2RpZmllcyB0aGUgc2V0dXAvdGVhcmRvd24gcGF0aHMgb2YgdGhlIFJYIHJpbmcuIFNpbmNlIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBvbiBHQ0UgKHdoZXJlIHN5emthbGxlciBydW5zKSwgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA2OjQ5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG5pbmRleCAxZDY2ZDM4MzRmN2U2Yy4uM2IyZjk4NjQyZTAwMjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91NjRfc3RhdHNfc3luYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcdTAwM2VcbkBAIC00MSw2ICYjNDM7NDIsNyBAQFxuIFxuIC8qIEludGVydmFsIHRvIHNjaGVkdWxlIGEgc3RhdHMgcmVwb3J0IHVwZGF0ZSwgMjAwMDBtcy4gKi9cbiAjZGVmaW5lIEdWRV9TVEFUU19SRVBPUlRfVElNRVJfUEVSSU9EXHQyMDAwMFxuJiM0MzsjZGVmaW5lIEdWRV9SWF9OQVBJX1JFU0NIRURfTVMgMjAgLyogbXNlY3MgKi9cbiBcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXG4gI2RlZmluZSBOSUNfVFhfU1RBVFNfUkVQT1JUX05VTVx0MFxuQEAgLTMxOCw2ICYjNDM7MzIwLDcgQEAgc3RydWN0IGd2ZV9yeF9yaW5nIHtcbiBcdHU2NCByeF9jb3BpZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgdG90YWwgbnVtYmVyIG9mIGNvcGllZCBwYWNrZXRzICovXG4gXHR1NjQgcnhfc2tiX2FsbG9jX2ZhaWw7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBza2IgYWxsb2MgZmFpbHMgKi9cbiBcdHU2NCByeF9idWZfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIGJ1ZmZlciBhbGxvYyBmYWlscyAqL1xuJiM0MztcdHU2NCByeF9jcml0aWNhbF9sb3dfYnVmczsgLyogY291bnQgb2YgY3JpdGljYWwgbG93IGJ1ZmZlciBldmVudHMgKi9cbiBcdHU2NCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHBhY2tldHMgZHJvcHBlZCBieSBkZXNjcmlwdG9yIGVycm9yICovXG4gXHQvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgdW5zcGxpdCBwYWNrZXRzIGR1ZSB0byBoZWFkZXIgYnVmZmVyIG92ZXJmbG93IG9yIGhkcl9sZW4gaXMgMCAqL1xuIFx0dTY0IHJ4X2hzcGxpdF91bnNwbGl0X3BrdDtcbkBAIC0zMzQsNiAmIzQzOzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XG4gXHRzdHJ1Y3QgZ3ZlX3F1ZXVlX3Jlc291cmNlcyAqcV9yZXNvdXJjZXM7IC8qIGhlYWQgYW5kIHRhaWwgcG9pbnRlciBpZHggKi9cbiBcdGRtYV9hZGRyX3QgcV9yZXNvdXJjZXNfYnVzOyAvKiBkbWEgYWRkcmVzcyBmb3IgdGhlIHF1ZXVlIHJlc291cmNlcyAqL1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbiYjNDM7XHRzdHJ1Y3QgdGltZXJfbGlzdCBzdGFydmF0aW9uX3RpbWVyOyAvKiBmb3IgcXVldWUgc3RhcnZhdGlvbiByZWNvdmVyeSAqL1xuIFxuIFx0c3RydWN0IGd2ZV9yeF9jdHggY3R4OyAvKiBJbmZvIGZvciBwYWNrZXQgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGlzIHJpbmcuICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG5pbmRleCA4MTk5NzM4YmE5NzllZS4uNTNmYzYzMzEzZGEzYTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19tYWluX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiBcdFwmIzM0O3J4X2hzcGxpdF91bnNwbGl0X3BrdFwmIzM0OyxcbiBcdFwmIzM0O2ludGVyZmFjZV91cF9jbnRcJiMzNDssIFwmIzM0O2ludGVyZmFjZV9kb3duX2NudFwmIzM0OywgXCYjMzQ7cmVzZXRfY250XCYjMzQ7LFxuIFx0XCYjMzQ7cGFnZV9hbGxvY19mYWlsXCYjMzQ7LCBcJiMzNDtkbWFfbWFwcGluZ19lcnJvclwmIzM0OywgXCYjMzQ7c3RhdHNfcmVwb3J0X3RyaWdnZXJfY250XCYjMzQ7LFxuJiM0MztcdFwmIzM0O3J4X2NyaXRpY2FsX2xvd19idWZzXCYjMzQ7LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3J4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC01OCw2ICYjNDM7NTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuIFx0XCYjMzQ7cnhfeGRwX2Fib3J0ZWRbJXVdXCYjMzQ7LCBcJiMzNDtyeF94ZHBfZHJvcFsldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9wYXNzWyV1XVwmIzM0OyxcbiBcdFwmIzM0O3J4X3hkcF90eFsldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9yZWRpcmVjdFsldV1cJiMzNDssXG4gXHRcJiMzNDtyeF94ZHBfdHhfZXJyb3JzWyV1XVwmIzM0OywgXCYjMzQ7cnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cJiMzNDssIFwmIzM0O3J4X3hkcF9hbGxvY19mYWlsc1sldV1cJiMzNDssXG4mIzQzO1x0XCYjMzQ7cnhfY3JpdGljYWxfbG93X2J1ZnNbJXVdXCYjMzQ7LFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC0xNTEsMTIgJiM0MzsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4ge1xuIFx0dTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLFxuIFx0XHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCxcbiYjNDM7XHRcdHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcyxcbiBcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxuIFx0XHR0bXBfdHhfcGt0cywgdG1wX3R4X2J5dGVzLFxuIFx0XHR0bXBfeGRwX3R4X2Vycm9ycywgdG1wX3hkcF9yZWRpcmVjdF9lcnJvcnM7XG4gXHR1NjQgcnhfYnVmX2FsbG9jX2ZhaWwsIHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCByeF9oc3BsaXRfdW5zcGxpdF9wa3QsXG4gXHRcdHJ4X3BrdHMsIHJ4X2hzcGxpdF9wa3QsIHJ4X3NrYl9hbGxvY19mYWlsLCByeF9ieXRlcywgdHhfcGt0cywgdHhfYnl0ZXMsXG4tXHRcdHR4X2Ryb3BwZWQsIHhkcF90eF9lcnJvcnMsIHhkcF9yZWRpcmVjdF9lcnJvcnM7XG4mIzQzO1x0XHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcbiYjNDM7XHRcdHhkcF9yZWRpcmVjdF9lcnJvcnM7XG4gXHRpbnQgcnhfYmFzZV9zdGF0c19pZHgsIG1heF9yeF9zdGF0c19pZHgsIG1heF90eF9zdGF0c19pZHg7XG4gXHRpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuO1xuIFx0c3RydWN0IHN0YXRzICpyZXBvcnRfc3RhdHM7XG5AQCAtMTk3LDYgJiM0MzsyMDEsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcbiBcdGZvciAocnhfcGt0cyA9IDAsIHJ4X2J5dGVzID0gMCwgcnhfaHNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHJ4X3NrYl9hbGxvY19mYWlsID0gMCwgcnhfYnVmX2FsbG9jX2ZhaWwgPSAwLFxuJiM0MztcdCAgICAgcnhfY3JpdGljYWxfbG93X2J1ZnMgPSAwLFxuIFx0ICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcbiBcdCAgICAgcmluZyA9IDA7XG5AQCAtMjEyLDYgJiM0MzsyMTcsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdHRtcF9yeF9ieXRlcyA9IHJ4LVx1MDAzZXJieXRlcztcbiBcdFx0XHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X3NrYl9hbGxvY19mYWlsO1xuIFx0XHRcdFx0dG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfYnVmX2FsbG9jX2ZhaWw7XG4mIzQzO1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbiYjNDM7XHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID1cbkBAIC0yMjYsNiAmIzQzOzIzMyw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdHJ4X2J5dGVzICYjNDM7PSB0bXBfcnhfYnl0ZXM7XG4gXHRcdFx0cnhfc2tiX2FsbG9jX2ZhaWwgJiM0Mzs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRyeF9idWZfYWxsb2NfZmFpbCAmIzQzOz0gdG1wX3J4X2J1Zl9hbGxvY19mYWlsO1xuJiM0MztcdFx0XHRyeF9jcml0aWNhbF9sb3dfYnVmcyAmIzQzOz0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICYjNDM7PSB0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0cnhfaHNwbGl0X3Vuc3BsaXRfcGt0ICYjNDM7PSB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0O1xuIFx0XHRcdHhkcF90eF9lcnJvcnMgJiM0Mzs9IHRtcF94ZHBfdHhfZXJyb3JzO1xuQEAgLTI2OSw2ICYjNDM7Mjc3LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRkYXRhW2kmIzQzOyYjNDM7XSA9IHByaXYtXHUwMDNlcGFnZV9hbGxvY19mYWlsO1xuIFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LVx1MDAzZWRtYV9tYXBwaW5nX2Vycm9yO1xuIFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LVx1MDAzZXN0YXRzX3JlcG9ydF90cmlnZ2VyX2NudDtcbiYjNDM7XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0aSA9IEdWRV9NQUlOX1NUQVRTX0xFTjtcbiBcbiBcdHJ4X2Jhc2Vfc3RhdHNfaWR4ID0gMDtcbkBAIC0zMzMsNiAmIzQzOzM0Miw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0dG1wX3J4X2hzcGxpdF9ieXRlcyA9IHJ4LVx1MDAzZXJ4X2hzcGxpdF9ieXRlcztcbiBcdFx0XHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X3NrYl9hbGxvY19mYWlsO1xuIFx0XHRcdFx0dG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfYnVmX2FsbG9jX2ZhaWw7XG4mIzQzO1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbiYjNDM7XHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfeGRwX3R4X2Vycm9ycyA9IHJ4LVx1MDAzZXhkcF90eF9lcnJvcnM7XG5AQCAtMzc3LDYgJiM0MzszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHR9IHdoaWxlICh1NjRfc3RhdHNfZmV0Y2hfcmV0cnkoXHUwMDI2cHJpdi1cdTAwM2VyeFtyaW5nXS5zdGF0c3MsXG4gXHRcdFx0XHRcdFx0ICAgICAgIHN0YXJ0KSk7XG4gXHRcdFx0aSAmIzQzOz0gR1ZFX1hEUF9BQ1RJT05TICYjNDM7IDM7IC8qIFhEUCByeCBjb3VudGVycyAqL1xuJiM0MztcdFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcztcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0aSAmIzQzOz0gcHJpdi1cdTAwM2VyeF9jZmcubnVtX3F1ZXVlcyAqIE5VTV9HVkVfUlhfQ05UUztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXG5pbmRleCAwMmNiYTI4MGQ4MWE4Ni4uMzAzZGI0ZmE2NzdiMzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmNcbkBAIC0xOCw2ICYjNDM7MTgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcdTAwM2VcbiBcbiYjNDM7c3RhdGljIHZvaWQgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcbiYjNDM7XHRzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSByeC1cdTAwM2VndmU7XG4mIzQzO1x0c3RydWN0IGd2ZV9ub3RpZnlfYmxvY2sgKmJsb2NrO1xuJiM0MztcbiYjNDM7XHRibG9jayA9IFx1MDAyNnByaXYtXHUwMDNlbnRmeV9ibG9ja3NbcngtXHUwMDNlbnRmeV9pZF07XG4mIzQzO1x0bmFwaV9zY2hlZHVsZShcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBndmVfcnhfZnJlZV9oZHJfYnVmcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqaGRldiA9IFx1MDAyNnByaXYtXHUwMDNlcGRldi1cdTAwM2VkZXY7XG5AQCAtMTIwLDYgJiM0MzsxMzAsNyBAQCB2b2lkIGd2ZV9yeF9zdG9wX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcbiBcbiBcdGlmIChyeC1cdTAwM2VkcW8ucGFnZV9wb29sKVxuIFx0XHRwYWdlX3Bvb2xfZGlzYWJsZV9kaXJlY3RfcmVjeWNsaW5nKHJ4LVx1MDAzZWRxby5wYWdlX3Bvb2wpO1xuJiM0MztcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuIFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcbiBcdGd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpO1xuIFx0Z3ZlX3J4X3Jlc2V0X3JpbmdfZHFvKHByaXYsIGlkeCk7XG5AQCAtMTM2LDYgJiM0MzsxNDcsOCBAQCB2b2lkIGd2ZV9yeF9mcmVlX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCxcbiBcdHUzMiBxcGxfaWQ7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuJiM0MztcbiBcdGNvbXBsZXRpb25fcXVldWVfc2xvdHMgPSByeC1cdTAwM2VkcW8uY29tcGxxLm1hc2sgJiM0MzsgMTtcbiBcdGJ1ZmZlcl9xdWV1ZV9zbG90cyA9IHJ4LVx1MDAzZWRxby5idWZxLm1hc2sgJiM0MzsgMTtcbiBcbkBAIC0yMzIsNiAmIzQzOzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFx0cngtXHUwMDNlZ3ZlID0gcHJpdjtcbiBcdHJ4LVx1MDAzZXFfbnVtID0gaWR4O1xuIFx0cngtXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcbiYjNDM7XHR0aW1lcl9zZXR1cChcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XG4gXG4gXHRpZiAoY2ZnLVx1MDAzZXhkcCkge1xuIFx0XHRyeC1cdTAwM2VwYWNrZXRfYnVmZmVyX3RydWVzaXplID0gR1ZFX1hEUF9SWF9CVUZGRVJfU0laRV9EUU87XG5AQCAtMzY1LDYgJiM0MzszNzksNyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4gXHRzdHJ1Y3QgZ3ZlX3J4X2NvbXBsX3F1ZXVlX2RxbyAqY29tcGxxID0gXHUwMDI2cngtXHUwMDNlZHFvLmNvbXBscTtcbiBcdHN0cnVjdCBndmVfcnhfYnVmX3F1ZXVlX2RxbyAqYnVmcSA9IFx1MDAyNnJ4LVx1MDAzZWRxby5idWZxO1xuIFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXHUwMDNlZ3ZlO1xuJiM0MztcdHUzMiBudW1fYnVmc19hdmFpbF90b19odztcbiBcdHUzMiBudW1fYXZhaWxfc2xvdHM7XG4gXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XG4gXHR1MzIgbnVtX3Bvc3RlZCA9IDA7XG5AQCAtNDAwLDYgJiM0Mzs0MTUsMjMgQEAgdm9pZCBndmVfcnhfcG9zdF9idWZmZXJzX2RxbyhzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxuIFx0fVxuIFxuIFx0cngtXHUwMDNlZmlsbF9jbnQgJiM0Mzs9IG51bV9wb3N0ZWQ7XG4mIzQzO1xuJiM0MztcdC8qIElmIHRoZSBxdWV1ZSBoYXMgZmV3ZXIgdGhhbiBHVkVfUlhfQlVGX1RIUkVTSF9EUU8gZGVzY3JpcHRvcnNcbiYjNDM7XHQgKiB2aXNpYmxlIHRvIHRoZSBoYXJkd2FyZSwgYW5kIG5vIGRvb3JiZWxsIHdhcyB3cml0dGVuLCB0aGUgaGFyZHdhcmVcbiYjNDM7XHQgKiBpcyBpbiBkYW5nZXIgb2Ygc3RhcnZpbmcgYW5kIGNhbm5vdCB0cmlnZ2VyIGludGVycnVwdHMuIFN0YXJ0IHRoZVxuJiM0MztcdCAqIHRpbWVyIHRvIHBlcmlvZGljYWxseSByZXNjaGVkdWxlIE5BUEkgYW5kIHJlY292ZXIgZnJvbSBzdGFydmF0aW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdG51bV9idWZzX2F2YWlsX3RvX2h3ID1cbiYjNDM7XHRcdCgoYnVmcS1cdTAwM2V0YWlsIFx1MDAyNiB+KEdWRV9SWF9CVUZfVEhSRVNIX0RRTyAtIDEpKSAtXG4mIzQzO1x0XHQgYnVmcS1cdTAwM2VoZWFkKSBcdTAwMjYgYnVmcS1cdTAwM2VtYXNrO1xuJiM0MztcbiYjNDM7XHRpZiAobnVtX2J1ZnNfYXZhaWxfdG9faHcgXHUwMDNjIEdWRV9SWF9CVUZfVEhSRVNIX0RRTykge1xuJiM0MztcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeC1cdTAwM2VzdGF0c3MpO1xuJiM0MztcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbiYjNDM7XHRcdG1vZF90aW1lcihcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLFxuJiM0MztcdFx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBndmVfcnhfc2tiX2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICAgJiMzNDtndmVfcnhfc3RvcF9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfZnJlZV9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDA2OjQ5OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgKaW5kZXggMWQ2NmQzODM0ZjdlNmMuLjNiMmY5ODY0MmUwMDIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgKQEAgLTEzLDYgJiM0MzsxMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0X3RzdGFtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BjaS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90aW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91NjRfc3RhdHNfc3luYy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwpAQCAtNDEsNiAmIzQzOzQyLDcgQEAKIAogLyogSW50ZXJ2YWwgdG8gc2NoZWR1bGUgYSBzdGF0cyByZXBvcnQgdXBkYXRlLCAyMDAwMG1zLiAqLwogI2RlZmluZSBHVkVfU1RBVFNfUkVQT1JUX1RJTUVSX1BFUklPRAkyMDAwMAomIzQzOyNkZWZpbmUgR1ZFX1JYX05BUElfUkVTQ0hFRF9NUyAyMCAvKiBtc2VjcyAqLwogCiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovCiAjZGVmaW5lIE5JQ19UWF9TVEFUU19SRVBPUlRfTlVNCTAKQEAgLTMxOCw2ICYjNDM7MzIwLDcgQEAgc3RydWN0IGd2ZV9yeF9yaW5nIHsKIAl1NjQgcnhfY29waWVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIHRvdGFsIG51bWJlciBvZiBjb3BpZWQgcGFja2V0cyAqLwogCXU2NCByeF9za2JfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHNrYiBhbGxvYyBmYWlscyAqLwogCXU2NCByeF9idWZfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIGJ1ZmZlciBhbGxvYyBmYWlscyAqLwomIzQzOwl1NjQgcnhfY3JpdGljYWxfbG93X2J1ZnM7IC8qIGNvdW50IG9mIGNyaXRpY2FsIGxvdyBidWZmZXIgZXZlbnRzICovCiAJdTY0IHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgcGFja2V0cyBkcm9wcGVkIGJ5IGRlc2NyaXB0b3IgZXJyb3IgKi8KIAkvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgdW5zcGxpdCBwYWNrZXRzIGR1ZSB0byBoZWFkZXIgYnVmZmVyIG92ZXJmbG93IG9yIGhkcl9sZW4gaXMgMCAqLwogCXU2NCByeF9oc3BsaXRfdW5zcGxpdF9wa3Q7CkBAIC0zMzQsNiAmIzQzOzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7CiAJc3RydWN0IGd2ZV9xdWV1ZV9yZXNvdXJjZXMgKnFfcmVzb3VyY2VzOyAvKiBoZWFkIGFuZCB0YWlsIHBvaW50ZXIgaWR4ICovCiAJZG1hX2FkZHJfdCBxX3Jlc291cmNlc19idXM7IC8qIGRtYSBhZGRyZXNzIGZvciB0aGUgcXVldWUgcmVzb3VyY2VzICovCiAJc3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi8KJiM0MzsJc3RydWN0IHRpbWVyX2xpc3Qgc3RhcnZhdGlvbl90aW1lcjsgLyogZm9yIHF1ZXVlIHN0YXJ2YXRpb24gcmVjb3ZlcnkgKi8KIAogCXN0cnVjdCBndmVfcnhfY3R4IGN0eDsgLyogSW5mbyBmb3IgcGFja2V0IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgaW4gdGhpcyByaW5nLiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKaW5kZXggODE5OTczOGJhOTc5ZWUuLjUzZmM2MzMxM2RhM2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3NfbWFpbl9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CiAJJiMzNDtyeF9oc3BsaXRfdW5zcGxpdF9wa3QmIzM0OywKIAkmIzM0O2ludGVyZmFjZV91cF9jbnQmIzM0OywgJiMzNDtpbnRlcmZhY2VfZG93bl9jbnQmIzM0OywgJiMzNDtyZXNldF9jbnQmIzM0OywKIAkmIzM0O3BhZ2VfYWxsb2NfZmFpbCYjMzQ7LCAmIzM0O2RtYV9tYXBwaW5nX2Vycm9yJiMzNDssICYjMzQ7c3RhdHNfcmVwb3J0X3RyaWdnZXJfY250JiMzNDssCiYjNDM7CSYjMzQ7cnhfY3JpdGljYWxfbG93X2J1ZnMmIzM0OywKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19yeF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CkBAIC01OCw2ICYjNDM7NTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0gewogCSYjMzQ7cnhfeGRwX2Fib3J0ZWRbJXVdJiMzNDssICYjMzQ7cnhfeGRwX2Ryb3BbJXVdJiMzNDssICYjMzQ7cnhfeGRwX3Bhc3NbJXVdJiMzNDssCiAJJiMzNDtyeF94ZHBfdHhbJXVdJiMzNDssICYjMzQ7cnhfeGRwX3JlZGlyZWN0WyV1XSYjMzQ7LAogCSYjMzQ7cnhfeGRwX3R4X2Vycm9yc1sldV0mIzM0OywgJiMzNDtyeF94ZHBfcmVkaXJlY3RfZXJyb3JzWyV1XSYjMzQ7LCAmIzM0O3J4X3hkcF9hbGxvY19mYWlsc1sldV0mIzM0OywKJiM0MzsJJiMzNDtyeF9jcml0aWNhbF9sb3dfYnVmc1sldV0mIzM0OywKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc190eF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7CkBAIC0xNTEsMTIgJiM0MzsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiB7CiAJdTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLAogCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCwKJiM0MzsJCXRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcywKIAkJdG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0LCB0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LAogCQl0bXBfdHhfcGt0cywgdG1wX3R4X2J5dGVzLAogCQl0bXBfeGRwX3R4X2Vycm9ycywgdG1wX3hkcF9yZWRpcmVjdF9lcnJvcnM7CiAJdTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LAogCQlyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLAotCQl0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzOwomIzQzOwkJcnhfY3JpdGljYWxfbG93X2J1ZnMsIHR4X2Ryb3BwZWQsIHhkcF90eF9lcnJvcnMsCiYjNDM7CQl4ZHBfcmVkaXJlY3RfZXJyb3JzOwogCWludCByeF9iYXNlX3N0YXRzX2lkeCwgbWF4X3J4X3N0YXRzX2lkeCwgbWF4X3R4X3N0YXRzX2lkeDsKIAlpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuOwogCXN0cnVjdCBzdGF0cyAqcmVwb3J0X3N0YXRzOwpAQCAtMTk3LDYgJiM0MzsyMDEsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAogCWZvciAocnhfcGt0cyA9IDAsIHJ4X2J5dGVzID0gMCwgcnhfaHNwbGl0X3BrdCA9IDAsCiAJICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCwKJiM0MzsJICAgICByeF9jcml0aWNhbF9sb3dfYnVmcyA9IDAsCiAJICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsCiAJICAgICB4ZHBfdHhfZXJyb3JzID0gMCwgeGRwX3JlZGlyZWN0X2Vycm9ycyA9IDAsCiAJICAgICByaW5nID0gMDsKQEAgLTIxMiw2ICYjNDM7MjE3LDggQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQkJdG1wX3J4X2J5dGVzID0gcngtJmd0O3JieXRlczsKIAkJCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC0mZ3Q7cnhfc2tiX2FsbG9jX2ZhaWw7CiAJCQkJdG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtJmd0O3J4X2J1Zl9hbGxvY19mYWlsOwomIzQzOwkJCQl0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMgPQomIzQzOwkJCQkJcngtJmd0O3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQkJCXRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9CiAJCQkJCXJ4LSZndDtyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsKIAkJCQl0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID0KQEAgLTIyNiw2ICYjNDM7MjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJCQlyeF9ieXRlcyAmIzQzOz0gdG1wX3J4X2J5dGVzOwogCQkJcnhfc2tiX2FsbG9jX2ZhaWwgJiM0Mzs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDsKIAkJCXJ4X2J1Zl9hbGxvY19mYWlsICYjNDM7PSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7CiYjNDM7CQkJcnhfY3JpdGljYWxfbG93X2J1ZnMgJiM0Mzs9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmczsKIAkJCXJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICYjNDM7PSB0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7CiAJCQlyeF9oc3BsaXRfdW5zcGxpdF9wa3QgJiM0Mzs9IHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3Q7CiAJCQl4ZHBfdHhfZXJyb3JzICYjNDM7PSB0bXBfeGRwX3R4X2Vycm9yczsKQEAgLTI2OSw2ICYjNDM7Mjc3LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LSZndDtwYWdlX2FsbG9jX2ZhaWw7CiAJZGF0YVtpJiM0MzsmIzQzO10gPSBwcml2LSZndDtkbWFfbWFwcGluZ19lcnJvcjsKIAlkYXRhW2kmIzQzOyYjNDM7XSA9IHByaXYtJmd0O3N0YXRzX3JlcG9ydF90cmlnZ2VyX2NudDsKJiM0MzsJZGF0YVtpJiM0MzsmIzQzO10gPSByeF9jcml0aWNhbF9sb3dfYnVmczsKIAlpID0gR1ZFX01BSU5fU1RBVFNfTEVOOwogCiAJcnhfYmFzZV9zdGF0c19pZHggPSAwOwpAQCAtMzMzLDYgJiM0MzszNDIsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCQl0bXBfcnhfaHNwbGl0X2J5dGVzID0gcngtJmd0O3J4X2hzcGxpdF9ieXRlczsKIAkJCQl0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC0mZ3Q7cnhfc2tiX2FsbG9jX2ZhaWw7CiAJCQkJdG1wX3J4X2J1Zl9hbGxvY19mYWlsID0gcngtJmd0O3J4X2J1Zl9hbGxvY19mYWlsOwomIzQzOwkJCQl0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMgPQomIzQzOwkJCQkJcngtJmd0O3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQkJCXRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9CiAJCQkJCXJ4LSZndDtyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDsKIAkJCQl0bXBfeGRwX3R4X2Vycm9ycyA9IHJ4LSZndDt4ZHBfdHhfZXJyb3JzOwpAQCAtMzc3LDYgJiM0MzszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJCX0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmYW1wO3ByaXYtJmd0O3J4W3JpbmddLnN0YXRzcywKIAkJCQkJCSAgICAgICBzdGFydCkpOwogCQkJaSAmIzQzOz0gR1ZFX1hEUF9BQ1RJT05TICYjNDM7IDM7IC8qIFhEUCByeCBjb3VudGVycyAqLwomIzQzOwkJCWRhdGFbaSYjNDM7JiM0MztdID0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzOwogCQl9CiAJfSBlbHNlIHsKIAkJaSAmIzQzOz0gcHJpdi0mZ3Q7cnhfY2ZnLm51bV9xdWV1ZXMgKiBOVU1fR1ZFX1JYX0NOVFM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jCmluZGV4IDAyY2JhMjgwZDgxYTg2Li4zMDNkYjRmYTY3N2IzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMKQEAgLTE4LDYgJiM0MzsxOCwxNiBAQAogI2luY2x1ZGUgJmx0O25ldC90Y3AuaCZndDsKICNpbmNsdWRlICZsdDtuZXQveGRwX3NvY2tfZHJ2LmgmZ3Q7CiAKJiM0MztzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBndmVfcnhfcmluZyAqcnggPSB0aW1lcl9jb250YWluZXJfb2YocngsIHQsIHN0YXJ2YXRpb25fdGltZXIpOwomIzQzOwlzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSByeC0mZ3Q7Z3ZlOwomIzQzOwlzdHJ1Y3QgZ3ZlX25vdGlmeV9ibG9jayAqYmxvY2s7CiYjNDM7CiYjNDM7CWJsb2NrID0gJmFtcDtwcml2LSZndDtudGZ5X2Jsb2Nrc1tyeC0mZ3Q7bnRmeV9pZF07CiYjNDM7CW5hcGlfc2NoZWR1bGUoJmFtcDtibG9jay0mZ3Q7bmFwaSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZ3ZlX3J4X2ZyZWVfaGRyX2J1ZnMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KQogewogCXN0cnVjdCBkZXZpY2UgKmhkZXYgPSAmYW1wO3ByaXYtJmd0O3BkZXYtJmd0O2RldjsKQEAgLTEyMCw2ICYjNDM7MTMwLDcgQEAgdm9pZCBndmVfcnhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpCiAKIAlpZiAocngtJmd0O2Rxby5wYWdlX3Bvb2wpCiAJCXBhZ2VfcG9vbF9kaXNhYmxlX2RpcmVjdF9yZWN5Y2xpbmcocngtJmd0O2Rxby5wYWdlX3Bvb2wpOwomIzQzOwl0aW1lcl9kZWxldGVfc3luYygmYW1wO3J4LSZndDtzdGFydmF0aW9uX3RpbWVyKTsKIAlndmVfcmVtb3ZlX25hcGkocHJpdiwgbnRmeV9pZHgpOwogCWd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpOwogCWd2ZV9yeF9yZXNldF9yaW5nX2Rxbyhwcml2LCBpZHgpOwpAQCAtMTM2LDYgJiM0MzsxNDcsOCBAQCB2b2lkIGd2ZV9yeF9mcmVlX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwKIAl1MzIgcXBsX2lkOwogCWludCBpOwogCiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtyeC0mZ3Q7c3RhcnZhdGlvbl90aW1lcik7CiYjNDM7CiAJY29tcGxldGlvbl9xdWV1ZV9zbG90cyA9IHJ4LSZndDtkcW8uY29tcGxxLm1hc2sgJiM0MzsgMTsKIAlidWZmZXJfcXVldWVfc2xvdHMgPSByeC0mZ3Q7ZHFvLmJ1ZnEubWFzayAmIzQzOyAxOwogCkBAIC0yMzIsNiAmIzQzOzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LAogCXJ4LSZndDtndmUgPSBwcml2OwogCXJ4LSZndDtxX251bSA9IGlkeDsKIAlyeC0mZ3Q7cGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLSZndDtwYWNrZXRfYnVmZmVyX3NpemU7CiYjNDM7CXRpbWVyX3NldHVwKCZhbXA7cngtJmd0O3N0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTsKIAogCWlmIChjZmctJmd0O3hkcCkgewogCQlyeC0mZ3Q7cGFja2V0X2J1ZmZlcl90cnVlc2l6ZSA9IEdWRV9YRFBfUlhfQlVGRkVSX1NJWkVfRFFPOwpAQCAtMzY1LDYgJiM0MzszNzksNyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpCiAJc3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9ICZhbXA7cngtJmd0O2Rxby5jb21wbHE7CiAJc3RydWN0IGd2ZV9yeF9idWZfcXVldWVfZHFvICpidWZxID0gJmFtcDtyeC0mZ3Q7ZHFvLmJ1ZnE7CiAJc3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtJmd0O2d2ZTsKJiM0MzsJdTMyIG51bV9idWZzX2F2YWlsX3RvX2h3OwogCXUzMiBudW1fYXZhaWxfc2xvdHM7CiAJdTMyIG51bV9mdWxsX3Nsb3RzOwogCXUzMiBudW1fcG9zdGVkID0gMDsKQEAgLTQwMCw2ICYjNDM7NDE1LDIzIEBAIHZvaWQgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW8oc3RydWN0IGd2ZV9yeF9yaW5nICpyeCkKIAl9CiAKIAlyeC0mZ3Q7ZmlsbF9jbnQgJiM0Mzs9IG51bV9wb3N0ZWQ7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBxdWV1ZSBoYXMgZmV3ZXIgdGhhbiBHVkVfUlhfQlVGX1RIUkVTSF9EUU8gZGVzY3JpcHRvcnMKJiM0MzsJICogdmlzaWJsZSB0byB0aGUgaGFyZHdhcmUsIGFuZCBubyBkb29yYmVsbCB3YXMgd3JpdHRlbiwgdGhlIGhhcmR3YXJlCiYjNDM7CSAqIGlzIGluIGRhbmdlciBvZiBzdGFydmluZyBhbmQgY2Fubm90IHRyaWdnZXIgaW50ZXJydXB0cy4gU3RhcnQgdGhlCiYjNDM7CSAqIHRpbWVyIHRvIHBlcmlvZGljYWxseSByZXNjaGVkdWxlIE5BUEkgYW5kIHJlY292ZXIgZnJvbSBzdGFydmF0aW9uLgomIzQzOwkgKi8KJiM0MzsJbnVtX2J1ZnNfYXZhaWxfdG9faHcgPQomIzQzOwkJKChidWZxLSZndDt0YWlsICZhbXA7IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC0KJiM0MzsJCSBidWZxLSZndDtoZWFkKSAmYW1wOyBidWZxLSZndDttYXNrOwomIzQzOwomIzQzOwlpZiAobnVtX2J1ZnNfYXZhaWxfdG9faHcgJmx0OyBHVkVfUlhfQlVGX1RIUkVTSF9EUU8pIHsKJiM0MzsJCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtyeC0mZ3Q7c3RhdHNzKTsKJiM0MzsJCXJ4LSZndDtyeF9jcml0aWNhbF9sb3dfYnVmcyYjNDM7JiM0Mzs7CiYjNDM7CQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3J4LSZndDtzdGF0c3MpOwomIzQzOwkJbW9kX3RpbWVyKCZhbXA7cngtJmd0O3N0YXJ2YXRpb25fdGltZXIsCiYjNDM7CQkJICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoR1ZFX1JYX05BUElfUkVTQ0hFRF9NUykpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIGd2ZV9yeF9za2JfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1ZFIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIHRhcmdldGluZyB0aGUgYGd2ZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgUlggcmluZyBpbiBEUU8gKERpcmVjdCBRdWV1ZSBPZmZsb2FkKSBtb2RlLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGFkZGluZyBhIHN0YXJ2YXRpb24gdGltZXIuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhIG1lY2hhbmlzbSB0byBraWNrc3RhcnQgTkFQSSByZXNjaGVkdWxpbmcgd2hlbiB0aGUgZHJpdmVyJiMzOTtzIGJ1ZmZlcnMgYXJlIGNyaXRpY2FsbHkgbG93LiBUaGF0IHNob3VsZCBoZWxwIGFkZHJlc3MgcG90ZW50aWFsIFJYIHN0YXJ2YXRpb24gaXNzdWVzLgoKTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgd2FudCB0byBjaGVjayB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoZSBgZ3ZlYCBkcml2ZXIuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2Ugb3IgYmUgaW5mbHVlbmNlZCBieSB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBzY2FuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IHRoZSBvcHRpb25zIGFyZS4gSSBleHBlY3QgdG8gZmluZCBzb21lIG9wdGlvbnMgcmVsYXRlZCB0byBEUU8gYW5kIFJYIGJ1ZmZlciBtYW5hZ2VtZW50IGluIHRoZXJlLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCByZWFsbHkgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGltcGFjdCBhbmQgaW50ZWdyYXRpb24gd2l0aCBleGlzdGluZyBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR1ZFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX0dPT0dMRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoxODpjb25maWcgR1ZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0dvb2dsZSBWaXJ0dWFsIE5JQyAoZ1ZOSUMpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Nzc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkdWRSBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBjb25maWcgaXMgYEdWRWAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBhIGZldyBvdGhlcnMgcmVsYXRlZCB0byB0aGUgcmVjZWl2ZSBwYXRoOiBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGZ1enphYmxlLiBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IGEgaG90IHBhdGggc2luY2UgaXQmIzM5O3MgdXNlZCB0byBwb3N0IGJ1ZmZlcnMsIGxpa2VseSBpbiB0aGUgTkFQSSBwb2xsIGxvb3AsIHNvIGl0JiMzOTtzIHdvcnRoIGEgbG9vay4gYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCBpcyBqdXN0IGEgdGltZXIgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIG5vdCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoZSBvdGhlciB0aHJlZSBsb29rIGxpa2UgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4KClRoaXMgcGF0Y2ggaXMgYWRkaW5nIGEgdGltZXIgdG8gYWRkcmVzcyBxdWV1ZSBzdGFydmF0aW9uLiBIbW0sIHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBmb3IgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQuIEl0JiMzOTtzIHZpcnR1YWwsIGJ1dCBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHdoaWNoIG9wZW5zIHRoaW5ncyB1cCBhIGJpdC4gQ2FuIHN5emthbGxlciBnZXQgdG8gdGhpcz8gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBHVkUgZW11bGF0b3IsIGJ1dCBpdCBjYW4gZnV6eiB0aGUgY29udHJvbCBwYXRoIChldGh0b29sLCBuZXRsaW5rLCBldGMuKSwgbWF5YmUgZXZlbiB0aGUgUENJIHNpZGUgaWYgdGhhdCYjMzk7cyBzdXBwb3J0ZWQuCgpXYWl0LCBob2xkIG9uLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIEJ1dCBHVkUgaXMgR29vZ2xlIFZpcnR1YWwgTklDLCB1c2VkIGluIEdvb2dsZSBDbG91ZCAoR0NFKS4gV2FpdCBhIHNlY29uZCwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBzeXprYWxsZXIgcnVucyBpbiBHQ0UhIFRoaXMgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgaW4gc3l6a2FsbGVyJiMzOTtzIEdDRSBpbnN0YW5jZXMhCgpTbyBpdCAqaXMqIHJlYWNoYWJsZSBhbmQgYWN0aXZlbHkgdXNlZCBpbiBHQ0UsIGFuZCB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVudmlyb25tZW50IHN5emthbGxlciBydW5zIGluLiBJZiBJIGZ1enogaXQsIGl0IG1pZ2h0IGJyZWFrIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSB1c2VzIGEgc2VyaWFsIGNvbnNvbGUgZm9yIEdDRSwgb3IgbWF5YmUgaXQgZG9lc24mIzM5O3QgbWF0dGVyLCB3ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiBpdCYjMzk7cyByZWFjaGFibGUuIERlZmluaXRlbHkgcmVhY2hhYmxlIGluIEdDRS4KCkFscmlnaHQsIG5vdyBsZXQmIzM5O3MgZGlnIGludG8gYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MjE6c3RhdGljIHZvaWQgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjI5PWludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTI0Ny1cdHJ4LVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZSA9IGNmZy1cdTAwM2VwYWNrZXRfYnVmZmVyX3NpemU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyNDg6XHR0aW1lcl9zZXR1cChcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDY6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBSWCBSaW5nIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIFdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IG9uIHRoZSBob3QgcGF0aC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIG5vdCBpbnZvbHZlZCBoZXJlLiBBaCB5ZXMsIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgdGhlIHRpbWVyIGNhbGxiYWNrLiBUaGUgb3RoZXIgdGhyZWUgYXJlIGNsZWFybHkgc2V0dXAvdGVhcmRvd24gcmVsYXRlZC4KCkFscmlnaHQsIGxldCYjMzk7cyB2ZXJpZnkgaWYgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCBpcyBzdGF0aWMg4oCTIHllcywgaXQgaXMuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IEkgc2hvdWxkIGluY2x1ZGUgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IGBHVkVgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byBrZWVwIHRoaXMgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjE4OmNvbmZpZyBHVkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7R29vZ2xlIFZpcnR1YWwgTklDIChnVk5JQykgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEFsbG9jYXRpb24gTG9naWMqKgoKUmlnaHQsIHNvIGBHVkVgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0gaGVyZS4gVGhhdCYjMzk7cyBhIGdpdmVuLiBCdXQgaGFuZyBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyByZWdhcmRpbmcgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEl0JiMzOTtzIHVzZWQgd2hlbiB3ZSYjMzk7cmUgYWxsb2NhdGluZyByaW5ncyBmb3IgdGhlIERRTyBmb3JtYXQsIGlzbiYjMzk7dCBpdD8gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgRFFPIGlzIHRoZSAqZGVmYXVsdCogYmVoYXZpb3IsIG9yIGlmIGl0IHJlcXVpcmVzIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFnIG9yIHNldHRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZGVwZW5kZW5jeSB0byBmdWxseSBncmFzcCBob3cgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGFuZCB3aGF0IG1pZ2h0IHRyaWdnZXIgdGhlIHVzZSBvZiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBjb2RlYmFzZSB0byBzZWUgaWYgRFFPIGlzIGVuYWJsZWQgaW1wbGljaXRseSwgb3IgaWYgaXQgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9kcW8uaD00OT12b2lkIGd2ZV90eF9zdG9wX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9kcW8uaDo1MDppbnQgZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oLTUxLVx0XHRcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjY2Mj1zdGF0aWMgaW50IGd2ZV9yeF9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjY3OS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNjgwOlx0XHRlcnIgPSBndmVfcnhfYWxsb2NfcmluZ19kcW8ocHJpdiwgXHUwMDI2Y2ZnLCBndmVfcGVyX3FfbWVtLCBpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI2ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjIxPXZvaWQgZ3ZlX3J4X3N0YXJ0X3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMjk6aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMzAtXHRcdFx0ICBzdHJ1Y3QgZ3ZlX3J4X2FsbG9jX3JpbmdzX2NmZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTMzMD1pbnQgZ3ZlX3J4X2FsbG9jX3JpbmdzX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY2ZnLVx1MDAzZXFjZmdfcngtXHUwMDNlbnVtX3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jOjM0MjpcdFx0ZXJyID0gZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvKHByaXYsIGNmZywgXHUwMDI2cnhbaV0sIGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQzLVx0XHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODcKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogMjIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEdWRSBSWCBSaW5nIFN0YXJ2YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvY2Agb3IgYGd2ZV9yeF9hbGxvY19yaW5nc19kcW9gIGZ1bmN0aW9ucy4gVGhlIGNvbm5lY3Rpb24gdG8gRFFPIGZvcm1hdCBhbmQgYW4gYWN0aXZlIGRldmljZSBtYWtlcyB0aGlzIGNvZGUgcGF0aCBoaWdobHkgcHJvYmFibGUuIENvbnNpZGVyaW5nIEdWRSYjMzk7cyByb2xlIGFzICp0aGUqIG5ldHdvcmsgaW50ZXJmYWNlIGZvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIHdoZXJlIHN5emthbGxlciBpcyBhY3RpdmVseSBkZXBsb3llZCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdGl2ZWx5IGhpdCBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbi4gVGhpcyBtYWtlcyB0aGVtIGEgcHJpbWUgdGFyZ2V0LgoKVGhlcmVmb3JlLCBJJiMzOTttIG1hcmtpbmcgYFdvcnRoRnV6emluZ2AgYXMgYHRydWVgLiBJJiMzOTtsbCB3YW50IHRvIGhvbWUgaW4gb24gc29tZSBrZXkgc3ltYm9scywgaW5jbHVkaW5nIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAsIHdoaWNoIGlzIGNydWNpYWwgZ2l2ZW4gdGhlIHBhdGNoJiMzOTtzIGZvY3VzIG9uIHRoZSBuZXcgdGltZXIgbG9naWMsIGFzIHdlbGwgYXMgYGd2ZV9yeF9zdG9wX3JpbmdfZHFvYCwgYGd2ZV9yeF9mcmVlX3JpbmdfZHFvYCwgYW5kIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gIHdoaWNoIHdpbGwgYmUgZXNzZW50aWFsIGluIHRlc3RpbmcgdGhlIHJlbGF0ZWQgY29kZSBwYXRoIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFJYIHJpbmcuCgpPZiBjb3Vyc2UsIHRoZSBgR1ZFYCBjb25maWd1cmF0aW9uIG11c3QgYmUgZW5hYmxlZC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHNwZWNpZmljYWxseSBpbnRyb2R1Y2VzIGEgc3RhcnZhdGlvbiB0aW1lciBmb3IgdGhlIFJYIHJpbmcgd2l0aGluIHRoZSBHVkUgZHJpdmVyLiBUaGlzIG1lYW5zIG5ldyB0aW1lci1yZWxhdGVkIGxvZ2ljIGFuZCBjaGFuZ2VzIHRvIHRoZSBSWCByaW5nJiMzOTtzIHNldHVwIGFuZCB0ZWFyZG93biBwaGFzZXMgYXJlIHByZXNlbnQuIFNpbmNlIHN5emthbGxlciBydW5zIGluIEdDRSwgYW5kIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSwgdGhpcyBuZXdseSBhZGRlZCBjb2RlIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGFuZCBkZW1hbmRzIHRob3JvdWdoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndmVfcnhfc3RhcnZhdGlvbl90aW1lciYjMzQ7LAogICAgJiMzNDtndmVfcnhfc3RvcF9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfZnJlZV9yaW5nX2RxbyYjMzQ7LAogICAgJiMzNDtndmVfcnhfYWxsb2NfcmluZ19kcW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d2ZV9yeF9zdGFydmF0aW9uX3RpbWVyJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9zdG9wX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9mcmVlX3JpbmdfZHFvJiMzNDssCiAgICAmIzM0O2d2ZV9yeF9hbGxvY19yaW5nX2RxbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3RhcnZhdGlvbiB0aW1lciB0byB0aGUgUlggcmluZyBpbiB0aGUgR1ZFIGRyaXZlciAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBUaGlzIGludHJvZHVjZXMgbmV3IHRpbWVyIGxvZ2ljIGFuZCBtb2RpZmllcyB0aGUgc2V0dXAvdGVhcmRvd24gcGF0aHMgb2YgdGhlIFJYIHJpbmcuIFNpbmNlIEdWRSBpcyB0aGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBvbiBHQ0UgKHdoZXJlIHN5emthbGxlciBydW5zKSwgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjI1Ljk5NDM3ODUzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTExODc0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyXCIsXG4gICAgXCJndmVfcnhfc3RvcF9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2ZyZWVfcmluZ19kcW9cIixcbiAgICBcImd2ZV9yeF9hbGxvY19yaW5nX2Rxb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzdGFydmF0aW9uIHRpbWVyIHRvIHRoZSBSWCByaW5nIGluIHRoZSBHVkUgZHJpdmVyIChHb29nbGUgVmlydHVhbCBFdGhlcm5ldCkuIFRoaXMgaW50cm9kdWNlcyBuZXcgdGltZXIgbG9naWMgYW5kIG1vZGlmaWVzIHRoZSBzZXR1cC90ZWFyZG93biBwYXRocyBvZiB0aGUgUlggcmluZy4gU2luY2UgR1ZFIGlzIHRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIG9uIEdDRSAod2hlcmUgc3l6a2FsbGVyIHJ1bnMpLCB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OToyNS45OTQzODc3OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTM3NjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmZTRjN2U0MzJjYThiOWRhOTg5M2FiOTViMDU5NzE2ZmE5NzM3MGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwNjo0OToyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxcbmluZGV4IDFkNjZkMzgzNGY3ZTZjLi4zYjJmOTg2NDJlMDAyMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxcbkBAIC0xMyw2ICsxMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BjaS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFxcdTAwM2VcXG5AQCAtNDEsNiArNDIsNyBAQFxcbiBcXG4gLyogSW50ZXJ2YWwgdG8gc2NoZWR1bGUgYSBzdGF0cyByZXBvcnQgdXBkYXRlLCAyMDAwMG1zLiAqL1xcbiAjZGVmaW5lIEdWRV9TVEFUU19SRVBPUlRfVElNRVJfUEVSSU9EXFx0MjAwMDBcXG4rI2RlZmluZSBHVkVfUlhfTkFQSV9SRVNDSEVEX01TIDIwIC8qIG1zZWNzICovXFxuIFxcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXFxuICNkZWZpbmUgTklDX1RYX1NUQVRTX1JFUE9SVF9OVU1cXHQwXFxuQEAgLTMxOCw2ICszMjAsNyBAQCBzdHJ1Y3QgZ3ZlX3J4X3Jpbmcge1xcbiBcXHR1NjQgcnhfY29waWVkX3BrdDsgLyogZnJlZS1ydW5uaW5nIHRvdGFsIG51bWJlciBvZiBjb3BpZWQgcGFja2V0cyAqL1xcbiBcXHR1NjQgcnhfc2tiX2FsbG9jX2ZhaWw7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBza2IgYWxsb2MgZmFpbHMgKi9cXG4gXFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsOyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgYnVmZmVyIGFsbG9jIGZhaWxzICovXFxuK1xcdHU2NCByeF9jcml0aWNhbF9sb3dfYnVmczsgLyogY291bnQgb2YgY3JpdGljYWwgbG93IGJ1ZmZlciBldmVudHMgKi9cXG4gXFx0dTY0IHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0OyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgcGFja2V0cyBkcm9wcGVkIGJ5IGRlc2NyaXB0b3IgZXJyb3IgKi9cXG4gXFx0LyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHVuc3BsaXQgcGFja2V0cyBkdWUgdG8gaGVhZGVyIGJ1ZmZlciBvdmVyZmxvdyBvciBoZHJfbGVuIGlzIDAgKi9cXG4gXFx0dTY0IHJ4X2hzcGxpdF91bnNwbGl0X3BrdDtcXG5AQCAtMzM0LDYgKzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XFxuIFxcdHN0cnVjdCBndmVfcXVldWVfcmVzb3VyY2VzICpxX3Jlc291cmNlczsgLyogaGVhZCBhbmQgdGFpbCBwb2ludGVyIGlkeCAqL1xcbiBcXHRkbWFfYWRkcl90IHFfcmVzb3VyY2VzX2J1czsgLyogZG1hIGFkZHJlc3MgZm9yIHRoZSBxdWV1ZSByZXNvdXJjZXMgKi9cXG4gXFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cXG4rXFx0c3RydWN0IHRpbWVyX2xpc3Qgc3RhcnZhdGlvbl90aW1lcjsgLyogZm9yIHF1ZXVlIHN0YXJ2YXRpb24gcmVjb3ZlcnkgKi9cXG4gXFxuIFxcdHN0cnVjdCBndmVfcnhfY3R4IGN0eDsgLyogSW5mbyBmb3IgcGFja2V0IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgaW4gdGhpcyByaW5nLiAqL1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXFxuaW5kZXggODE5OTczOGJhOTc5ZWUuLjUzZmM2MzMxM2RhM2EzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19tYWluX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4gXFx0XFxcInJ4X2hzcGxpdF91bnNwbGl0X3BrdFxcXCIsXFxuIFxcdFxcXCJpbnRlcmZhY2VfdXBfY250XFxcIiwgXFxcImludGVyZmFjZV9kb3duX2NudFxcXCIsIFxcXCJyZXNldF9jbnRcXFwiLFxcbiBcXHRcXFwicGFnZV9hbGxvY19mYWlsXFxcIiwgXFxcImRtYV9tYXBwaW5nX2Vycm9yXFxcIiwgXFxcInN0YXRzX3JlcG9ydF90cmlnZ2VyX2NudFxcXCIsXFxuK1xcdFxcXCJyeF9jcml0aWNhbF9sb3dfYnVmc1xcXCIsXFxuIH07XFxuIFxcbiBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbkBAIC01OCw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGd2ZV9nc3RyaW5nc19yeF9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuIFxcdFxcXCJyeF94ZHBfYWJvcnRlZFsldV1cXFwiLCBcXFwicnhfeGRwX2Ryb3BbJXVdXFxcIiwgXFxcInJ4X3hkcF9wYXNzWyV1XVxcXCIsXFxuIFxcdFxcXCJyeF94ZHBfdHhbJXVdXFxcIiwgXFxcInJ4X3hkcF9yZWRpcmVjdFsldV1cXFwiLFxcbiBcXHRcXFwicnhfeGRwX3R4X2Vycm9yc1sldV1cXFwiLCBcXFwicnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cXFwiLCBcXFwicnhfeGRwX2FsbG9jX2ZhaWxzWyV1XVxcXCIsXFxuK1xcdFxcXCJyeF9jcml0aWNhbF9sb3dfYnVmc1sldV1cXFwiLFxcbiB9O1xcbiBcXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG5AQCAtMTUxLDEyICsxNTMsMTQgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIHtcXG4gXFx0dTY0IHRtcF9yeF9wa3RzLCB0bXBfcnhfaHNwbGl0X3BrdCwgdG1wX3J4X2J5dGVzLCB0bXBfcnhfaHNwbGl0X2J5dGVzLFxcbiBcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwsIHRtcF9yeF9idWZfYWxsb2NfZmFpbCxcXG4rXFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzLFxcbiBcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QsIHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3QsXFxuIFxcdFxcdHRtcF90eF9wa3RzLCB0bXBfdHhfYnl0ZXMsXFxuIFxcdFxcdHRtcF94ZHBfdHhfZXJyb3JzLCB0bXBfeGRwX3JlZGlyZWN0X2Vycm9ycztcXG4gXFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxcbiBcXHRcXHRyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLFxcbi1cXHRcXHR0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzO1xcbitcXHRcXHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcXG4rXFx0XFx0eGRwX3JlZGlyZWN0X2Vycm9ycztcXG4gXFx0aW50IHJ4X2Jhc2Vfc3RhdHNfaWR4LCBtYXhfcnhfc3RhdHNfaWR4LCBtYXhfdHhfc3RhdHNfaWR4O1xcbiBcXHRpbnQgc3RhdHNfaWR4LCBzdGF0c19yZWdpb25fbGVuLCBuaWNfc3RhdHNfbGVuO1xcbiBcXHRzdHJ1Y3Qgc3RhdHMgKnJlcG9ydF9zdGF0cztcXG5AQCAtMTk3LDYgKzIwMSw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXG4gXFx0Zm9yIChyeF9wa3RzID0gMCwgcnhfYnl0ZXMgPSAwLCByeF9oc3BsaXRfcGt0ID0gMCxcXG4gXFx0ICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCxcXG4rXFx0ICAgICByeF9jcml0aWNhbF9sb3dfYnVmcyA9IDAsXFxuIFxcdCAgICAgcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPSAwLCByeF9oc3BsaXRfdW5zcGxpdF9wa3QgPSAwLFxcbiBcXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcXG4gXFx0ICAgICByaW5nID0gMDtcXG5AQCAtMjEyLDYgKzIxNyw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRcXHRcXHRcXHR0bXBfcnhfYnl0ZXMgPSByeC1cXHUwMDNlcmJ5dGVzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVxcdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcXG4rXFx0XFx0XFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cXG4rXFx0XFx0XFx0XFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxcbiBcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9oc3BsaXRfdW5zcGxpdF9wa3QgPVxcbkBAIC0yMjYsNiArMjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdHJ4X2J5dGVzICs9IHRtcF9yeF9ieXRlcztcXG4gXFx0XFx0XFx0cnhfc2tiX2FsbG9jX2ZhaWwgKz0gdG1wX3J4X3NrYl9hbGxvY19mYWlsO1xcbiBcXHRcXHRcXHRyeF9idWZfYWxsb2NfZmFpbCArPSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7XFxuK1xcdFxcdFxcdHJ4X2NyaXRpY2FsX2xvd19idWZzICs9IHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcztcXG4gXFx0XFx0XFx0cnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgKz0gdG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0O1xcbiBcXHRcXHRcXHRyeF9oc3BsaXRfdW5zcGxpdF9wa3QgKz0gdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdDtcXG4gXFx0XFx0XFx0eGRwX3R4X2Vycm9ycyArPSB0bXBfeGRwX3R4X2Vycm9ycztcXG5AQCAtMjY5LDYgKzI3Nyw3IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbiBcXHRkYXRhW2krK10gPSBwcml2LVxcdTAwM2VwYWdlX2FsbG9jX2ZhaWw7XFxuIFxcdGRhdGFbaSsrXSA9IHByaXYtXFx1MDAzZWRtYV9tYXBwaW5nX2Vycm9yO1xcbiBcXHRkYXRhW2krK10gPSBwcml2LVxcdTAwM2VzdGF0c19yZXBvcnRfdHJpZ2dlcl9jbnQ7XFxuK1xcdGRhdGFbaSsrXSA9IHJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRpID0gR1ZFX01BSU5fU1RBVFNfTEVOO1xcbiBcXG4gXFx0cnhfYmFzZV9zdGF0c19pZHggPSAwO1xcbkBAIC0zMzMsNiArMzQyLDggQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9oc3BsaXRfYnl0ZXMgPSByeC1cXHUwMDNlcnhfaHNwbGl0X2J5dGVzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XFxuIFxcdFxcdFxcdFxcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVxcdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcXG4rXFx0XFx0XFx0XFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cXG4rXFx0XFx0XFx0XFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xcbiBcXHRcXHRcXHRcXHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxcbiBcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XFxuIFxcdFxcdFxcdFxcdHRtcF94ZHBfdHhfZXJyb3JzID0gcngtXFx1MDAzZXhkcF90eF9lcnJvcnM7XFxuQEAgLTM3Nyw2ICszODgsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZwcml2LVxcdTAwM2VyeFtyaW5nXS5zdGF0c3MsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzdGFydCkpO1xcbiBcXHRcXHRcXHRpICs9IEdWRV9YRFBfQUNUSU9OUyArIDM7IC8qIFhEUCByeCBjb3VudGVycyAqL1xcbitcXHRcXHRcXHRkYXRhW2krK10gPSB0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnM7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0aSArPSBwcml2LVxcdTAwM2VyeF9jZmcubnVtX3F1ZXVlcyAqIE5VTV9HVkVfUlhfQ05UUztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xcbmluZGV4IDAyY2JhMjgwZDgxYTg2Li4zMDNkYjRmYTY3N2IzMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXFxuQEAgLTE4LDYgKzE4LDE2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcXHUwMDNlXFxuIFxcbitzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4re1xcbitcXHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcXG4rXFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXFx1MDAzZWd2ZTtcXG4rXFx0c3RydWN0IGd2ZV9ub3RpZnlfYmxvY2sgKmJsb2NrO1xcbitcXG4rXFx0YmxvY2sgPSBcXHUwMDI2cHJpdi1cXHUwMDNlbnRmeV9ibG9ja3NbcngtXFx1MDAzZW50ZnlfaWRdO1xcbitcXHRuYXBpX3NjaGVkdWxlKFxcdTAwMjZibG9jay1cXHUwMDNlbmFwaSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGd2ZV9yeF9mcmVlX2hkcl9idWZzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcXG4ge1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpoZGV2ID0gXFx1MDAyNnByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldjtcXG5AQCAtMTIwLDYgKzEzMCw3IEBAIHZvaWQgZ3ZlX3J4X3N0b3BfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBpbnQgaWR4KVxcbiBcXG4gXFx0aWYgKHJ4LVxcdTAwM2VkcW8ucGFnZV9wb29sKVxcbiBcXHRcXHRwYWdlX3Bvb2xfZGlzYWJsZV9kaXJlY3RfcmVjeWNsaW5nKHJ4LVxcdTAwM2VkcW8ucGFnZV9wb29sKTtcXG4rXFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNnJ4LVxcdTAwM2VzdGFydmF0aW9uX3RpbWVyKTtcXG4gXFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcXG4gXFx0Z3ZlX3J4X3JlbW92ZV9mcm9tX2Jsb2NrKHByaXYsIGlkeCk7XFxuIFxcdGd2ZV9yeF9yZXNldF9yaW5nX2Rxbyhwcml2LCBpZHgpO1xcbkBAIC0xMzYsNiArMTQ3LDggQEAgdm9pZCBndmVfcnhfZnJlZV9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngsXFxuIFxcdHUzMiBxcGxfaWQ7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2cngtXFx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xcbitcXG4gXFx0Y29tcGxldGlvbl9xdWV1ZV9zbG90cyA9IHJ4LVxcdTAwM2VkcW8uY29tcGxxLm1hc2sgKyAxO1xcbiBcXHRidWZmZXJfcXVldWVfc2xvdHMgPSByeC1cXHUwMDNlZHFvLmJ1ZnEubWFzayArIDE7XFxuIFxcbkBAIC0yMzIsNiArMjQ1LDcgQEAgaW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuIFxcdHJ4LVxcdTAwM2VndmUgPSBwcml2O1xcbiBcXHRyeC1cXHUwMDNlcV9udW0gPSBpZHg7XFxuIFxcdHJ4LVxcdTAwM2VwYWNrZXRfYnVmZmVyX3NpemUgPSBjZmctXFx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcXG4rXFx0dGltZXJfc2V0dXAoXFx1MDAyNnJ4LVxcdTAwM2VzdGFydmF0aW9uX3RpbWVyLCBndmVfcnhfc3RhcnZhdGlvbl90aW1lciwgMCk7XFxuIFxcbiBcXHRpZiAoY2ZnLVxcdTAwM2V4ZHApIHtcXG4gXFx0XFx0cngtXFx1MDAzZXBhY2tldF9idWZmZXJfdHJ1ZXNpemUgPSBHVkVfWERQX1JYX0JVRkZFUl9TSVpFX0RRTztcXG5AQCAtMzY1LDYgKzM3OSw3IEBAIHZvaWQgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW8oc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcXG4gXFx0c3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9IFxcdTAwMjZyeC1cXHUwMDNlZHFvLmNvbXBscTtcXG4gXFx0c3RydWN0IGd2ZV9yeF9idWZfcXVldWVfZHFvICpidWZxID0gXFx1MDAyNnJ4LVxcdTAwM2VkcW8uYnVmcTtcXG4gXFx0c3RydWN0IGd2ZV9wcml2ICpwcml2ID0gcngtXFx1MDAzZWd2ZTtcXG4rXFx0dTMyIG51bV9idWZzX2F2YWlsX3RvX2h3O1xcbiBcXHR1MzIgbnVtX2F2YWlsX3Nsb3RzO1xcbiBcXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XFxuIFxcdHUzMiBudW1fcG9zdGVkID0gMDtcXG5AQCAtNDAwLDYgKzQxNSwyMyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXFxuIFxcdH1cXG4gXFxuIFxcdHJ4LVxcdTAwM2VmaWxsX2NudCArPSBudW1fcG9zdGVkO1xcbitcXG4rXFx0LyogSWYgdGhlIHF1ZXVlIGhhcyBmZXdlciB0aGFuIEdWRV9SWF9CVUZfVEhSRVNIX0RRTyBkZXNjcmlwdG9yc1xcbitcXHQgKiB2aXNpYmxlIHRvIHRoZSBoYXJkd2FyZSwgYW5kIG5vIGRvb3JiZWxsIHdhcyB3cml0dGVuLCB0aGUgaGFyZHdhcmVcXG4rXFx0ICogaXMgaW4gZGFuZ2VyIG9mIHN0YXJ2aW5nIGFuZCBjYW5ub3QgdHJpZ2dlciBpbnRlcnJ1cHRzLiBTdGFydCB0aGVcXG4rXFx0ICogdGltZXIgdG8gcGVyaW9kaWNhbGx5IHJlc2NoZWR1bGUgTkFQSSBhbmQgcmVjb3ZlciBmcm9tIHN0YXJ2YXRpb24uXFxuK1xcdCAqL1xcbitcXHRudW1fYnVmc19hdmFpbF90b19odyA9XFxuK1xcdFxcdCgoYnVmcS1cXHUwMDNldGFpbCBcXHUwMDI2IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC1cXG4rXFx0XFx0IGJ1ZnEtXFx1MDAzZWhlYWQpIFxcdTAwMjYgYnVmcS1cXHUwMDNlbWFzaztcXG4rXFxuK1xcdGlmIChudW1fYnVmc19hdmFpbF90b19odyBcXHUwMDNjIEdWRV9SWF9CVUZfVEhSRVNIX0RRTykge1xcbitcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZyeC1cXHUwMDNlc3RhdHNzKTtcXG4rXFx0XFx0cngtXFx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzKys7XFxuK1xcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeC1cXHUwMDNlc3RhdHNzKTtcXG4rXFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZyeC1cXHUwMDNlc3RhcnZhdGlvbl90aW1lcixcXG4rXFx0XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZ3ZlX3J4X3NrYl9jc3VtKHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjI2LjM5NDQzMDYwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3MTE4MDgwMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWZlNGM3ZTQzMmNhOGI5ZGE5ODkzYWI5NWIwNTk3MTZmYTk3MzcwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDY6NDk6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuaW5kZXggMWQ2NmQzODM0ZjdlNmMuLjNiMmY5ODY0MmUwMDIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaFxuQEAgLTEzLDYgKzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldF90c3RhbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3U2NF9zdGF0c19zeW5jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuQEAgLTQxLDYgKzQyLDcgQEBcbiBcbiAvKiBJbnRlcnZhbCB0byBzY2hlZHVsZSBhIHN0YXRzIHJlcG9ydCB1cGRhdGUsIDIwMDAwbXMuICovXG4gI2RlZmluZSBHVkVfU1RBVFNfUkVQT1JUX1RJTUVSX1BFUklPRFx0MjAwMDBcbisjZGVmaW5lIEdWRV9SWF9OQVBJX1JFU0NIRURfTVMgMjAgLyogbXNlY3MgKi9cbiBcbiAvKiBOdW1iZXJzIG9mIE5JQyB0eC9yeCBzdGF0cyBpbiBzdGF0cyByZXBvcnQuICovXG4gI2RlZmluZSBOSUNfVFhfU1RBVFNfUkVQT1JUX05VTVx0MFxuQEAgLTMxOCw2ICszMjAsNyBAQCBzdHJ1Y3QgZ3ZlX3J4X3Jpbmcge1xuIFx0dTY0IHJ4X2NvcGllZF9wa3Q7IC8qIGZyZWUtcnVubmluZyB0b3RhbCBudW1iZXIgb2YgY29waWVkIHBhY2tldHMgKi9cbiBcdHU2NCByeF9za2JfYWxsb2NfZmFpbDsgLyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHNrYiBhbGxvYyBmYWlscyAqL1xuIFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsOyAvKiBmcmVlLXJ1bm5pbmcgY291bnQgb2YgYnVmZmVyIGFsbG9jIGZhaWxzICovXG4rXHR1NjQgcnhfY3JpdGljYWxfbG93X2J1ZnM7IC8qIGNvdW50IG9mIGNyaXRpY2FsIGxvdyBidWZmZXIgZXZlbnRzICovXG4gXHR1NjQgcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7IC8qIGZyZWUtcnVubmluZyBjb3VudCBvZiBwYWNrZXRzIGRyb3BwZWQgYnkgZGVzY3JpcHRvciBlcnJvciAqL1xuIFx0LyogZnJlZS1ydW5uaW5nIGNvdW50IG9mIHVuc3BsaXQgcGFja2V0cyBkdWUgdG8gaGVhZGVyIGJ1ZmZlciBvdmVyZmxvdyBvciBoZHJfbGVuIGlzIDAgKi9cbiBcdHU2NCByeF9oc3BsaXRfdW5zcGxpdF9wa3Q7XG5AQCAtMzM0LDYgKzMzNyw3IEBAIHN0cnVjdCBndmVfcnhfcmluZyB7XG4gXHRzdHJ1Y3QgZ3ZlX3F1ZXVlX3Jlc291cmNlcyAqcV9yZXNvdXJjZXM7IC8qIGhlYWQgYW5kIHRhaWwgcG9pbnRlciBpZHggKi9cbiBcdGRtYV9hZGRyX3QgcV9yZXNvdXJjZXNfYnVzOyAvKiBkbWEgYWRkcmVzcyBmb3IgdGhlIHF1ZXVlIHJlc291cmNlcyAqL1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN0YXRzczsgLyogc3luYyBzdGF0cyBmb3IgMzJiaXQgYXJjaHMgKi9cbitcdHN0cnVjdCB0aW1lcl9saXN0IHN0YXJ2YXRpb25fdGltZXI7IC8qIGZvciBxdWV1ZSBzdGFydmF0aW9uIHJlY292ZXJ5ICovXG4gXG4gXHRzdHJ1Y3QgZ3ZlX3J4X2N0eCBjdHg7IC8qIEluZm8gZm9yIHBhY2tldCBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGluIHRoaXMgcmluZy4gKi9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbmluZGV4IDgxOTk3MzhiYTk3OWVlLi41M2ZjNjMzMTNkYTNhMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG5AQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3NfbWFpbl9zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4gXHRcInJ4X2hzcGxpdF91bnNwbGl0X3BrdFwiLFxuIFx0XCJpbnRlcmZhY2VfdXBfY250XCIsIFwiaW50ZXJmYWNlX2Rvd25fY250XCIsIFwicmVzZXRfY250XCIsXG4gXHRcInBhZ2VfYWxsb2NfZmFpbFwiLCBcImRtYV9tYXBwaW5nX2Vycm9yXCIsIFwic3RhdHNfcmVwb3J0X3RyaWdnZXJfY250XCIsXG4rXHRcInJ4X2NyaXRpY2FsX2xvd19idWZzXCIsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3QgY2hhciBndmVfZ3N0cmluZ3Nfcnhfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuQEAgLTU4LDYgKzU5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3J4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbiBcdFwicnhfeGRwX2Fib3J0ZWRbJXVdXCIsIFwicnhfeGRwX2Ryb3BbJXVdXCIsIFwicnhfeGRwX3Bhc3NbJXVdXCIsXG4gXHRcInJ4X3hkcF90eFsldV1cIiwgXCJyeF94ZHBfcmVkaXJlY3RbJXVdXCIsXG4gXHRcInJ4X3hkcF90eF9lcnJvcnNbJXVdXCIsIFwicnhfeGRwX3JlZGlyZWN0X2Vycm9yc1sldV1cIiwgXCJyeF94ZHBfYWxsb2NfZmFpbHNbJXVdXCIsXG4rXHRcInJ4X2NyaXRpY2FsX2xvd19idWZzWyV1XVwiLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgZ3ZlX2dzdHJpbmdzX3R4X3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbkBAIC0xNTEsMTIgKzE1MywxNCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiB7XG4gXHR1NjQgdG1wX3J4X3BrdHMsIHRtcF9yeF9oc3BsaXRfcGt0LCB0bXBfcnhfYnl0ZXMsIHRtcF9yeF9oc3BsaXRfYnl0ZXMsXG4gXHRcdHRtcF9yeF9za2JfYWxsb2NfZmFpbCwgdG1wX3J4X2J1Zl9hbGxvY19mYWlsLFxuK1x0XHR0bXBfcnhfY3JpdGljYWxfbG93X2J1ZnMsXG4gXHRcdHRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdCxcbiBcdFx0dG1wX3R4X3BrdHMsIHRtcF90eF9ieXRlcyxcbiBcdFx0dG1wX3hkcF90eF9lcnJvcnMsIHRtcF94ZHBfcmVkaXJlY3RfZXJyb3JzO1xuIFx0dTY0IHJ4X2J1Zl9hbGxvY19mYWlsLCByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCwgcnhfaHNwbGl0X3Vuc3BsaXRfcGt0LFxuIFx0XHRyeF9wa3RzLCByeF9oc3BsaXRfcGt0LCByeF9za2JfYWxsb2NfZmFpbCwgcnhfYnl0ZXMsIHR4X3BrdHMsIHR4X2J5dGVzLFxuLVx0XHR0eF9kcm9wcGVkLCB4ZHBfdHhfZXJyb3JzLCB4ZHBfcmVkaXJlY3RfZXJyb3JzO1xuK1x0XHRyeF9jcml0aWNhbF9sb3dfYnVmcywgdHhfZHJvcHBlZCwgeGRwX3R4X2Vycm9ycyxcbitcdFx0eGRwX3JlZGlyZWN0X2Vycm9ycztcbiBcdGludCByeF9iYXNlX3N0YXRzX2lkeCwgbWF4X3J4X3N0YXRzX2lkeCwgbWF4X3R4X3N0YXRzX2lkeDtcbiBcdGludCBzdGF0c19pZHgsIHN0YXRzX3JlZ2lvbl9sZW4sIG5pY19zdGF0c19sZW47XG4gXHRzdHJ1Y3Qgc3RhdHMgKnJlcG9ydF9zdGF0cztcbkBAIC0xOTcsNiArMjAxLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXG4gXHRmb3IgKHJ4X3BrdHMgPSAwLCByeF9ieXRlcyA9IDAsIHJ4X2hzcGxpdF9wa3QgPSAwLFxuIFx0ICAgICByeF9za2JfYWxsb2NfZmFpbCA9IDAsIHJ4X2J1Zl9hbGxvY19mYWlsID0gMCxcbitcdCAgICAgcnhfY3JpdGljYWxfbG93X2J1ZnMgPSAwLFxuIFx0ICAgICByeF9kZXNjX2Vycl9kcm9wcGVkX3BrdCA9IDAsIHJ4X2hzcGxpdF91bnNwbGl0X3BrdCA9IDAsXG4gXHQgICAgIHhkcF90eF9lcnJvcnMgPSAwLCB4ZHBfcmVkaXJlY3RfZXJyb3JzID0gMCxcbiBcdCAgICAgcmluZyA9IDA7XG5AQCAtMjEyLDYgKzIxNyw4IEBAIGd2ZV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0dG1wX3J4X2J5dGVzID0gcngtXHUwMDNlcmJ5dGVzO1xuIFx0XHRcdFx0dG1wX3J4X3NrYl9hbGxvY19mYWlsID0gcngtXHUwMDNlcnhfc2tiX2FsbG9jX2ZhaWw7XG4gXHRcdFx0XHR0bXBfcnhfYnVmX2FsbG9jX2ZhaWwgPSByeC1cdTAwM2VyeF9idWZfYWxsb2NfZmFpbDtcbitcdFx0XHRcdHRtcF9yeF9jcml0aWNhbF9sb3dfYnVmcyA9XG4rXHRcdFx0XHRcdHJ4LVx1MDAzZXJ4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdFx0dG1wX3J4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ID1cbiBcdFx0XHRcdFx0cngtXHUwMDNlcnhfZGVzY19lcnJfZHJvcHBlZF9wa3Q7XG4gXHRcdFx0XHR0bXBfcnhfaHNwbGl0X3Vuc3BsaXRfcGt0ID1cbkBAIC0yMjYsNiArMjMzLDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0cnhfYnl0ZXMgKz0gdG1wX3J4X2J5dGVzO1xuIFx0XHRcdHJ4X3NrYl9hbGxvY19mYWlsICs9IHRtcF9yeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRyeF9idWZfYWxsb2NfZmFpbCArPSB0bXBfcnhfYnVmX2FsbG9jX2ZhaWw7XG4rXHRcdFx0cnhfY3JpdGljYWxfbG93X2J1ZnMgKz0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHRcdHJ4X2Rlc2NfZXJyX2Ryb3BwZWRfcGt0ICs9IHRtcF9yeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDtcbiBcdFx0XHRyeF9oc3BsaXRfdW5zcGxpdF9wa3QgKz0gdG1wX3J4X2hzcGxpdF91bnNwbGl0X3BrdDtcbiBcdFx0XHR4ZHBfdHhfZXJyb3JzICs9IHRtcF94ZHBfdHhfZXJyb3JzO1xuQEAgLTI2OSw2ICsyNzcsNyBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdGRhdGFbaSsrXSA9IHByaXYtXHUwMDNlcGFnZV9hbGxvY19mYWlsO1xuIFx0ZGF0YVtpKytdID0gcHJpdi1cdTAwM2VkbWFfbWFwcGluZ19lcnJvcjtcbiBcdGRhdGFbaSsrXSA9IHByaXYtXHUwMDNlc3RhdHNfcmVwb3J0X3RyaWdnZXJfY250O1xuK1x0ZGF0YVtpKytdID0gcnhfY3JpdGljYWxfbG93X2J1ZnM7XG4gXHRpID0gR1ZFX01BSU5fU1RBVFNfTEVOO1xuIFxuIFx0cnhfYmFzZV9zdGF0c19pZHggPSAwO1xuQEAgLTMzMyw2ICszNDIsOCBAQCBndmVfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0XHRcdHRtcF9yeF9oc3BsaXRfYnl0ZXMgPSByeC1cdTAwM2VyeF9oc3BsaXRfYnl0ZXM7XG4gXHRcdFx0XHR0bXBfcnhfc2tiX2FsbG9jX2ZhaWwgPSByeC1cdTAwM2VyeF9za2JfYWxsb2NfZmFpbDtcbiBcdFx0XHRcdHRtcF9yeF9idWZfYWxsb2NfZmFpbCA9IHJ4LVx1MDAzZXJ4X2J1Zl9hbGxvY19mYWlsO1xuK1x0XHRcdFx0dG1wX3J4X2NyaXRpY2FsX2xvd19idWZzID1cbitcdFx0XHRcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnM7XG4gXHRcdFx0XHR0bXBfcnhfZGVzY19lcnJfZHJvcHBlZF9wa3QgPVxuIFx0XHRcdFx0XHRyeC1cdTAwM2VyeF9kZXNjX2Vycl9kcm9wcGVkX3BrdDtcbiBcdFx0XHRcdHRtcF94ZHBfdHhfZXJyb3JzID0gcngtXHUwMDNleGRwX3R4X2Vycm9ycztcbkBAIC0zNzcsNiArMzg4LDcgQEAgZ3ZlX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gXHRcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnByaXYtXHUwMDNlcnhbcmluZ10uc3RhdHNzLFxuIFx0XHRcdFx0XHRcdCAgICAgICBzdGFydCkpO1xuIFx0XHRcdGkgKz0gR1ZFX1hEUF9BQ1RJT05TICsgMzsgLyogWERQIHJ4IGNvdW50ZXJzICovXG4rXHRcdFx0ZGF0YVtpKytdID0gdG1wX3J4X2NyaXRpY2FsX2xvd19idWZzO1xuIFx0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRpICs9IHByaXYtXHUwMDNlcnhfY2ZnLm51bV9xdWV1ZXMgKiBOVU1fR1ZFX1JYX0NOVFM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uY1xuaW5kZXggMDJjYmEyODBkODFhODYuLjMwM2RiNGZhNjc3YjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jXG5AQCAtMTgsNiArMTgsMTYgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcdTAwM2VcbiBcbitzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbit7XG4rXHRzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4ID0gdGltZXJfY29udGFpbmVyX29mKHJ4LCB0LCBzdGFydmF0aW9uX3RpbWVyKTtcbitcdHN0cnVjdCBndmVfcHJpdiAqcHJpdiA9IHJ4LVx1MDAzZWd2ZTtcbitcdHN0cnVjdCBndmVfbm90aWZ5X2Jsb2NrICpibG9jaztcbitcbitcdGJsb2NrID0gXHUwMDI2cHJpdi1cdTAwM2VudGZ5X2Jsb2Nrc1tyeC1cdTAwM2VudGZ5X2lkXTtcbitcdG5hcGlfc2NoZWR1bGUoXHUwMDI2YmxvY2stXHUwMDNlbmFwaSk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGd2ZV9yeF9mcmVlX2hkcl9idWZzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpoZGV2ID0gXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbkBAIC0xMjAsNiArMTMwLDcgQEAgdm9pZCBndmVfcnhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpXG4gXG4gXHRpZiAocngtXHUwMDNlZHFvLnBhZ2VfcG9vbClcbiBcdFx0cGFnZV9wb29sX2Rpc2FibGVfZGlyZWN0X3JlY3ljbGluZyhyeC1cdTAwM2VkcW8ucGFnZV9wb29sKTtcbitcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIpO1xuIFx0Z3ZlX3JlbW92ZV9uYXBpKHByaXYsIG50ZnlfaWR4KTtcbiBcdGd2ZV9yeF9yZW1vdmVfZnJvbV9ibG9jayhwcml2LCBpZHgpO1xuIFx0Z3ZlX3J4X3Jlc2V0X3JpbmdfZHFvKHByaXYsIGlkeCk7XG5AQCAtMTM2LDYgKzE0Nyw4IEBAIHZvaWQgZ3ZlX3J4X2ZyZWVfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxuIFx0dTMyIHFwbF9pZDtcbiBcdGludCBpO1xuIFxuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZyeC1cdTAwM2VzdGFydmF0aW9uX3RpbWVyKTtcbitcbiBcdGNvbXBsZXRpb25fcXVldWVfc2xvdHMgPSByeC1cdTAwM2VkcW8uY29tcGxxLm1hc2sgKyAxO1xuIFx0YnVmZmVyX3F1ZXVlX3Nsb3RzID0gcngtXHUwMDNlZHFvLmJ1ZnEubWFzayArIDE7XG4gXG5AQCAtMjMyLDYgKzI0NSw3IEBAIGludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFx0cngtXHUwMDNlZ3ZlID0gcHJpdjtcbiBcdHJ4LVx1MDAzZXFfbnVtID0gaWR4O1xuIFx0cngtXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplID0gY2ZnLVx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZTtcbitcdHRpbWVyX3NldHVwKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTtcbiBcbiBcdGlmIChjZmctXHUwMDNleGRwKSB7XG4gXHRcdHJ4LVx1MDAzZXBhY2tldF9idWZmZXJfdHJ1ZXNpemUgPSBHVkVfWERQX1JYX0JVRkZFUl9TSVpFX0RRTztcbkBAIC0zNjUsNiArMzc5LDcgQEAgdm9pZCBndmVfcnhfcG9zdF9idWZmZXJzX2RxbyhzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxuIFx0c3RydWN0IGd2ZV9yeF9jb21wbF9xdWV1ZV9kcW8gKmNvbXBscSA9IFx1MDAyNnJ4LVx1MDAzZWRxby5jb21wbHE7XG4gXHRzdHJ1Y3QgZ3ZlX3J4X2J1Zl9xdWV1ZV9kcW8gKmJ1ZnEgPSBcdTAwMjZyeC1cdTAwM2VkcW8uYnVmcTtcbiBcdHN0cnVjdCBndmVfcHJpdiAqcHJpdiA9IHJ4LVx1MDAzZWd2ZTtcbitcdHUzMiBudW1fYnVmc19hdmFpbF90b19odztcbiBcdHUzMiBudW1fYXZhaWxfc2xvdHM7XG4gXHR1MzIgbnVtX2Z1bGxfc2xvdHM7XG4gXHR1MzIgbnVtX3Bvc3RlZCA9IDA7XG5AQCAtNDAwLDYgKzQxNSwyMyBAQCB2b2lkIGd2ZV9yeF9wb3N0X2J1ZmZlcnNfZHFvKHN0cnVjdCBndmVfcnhfcmluZyAqcngpXG4gXHR9XG4gXG4gXHRyeC1cdTAwM2VmaWxsX2NudCArPSBudW1fcG9zdGVkO1xuK1xuK1x0LyogSWYgdGhlIHF1ZXVlIGhhcyBmZXdlciB0aGFuIEdWRV9SWF9CVUZfVEhSRVNIX0RRTyBkZXNjcmlwdG9yc1xuK1x0ICogdmlzaWJsZSB0byB0aGUgaGFyZHdhcmUsIGFuZCBubyBkb29yYmVsbCB3YXMgd3JpdHRlbiwgdGhlIGhhcmR3YXJlXG4rXHQgKiBpcyBpbiBkYW5nZXIgb2Ygc3RhcnZpbmcgYW5kIGNhbm5vdCB0cmlnZ2VyIGludGVycnVwdHMuIFN0YXJ0IHRoZVxuK1x0ICogdGltZXIgdG8gcGVyaW9kaWNhbGx5IHJlc2NoZWR1bGUgTkFQSSBhbmQgcmVjb3ZlciBmcm9tIHN0YXJ2YXRpb24uXG4rXHQgKi9cbitcdG51bV9idWZzX2F2YWlsX3RvX2h3ID1cbitcdFx0KChidWZxLVx1MDAzZXRhaWwgXHUwMDI2IH4oR1ZFX1JYX0JVRl9USFJFU0hfRFFPIC0gMSkpIC1cbitcdFx0IGJ1ZnEtXHUwMDNlaGVhZCkgXHUwMDI2IGJ1ZnEtXHUwMDNlbWFzaztcbitcbitcdGlmIChudW1fYnVmc19hdmFpbF90b19odyBcdTAwM2MgR1ZFX1JYX0JVRl9USFJFU0hfRFFPKSB7XG4rXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbitcdFx0cngtXHUwMDNlcnhfY3JpdGljYWxfbG93X2J1ZnMrKztcbitcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cngtXHUwMDNlc3RhdHNzKTtcbitcdFx0bW9kX3RpbWVyKFx1MDAyNnJ4LVx1MDAzZXN0YXJ2YXRpb25fdGltZXIsXG4rXHRcdFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhHVkVfUlhfTkFQSV9SRVNDSEVEX01TKSk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGd2ZV9yeF9za2JfY3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6MjYuMzk0NDMzMTU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5NDA3NDExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdWRSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgbmV3IHBhdGNoIHRhcmdldGluZyB0aGUgYGd2ZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgUlggcmluZyBpbiBEUU8gKERpcmVjdCBRdWV1ZSBPZmZsb2FkKSBtb2RlLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGFkZGluZyBhIHN0YXJ2YXRpb24gdGltZXIuIEVzc2VudGlhbGx5LCBpdCdzIGEgbWVjaGFuaXNtIHRvIGtpY2tzdGFydCBOQVBJIHJlc2NoZWR1bGluZyB3aGVuIHRoZSBkcml2ZXIncyBidWZmZXJzIGFyZSBjcml0aWNhbGx5IGxvdy4gVGhhdCBzaG91bGQgaGVscCBhZGRyZXNzIHBvdGVudGlhbCBSWCBzdGFydmF0aW9uIGlzc3Vlcy5cblxuTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIEkgd2FudCB0byBjaGVjayB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoZSBgZ3ZlYCBkcml2ZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSBvciBiZSBpbmZsdWVuY2VkIGJ5IHRoaXMgY2hhbmdlLiBMZXQncyB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgc2NhbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgb3B0aW9ucyBhcmUuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBvcHRpb25zIHJlbGF0ZWQgdG8gRFFPIGFuZCBSWCBidWZmZXIgbWFuYWdlbWVudCBpbiB0aGVyZS4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgcmVhbGx5IGhlbHAgbWUgZGV0ZXJtaW5lIHRoZSBpbXBhY3QgYW5kIGludGVncmF0aW9uIHdpdGggZXhpc3Rpbmcgc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTozMC43ODg1MDk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTUwMDkyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTozMC45ODM1NTMzNTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTYzMTIwMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkdWRSBQYXRjaCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGNvbmZpZyBpcyBgR1ZFYC4gTGV0J3Mgc2VlIHdoYXQncyBjaGFuZ2VkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBhIGZldyBvdGhlcnMgcmVsYXRlZCB0byB0aGUgcmVjZWl2ZSBwYXRoOiBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGZ1enphYmxlLiBgZ3ZlX3J4X3Bvc3RfYnVmZmVyc19kcW9gIGlzIHByb2JhYmx5IGEgaG90IHBhdGggc2luY2UgaXQncyB1c2VkIHRvIHBvc3QgYnVmZmVycywgbGlrZWx5IGluIHRoZSBOQVBJIHBvbGwgbG9vcCwgc28gaXQncyB3b3J0aCBhIGxvb2suIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMganVzdCBhIHRpbWVyIGNhbGxiYWNrLCBzbyBpdCdzIG5vdCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoZSBvdGhlciB0aHJlZSBsb29rIGxpa2UgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy5cblxuVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSB0aW1lciB0byBhZGRyZXNzIHF1ZXVlIHN0YXJ2YXRpb24uIEhtbSwgd29ydGggZnV6emluZz8gTGV0J3Mgc2VlLi4uIGl0J3MgYSBuZXR3b3JrIGRyaXZlciBmb3IgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQuIEl0J3MgdmlydHVhbCwgYnV0IGl0J3MgYSBQQ0kgZGV2aWNlLCB3aGljaCBvcGVucyB0aGluZ3MgdXAgYSBiaXQuIENhbiBzeXprYWxsZXIgZ2V0IHRvIHRoaXM/IFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBHVkUgZW11bGF0b3IsIGJ1dCBpdCBjYW4gZnV6eiB0aGUgY29udHJvbCBwYXRoIChldGh0b29sLCBuZXRsaW5rLCBldGMuKSwgbWF5YmUgZXZlbiB0aGUgUENJIHNpZGUgaWYgdGhhdCdzIHN1cHBvcnRlZC5cblxuV2FpdCwgaG9sZCBvbi4uLiB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24uIEJ1dCBHVkUgaXMgR29vZ2xlIFZpcnR1YWwgTklDLCB1c2VkIGluIEdvb2dsZSBDbG91ZCAoR0NFKS4gV2FpdCBhIHNlY29uZCwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBzeXprYWxsZXIgcnVucyBpbiBHQ0UhIFRoaXMgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgaW4gc3l6a2FsbGVyJ3MgR0NFIGluc3RhbmNlcyFcblxuU28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGFjdGl2ZWx5IHVzZWQgaW4gR0NFLCBhbmQgdGhhdCdzIHRoZSBwcmltYXJ5IGVudmlyb25tZW50IHN5emthbGxlciBydW5zIGluLiBJZiBJIGZ1enogaXQsIGl0IG1pZ2h0IGJyZWFrIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24sIGJ1dCBzeXprYWxsZXIgdXN1YWxseSB1c2VzIGEgc2VyaWFsIGNvbnNvbGUgZm9yIEdDRSwgb3IgbWF5YmUgaXQgZG9lc24ndCBtYXR0ZXIsIHdlIGp1c3QgbmVlZCB0byBrbm93IGlmIGl0J3MgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBHQ0UuXG5cbkFscmlnaHQsIG5vdyBsZXQncyBkaWcgaW50byBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzc0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjM5LjE0NjY3NjQyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY2OTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndmVfcnhfc3RhcnZhdGlvbl90aW1lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMTpzdGF0aWMgdm9pZCBndmVfcnhfc3RhcnZhdGlvbl90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYz0yMjk9aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDctXFx0cngtXFx1MDAzZXBhY2tldF9idWZmZXJfc2l6ZSA9IGNmZy1cXHUwMDNlcGFja2V0X2J1ZmZlcl9zaXplO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jOjI0ODpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cngtXFx1MDAzZXN0YXJ2YXRpb25fdGltZXIsIGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0yNDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA2OjQ5OjM5LjIwNjM1NTAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyNzIwMjQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBSWCBSaW5nIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAsIGBndmVfcnhfc3RvcF9yaW5nX2Rxb2AsIGBndmVfcnhfZnJlZV9yaW5nX2Rxb2AsIGFuZCBgZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvYC4gV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGF0IGBndmVfcnhfcG9zdF9idWZmZXJzX2Rxb2AgaXMgcHJvYmFibHkgb24gdGhlIGhvdCBwYXRoLiBMZXQncyBtYWtlIHN1cmUgdGhhdCdzIG5vdCBpbnZvbHZlZCBoZXJlLiBBaCB5ZXMsIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgdGhlIHRpbWVyIGNhbGxiYWNrLiBUaGUgb3RoZXIgdGhyZWUgYXJlIGNsZWFybHkgc2V0dXAvdGVhcmRvd24gcmVsYXRlZC5cblxuQWxyaWdodCwgbGV0J3MgdmVyaWZ5IGlmIGBndmVfcnhfc3RhcnZhdGlvbl90aW1lcmAgaXMgc3RhdGljIOKAkyB5ZXMsIGl0IGlzLiBHaXZlbiB0aGF0LCBJJ20gY29uZmlkZW50IEkgc2hvdWxkIGluY2x1ZGUgYGd2ZV9yeF9zdGFydmF0aW9uX3RpbWVyYCwgYWxvbmcgd2l0aCBgZ3ZlX3J4X3N0b3BfcmluZ19kcW9gLCBgZ3ZlX3J4X2ZyZWVfcmluZ19kcW9gLCBhbmQgYGd2ZV9yeF9hbGxvY19yaW5nX2Rxb2AuIEknbGwgZG91YmxlLWNoZWNrIHRoYXQgYEdWRWAgaXMgdGhlIG9ubHkgY29uZmlnIHRvIGtlZXAgdGhpcyBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMDYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDQuMTMzNTU5OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxMDczMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfR09PR0xFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTo0NC4xOTM2Nzc2MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzczNjkyNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEFsbG9jYXRpb24gTG9naWMqKlxuXG5SaWdodCwgc28gYEdWRWAgaXMgZGVmaW5pdGVseSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gaXRlbSBoZXJlLiBUaGF0J3MgYSBnaXZlbi4gQnV0IGhhbmcgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgcmVnYXJkaW5nIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gLiBJdCdzIHVzZWQgd2hlbiB3ZSdyZSBhbGxvY2F0aW5nIHJpbmdzIGZvciB0aGUgRFFPIGZvcm1hdCwgaXNuJ3QgaXQ/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIERRTyBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yLCBvciBpZiBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzZXR0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgdG8gZnVsbHkgZ3Jhc3AgaG93IGFsbG9jYXRpb24gaXMgaGFuZGxlZCBhbmQgd2hhdCBtaWdodCB0cmlnZ2VyIHRoZSB1c2Ugb2YgdGhhdCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBjb2RlYmFzZSB0byBzZWUgaWYgRFFPIGlzIGVuYWJsZWQgaW1wbGljaXRseSwgb3IgaWYgaXQgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzQyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDcuOTY3MzczMTk2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA1MTEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndmVfcnhfYWxsb2NfcmluZ19kcW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZHFvLmg9NDk9dm9pZCBndmVfdHhfc3RvcF9yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGludCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oOjUwOmludCBndmVfcnhfYWxsb2NfcmluZ19kcW8oc3RydWN0IGd2ZV9wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Rxby5oLTUxLVxcdFxcdFxcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yNjYyPXN0YXRpYyBpbnQgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI2NzktXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNjgwOlxcdFxcdGVyciA9IGd2ZV9yeF9hbGxvY19yaW5nX2Rxbyhwcml2LCBcXHUwMDI2Y2ZnLCBndmVfcGVyX3FfbWVtLCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9MjIxPXZvaWQgZ3ZlX3J4X3N0YXJ0X3JpbmdfZHFvKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYzoyMjk6aW50IGd2ZV9yeF9hbGxvY19yaW5nX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMjMwLVxcdFxcdFxcdCAgc3RydWN0IGd2ZV9yeF9hbGxvY19yaW5nc19jZmcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTMzMD1pbnQgZ3ZlX3J4X2FsbG9jX3JpbmdzX2RxbyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0zNDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGNmZy1cXHUwMDNlcWNmZ19yeC1cXHUwMDNlbnVtX3F1ZXVlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MzQyOlxcdFxcdGVyciA9IGd2ZV9yeF9hbGxvY19yaW5nX2Rxbyhwcml2LCBjZmcsIFxcdTAwMjZyeFtpXSwgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmMtMzQzLVxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDY6NDk6NDguMDI0NDMzMjcxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTE3MTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgR1ZFIFJYIFJpbmcgU3RhcnZhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBgZ3ZlX3J4X3F1ZXVlX21lbV9hbGxvY2Agb3IgYGd2ZV9yeF9hbGxvY19yaW5nc19kcW9gIGZ1bmN0aW9ucy4gVGhlIGNvbm5lY3Rpb24gdG8gRFFPIGZvcm1hdCBhbmQgYW4gYWN0aXZlIGRldmljZSBtYWtlcyB0aGlzIGNvZGUgcGF0aCBoaWdobHkgcHJvYmFibGUuIENvbnNpZGVyaW5nIEdWRSdzIHJvbGUgYXMgKnRoZSogbmV0d29yayBpbnRlcmZhY2UgZm9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSwgd2hlcmUgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IGRlcGxveWVkLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3RpdmVseSBoaXQgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uIFRoaXMgbWFrZXMgdGhlbSBhIHByaW1lIHRhcmdldC5cblxuVGhlcmVmb3JlLCBJJ20gbWFya2luZyBgV29ydGhGdXp6aW5nYCBhcyBgdHJ1ZWAuIEknbGwgd2FudCB0byBob21lIGluIG9uIHNvbWUga2V5IHN5bWJvbHMsIGluY2x1ZGluZyBgZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJgLCB3aGljaCBpcyBjcnVjaWFsIGdpdmVuIHRoZSBwYXRjaCdzIGZvY3VzIG9uIHRoZSBuZXcgdGltZXIgbG9naWMsIGFzIHdlbGwgYXMgYGd2ZV9yeF9zdG9wX3JpbmdfZHFvYCwgYGd2ZV9yeF9mcmVlX3JpbmdfZHFvYCwgYW5kIGBndmVfcnhfYWxsb2NfcmluZ19kcW9gIHdoaWNoIHdpbGwgYmUgZXNzZW50aWFsIGluIHRlc3RpbmcgdGhlIHJlbGF0ZWQgY29kZSBwYXRoIG1vZGlmaWNhdGlvbnMgdG8gdGhlIFJYIHJpbmcuXG5cbk9mIGNvdXJzZSwgdGhlIGBHVkVgIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGludHJvZHVjZXMgYSBzdGFydmF0aW9uIHRpbWVyIGZvciB0aGUgUlggcmluZyB3aXRoaW4gdGhlIEdWRSBkcml2ZXIuIFRoaXMgbWVhbnMgbmV3IHRpbWVyLXJlbGF0ZWQgbG9naWMgYW5kIGNoYW5nZXMgdG8gdGhlIFJYIHJpbmcncyBzZXR1cCBhbmQgdGVhcmRvd24gcGhhc2VzIGFyZSBwcmVzZW50LiBTaW5jZSBzeXprYWxsZXIgcnVucyBpbiBHQ0UsIGFuZCBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UsIHRoaXMgbmV3bHkgYWRkZWQgY29kZSBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgZGVtYW5kcyB0aG9yb3VnaCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Njg3LCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNjo0OTo1NC4wMTYxNTUwODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDA3NzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3ZlX3J4X3N0YXJ2YXRpb25fdGltZXJcIixcbiAgICBcImd2ZV9yeF9zdG9wX3JpbmdfZHFvXCIsXG4gICAgXCJndmVfcnhfZnJlZV9yaW5nX2Rxb1wiLFxuICAgIFwiZ3ZlX3J4X2FsbG9jX3JpbmdfZHFvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHN0YXJ2YXRpb24gdGltZXIgdG8gdGhlIFJYIHJpbmcgaW4gdGhlIEdWRSBkcml2ZXIgKEdvb2dsZSBWaXJ0dWFsIEV0aGVybmV0KS4gVGhpcyBpbnRyb2R1Y2VzIG5ldyB0aW1lciBsb2dpYyBhbmQgbW9kaWZpZXMgdGhlIHNldHVwL3RlYXJkb3duIHBhdGhzIG9mIHRoZSBSWCByaW5nLiBTaW5jZSBHVkUgaXMgdGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2Ugb24gR0NFICh3aGVyZSBzeXprYWxsZXIgcnVucyksIHRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[1] Phase: Succeeded StartedAt: 2026-07-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 06:50:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 06:50:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2] Phase: Succeeded StartedAt: 2026-07-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 06:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:17 +0000 UTC FinishedAt: 2026-07-01 06:50:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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-workflowtmsrt/series-workflowtmsrt-convert-artifact-648932191/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:27 +0000 UTC FinishedAt: 2026-07-01 07:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:27 +0000 UTC FinishedAt: 2026-07-01 07:21:58 +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:*073d0da3-d9d6-44fd-a033-6dc5ab589397,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-workflowtmsrt/series-workflowtmsrt-convert-artifact-648932191/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": "f217bad6-5f20-4791-b614-50bdb7dd6cd9", "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-workflowtmsrt/series-workflowtmsrt-build-action-3015757925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 06:50:27 +0000 UTC FinishedAt: 2026-07-01 07:21:48 +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:*073d0da3-d9d6-44fd-a033-6dc5ab589397,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-workflowtmsrt/series-workflowtmsrt-convert-artifact-648932191/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": "f217bad6-5f20-4791-b614-50bdb7dd6cd9", "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-workflowtmsrt/series-workflowtmsrt-build-action-3015757925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:21:58 +0000 UTC FinishedAt: 2026-07-01 07:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:21:58 +0000 UTC FinishedAt: 2026-07-01 07:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:21:58 +0000 UTC FinishedAt: 2026-07-01 07:22:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:21:58 +0000 UTC FinishedAt: 2026-07-01 07:22:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-workflowtmsrt/series-workflowtmsrt-convert-artifact-740561390/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:22:26 +0000 UTC FinishedAt: 2026-07-01 07:24:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:22:26 +0000 UTC FinishedAt: 2026-07-01 07:24:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f217bad6-5f20-4791-b614-50bdb7dd6cd9,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-workflowtmsrt/series-workflowtmsrt-build-action-3015757925/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-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:24:31 +0000 UTC FinishedAt: 2026-07-01 07:24:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:24:31 +0000 UTC FinishedAt: 2026-07-01 07:24:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:24:31 +0000 UTC FinishedAt: 2026-07-01 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:24:31 +0000 UTC FinishedAt: 2026-07-01 07:53:10 +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:*073d0da3-d9d6-44fd-a033-6dc5ab589397,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-workflowtmsrt/series-workflowtmsrt-convert-artifact-740561390/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": "b8ce9100-6ef4-491f-82fd-69f8678aa8fe", "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-workflowtmsrt/series-workflowtmsrt-build-action-575529730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:24:31 +0000 UTC FinishedAt: 2026-07-01 07:52:46 +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:*073d0da3-d9d6-44fd-a033-6dc5ab589397,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-workflowtmsrt/series-workflowtmsrt-convert-artifact-740561390/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": "b8ce9100-6ef4-491f-82fd-69f8678aa8fe", "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-workflowtmsrt/series-workflowtmsrt-build-action-575529730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:53:10 +0000 UTC FinishedAt: 2026-07-01 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:53:10 +0000 UTC FinishedAt: 2026-07-01 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:53:10 +0000 UTC FinishedAt: 2026-07-01 07:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:53:10 +0000 UTC FinishedAt: 2026-07-01 07:55:00 +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:*b8ce9100-6ef4-491f-82fd-69f8678aa8fe,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-workflowtmsrt/series-workflowtmsrt-build-action-575529730/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-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"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:*f217bad6-5f20-4791-b614-50bdb7dd6cd9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b8ce9100-6ef4-491f-82fd-69f8678aa8fe,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-workflowtmsrt/series-workflowtmsrt-build-action-3015757925/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-workflowtmsrt/series-workflowtmsrt-build-action-575529730/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 07:55:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 07:55:19 +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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"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-workflowtmsrt/series-workflowtmsrt-convert-artifact-2350070931/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 07:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 07:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:10 +0000 UTC FinishedAt: 2026-07-01 07:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:30 +0000 UTC FinishedAt: 2026-07-01 08:48:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtmsrt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"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":["gve_rx_starvation_timer","gve_rx_stop_ring_dqo","gve_rx_free_ring_dqo","gve_rx_alloc_ring_dqo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE"],"series_id":"6b8c0604-c8a9-4258-892c-8d801fda7c0e","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-01 07:55:30 +0000 UTC FinishedAt: 2026-07-01 08:48:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f217bad6-5f20-4791-b614-50bdb7dd6cd9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b8ce9100-6ef4-491f-82fd-69f8678aa8fe,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-workflowtmsrt/series-workflowtmsrt-build-action-3015757925/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-workflowtmsrt/series-workflowtmsrt-build-action-575529730/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-workflowtmsrt/series-workflowtmsrt-convert-artifact-2350070931/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,}