Name: series-workflowznfpj Phase: Succeeded StartedAt: 2026-08-12 06:22:49 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[0] Phase: Succeeded StartedAt: 2026-08-12 06:22:49 +0000 UTC FinishedAt: 2026-08-12 06:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 06:22:49 +0000 UTC FinishedAt: 2026-08-12 06:27:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "64678ea5-62b9-4c50-a374-5b4f47e197c2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_emit_insn", "bpf_jit_build_prologue", "bpf_int_jit_compile" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgdG8gc3VwcG9ydCBzdGFjayBhcmd1bWVudHMgZm9yIGVCUEYgcHJvZ3JhbXMuIFRoZXNlIGNoYW5nZXMgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBSSVNDLVYgYW5kIHdpbGwgbm90IGJlIGV4ZXJjaXNlZCBieSBhIHN0YW5kYXJkIHg4Nl82NCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIEZ1cnRoZXJtb3JlLCBidWdzIGluIEpJVCBjb21waWxhdGlvbiBsb2dpYyAoc3VjaCBhcyBpbmNvcnJlY3QgcmVnaXN0ZXIgYXNzaWdubWVudHMgb3Igc3RhY2sgb2Zmc2V0cykgdHlwaWNhbGx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgb3IgY29udHJvbC1mbG93IGhpamFja2luZyBpbiB0aGUgZ2VuZXJhdGVkIG1hY2hpbmUgY29kZS4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGNyYXNoZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHNlbGZ0ZXN0IHN1aXRlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzLCBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVhayB2ZWN0b3JzIHRoYXQgd291bGQgc3BlY2lmaWNhbGx5IHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDA2OjI2OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuJiM0MztcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLmIzZjRiZjllMWU3ZjIgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCAmIzQzOzE4MTUsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XG4gXHRcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTtcbi1cdFx0XHRpbnQgaWR4O1xuJiM0MztcdFx0XHRpbnQgaWR4LCBuYXJncztcbiBcbiBcdFx0XHRmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtXHUwMDNlcHJvZywgaW5zbik7XG4gXHRcdFx0aWYgKCFmbSlcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdG5hcmdzID0gbWluX3QoaW50LCBmbS1cdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuJiM0MztcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEJQRiBzdGFjayBhcmdzIC1cdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkmIzQzOyBhdCBTUCYjNDM7MCAqL1xuJiM0MztcdFx0XHRpZiAoZm0tXHUwMDNlbnJfYXJncyBcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XG4mIzQzO1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuJiM0MztcdFx0XHRcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcbiYjNDM7XHRcdFx0XHRcdFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyAmIzQzOyBpZHhdO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuJiM0MztcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuJiM0MztcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19BNSAmIzQzOyBpZHgsIFJWX1JFR19BNSAmIzQzOyBpZHgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9zdGFjayAtIG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICYjNDM7IGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiAmIzQzOzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuJiM0MztcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuJiM0MztcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgJiM0MzsxOTc0LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgJiM0MzsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4mIzQzO1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgJiM0MzsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICYjNDM7MjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuJiM0MztcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyAmIzQzOzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuJiM0MztcbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4mIzQzO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyAmIzQzOzQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDk5YmMxMTVmODM4MGEuLmQxYzM4MjY5M2ZlZGMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC0zLDcgJiM0MzszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcbiBcdHJldHVybiAxO1xuIH1cbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXFxuIFx0XHUwMDI2XHUwMDI2IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyAmIzQzOzIxLDcgQEAgc3RydWN0IHtcbiBcbiBpbnQgdGltZXJfcmVzdWx0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uNmEyMjI1NWZjYWE3MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX2tmdW5jcy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IGJlZTJlZWVjMDIxZDcuLmNmZmEwZGZiNmY1MjUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbmluZGV4IDdlMGNlNWRiMjhhMGQuLmIyYTcyNGEyNzkwZWIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuQEAgLTEyLDcgJiM0MzsxMiw3IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtNSw3ICYjNDM7NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU3ZGJlN2VjYWMwY2E5M2ZkZjI2MjFmMTZkYzA3NmRkODRlOTlkYjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAppbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHN0YWNrX3NpemU7CiAJaW50IHRjY19vZmZzZXQ7CiYjNDM7CXUxNiBzdGFja19hcmdfc2l6ZTsKIAl1NjQgYXJlbmFfdm1fc3RhcnQ7CiAJdTY0IHVzZXJfdm1fc3RhcnQ7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggNmI5OTcyYjA3YzFiMC4uYjNmNGJmOWUxZTdmMiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xODE1LDE4ICYjNDM7MTgxNSwzOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAogCQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHsKIAkJCWNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07Ci0JCQlpbnQgaWR4OwomIzQzOwkJCWludCBpZHgsIG5hcmdzOwogCiAJCQlmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtJmd0O3Byb2csIGluc24pOwogCQkJaWYgKCFmbSkKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBmbS0mZ3Q7bnJfYXJnczsgaWR4JiM0MzsmIzQzOykgewomIzQzOwkJCW5hcmdzID0gbWluX3QoaW50LCBmbS0mZ3Q7bnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTsKJiM0MzsJCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IG5hcmdzOyBpZHgmIzQzOyYjNDM7KSB7CiAJCQkJdTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgJiM0MzsgaWR4LCBjdHgpOwogCiAJCQkJaWYgKGZtLSZndDthcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKQogCQkJCQllbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpOwogCQkJfQomIzQzOwomIzQzOwkJCS8qIEJQRiBzdGFjayBhcmdzIC0mZ3Q7IFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5JiM0MzsgYXQgU1AmIzQzOzAgKi8KJiM0MzsJCQlpZiAoZm0tJmd0O25yX2FyZ3MgJmd0OyBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHsKJiM0MzsJCQkJaW50IG5fc3RhY2sgPSBmbS0mZ3Q7bnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsKJiM0MzsJCQkJaW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLAomIzQzOwkJCQkJCSAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTsKJiM0MzsKJiM0MzsJCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuX3JlZzsgaWR4JiM0MzsmIzQzOykgewomIzQzOwkJCQkJaW50IHN6ID0gZm0tJmd0O2FyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyAmIzQzOyBpZHhdOwomIzQzOwomIzQzOwkJCQkJZW1pdF9sZChSVl9SRUdfQTUgJiM0MzsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQlpZiAoc3ogPT0gc2l6ZW9mKGludCkpCiYjNDM7CQkJCQkJZW1pdF9zZXh0dyhSVl9SRUdfQTUgJiM0MzsgaWR4LCBSVl9SRUdfQTUgJiM0MzsgaWR4LCBjdHgpOwomIzQzOwkJCQl9CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9zdGFjayAtIG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICYjNDM7IGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpOwomIzQzOwkJCQl9CiYjNDM7CQkJfQogCQl9CiAKIAkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovCkBAIC0xODkxLDYgJiM0MzsxOTEyLDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IG9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19GUCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9sZHhfaW5zbihyZCwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgJmFtcDsmYW1wOyBpbnNuX2lzX3pleHQoJmFtcDtpbnNuWzFdKSkKJiM0MzsJCQkJcmV0dXJuIDE7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzoKQEAgLTE5MzgsNiAmIzQzOzE5NzQsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O2RzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QyLCBSVl9SRUdfU1AsIFJWX1JFR19UMiwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJLyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IGltbSAqLwogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6CiAJY2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDoKQEAgLTE5NjAsNiAmIzQzOzIwMTAsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O2RzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpOwomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUWCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gc3JjICovCiAJY2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0yMDM2LDYgJiM0MzsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAKIAlzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTsKIAlzdGFja19hZGp1c3QgJiM0Mzs9IGJwZl9zdGFja19hZGp1c3Q7CiYjNDM7CXN0YWNrX2FkanVzdCAmIzQzOz0gY3R4LSZndDtzdGFja19hcmdfc2l6ZTsKIAogCXN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7CiAKQEAgLTIwOTMsNyAmIzQzOzIxNTcsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAllbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQotCQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiYjNDM7CQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTsKIAogCWN0eC0mZ3Q7c3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDsKIApAQCAtMjE3MSwzICYjNDM7MjIzNSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKQogewogCXJldHVybiB0cnVlOwogfQomIzQzOwomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IGNiZmNkMjg3ZWExNjYuLjg0NGEwZjNlMGZhOTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC03Miw2ICYjNDM7NzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAljdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7dXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwomIzQzOwomIzQzOwljdHgtJmd0O3N0YWNrX2FyZ19zaXplID0gcm91bmRfdXAoYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZykgKgomIzQzOwkJCQkgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTsKJiM0MzsKIAljdHgtJmd0O29mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLSZndDtsZW4pOwogCWlmICghY3R4LSZndDtvZmZzZXQpCiAJCWdvdG8gb3V0X29mZnNldDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwppbmRleCA4ZDM4YWFmZTY2YTI4Li5jODU0MGQzMGUyOTNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC00LDcgJiM0Mzs0LDcgQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKaW5kZXggOTliYzExNWY4MzgwYS4uZDFjMzgyNjkzZmVkYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKQEAgLTMsNyAmIzQzOzMsNyBAQAogI2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jCmluZGV4IGM4ZDcxNmZiZDQxOTEuLmRjNWQ0MjJhODJhNTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYwpAQCAtMzc5LDcgJiM0MzszNzksNyBAQCBpbnQgZXhjZXB0aW9uX2JhZF9hc3NlcnRfcmFuZ2Vfd2l0aChzdHJ1Y3QgX19za19idWZmICpjdHgpCiAJcmV0dXJuIDE7CiB9CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcCiAJJmFtcDsmYW1wOyBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwpAQCAtMjEsNyAmIzQzOzIxLDcgQEAgc3RydWN0IHsKIAogaW50IHRpbWVyX3Jlc3VsdDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwppbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwppbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBzdHJ1Y3QgewogCV9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTsKIH0gbWFwX2hhc2hfOGIgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li5lZDI2MDA0MWQ4MjcxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQgX19uYWtlZAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEJQRiBKSVQgU3RhY2sgQXJndW1lbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgd2l0aGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYCwgYW5kIGVuYWJsaW5nIHJlbGV2YW50IHNlbGZ0ZXN0cy4gVGhpcyBpcyBzcGVjaWZpYyB0byBSSVNDLVYsIHdoaWNoIGlzIHJlbGV2YW50IGdpdmVuIHRoZSBzdGF0ZWQgZm9jdXMuCgpUaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBPZiBjb3Vyc2UgaXQgaXMhIFdlIGNhbiBhYnNvbHV0ZWx5IHJ1biBhIFJJU0MtViBrZXJuZWwgaW4gUUVNVS4gQW5kIHRoZW4gdGhlIG5leHQgc3RlcCBpcyB0byByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIHdvcmsgd2l0aCBSSVNDLVY/IEl0IGRvZXMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBgcmlzY3Y2NGAgZXhlY3V0b3IpLiBEb2VzIHN5emthbGxlciBmdXp6IEJQRiBKSVQ/IEl0IHNob3VsZCwgaWYgaXQmIzM5O3MgY29uZmlndXJlZCBmb3IgUklTQy1WLiBUaGVyZWZvcmUgdGhpcyBjb2RlIHBhdGggKmlzKiByZWFjaGFibGUgYW5kICppcyogZnV6emFibGUsIHdoaWNoIG1lYW5zIGl0IGFsaWducyB3aXRoIG91ciBzY29wZS4KClRoaXMgaXMgYSBjb3JlIGtlcm5lbCBmZWF0dXJlIChCUEYgSklUKSBmb3IgYSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlOyBpdCYjMzk7cyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgIGluIGBicGZfaml0X2NvbXA2NC5jYCBhbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGluIGBicGZfaml0X2NvcmUuY2AuIFdlIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggb25lKHMpIGFyZSBiZXN0IGZvciBvdXIgYW5hbHlzaXMuCgpgYnBmX2ppdF9lbWl0X2luc25gIGlzIGFuIGludGVyZXN0aW5nIGNhbmRpZGF0ZS4gSG93ZXZlciwgaXQgbG9va3MgbGlrZSBhIGxhcmdlIGZ1bmN0aW9uIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGEgJiMzNDtob3QgcGF0aCYjMzQ7IGR1cmluZyBKSVQgY29tcGlsYXRpb24uIEJ1dCBob2xkIG9uLCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBpc24mIzM5O3QgYSBob3QgcGF0aCBpbiB0aGUgc2FtZSBzZW5zZSBhcyBwYWNrZXQgcHJvY2Vzc2luZywgaXQmIzM5O3MgbW9yZSBvZiBhIGNvbnRyb2wgcGF0aCAobG9hZGluZyBhIEJQRiBwcm9ncmFtKS4gU28gaXQmIzM5O3MgcHJvYmFibHkgYmV0dGVyIHRvIGZvY3VzIG9uIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAuCgpJJiMzOTtsbCBwcm9jZWVkIGJ5IGludmVzdGlnYXRpbmcgYm90aCBgYnBmX2ppdF9lbWl0X2luc25gIGFuZCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY2hhbmdlcyByZWxhdGVkIHRvIHN0YWNrIGFyZ3VtZW50IGhhbmRsaW5nLCBhbmQgaG93IHRoZXkgbWlnaHQgZXhwb3NlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgY29tcGlsYXRpb24gb3IgcHJvbG9ndWUgZ2VuZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzI0PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2MC1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTM2MTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cdFx0ICAgICAgYm9vbCBleHRyYV9wYXNzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGV4YWN0bHkgaG93IHRoZSBKSVQgYnVpbGRzIHRoaXMgaW5pdGlhbCBzdGFjayBmcmFtZSBmb3IgZUJQRiBwcm9ncmFtcy4gSSYjMzk7bSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNhdmluZyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzLCBwb3RlbnRpYWxseSBhbGxvY2F0aW5nIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc2V0dGluZyB1cCB0aGUgZnJhbWUgcG9pbnRlciBpZiB0aGF0JiMzOTtzIHRoZSBjaG9zZW4gQUJJLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IGRvZXMgYW55IHJlZ2lzdGVyIGFsbG9jYXRpb24gb3Igc3BpbGxpbmcgKmhlcmUqLCBvciBpZiB0aGF0JiMzOTtzIGhhbmRsZWQgYXQgYSBsYXRlciBzdGFnZSwgcG90ZW50aWFsbHkgYnkgdGhlIGdlbmVyaWMgcmVnaXN0ZXIgYWxsb2NhdG9yLgoKSSB3YW50IHRvIGtub3cgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb24gYmVpbmcgZm9sbG93ZWQgZm9yIGVCUEYsIGFuZCBob3cgdGhhdCBpcyByZWZsZWN0ZWQgaW4gdGhlIHByb2xvZ3VlLiBEb2VzIGl0IGRlYWwgd2l0aCByZXR1cm4gYWRkcmVzc2VzIG9uIHRoZSBzdGFjaywgYW5kIGhvdyBhcmUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgQlBGIHByb2dyYW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb2xvZ3VlIGludGVyYWN0cyB3aXRoIHRoZSBlcGlsb2d1ZSBkdXJpbmcgZnVuY3Rpb24gcmV0dXJuLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGludGVyYWN0aW9uIG9mIHRoZSB2YXJpb3VzIGVCUEYgcmVnaXN0ZXJzLgoKSeKAmW0gYWxzbyBjdXJpb3VzIGFib3V0IGFueSBvcHRpbWl6YXRpb25zIHRoYXQgYXJlIGRvbmUgaGVyZS4gRm9yIGluc3RhbmNlLCBpcyB0aGUgcHJvbG9ndWUgY29kZSBnZW5lcmF0ZWQgaW5saW5lLCBvciBkb2VzIGl0IHV0aWxpemUgc29tZSBraW5kIG9mIHByZS1idWlsdCB0ZW1wbGF0ZT8gQW55IGNsZXZlciB0cmlja3MgdG8gbWluaW1pemUgb3ZlcmhlYWQgd291bGQgYmUgd29ydGggbm90aW5nLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZS1jcml0aWNhbCBuYXR1cmUgb2YgZUJQRi4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0b28sIHRvIHNlZSB3aGF0IGFyY2hpdGVjdHVyZXMvY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2MT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzQtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIwNzU6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1ODgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfaW50X2ppdF9jb21waWxlYCoqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsJiMzOTtzIEpJVCBjb21waWxlciBmb3IgQlBGIGluc3RydWN0aW9ucyB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSB0eXBpY2FsIGFyY2hpdGVjdHVyZSBhbmQgZGF0YSBmbG93IGhlcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIEJQRiBieXRlY29kZSBpcyB0cmFuc2xhdGVkIGludG8gbmF0aXZlIG1hY2hpbmUgY29kZS4gV2hhdCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb25zIGFyZSBlbXBsb3llZCwgYW5kIHdoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgYXJlIGltcGxlbWVudGVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlucHV0cyB0aGlzIGZ1bmN0aW9uIHRha2VzLCBhbmQgd2hhdCBzb3J0IG9mIG1lbW9yeSBsYXlvdXQgaXMgY3JlYXRlZC4gSXMgdGhpcyBhIGNvZGUgZ2VuZXJhdGlvbiBzdGVwLCBhIGxpbmtpbmcgcGhhc2UsIG9yIGJvdGg/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaW50ZXJlc3RpbmcgY29ybmVyIGNhc2VzIG9yIGxlc3MtdGhhbi1vYnZpb3VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9Mzk9Ym9vbCBicGZfaml0X25lZWRzX3pleHQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00My1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjQ0OnN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk4OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSSVNDLVYgQlBGIFN0YWNrIEFyZ3VtZW50IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZ2V0dGluZyBCUEYgc3RhY2sgYXJndW1lbnRzIHdvcmtpbmcgb24gUklTQy1WLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgc3RlcCEgSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBmb2N1c2VkIHRoZSBjaGFuZ2VzIG9uIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGVzZSBmdW5jdGlvbnM6IGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJnc2AuIE1ha2VzIHNlbnNlIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBhcmVhcyBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZyBzdGFjayBhcmd1bWVudHMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi4KClRvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIHRoZSBzeXN0ZW0gd2lsbCwgb2YgY291cnNlLCBuZWVkIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBCUEYgSklUIHN1cHBvcnQuIFRoZSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgcHJlcmVxdWlzaXRlLCBgUklTQ1ZgLCBhbHNvIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvcmlzY3YvS2NvbmZpZ2AgZmlsZSB0byBzZWUgaG93IGBCUEZfSklUYCBpcyBkZWZpbmVkIGluIHRoZSBSSVNDLVYgY29udGV4dC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIGludGVncmF0aW5nIHRoaXMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzk1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKk5hdmlnYXRpbmcgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcHJvYmFibHkgYEJQRl9KSVRgLiBHaXZlbiB0aGUgc3RhbmRhcmQgY29udmVudGlvbiwgbXkgZ3V0IGluc3RpbmN0IHNheXMgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgd2l0aGluIHRoZSBgaW5pdC9LY29uZmlnYCBvciBtYXliZSBuZXN0bGVkIHdpdGhpbiB0aGUgQlBGLXNwZWNpZmljIHNlY3Rpb24gaW4gYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBzdGFydCBsb29raW5nLiBObyByZWFsIG5lZWQgdG8gb3ZlcnRoaW5rIGl0IC0gdGhlIG5hbWUgYEJQRl9KSVRgIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gaXQgc2hvdWxkIGJlIGVhc3kgZW5vdWdoIHRvIHRyYWNrIGRvd24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNTctXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLgoKKipCUEYgSklUIENvbmZpZ3VyYXRpb24gYW5kIExvY2F0aW9uIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQmIzM5O3MgdGhlIGZsYWcgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHdlJiMzOTtyZSBnb2luZyB0byBiZSB1c2luZyB0aGUgSklUIGNvbXBpbGVyIGZvciBCUEYgcHJvZ3JhbXMuIFRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhpcyBhcmUgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLiBUaGVzZSBmaWxlcyBzcGVjaWZpY2FsbHksIGFyZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhlc2UgZmlsZXMgYXJlICphY3R1YWxseSogY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IGFsd2F5cyBhIGdvb2Qgc2FuaXR5IGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIG1ha2Ugc3VyZSB0aGUgcHJlcHJvY2Vzc29yIGlzIGRvaW5nIHdoYXQgaXQgc2hvdWxkIGJlLiBUaGUgZGVwZW5kZW5jeSBncmFwaCBzaG91bGQgbWFrZSB0aGlzIHJlbGF0aXZlbHkgY2xlYXIuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9jb21wNjQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNDMKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMzI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyB3aXRoaW4gdGhlIFJJU0MtViBKSVQgY29tcGlsZXIuIFRoZSBmaXJzdCB0aGluZyBJIHNlZSBpcyB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZS4gVGhhdCBtYWtlcyBzZW5zZSwgbm8gSklULCBubyBzdGFjayBhcmd1bWVudHMgaW4gdGhlIEpJVC4gYENPTkZJR19BUkNIX1JWNjRJYCBpcyBhbHNvIHJlcXVpcmVkLCBidXQgdGhhdCYjMzk7cyBleHBlY3RlZCBmb3IgYSA2NC1iaXQgUklTQy1WIGFyY2hpdGVjdHVyZSwgc28gbm8gc3VycHJpc2VzIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgYWRkaXRpb24gb2Ygc3RhY2sgYXJndW1lbnQgc3VwcG9ydCwgd2hpY2ggc2NyZWFtcyAqZnVuY3Rpb25hbCBjaGFuZ2UqLiBXb3J0aCBmdXp6aW5nLCBubyBkb3VidC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIG1vZGlmaWNhdGlvbi4gSSBpbml0aWFsbHkgbGlzdGVkIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC4KCmBicGZfaml0X2VtaXRfaW5zbmAuLi4geWVwLCB0aGF0JiMzOTtzIHRoZSBiaWcgb25lLiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgZW1pdHRpbmcgdGhlIEpJVCBpbnN0cnVjdGlvbnMuIEl04oCZcyBjcml0aWNhbC4gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGxvb2tzIGdvb2QgdG9vLCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgcHJvbG9ndWUsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgY2hhbmdlcyB0aGVyZSB0byBoYW5kbGUgdGhlc2UgYXJndW1lbnRzLiBBbmQgZmluYWxseSwgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBpdHNlbGYg4oCTIHRoYXTigJlzIHZpdGFsIHRvby4KCkkgc2hvdWxkIHJlZmluZSB0aG9zZSBmb2N1cyBzeW1ib2xzIGEgbGl0dGxlIGJpdDoKCiogICBgYnBmX2ppdF9lbWl0X2luc25gCiogICBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAKKiAgIGBicGZfaW50X2ppdF9jb21waWxlYAoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQsIGNvbmNyZXRlbHkuIFRoaXMgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIGhhbmRsZXMgc3RhY2sgYXJndW1lbnRzLiBJdOKAmXMgdHdlYWtpbmcgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MsIGFuZCB0aGUgcHJvbG9ndWUgZ2VuZXJhdGlvbiBwcm9jZXNzLCB0byBlbnN1cmUgdGhlc2UgYXJndW1lbnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gQW55IGNoYW5nZXMgdG8gY29yZSBmdW5jdGlvbmFsaXR5IGxpa2UgdGhpcyBkZW1hbmRzIGNhcmVmdWwgZnV6emluZy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBrZXkgZnVuY3Rpb25zLiBXZSBuZWVkIHRvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBsb2dpYyBidWdzIHRoYXQgbWlnaHQgc2xpcCBpbiBkdXJpbmcgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGUgYEJQRl9KSVRgIGNvbmZpZyBpcyBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBjb25maWcgZm9yIHRoZSB0ZXN0cyBJJiMzOTtsbCBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciB0byBzdXBwb3J0IHN0YWNrIGFyZ3VtZW50cyBmb3IgZUJQRiBwcm9ncmFtcy4gVGhlc2UgY2hhbmdlcyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIFJJU0MtViBhbmQgd2lsbCBub3QgYmUgZXhlcmNpc2VkIGJ5IGEgc3RhbmRhcmQgeDg2XzY0IEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gRnVydGhlcm1vcmUsIGJ1Z3MgaW4gSklUIGNvbXBpbGF0aW9uIGxvZ2ljIChzdWNoIGFzIGluY29ycmVjdCByZWdpc3RlciBhc3NpZ25tZW50cyBvciBzdGFjayBvZmZzZXRzKSB0eXBpY2FsbHkgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLCByZWdpc3RlciBjb3JydXB0aW9uLCBvciBjb250cm9sLWZsb3cgaGlqYWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgY3Jhc2hlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgc2VsZnRlc3Qgc3VpdGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMsIGNvbXBsZXggdW5pbml0aWFsaXplZCBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrIHZlY3RvcnMgdGhhdCB3b3VsZCBzcGVjaWZpY2FsbHkgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDA2OjI2OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKQEAgLTgyLDYgJiM0Mzs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgc3RhY2tfc2l6ZTsKIAlpbnQgdGNjX29mZnNldDsKJiM0MzsJdTE2IHN0YWNrX2FyZ19zaXplOwogCXU2NCBhcmVuYV92bV9zdGFydDsKIAl1NjQgdXNlcl92bV9zdGFydDsKIH07CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCA2Yjk5NzJiMDdjMWIwLi5iM2Y0YmY5ZTFlN2YyIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE4MTUsMTggJiM0MzsxODE1LDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCiAJCWlmIChpbnNuLSZndDtzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkgewogCQkJY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTsKLQkJCWludCBpZHg7CiYjNDM7CQkJaW50IGlkeCwgbmFyZ3M7CiAKIAkJCWZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC0mZ3Q7cHJvZywgaW5zbik7CiAJCQlpZiAoIWZtKQogCQkJCXJldHVybiAtRUlOVkFMOwogCi0JCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IGZtLSZndDtucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJbmFyZ3MgPSBtaW5fdChpbnQsIGZtLSZndDtucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpOwomIzQzOwkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbmFyZ3M7IGlkeCYjNDM7JiM0MzspIHsKIAkJCQl1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSAmIzQzOyBpZHgsIGN0eCk7CiAKIAkJCQlpZiAoZm0tJmd0O2FyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpCiAJCQkJCWVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7CiAJCQl9CiYjNDM7CiYjNDM7CQkJLyogQlBGIHN0YWNrIGFyZ3MgLSZndDsgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkmIzQzOyBhdCBTUCYjNDM7MCAqLwomIzQzOwkJCWlmIChmbS0mZ3Q7bnJfYXJncyAmZ3Q7IE1BWF9CUEZfRlVOQ19SRUdfQVJHUykgewomIzQzOwkJCQlpbnQgbl9zdGFjayA9IGZtLSZndDtucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTOwomIzQzOwkJCQlpbnQgbl9yZWcgPSBtaW5fdChpbnQsIG5fc3RhY2ssCiYjNDM7CQkJCQkJICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpOwomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19BNSAmIzQzOyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsJCQkJCWlmIChzeiA9PSBzaXplb2YoaW50KSkKJiM0MzsJCQkJCQllbWl0X3NleHR3KFJWX1JFR19BNSAmIzQzOyBpZHgsIFJWX1JFR19BNSAmIzQzOyBpZHgsIGN0eCk7CiYjNDM7CQkJCX0KJiM0MzsKJiM0MzsJCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuX3N0YWNrIC0gbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX1QxLCAobl9yZWcgJiM0MzsgaWR4KSAqIDgsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsJCQkJCWVtaXRfc2QoUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiAJCX0KIAogCQkvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBicGYyYnBmIGNhbGwgKi8KQEAgLTE4OTEsNiAmIzQzOzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpOwomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJaWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyAmYW1wOyZhbXA7IGluc25faXNfemV4dCgmYW1wO2luc25bMV0pKQomIzQzOwkJCQlyZXR1cm4gMTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOgpAQCAtMTkzOCw2ICYjNDM7MTk3NCwyMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7ZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSAtb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpOwomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovCiAJY2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjoKIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMTk2MCw2ICYjNDM7MjAxMCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7ZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSAtb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1NQLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QxLCAwLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJLyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBzcmMgKi8KIAljYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjoKIAljYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDoKQEAgLTIwMzYsNiAmIzQzOzIwOTksNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAogCXN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pOwogCXN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDsKJiM0MzsJc3RhY2tfYWRqdXN0ICYjNDM7PSBjdHgtJmd0O3N0YWNrX2FyZ19zaXplOwogCiAJc3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODsKIApAQCAtMjA5Myw3ICYjNDM7MjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCWVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpOwogCiAJaWYgKGJwZl9zdGFja19hZGp1c3QpCi0JCWVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTsKJiM0MzsJCWVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LSZndDtzdGFja19hcmdfc2l6ZSAmIzQzOyBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwogCiAJY3R4LSZndDtzdGFja19zaXplID0gc3RhY2tfYWRqdXN0OwogCkBAIC0yMTcxLDMgJiM0MzsyMjM1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTcyLDYgJiM0Mzs3MiwxMCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCWN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDt1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7cHJvZyA9IHByb2c7CiYjNDM7CiYjNDM7CWN0eC0mZ3Q7c3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqCiYjNDM7CQkJCSAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pOwomIzQzOwogCWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKIAkJZ290byBvdXRfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKQEAgLTQsNyAmIzQzOzQsNyBAQAogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw3IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMKaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jCkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eCkKIAlyZXR1cm4gMTsKIH0KIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFwKIAkmYW1wOyZhbXA7IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi44YmE0OTkxYmJhYmQ0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsNyBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKaW5kZXggMzQ1ZjJkYTJlMzYxYi4uNmEyMjI1NWZjYWE3MyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwpAQCAtNiw3ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmIzM0O2JwZl9rZnVuY3MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCmluZGV4IGJlZTJlZWVjMDIxZDcuLmNmZmEwZGZiNmY1MjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNiw3ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmIyYTcyNGEyNzkwZWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCmluZGV4IGM5ZmU0ODU3ZGEzZjUuLmVkMjYwMDQxZDgyNzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKQEAgLTUsNyAmIzQzOzUsNyBAQAogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzcwCgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDk4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSSVNDLVYgQlBGIEpJVCBTdGFjayBBcmd1bWVudCBTdXBwb3J0IC0gS01TQU4gQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGBicGZfaml0X2NvbXA2NC5jYCBhbmQgYGJwZl9qaXRfY29yZS5jYCB0byBoYW5kbGUgYEJQRl9SRUdfUEFSQU1TYCBhbmQgc3RhY2sgYXJndW1lbnRzIGZvciBga2Z1bmNgIGNhbGxzLiBNeSBhbmFseXNpcyBjZW50ZXJzIGFyb3VuZCBtZW1vcnkgc2FmZXR5IGFuZCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIHNwZWNpZmljYWxseS4KCkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjaGFuZ2VzIGluIGBicGZfaml0X2VtaXRfaW5zbmAgc2VlbSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBoYW5kbGluZyBgQlBGX1BTRVVET19LRlVOQ19DQUxMYCBhbmQgbG9hZGluZy9zdG9yaW5nIGFyZ3VtZW50cyBmcm9tIHRoZSBCUEYgc3RhY2sgdG8gUklTQy1WIHJlZ2lzdGVycyAoQTUtQTcpIG9yIHRoZSBSSVNDLVYgc3RhY2suIFRoZSBwcm9sb2d1ZSBhZGp1c3RtZW50IGFuZCBzdGFjayBzaXplIGNhbGN1bGF0aW9uIGFsc28gc2VlbSByZWFzb25hYmxlLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGFzIGFsd2F5cyB3aXRoIEpJVCBjb21waWxlcnMsIGlzIGVuc3VyaW5nIHRoZSBnZW5lcmF0ZWQgUklTQy1WIG1hY2hpbmUgY29kZSBpcyBjb3JyZWN0IGFuZCBzYWZlLiBBIGJ1ZyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIGV2ZW4gYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uLiBIb3dldmVyLCB0aGVzZSBhcmUgcHJlY2lzZWx5IHRoZSBraW5kcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpNeSBuZXh0IHN0ZXAgd2FzIHRvIGNvbnNpZGVyIEtNU0FOLiBXaGlsZSBLTVNBTiBpcyBleGNlbGxlbnQgYXQgZGV0ZWN0aW5nIHVzZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHRoZSB2YXJpYWJsZXMgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIGFwcGVhciB0byBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4gVGhlICpnZW5lcmF0ZWQqIGNvZGUgaXMgdGhlIGtleS4gSWYgdGhlIEpJVCBjb21waWxlciBoYXMgYSBidWcgYW5kIGdlbmVyYXRlcyBjb2RlIHRoYXQgcmVhZHMgZnJvbSB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgS01TQU4gKm1pZ2h0KiBjYXRjaCBpdCwgYXNzdW1pbmcgS01TQU4gaXMgZXZlbiBzdXBwb3J0ZWQgb24gUklTQy1WLiBUaGF0IHdhcyB0aGUgbmV4dCBxdWVzdGlvbi4KCkkgbmVlZGVkIHRvIGRldGVybWluZSBpZiBLTVNBTiB3b3JrZWQgb24gUklTQy1WLiBMb29raW5nIGF0IGBhcmNoL3Jpc2N2L0tjb25maWdgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLCBidXQgSSByZW1lbWJlciBpdCYjMzk7cyBub3Qgc3VwcG9ydGVkLiBFdmVuIGlmIGl0ICp3ZXJlKiwgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSBmb3IgUklTQy1WLiBUZXN0aW5nIEtNU0FOIG9uIHg4Nl82NCwgYXMgaXMgdHlwaWNhbCwgd291bGRuJiMzOTt0IGV4ZXJjaXNlIHRoaXMgY29kZS4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGlzIG9ubHkgY29tcGlsZWQgZm9yIFJJU0MtVi4gU28geDg2XzY0IHN5emthbGxlciBpbnN0YW5jZXMgd2lsbCBoYXZlIHplcm8gY292ZXJhZ2UuCgpFdmVuIGlmIEtNU0FOICp3ZXJlKiBhdmFpbGFibGUgYW5kICpjb3VsZCogdGVzdCBSSVNDLVYgSklULCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgSklUIGJ1Z3MgaW4gdGhpcyBhcmVhIGFyZSBtb3JlIGxpa2VseSB0byByZXN1bHQgaW4gY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMuIEtBU0FOIGFuZCBCUEYgc2VsZnRlc3RzIHdvdWxkIGJlIG1vcmUgZWZmZWN0aXZlLiBUaGUgcGF0Y2ggaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzIG9yIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMgYmV5b25kIHRoZSBub3JtYWwgcmlzayBvZiBKSVQgY29tcGlsZXIgYnVncy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGBOZWVkc0tNU0FOYCBpcyBmYWxzZS4gVGhlIGNoYW5nZXMgYXJlIFJJU0MtViBzcGVjaWZpYywgYW5kIGJ1Z3MgYXJlIGxpa2VseSBkZXRlY3RhYmxlIHZpYSBLQVNBTiBhbmQgc2VsZnRlc3RzLCBldmVuIGlmIEtNU0FOIHdlcmUgYXZhaWxhYmxlLiBTbywgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBOZWVkc0tNU0FOPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjozMy44MDU2NDY4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU5MTM4NzA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciB0byBzdXBwb3J0IHN0YWNrIGFyZ3VtZW50cyBmb3IgZUJQRiBwcm9ncmFtcy4gVGhlc2UgY2hhbmdlcyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIFJJU0MtViBhbmQgd2lsbCBub3QgYmUgZXhlcmNpc2VkIGJ5IGEgc3RhbmRhcmQgeDg2XzY0IEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gRnVydGhlcm1vcmUsIGJ1Z3MgaW4gSklUIGNvbXBpbGF0aW9uIGxvZ2ljIChzdWNoIGFzIGluY29ycmVjdCByZWdpc3RlciBhc3NpZ25tZW50cyBvciBzdGFjayBvZmZzZXRzKSB0eXBpY2FsbHkgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLCByZWdpc3RlciBjb3JydXB0aW9uLCBvciBjb250cm9sLWZsb3cgaGlqYWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgY3Jhc2hlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgc2VsZnRlc3Qgc3VpdGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMsIGNvbXBsZXggdW5pbml0aWFsaXplZCBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrIHZlY3RvcnMgdGhhdCB3b3VsZCBzcGVjaWZpY2FsbHkgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6MzMuODA1NjUzMTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2ODQ5MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdGludCBzdGFja19zaXplO1xcbiBcXHRpbnQgdGNjX29mZnNldDtcXG4rXFx0dTE2IHN0YWNrX2FyZ19zaXplO1xcbiBcXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XFxuIFxcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xcbiB9O1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IDZiOTk3MmIwN2MxYjAuLmIzZjRiZjllMWU3ZjIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTgxNSwxOCArMTgxNSwzOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFxuIFxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xcbiBcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xcbi1cXHRcXHRcXHRpbnQgaWR4O1xcbitcXHRcXHRcXHRpbnQgaWR4LCBuYXJncztcXG4gXFxuIFxcdFxcdFxcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cXHUwMDNlcHJvZywgaW5zbik7XFxuIFxcdFxcdFxcdGlmICghZm0pXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBmbS1cXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcXG4rXFx0XFx0XFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVxcdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xcbitcXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIG5hcmdzOyBpZHgrKykge1xcbiBcXHRcXHRcXHRcXHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcXG4gXFxuIFxcdFxcdFxcdFxcdGlmIChmbS1cXHUwMDNlYXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSlcXG4gXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTtcXG4gXFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0LyogQlBGIHN0YWNrIGFyZ3MgLVxcdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkrIGF0IFNQKzAgKi9cXG4rXFx0XFx0XFx0aWYgKGZtLVxcdTAwM2Vucl9hcmdzIFxcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XFxuK1xcdFxcdFxcdFxcdGludCBuX3N0YWNrID0gZm0tXFx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XFxuK1xcdFxcdFxcdFxcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xcbitcXG4rXFx0XFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcXG4rXFx0XFx0XFx0XFx0XFx0aW50IHN6ID0gZm0tXFx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XFxuK1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19BNSArIGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2Mgbl9zdGFjayAtIG5fcmVnOyBpZHgrKykge1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICsgaWR4KSAqIDgsIFJWX1JFR19TUCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xcbkBAIC0xODkxLDYgKzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRcXHRcXHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xcbitcXHRcXHRcXHRcXHRlbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXIFxcdTAwMjZcXHUwMDI2IGluc25faXNfemV4dChcXHUwMDI2aW5zblsxXSkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAxO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcXG5AQCAtMTkzOCw2ICsxOTc0LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6XFxuIFxcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcXG4rXFx0XFx0aWYgKGluc24tXFx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcXG4rXFx0XFx0XFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xcbitcXHRcXHRcXHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcXG5AQCAtMTk2MCw2ICsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6XFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcXG4rXFx0XFx0aWYgKGluc24tXFx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcXG4rXFx0XFx0XFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0LyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gc3JjICovXFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcXG5AQCAtMjAzNiw2ICsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcbiBcXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XFxuK1xcdHN0YWNrX2FkanVzdCArPSBjdHgtXFx1MDAzZXN0YWNrX2FyZ19zaXplO1xcbiBcXG4gXFx0c3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODtcXG4gXFxuQEAgLTIwOTMsNyArMjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbiBcXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbi1cXHRcXHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuK1xcdFxcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVxcdTAwM2VzdGFja19hcmdfc2l6ZSArIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcbiBcXHRjdHgtXFx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XFxuIFxcbkBAIC0yMTcxLDMgKzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhcmVuYSk7XFxuIFxcdGN0eC1cXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2Vwcm9nID0gcHJvZztcXG4rXFxuK1xcdGN0eC1cXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXFxuK1xcdFxcdFxcdFxcdCAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pO1xcbitcXG4gXFx0Y3R4LVxcdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cXHUwMDNlbGVuKTtcXG4gXFx0aWYgKCFjdHgtXFx1MDAzZW9mZnNldClcXG4gXFx0XFx0Z290byBvdXRfb2Zmc2V0O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5jODU0MGQzMGUyOTNkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC00LDcgKzQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5AQCAtMyw3ICszLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xcbmluZGV4IGM4ZDcxNmZiZDQxOTEuLmRjNWQ0MjJhODJhNTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcXG5AQCAtMzc5LDcgKzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcXG4gXFx0cmV0dXJuIDE7XFxuIH1cXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFxcXFxcbiBcXHRcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi44YmE0OTkxYmJhYmQ0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw3IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xcbmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICNpbmNsdWRlIFxcXCJicGZfa2Z1bmNzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw3IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWRcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5AQCAtNSw3ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjM1LjM3MzU1MjE3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MDM2NDcwNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1N2RiZTdlY2FjMGNhOTNmZGYyNjIxZjE2ZGMwNzZkZDg0ZTk5ZGIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMDY6MjY6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuK1x0dTE2IHN0YWNrX2FyZ19zaXplO1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNmI5OTcyYjA3YzFiMC4uYjNmNGJmOWUxZTdmMiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xODE1LDE4ICsxODE1LDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFxuIFx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xuIFx0XHRcdGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07XG4tXHRcdFx0aW50IGlkeDtcbitcdFx0XHRpbnQgaWR4LCBuYXJncztcbiBcbiBcdFx0XHRmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtXHUwMDNlcHJvZywgaW5zbik7XG4gXHRcdFx0aWYgKCFmbSlcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgrKykge1xuK1x0XHRcdG5hcmdzID0gbWluX3QoaW50LCBmbS1cdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuK1x0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuYXJnczsgaWR4KyspIHtcbiBcdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xuIFxuIFx0XHRcdFx0aWYgKGZtLVx1MDAzZWFyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpXG4gXHRcdFx0XHRcdGVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7XG4gXHRcdFx0fVxuK1xuK1x0XHRcdC8qIEJQRiBzdGFjayBhcmdzIC1cdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkrIGF0IFNQKzAgKi9cbitcdFx0XHRpZiAoZm0tXHUwMDNlbnJfYXJncyBcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XG4rXHRcdFx0XHRpbnQgbl9zdGFjayA9IGZtLVx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XG4rXHRcdFx0XHRpbnQgbl9yZWcgPSBtaW5fdChpbnQsIG5fc3RhY2ssXG4rXHRcdFx0XHRcdFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuK1xuK1x0XHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5fcmVnOyBpZHgrKykge1xuK1x0XHRcdFx0XHRpbnQgc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgKyBpZHhdO1xuK1xuK1x0XHRcdFx0XHRlbWl0X2xkKFJWX1JFR19BNSArIGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuK1x0XHRcdFx0XHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXG4rXHRcdFx0XHRcdFx0ZW1pdF9zZXh0dyhSVl9SRUdfQTUgKyBpZHgsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcbitcdFx0XHRcdH1cbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3N0YWNrIC0gbl9yZWc7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAobl9yZWcgKyBpZHgpICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0fVxuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHQvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBicGYyYnBmIGNhbGwgKi9cbkBAIC0xODkxLDYgKzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IG9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19GUCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXIFx1MDAyNlx1MDAyNiBpbnNuX2lzX3pleHQoXHUwMDI2aW5zblsxXSkpXG4rXHRcdFx0XHRyZXR1cm4gMTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgKzE5NzQsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2Vkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbitcbitcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTtcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IGltbSAqL1xuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMTk2MCw2ICsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1NQLCBSVl9SRUdfVDEsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdC8qIFNUWCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgKzIwOTksNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xuIFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XG4rXHRzdGFja19hZGp1c3QgKz0gY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplO1xuIFxuIFx0c3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODtcbiBcbkBAIC0yMDkzLDcgKzIxNTcsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4tXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbitcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgKyBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0Y3R4LVx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XG4gXG5AQCAtMjE3MSwzICsyMjM1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuK1xuK2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpXG4re1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjYuLjg0NGEwZjNlMGZhOTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC03Miw2ICs3MiwxMCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Y3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbitcbitcdGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICpcbitcdFx0XHRcdCAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pO1xuK1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyArNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uZDFjMzgyNjkzZmVkYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbkBAIC0zNzksNyArMzc5LDcgQEAgaW50IGV4Y2VwdGlvbl9iYWRfYXNzZXJ0X3JhbmdlX3dpdGgoc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxuIFx0cmV0dXJuIDE7XG4gfVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFxcbiBcdFx1MDAyNlx1MDAyNiBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbmluZGV4IDk0NGUzYmI2MDNlN2UuLjhiYTQ5OTFiYmFiZDQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuQEAgLTIxLDcgKzIxLDcgQEAgc3RydWN0IHtcbiBcbiBpbnQgdGltZXJfcmVzdWx0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi42YTIyMjU1ZmNhYTczIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgKzYsNyBAQFxuICNpbmNsdWRlIFwiYnBmX2tmdW5jcy5oXCJcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uY2ZmYTBkZmI2ZjUyNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsNyBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuaW5kZXggN2UwY2U1ZGIyOGEwZC4uYjJhNzI0YTI3OTBlYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5AQCAtMTIsNyArMTIsNyBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwiLm1hcHNcIik7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IGM5ZmU0ODU3ZGEzZjUuLmVkMjYwMDQxZDgyNzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjM1LjM3MzU1NDQzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTAxODM2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBTdGFjayBBcmd1bWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN0YWNrIGFyZ3VtZW50IHN1cHBvcnQgdG8gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHdpdGhpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2AsIGFuZCBlbmFibGluZyByZWxldmFudCBzZWxmdGVzdHMuIFRoaXMgaXMgc3BlY2lmaWMgdG8gUklTQy1WLCB3aGljaCBpcyByZWxldmFudCBnaXZlbiB0aGUgc3RhdGVkIGZvY3VzLlxuXG5UaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBPZiBjb3Vyc2UgaXQgaXMhIFdlIGNhbiBhYnNvbHV0ZWx5IHJ1biBhIFJJU0MtViBrZXJuZWwgaW4gUUVNVS4gQW5kIHRoZW4gdGhlIG5leHQgc3RlcCBpcyB0byByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIHdvcmsgd2l0aCBSSVNDLVY/IEl0IGRvZXMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBgcmlzY3Y2NGAgZXhlY3V0b3IpLiBEb2VzIHN5emthbGxlciBmdXp6IEJQRiBKSVQ/IEl0IHNob3VsZCwgaWYgaXQncyBjb25maWd1cmVkIGZvciBSSVNDLVYuIFRoZXJlZm9yZSB0aGlzIGNvZGUgcGF0aCAqaXMqIHJlYWNoYWJsZSBhbmQgKmlzKiBmdXp6YWJsZSwgd2hpY2ggbWVhbnMgaXQgYWxpZ25zIHdpdGggb3VyIHNjb3BlLlxuXG5UaGlzIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZSAoQlBGIEpJVCkgZm9yIGEgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZTsgaXQncyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYCBpbiBgYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBpbiBgYnBmX2ppdF9jb3JlLmNgLiBXZSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIG9uZShzKSBhcmUgYmVzdCBmb3Igb3VyIGFuYWx5c2lzLlxuXG5gYnBmX2ppdF9lbWl0X2luc25gIGlzIGFuIGludGVyZXN0aW5nIGNhbmRpZGF0ZS4gSG93ZXZlciwgaXQgbG9va3MgbGlrZSBhIGxhcmdlIGZ1bmN0aW9uIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGEgXCJob3QgcGF0aFwiIGR1cmluZyBKSVQgY29tcGlsYXRpb24uIEJ1dCBob2xkIG9uLCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBpc24ndCBhIGhvdCBwYXRoIGluIHRoZSBzYW1lIHNlbnNlIGFzIHBhY2tldCBwcm9jZXNzaW5nLCBpdCdzIG1vcmUgb2YgYSBjb250cm9sIHBhdGggKGxvYWRpbmcgYSBCUEYgcHJvZ3JhbSkuIFNvIGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGZvY3VzIG9uIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAuXG5cbkknbGwgcHJvY2VlZCBieSBpbnZlc3RpZ2F0aW5nIGJvdGggYGJwZl9qaXRfZW1pdF9pbnNuYCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNoYW5nZXMgcmVsYXRlZCB0byBzdGFjayBhcmd1bWVudCBoYW5kbGluZywgYW5kIGhvdyB0aGV5IG1pZ2h0IGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIGNvbXBpbGF0aW9uIG9yIHByb2xvZ3VlIGdlbmVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo0NC42ODM3NDI2ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyMjk1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjQ9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzYxOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjQ0Ljc2ODk3OTAyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzkzMzk5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGUgSklUIGJ1aWxkcyB0aGlzIGluaXRpYWwgc3RhY2sgZnJhbWUgZm9yIGVCUEYgcHJvZ3JhbXMuIEknbSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNhdmluZyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzLCBwb3RlbnRpYWxseSBhbGxvY2F0aW5nIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc2V0dGluZyB1cCB0aGUgZnJhbWUgcG9pbnRlciBpZiB0aGF0J3MgdGhlIGNob3NlbiBBQkkuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgZG9lcyBhbnkgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvciBzcGlsbGluZyAqaGVyZSosIG9yIGlmIHRoYXQncyBoYW5kbGVkIGF0IGEgbGF0ZXIgc3RhZ2UsIHBvdGVudGlhbGx5IGJ5IHRoZSBnZW5lcmljIHJlZ2lzdGVyIGFsbG9jYXRvci5cblxuSSB3YW50IHRvIGtub3cgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb24gYmVpbmcgZm9sbG93ZWQgZm9yIGVCUEYsIGFuZCBob3cgdGhhdCBpcyByZWZsZWN0ZWQgaW4gdGhlIHByb2xvZ3VlLiBEb2VzIGl0IGRlYWwgd2l0aCByZXR1cm4gYWRkcmVzc2VzIG9uIHRoZSBzdGFjaywgYW5kIGhvdyBhcmUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgQlBGIHByb2dyYW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb2xvZ3VlIGludGVyYWN0cyB3aXRoIHRoZSBlcGlsb2d1ZSBkdXJpbmcgZnVuY3Rpb24gcmV0dXJuLiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gb2YgdGhlIHZhcmlvdXMgZUJQRiByZWdpc3RlcnMuXG5cbknigJltIGFsc28gY3VyaW91cyBhYm91dCBhbnkgb3B0aW1pemF0aW9ucyB0aGF0IGFyZSBkb25lIGhlcmUuIEZvciBpbnN0YW5jZSwgaXMgdGhlIHByb2xvZ3VlIGNvZGUgZ2VuZXJhdGVkIGlubGluZSwgb3IgZG9lcyBpdCB1dGlsaXplIHNvbWUga2luZCBvZiBwcmUtYnVpbHQgdGVtcGxhdGU/IEFueSBjbGV2ZXIgdHJpY2tzIHRvIG1pbmltaXplIG92ZXJoZWFkIHdvdWxkIGJlIHdvcnRoIG5vdGluZywgZXNwZWNpYWxseSBnaXZlbiB0aGUgcGVyZm9ybWFuY2UtY3JpdGljYWwgbmF0dXJlIG9mIGVCUEYuIEknbGwgbmVlZCB0byBsb29rIGF0IGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0b28sIHRvIHNlZSB3aGF0IGFyY2hpdGVjdHVyZXMvY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbidzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMjIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo0OC45NDgzMjE4NTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcwMDk5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2MT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjA3NC1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIwNzU6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDc2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NDkuMDM1MzM5MDgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTk0Nzg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2ludF9qaXRfY29tcGlsZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpc3NlY3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsJ3MgSklUIGNvbXBpbGVyIGZvciBCUEYgaW5zdHJ1Y3Rpb25zIHdvcmtzIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBhcmNoaXRlY3R1cmUgYW5kIGRhdGEgZmxvdyBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIEJQRiBieXRlY29kZSBpcyB0cmFuc2xhdGVkIGludG8gbmF0aXZlIG1hY2hpbmUgY29kZS4gV2hhdCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb25zIGFyZSBlbXBsb3llZCwgYW5kIHdoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgYXJlIGltcGxlbWVudGVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlucHV0cyB0aGlzIGZ1bmN0aW9uIHRha2VzLCBhbmQgd2hhdCBzb3J0IG9mIG1lbW9yeSBsYXlvdXQgaXMgY3JlYXRlZC4gSXMgdGhpcyBhIGNvZGUgZ2VuZXJhdGlvbiBzdGVwLCBhIGxpbmtpbmcgcGhhc2UsIG9yIGJvdGg/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaW50ZXJlc3RpbmcgY29ybmVyIGNhc2VzIG9yIGxlc3MtdGhhbi1vYnZpb3VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTg4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NTIuMTYxMjkwMzExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4ODAyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9Mzk9Ym9vbCBicGZfaml0X25lZWRzX3pleHQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQzLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjQ0OnN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo1Mi4yMzAwOTgzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODk4OTE4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUklTQy1WIEJQRiBTdGFjayBBcmd1bWVudCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZ2V0dGluZyBCUEYgc3RhY2sgYXJndW1lbnRzIHdvcmtpbmcgb24gUklTQy1WLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzdGVwISBJdCBsb29rcyBsaWtlIHRoZXkndmUgZm9jdXNlZCB0aGUgY2hhbmdlcyBvbiB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlc2UgZnVuY3Rpb25zOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGBicGZfaW50X2ppdF9jb21waWxlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLiBNYWtlcyBzZW5zZSDigJMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQgaGFuZGxpbmcgc3RhY2sgYXJndW1lbnRzIGR1cmluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uXG5cblRvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIHRoZSBzeXN0ZW0gd2lsbCwgb2YgY291cnNlLCBuZWVkIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBCUEYgSklUIHN1cHBvcnQuIFRoZSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgcHJlcmVxdWlzaXRlLCBgUklTQ1ZgLCBhbHNvIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvcmlzY3YvS2NvbmZpZ2AgZmlsZSB0byBzZWUgaG93IGBCUEZfSklUYCBpcyBkZWZpbmVkIGluIHRoZSBSSVNDLVYgY29udGV4dC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHMgdGhhdCBuZWVkIHRvIGJlIGFkZHJlc3NlZCBiZWZvcmUgaW50ZWdyYXRpbmcgdGhpcy4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTg5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjU2LjUxOTk5MzIzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NTcwODk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NTYuNjM3NTcwNzk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Nzc0NzQ2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBCUEYgSklULCB3aGljaCBpcyBwcm9iYWJseSBgQlBGX0pJVGAuIEdpdmVuIHRoZSBzdGFuZGFyZCBjb252ZW50aW9uLCBteSBndXQgaW5zdGluY3Qgc2F5cyBpdCdzIGxpa2VseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGluaXQvS2NvbmZpZ2Agb3IgbWF5YmUgbmVzdGxlZCB3aXRoaW4gdGhlIEJQRi1zcGVjaWZpYyBzZWN0aW9uIGluIGBrZXJuZWwvYnBmL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIHN0YXJ0IGxvb2tpbmcuIE5vIHJlYWwgbmVlZCB0byBvdmVydGhpbmsgaXQgLSB0aGUgbmFtZSBgQlBGX0pJVGAgaXMgcHJldHR5IHN0YW5kYXJkLCBzbyBpdCBzaG91bGQgYmUgZWFzeSBlbm91Z2ggdG8gdHJhY2sgZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM5NSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjAwLjIxNTA0OTAwM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0NDI5NjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MDIuNjU5MzUxNDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0OTY3NjQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuXG5cbioqQlBGIEpJVCBDb25maWd1cmF0aW9uIGFuZCBMb2NhdGlvbiBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQncyB0aGUgZmxhZyB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgd2UncmUgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIEpJVCBjb21waWxlciBmb3IgQlBGIHByb2dyYW1zLiBUaGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgYXJlIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYC4gVGhlc2UgZmlsZXMgc3BlY2lmaWNhbGx5LCBhcmUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCB0aGVzZSBmaWxlcyBhcmUgKmFjdHVhbGx5KiBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC4gSXQncyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCBhbHdheXMgYSBnb29kIHNhbml0eSBjaGVjay4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIG1ha2Ugc3VyZSB0aGUgcHJlcHJvY2Vzc29yIGlzIGRvaW5nIHdoYXQgaXQgc2hvdWxkIGJlLiBUaGUgZGVwZW5kZW5jeSBncmFwaCBzaG91bGQgbWFrZSB0aGlzIHJlbGF0aXZlbHkgY2xlYXIuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjA2LjkwOTAzMjkyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTYyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfY29tcDY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjA3LjAyMDk5OTc2OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQ2NTY2NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIHdpdGhpbiB0aGUgUklTQy1WIEpJVCBjb21waWxlci4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBUaGF0IG1ha2VzIHNlbnNlLCBubyBKSVQsIG5vIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgSklULiBgQ09ORklHX0FSQ0hfUlY2NElgIGlzIGFsc28gcmVxdWlyZWQsIGJ1dCB0aGF0J3MgZXhwZWN0ZWQgZm9yIGEgNjQtYml0IFJJU0MtViBhcmNoaXRlY3R1cmUsIHNvIG5vIHN1cnByaXNlcyB0aGVyZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgYWRkaXRpb24gb2Ygc3RhY2sgYXJndW1lbnQgc3VwcG9ydCwgd2hpY2ggc2NyZWFtcyAqZnVuY3Rpb25hbCBjaGFuZ2UqLiBXb3J0aCBmdXp6aW5nLCBubyBkb3VidC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIG1vZGlmaWNhdGlvbi4gSSBpbml0aWFsbHkgbGlzdGVkIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC5cblxuYGJwZl9qaXRfZW1pdF9pbnNuYC4uLiB5ZXAsIHRoYXQncyB0aGUgYmlnIG9uZS4gSXQncyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgZW1pdHRpbmcgdGhlIEpJVCBpbnN0cnVjdGlvbnMuIEl04oCZcyBjcml0aWNhbC4gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGxvb2tzIGdvb2QgdG9vLCBpdCdzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBwcm9sb2d1ZSwgc28gSSdtIGV4cGVjdGluZyBzb21lIGNoYW5nZXMgdGhlcmUgdG8gaGFuZGxlIHRoZXNlIGFyZ3VtZW50cy4gQW5kIGZpbmFsbHksIGBicGZfaW50X2ppdF9jb21waWxlYCwgd2hpY2ggaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MgaXRzZWxmIOKAkyB0aGF04oCZcyB2aXRhbCB0b28uXG5cbkkgc2hvdWxkIHJlZmluZSB0aG9zZSBmb2N1cyBzeW1ib2xzIGEgbGl0dGxlIGJpdDpcblxuKiAgIGBicGZfaml0X2VtaXRfaW5zbmBcbiogICBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWBcbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCwgY29uY3JldGVseS4gVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGNoYW5naW5nIGhvdyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgaGFuZGxlcyBzdGFjayBhcmd1bWVudHMuIEl04oCZcyB0d2Vha2luZyB0aGUgaW5zdHJ1Y3Rpb24gZW1pc3Npb24gcHJvY2VzcywgYW5kIHRoZSBwcm9sb2d1ZSBnZW5lcmF0aW9uIHByb2Nlc3MsIHRvIGVuc3VyZSB0aGVzZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiBBbnkgY2hhbmdlcyB0byBjb3JlIGZ1bmN0aW9uYWxpdHkgbGlrZSB0aGlzIGRlbWFuZHMgY2FyZWZ1bCBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRob3NlIGtleSBmdW5jdGlvbnMuIFdlIG5lZWQgdG8gYmUgb24gdGhlIGxvb2tvdXQgZm9yIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgdGhhdCBtaWdodCBzbGlwIGluIGR1cmluZyB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoZSBgQlBGX0pJVGAgY29uZmlnIGlzIGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGNvbmZpZyBmb3IgdGhlIHRlc3RzIEknbGwgcnVuLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI0MywiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuMjY3NTY5Njk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNDQ3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuNDEwMDI5MTA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk4Njk5MTAxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjE0LjQxMDkzNjQ0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDk4NjA3ODc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3ZGJlN2VjYWMwY2E5M2ZkZjI2MjFmMTZkYzA3NmRkODRlOTlkYjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4rXHR1MTYgc3RhY2tfYXJnX3NpemU7XG4gXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XG4gXHR1NjQgdXNlcl92bV9zdGFydDtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCA2Yjk5NzJiMDdjMWIwLi5iM2Y0YmY5ZTFlN2YyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE4MTUsMTggKzE4MTUsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XG4gXHRcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTtcbi1cdFx0XHRpbnQgaWR4O1xuK1x0XHRcdGludCBpZHgsIG5hcmdzO1xuIFxuIFx0XHRcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cdTAwM2Vwcm9nLCBpbnNuKTtcbiBcdFx0XHRpZiAoIWZtKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGZtLVx1MDAzZW5yX2FyZ3M7IGlkeCsrKSB7XG4rXHRcdFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4rXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5hcmdzOyBpZHgrKykge1xuIFx0XHRcdFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgKyBpZHgsIGN0eCk7XG4gXG4gXHRcdFx0XHRpZiAoZm0tXHUwMDNlYXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSlcbiBcdFx0XHRcdFx0ZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTtcbiBcdFx0XHR9XG4rXG4rXHRcdFx0LyogQlBGIHN0YWNrIGFyZ3MgLVx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSsgYXQgU1ArMCAqL1xuK1x0XHRcdGlmIChmbS1cdTAwM2Vucl9hcmdzIFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcbitcdFx0XHRcdGludCBuX3N0YWNrID0gZm0tXHUwMDNlbnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUztcbitcdFx0XHRcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcbitcdFx0XHRcdFx0XHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9yZWc7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX0E1ICsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19BNSArIGlkeCwgUlZfUkVHX0E1ICsgaWR4LCBjdHgpO1xuK1x0XHRcdFx0fVxuK1xuK1x0XHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5fc3RhY2sgLSBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIChuX3JlZyArIGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiArMTkxMiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbitcdFx0XHRcdHJldHVybiAxO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOlxuQEAgLTE5MzgsNiArMTk3NCwyMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QyLCBSVl9SRUdfU1AsIFJWX1JFR19UMiwgY3R4KTtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdC8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgKzIwMTAsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2Vkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QxLCAwLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gc3JjICovXG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTIwMzYsNiArMjA5OSw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFxuIFx0c3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7XG4gXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcbitcdHN0YWNrX2FkanVzdCArPSBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemU7XG4gXG4gXHRzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4O1xuIFxuQEAgLTIwOTMsNyArMjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuK1x0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZSArIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRjdHgtXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcbiBcbkBAIC0yMTcxLDMgKzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuK1xuK1x0Y3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplID0gcm91bmRfdXAoYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZykgKlxuK1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4rXG4gXHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggOGQzOGFhZmU2NmEyOC4uYzg1NDBkMzBlMjkzZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5AQCAtNCw3ICs0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jXG5pbmRleCBjOGQ3MTZmYmQ0MTkxLi5kYzVkNDIyYTgyYTUwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuQEAgLTM3OSw3ICszNzksNyBAQCBpbnQgZXhjZXB0aW9uX2JhZF9hc3NlcnRfcmFuZ2Vfd2l0aChzdHJ1Y3QgX19za19idWZmICpjdHgpXG4gXHRyZXR1cm4gMTtcbiB9XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXFxuIFx0XHUwMDI2XHUwMDI2IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsNyBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuQEAgLTYsNyArNiw3IEBAXG4gI2luY2x1ZGUgXCJicGZfa2Z1bmNzLmhcIlxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyArNiw3IEBAXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw3IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtNSw3ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuNDEwOTM4NDg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0OTg2MDUyMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJJU0MtViBCUEYgSklUIFN0YWNrIEFyZ3VtZW50IFN1cHBvcnQgLSBLTVNBTiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN0YWNrIGFyZ3VtZW50IHN1cHBvcnQgdG8gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBgYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBicGZfaml0X2NvcmUuY2AgdG8gaGFuZGxlIGBCUEZfUkVHX1BBUkFNU2AgYW5kIHN0YWNrIGFyZ3VtZW50cyBmb3IgYGtmdW5jYCBjYWxscy4gTXkgYW5hbHlzaXMgY2VudGVycyBhcm91bmQgbWVtb3J5IHNhZmV0eSBhbmQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzcGVjaWZpY2FsbHkuXG5cbkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjaGFuZ2VzIGluIGBicGZfaml0X2VtaXRfaW5zbmAgc2VlbSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGhhbmRsaW5nIGBCUEZfUFNFVURPX0tGVU5DX0NBTExgIGFuZCBsb2FkaW5nL3N0b3JpbmcgYXJndW1lbnRzIGZyb20gdGhlIEJQRiBzdGFjayB0byBSSVNDLVYgcmVnaXN0ZXJzIChBNS1BNykgb3IgdGhlIFJJU0MtViBzdGFjay4gVGhlIHByb2xvZ3VlIGFkanVzdG1lbnQgYW5kIHN0YWNrIHNpemUgY2FsY3VsYXRpb24gYWxzbyBzZWVtIHJlYXNvbmFibGUuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZSwgYXMgYWx3YXlzIHdpdGggSklUIGNvbXBpbGVycywgaXMgZW5zdXJpbmcgdGhlIGdlbmVyYXRlZCBSSVNDLVYgbWFjaGluZSBjb2RlIGlzIGNvcnJlY3QgYW5kIHNhZmUuIEEgYnVnIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIGlzc3VlcyDigJMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgZXZlbiBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24uIEhvd2V2ZXIsIHRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIGtpbmRzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBjYXRjaC5cblxuTXkgbmV4dCBzdGVwIHdhcyB0byBjb25zaWRlciBLTVNBTi4gV2hpbGUgS01TQU4gaXMgZXhjZWxsZW50IGF0IGRldGVjdGluZyB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB0aGUgdmFyaWFibGVzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyBhcHBlYXIgdG8gYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFRoZSAqZ2VuZXJhdGVkKiBjb2RlIGlzIHRoZSBrZXkuIElmIHRoZSBKSVQgY29tcGlsZXIgaGFzIGEgYnVnIGFuZCBnZW5lcmF0ZXMgY29kZSB0aGF0IHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnksIEtNU0FOICptaWdodCogY2F0Y2ggaXQsIGFzc3VtaW5nIEtNU0FOIGlzIGV2ZW4gc3VwcG9ydGVkIG9uIFJJU0MtVi4gVGhhdCB3YXMgdGhlIG5leHQgcXVlc3Rpb24uXG5cbkkgbmVlZGVkIHRvIGRldGVybWluZSBpZiBLTVNBTiB3b3JrZWQgb24gUklTQy1WLiBMb29raW5nIGF0IGBhcmNoL3Jpc2N2L0tjb25maWdgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLCBidXQgSSByZW1lbWJlciBpdCdzIG5vdCBzdXBwb3J0ZWQuIEV2ZW4gaWYgaXQgKndlcmUqLCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYuIFRlc3RpbmcgS01TQU4gb24geDg2XzY0LCBhcyBpcyB0eXBpY2FsLCB3b3VsZG4ndCBleGVyY2lzZSB0aGlzIGNvZGUuIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBpcyBvbmx5IGNvbXBpbGVkIGZvciBSSVNDLVYuIFNvIHg4Nl82NCBzeXprYWxsZXIgaW5zdGFuY2VzIHdpbGwgaGF2ZSB6ZXJvIGNvdmVyYWdlLlxuXG5FdmVuIGlmIEtNU0FOICp3ZXJlKiBhdmFpbGFibGUgYW5kICpjb3VsZCogdGVzdCBSSVNDLVYgSklULCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgSklUIGJ1Z3MgaW4gdGhpcyBhcmVhIGFyZSBtb3JlIGxpa2VseSB0byByZXN1bHQgaW4gY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMuIEtBU0FOIGFuZCBCUEYgc2VsZnRlc3RzIHdvdWxkIGJlIG1vcmUgZWZmZWN0aXZlLiBUaGUgcGF0Y2ggaXNuJ3QgaW50cm9kdWNpbmcgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMgb3IgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlcyBiZXlvbmQgdGhlIG5vcm1hbCByaXNrIG9mIEpJVCBjb21waWxlciBidWdzLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgaXMgZmFsc2UuIFRoZSBjaGFuZ2VzIGFyZSBSSVNDLVYgc3BlY2lmaWMsIGFuZCBidWdzIGFyZSBsaWtlbHkgZGV0ZWN0YWJsZSB2aWEgS0FTQU4gYW5kIHNlbGZ0ZXN0cywgZXZlbiBpZiBLTVNBTiB3ZXJlIGF2YWlsYWJsZS4gU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzAsIk91dHB1dFRva2VucyI6MTc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MjkuMzk2OTkzOTEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgdG8gc3VwcG9ydCBzdGFjayBhcmd1bWVudHMgZm9yIGVCUEYgcHJvZ3JhbXMuIFRoZXNlIGNoYW5nZXMgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBSSVNDLVYgYW5kIHdpbGwgbm90IGJlIGV4ZXJjaXNlZCBieSBhIHN0YW5kYXJkIHg4Nl82NCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIEZ1cnRoZXJtb3JlLCBidWdzIGluIEpJVCBjb21waWxhdGlvbiBsb2dpYyAoc3VjaCBhcyBpbmNvcnJlY3QgcmVnaXN0ZXIgYXNzaWdubWVudHMgb3Igc3RhY2sgb2Zmc2V0cykgdHlwaWNhbGx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgb3IgY29udHJvbC1mbG93IGhpamFja2luZyBpbiB0aGUgZ2VuZXJhdGVkIG1hY2hpbmUgY29kZS4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGNyYXNoZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHNlbGZ0ZXN0IHN1aXRlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzLCBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVhayB2ZWN0b3JzIHRoYXQgd291bGQgc3BlY2lmaWNhbGx5IHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowznfpj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 06:22:49 +0000 UTC FinishedAt: 2026-08-12 06:27:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "64678ea5-62b9-4c50-a374-5b4f47e197c2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_emit_insn", "bpf_jit_build_prologue", "bpf_int_jit_compile" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgdG8gc3VwcG9ydCBzdGFjayBhcmd1bWVudHMgZm9yIGVCUEYgcHJvZ3JhbXMuIFRoZXNlIGNoYW5nZXMgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBSSVNDLVYgYW5kIHdpbGwgbm90IGJlIGV4ZXJjaXNlZCBieSBhIHN0YW5kYXJkIHg4Nl82NCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIEZ1cnRoZXJtb3JlLCBidWdzIGluIEpJVCBjb21waWxhdGlvbiBsb2dpYyAoc3VjaCBhcyBpbmNvcnJlY3QgcmVnaXN0ZXIgYXNzaWdubWVudHMgb3Igc3RhY2sgb2Zmc2V0cykgdHlwaWNhbGx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgb3IgY29udHJvbC1mbG93IGhpamFja2luZyBpbiB0aGUgZ2VuZXJhdGVkIG1hY2hpbmUgY29kZS4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGNyYXNoZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHNlbGZ0ZXN0IHN1aXRlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzLCBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVhayB2ZWN0b3JzIHRoYXQgd291bGQgc3BlY2lmaWNhbGx5IHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDA2OjI2OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuJiM0MztcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLmIzZjRiZjllMWU3ZjIgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCAmIzQzOzE4MTUsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XG4gXHRcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTtcbi1cdFx0XHRpbnQgaWR4O1xuJiM0MztcdFx0XHRpbnQgaWR4LCBuYXJncztcbiBcbiBcdFx0XHRmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtXHUwMDNlcHJvZywgaW5zbik7XG4gXHRcdFx0aWYgKCFmbSlcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdG5hcmdzID0gbWluX3QoaW50LCBmbS1cdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuJiM0MztcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCYjNDM7JiM0MzspIHtcbiBcdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEJQRiBzdGFjayBhcmdzIC1cdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkmIzQzOyBhdCBTUCYjNDM7MCAqL1xuJiM0MztcdFx0XHRpZiAoZm0tXHUwMDNlbnJfYXJncyBcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XG4mIzQzO1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuJiM0MztcdFx0XHRcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcbiYjNDM7XHRcdFx0XHRcdFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyAmIzQzOyBpZHhdO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuJiM0MztcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuJiM0MztcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19BNSAmIzQzOyBpZHgsIFJWX1JFR19BNSAmIzQzOyBpZHgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9zdGFjayAtIG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICYjNDM7IGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiAmIzQzOzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuJiM0MztcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuJiM0MztcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgJiM0MzsxOTc0LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgJiM0MzsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4mIzQzO1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgJiM0MzsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICYjNDM7MjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuJiM0MztcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyAmIzQzOzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuJiM0MztcbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4mIzQzO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyAmIzQzOzQsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDk5YmMxMTVmODM4MGEuLmQxYzM4MjY5M2ZlZGMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC0zLDcgJiM0MzszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcbiBcdHJldHVybiAxO1xuIH1cbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXFxuIFx0XHUwMDI2XHUwMDI2IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyAmIzQzOzIxLDcgQEAgc3RydWN0IHtcbiBcbiBpbnQgdGltZXJfcmVzdWx0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uNmEyMjI1NWZjYWE3MyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX2tmdW5jcy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IGJlZTJlZWVjMDIxZDcuLmNmZmEwZGZiNmY1MjUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5AQCAtNiw3ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbmluZGV4IDdlMGNlNWRiMjhhMGQuLmIyYTcyNGEyNzkwZWIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuQEAgLTEyLDcgJiM0MzsxMiw3IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtNSw3ICYjNDM7NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU3ZGJlN2VjYWMwY2E5M2ZkZjI2MjFmMTZkYzA3NmRkODRlOTlkYjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAppbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHN0YWNrX3NpemU7CiAJaW50IHRjY19vZmZzZXQ7CiYjNDM7CXUxNiBzdGFja19hcmdfc2l6ZTsKIAl1NjQgYXJlbmFfdm1fc3RhcnQ7CiAJdTY0IHVzZXJfdm1fc3RhcnQ7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggNmI5OTcyYjA3YzFiMC4uYjNmNGJmOWUxZTdmMiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xODE1LDE4ICYjNDM7MTgxNSwzOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAogCQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHsKIAkJCWNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07Ci0JCQlpbnQgaWR4OwomIzQzOwkJCWludCBpZHgsIG5hcmdzOwogCiAJCQlmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtJmd0O3Byb2csIGluc24pOwogCQkJaWYgKCFmbSkKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBmbS0mZ3Q7bnJfYXJnczsgaWR4JiM0MzsmIzQzOykgewomIzQzOwkJCW5hcmdzID0gbWluX3QoaW50LCBmbS0mZ3Q7bnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTsKJiM0MzsJCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IG5hcmdzOyBpZHgmIzQzOyYjNDM7KSB7CiAJCQkJdTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgJiM0MzsgaWR4LCBjdHgpOwogCiAJCQkJaWYgKGZtLSZndDthcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKQogCQkJCQllbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpOwogCQkJfQomIzQzOwomIzQzOwkJCS8qIEJQRiBzdGFjayBhcmdzIC0mZ3Q7IFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5JiM0MzsgYXQgU1AmIzQzOzAgKi8KJiM0MzsJCQlpZiAoZm0tJmd0O25yX2FyZ3MgJmd0OyBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHsKJiM0MzsJCQkJaW50IG5fc3RhY2sgPSBmbS0mZ3Q7bnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsKJiM0MzsJCQkJaW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLAomIzQzOwkJCQkJCSAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTsKJiM0MzsKJiM0MzsJCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuX3JlZzsgaWR4JiM0MzsmIzQzOykgewomIzQzOwkJCQkJaW50IHN6ID0gZm0tJmd0O2FyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyAmIzQzOyBpZHhdOwomIzQzOwomIzQzOwkJCQkJZW1pdF9sZChSVl9SRUdfQTUgJiM0MzsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQlpZiAoc3ogPT0gc2l6ZW9mKGludCkpCiYjNDM7CQkJCQkJZW1pdF9zZXh0dyhSVl9SRUdfQTUgJiM0MzsgaWR4LCBSVl9SRUdfQTUgJiM0MzsgaWR4LCBjdHgpOwomIzQzOwkJCQl9CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9zdGFjayAtIG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICYjNDM7IGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpOwomIzQzOwkJCQl9CiYjNDM7CQkJfQogCQl9CiAKIAkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovCkBAIC0xODkxLDYgJiM0MzsxOTEyLDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IG9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19GUCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9sZHhfaW5zbihyZCwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgJmFtcDsmYW1wOyBpbnNuX2lzX3pleHQoJmFtcDtpbnNuWzFdKSkKJiM0MzsJCQkJcmV0dXJuIDE7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzoKQEAgLTE5MzgsNiAmIzQzOzE5NzQsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O2RzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QyLCBSVl9SRUdfU1AsIFJWX1JFR19UMiwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJLyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IGltbSAqLwogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6CiAJY2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDoKQEAgLTE5NjAsNiAmIzQzOzIwMTAsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O2RzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwkJCWlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpOwomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUWCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gc3JjICovCiAJY2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0yMDM2LDYgJiM0MzsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAKIAlzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTsKIAlzdGFja19hZGp1c3QgJiM0Mzs9IGJwZl9zdGFja19hZGp1c3Q7CiYjNDM7CXN0YWNrX2FkanVzdCAmIzQzOz0gY3R4LSZndDtzdGFja19hcmdfc2l6ZTsKIAogCXN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7CiAKQEAgLTIwOTMsNyAmIzQzOzIxNTcsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAllbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQotCQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiYjNDM7CQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTsKIAogCWN0eC0mZ3Q7c3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDsKIApAQCAtMjE3MSwzICYjNDM7MjIzNSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKQogewogCXJldHVybiB0cnVlOwogfQomIzQzOwomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IGNiZmNkMjg3ZWExNjYuLjg0NGEwZjNlMGZhOTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC03Miw2ICYjNDM7NzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAljdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7dXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwomIzQzOwomIzQzOwljdHgtJmd0O3N0YWNrX2FyZ19zaXplID0gcm91bmRfdXAoYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZykgKgomIzQzOwkJCQkgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTsKJiM0MzsKIAljdHgtJmd0O29mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLSZndDtsZW4pOwogCWlmICghY3R4LSZndDtvZmZzZXQpCiAJCWdvdG8gb3V0X29mZnNldDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwppbmRleCA4ZDM4YWFmZTY2YTI4Li5jODU0MGQzMGUyOTNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC00LDcgJiM0Mzs0LDcgQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKaW5kZXggOTliYzExNWY4MzgwYS4uZDFjMzgyNjkzZmVkYyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKQEAgLTMsNyAmIzQzOzMsNyBAQAogI2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jCmluZGV4IGM4ZDcxNmZiZDQxOTEuLmRjNWQ0MjJhODJhNTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYwpAQCAtMzc5LDcgJiM0MzszNzksNyBAQCBpbnQgZXhjZXB0aW9uX2JhZF9hc3NlcnRfcmFuZ2Vfd2l0aChzdHJ1Y3QgX19za19idWZmICpjdHgpCiAJcmV0dXJuIDE7CiB9CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcCiAJJmFtcDsmYW1wOyBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwpAQCAtMjEsNyAmIzQzOzIxLDcgQEAgc3RydWN0IHsKIAogaW50IHRpbWVyX3Jlc3VsdDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwppbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKQEAgLTYsNyAmIzQzOzYsNyBAQAogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwppbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBzdHJ1Y3QgewogCV9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTsKIH0gbWFwX2hhc2hfOGIgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li5lZDI2MDA0MWQ4MjcxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQgX19uYWtlZAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEJQRiBKSVQgU3RhY2sgQXJndW1lbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgd2l0aGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYCwgYW5kIGVuYWJsaW5nIHJlbGV2YW50IHNlbGZ0ZXN0cy4gVGhpcyBpcyBzcGVjaWZpYyB0byBSSVNDLVYsIHdoaWNoIGlzIHJlbGV2YW50IGdpdmVuIHRoZSBzdGF0ZWQgZm9jdXMuCgpUaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBPZiBjb3Vyc2UgaXQgaXMhIFdlIGNhbiBhYnNvbHV0ZWx5IHJ1biBhIFJJU0MtViBrZXJuZWwgaW4gUUVNVS4gQW5kIHRoZW4gdGhlIG5leHQgc3RlcCBpcyB0byByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIHdvcmsgd2l0aCBSSVNDLVY/IEl0IGRvZXMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBgcmlzY3Y2NGAgZXhlY3V0b3IpLiBEb2VzIHN5emthbGxlciBmdXp6IEJQRiBKSVQ/IEl0IHNob3VsZCwgaWYgaXQmIzM5O3MgY29uZmlndXJlZCBmb3IgUklTQy1WLiBUaGVyZWZvcmUgdGhpcyBjb2RlIHBhdGggKmlzKiByZWFjaGFibGUgYW5kICppcyogZnV6emFibGUsIHdoaWNoIG1lYW5zIGl0IGFsaWducyB3aXRoIG91ciBzY29wZS4KClRoaXMgaXMgYSBjb3JlIGtlcm5lbCBmZWF0dXJlIChCUEYgSklUKSBmb3IgYSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlOyBpdCYjMzk7cyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgIGluIGBicGZfaml0X2NvbXA2NC5jYCBhbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGluIGBicGZfaml0X2NvcmUuY2AuIFdlIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggb25lKHMpIGFyZSBiZXN0IGZvciBvdXIgYW5hbHlzaXMuCgpgYnBmX2ppdF9lbWl0X2luc25gIGlzIGFuIGludGVyZXN0aW5nIGNhbmRpZGF0ZS4gSG93ZXZlciwgaXQgbG9va3MgbGlrZSBhIGxhcmdlIGZ1bmN0aW9uIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGEgJiMzNDtob3QgcGF0aCYjMzQ7IGR1cmluZyBKSVQgY29tcGlsYXRpb24uIEJ1dCBob2xkIG9uLCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBpc24mIzM5O3QgYSBob3QgcGF0aCBpbiB0aGUgc2FtZSBzZW5zZSBhcyBwYWNrZXQgcHJvY2Vzc2luZywgaXQmIzM5O3MgbW9yZSBvZiBhIGNvbnRyb2wgcGF0aCAobG9hZGluZyBhIEJQRiBwcm9ncmFtKS4gU28gaXQmIzM5O3MgcHJvYmFibHkgYmV0dGVyIHRvIGZvY3VzIG9uIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAuCgpJJiMzOTtsbCBwcm9jZWVkIGJ5IGludmVzdGlnYXRpbmcgYm90aCBgYnBmX2ppdF9lbWl0X2luc25gIGFuZCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY2hhbmdlcyByZWxhdGVkIHRvIHN0YWNrIGFyZ3VtZW50IGhhbmRsaW5nLCBhbmQgaG93IHRoZXkgbWlnaHQgZXhwb3NlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgY29tcGlsYXRpb24gb3IgcHJvbG9ndWUgZ2VuZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzI0PWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJvX2ltYWdlLFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2MC1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTM2MTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cdFx0ICAgICAgYm9vbCBleHRyYV9wYXNzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGV4YWN0bHkgaG93IHRoZSBKSVQgYnVpbGRzIHRoaXMgaW5pdGlhbCBzdGFjayBmcmFtZSBmb3IgZUJQRiBwcm9ncmFtcy4gSSYjMzk7bSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNhdmluZyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzLCBwb3RlbnRpYWxseSBhbGxvY2F0aW5nIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc2V0dGluZyB1cCB0aGUgZnJhbWUgcG9pbnRlciBpZiB0aGF0JiMzOTtzIHRoZSBjaG9zZW4gQUJJLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IGRvZXMgYW55IHJlZ2lzdGVyIGFsbG9jYXRpb24gb3Igc3BpbGxpbmcgKmhlcmUqLCBvciBpZiB0aGF0JiMzOTtzIGhhbmRsZWQgYXQgYSBsYXRlciBzdGFnZSwgcG90ZW50aWFsbHkgYnkgdGhlIGdlbmVyaWMgcmVnaXN0ZXIgYWxsb2NhdG9yLgoKSSB3YW50IHRvIGtub3cgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb24gYmVpbmcgZm9sbG93ZWQgZm9yIGVCUEYsIGFuZCBob3cgdGhhdCBpcyByZWZsZWN0ZWQgaW4gdGhlIHByb2xvZ3VlLiBEb2VzIGl0IGRlYWwgd2l0aCByZXR1cm4gYWRkcmVzc2VzIG9uIHRoZSBzdGFjaywgYW5kIGhvdyBhcmUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgQlBGIHByb2dyYW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb2xvZ3VlIGludGVyYWN0cyB3aXRoIHRoZSBlcGlsb2d1ZSBkdXJpbmcgZnVuY3Rpb24gcmV0dXJuLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGludGVyYWN0aW9uIG9mIHRoZSB2YXJpb3VzIGVCUEYgcmVnaXN0ZXJzLgoKSeKAmW0gYWxzbyBjdXJpb3VzIGFib3V0IGFueSBvcHRpbWl6YXRpb25zIHRoYXQgYXJlIGRvbmUgaGVyZS4gRm9yIGluc3RhbmNlLCBpcyB0aGUgcHJvbG9ndWUgY29kZSBnZW5lcmF0ZWQgaW5saW5lLCBvciBkb2VzIGl0IHV0aWxpemUgc29tZSBraW5kIG9mIHByZS1idWlsdCB0ZW1wbGF0ZT8gQW55IGNsZXZlciB0cmlja3MgdG8gbWluaW1pemUgb3ZlcmhlYWQgd291bGQgYmUgd29ydGggbm90aW5nLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBwZXJmb3JtYW5jZS1jcml0aWNhbCBuYXR1cmUgb2YgZUJQRi4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0b28sIHRvIHNlZSB3aGF0IGFyY2hpdGVjdHVyZXMvY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2MT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzQtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIwNzU6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1ODgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfaW50X2ppdF9jb21waWxlYCoqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsJiMzOTtzIEpJVCBjb21waWxlciBmb3IgQlBGIGluc3RydWN0aW9ucyB3b3JrcyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSB0eXBpY2FsIGFyY2hpdGVjdHVyZSBhbmQgZGF0YSBmbG93IGhlcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdGhlIEJQRiBieXRlY29kZSBpcyB0cmFuc2xhdGVkIGludG8gbmF0aXZlIG1hY2hpbmUgY29kZS4gV2hhdCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb25zIGFyZSBlbXBsb3llZCwgYW5kIHdoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgYXJlIGltcGxlbWVudGVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlucHV0cyB0aGlzIGZ1bmN0aW9uIHRha2VzLCBhbmQgd2hhdCBzb3J0IG9mIG1lbW9yeSBsYXlvdXQgaXMgY3JlYXRlZC4gSXMgdGhpcyBhIGNvZGUgZ2VuZXJhdGlvbiBzdGVwLCBhIGxpbmtpbmcgcGhhc2UsIG9yIGJvdGg/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaW50ZXJlc3RpbmcgY29ybmVyIGNhc2VzIG9yIGxlc3MtdGhhbi1vYnZpb3VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9Mzk9Ym9vbCBicGZfaml0X25lZWRzX3pleHQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00My1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjQ0OnN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk4OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSSVNDLVYgQlBGIFN0YWNrIEFyZ3VtZW50IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZ2V0dGluZyBCUEYgc3RhY2sgYXJndW1lbnRzIHdvcmtpbmcgb24gUklTQy1WLiBUaGF0JiMzOTtzIGEgc2lnbmlmaWNhbnQgc3RlcCEgSXQgbG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBmb2N1c2VkIHRoZSBjaGFuZ2VzIG9uIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGVzZSBmdW5jdGlvbnM6IGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJnc2AuIE1ha2VzIHNlbnNlIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBhcmVhcyBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZyBzdGFjayBhcmd1bWVudHMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi4KClRvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIHRoZSBzeXN0ZW0gd2lsbCwgb2YgY291cnNlLCBuZWVkIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBCUEYgSklUIHN1cHBvcnQuIFRoZSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgcHJlcmVxdWlzaXRlLCBgUklTQ1ZgLCBhbHNvIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvcmlzY3YvS2NvbmZpZ2AgZmlsZSB0byBzZWUgaG93IGBCUEZfSklUYCBpcyBkZWZpbmVkIGluIHRoZSBSSVNDLVYgY29udGV4dC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIGludGVncmF0aW5nIHRoaXMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzk1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKk5hdmlnYXRpbmcgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcHJvYmFibHkgYEJQRl9KSVRgLiBHaXZlbiB0aGUgc3RhbmRhcmQgY29udmVudGlvbiwgbXkgZ3V0IGluc3RpbmN0IHNheXMgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgd2l0aGluIHRoZSBgaW5pdC9LY29uZmlnYCBvciBtYXliZSBuZXN0bGVkIHdpdGhpbiB0aGUgQlBGLXNwZWNpZmljIHNlY3Rpb24gaW4gYGtlcm5lbC9icGYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBzdGFydCBsb29raW5nLiBObyByZWFsIG5lZWQgdG8gb3ZlcnRoaW5rIGl0IC0gdGhlIG5hbWUgYEJQRl9KSVRgIGlzIHByZXR0eSBzdGFuZGFyZCwgc28gaXQgc2hvdWxkIGJlIGVhc3kgZW5vdWdoIHRvIHRyYWNrIGRvd24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNTctXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLgoKKipCUEYgSklUIENvbmZpZ3VyYXRpb24gYW5kIExvY2F0aW9uIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQmIzM5O3MgdGhlIGZsYWcgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHdlJiMzOTtyZSBnb2luZyB0byBiZSB1c2luZyB0aGUgSklUIGNvbXBpbGVyIGZvciBCUEYgcHJvZ3JhbXMuIFRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhpcyBhcmUgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLiBUaGVzZSBmaWxlcyBzcGVjaWZpY2FsbHksIGFyZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhlc2UgZmlsZXMgYXJlICphY3R1YWxseSogY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IGFsd2F5cyBhIGdvb2Qgc2FuaXR5IGNoZWNrLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIG1ha2Ugc3VyZSB0aGUgcHJlcHJvY2Vzc29yIGlzIGRvaW5nIHdoYXQgaXQgc2hvdWxkIGJlLiBUaGUgZGVwZW5kZW5jeSBncmFwaCBzaG91bGQgbWFrZSB0aGlzIHJlbGF0aXZlbHkgY2xlYXIuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9jb21wNjQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9NYWtlZmlsZT01PWlmZXEgKCQoQ09ORklHX0FSQ0hfUlY2NEkpLHkpXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNDMKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMzI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyB3aXRoaW4gdGhlIFJJU0MtViBKSVQgY29tcGlsZXIuIFRoZSBmaXJzdCB0aGluZyBJIHNlZSBpcyB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZS4gVGhhdCBtYWtlcyBzZW5zZSwgbm8gSklULCBubyBzdGFjayBhcmd1bWVudHMgaW4gdGhlIEpJVC4gYENPTkZJR19BUkNIX1JWNjRJYCBpcyBhbHNvIHJlcXVpcmVkLCBidXQgdGhhdCYjMzk7cyBleHBlY3RlZCBmb3IgYSA2NC1iaXQgUklTQy1WIGFyY2hpdGVjdHVyZSwgc28gbm8gc3VycHJpc2VzIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgYWRkaXRpb24gb2Ygc3RhY2sgYXJndW1lbnQgc3VwcG9ydCwgd2hpY2ggc2NyZWFtcyAqZnVuY3Rpb25hbCBjaGFuZ2UqLiBXb3J0aCBmdXp6aW5nLCBubyBkb3VidC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIG1vZGlmaWNhdGlvbi4gSSBpbml0aWFsbHkgbGlzdGVkIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC4KCmBicGZfaml0X2VtaXRfaW5zbmAuLi4geWVwLCB0aGF0JiMzOTtzIHRoZSBiaWcgb25lLiBJdCYjMzk7cyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgZW1pdHRpbmcgdGhlIEpJVCBpbnN0cnVjdGlvbnMuIEl04oCZcyBjcml0aWNhbC4gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGxvb2tzIGdvb2QgdG9vLCBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgcHJvbG9ndWUsIHNvIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgY2hhbmdlcyB0aGVyZSB0byBoYW5kbGUgdGhlc2UgYXJndW1lbnRzLiBBbmQgZmluYWxseSwgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBpdHNlbGYg4oCTIHRoYXTigJlzIHZpdGFsIHRvby4KCkkgc2hvdWxkIHJlZmluZSB0aG9zZSBmb2N1cyBzeW1ib2xzIGEgbGl0dGxlIGJpdDoKCiogICBgYnBmX2ppdF9lbWl0X2luc25gCiogICBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAKKiAgIGBicGZfaW50X2ppdF9jb21waWxlYAoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQsIGNvbmNyZXRlbHkuIFRoaXMgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIGhhbmRsZXMgc3RhY2sgYXJndW1lbnRzLiBJdOKAmXMgdHdlYWtpbmcgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MsIGFuZCB0aGUgcHJvbG9ndWUgZ2VuZXJhdGlvbiBwcm9jZXNzLCB0byBlbnN1cmUgdGhlc2UgYXJndW1lbnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gQW55IGNoYW5nZXMgdG8gY29yZSBmdW5jdGlvbmFsaXR5IGxpa2UgdGhpcyBkZW1hbmRzIGNhcmVmdWwgZnV6emluZy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aG9zZSBrZXkgZnVuY3Rpb25zLiBXZSBuZWVkIHRvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBsb2dpYyBidWdzIHRoYXQgbWlnaHQgc2xpcCBpbiBkdXJpbmcgdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGUgYEJQRl9KSVRgIGNvbmZpZyBpcyBnb2luZyB0byBiZSB0aGUgY2VudHJhbCBjb25maWcgZm9yIHRoZSB0ZXN0cyBJJiMzOTtsbCBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDA2OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciB0byBzdXBwb3J0IHN0YWNrIGFyZ3VtZW50cyBmb3IgZUJQRiBwcm9ncmFtcy4gVGhlc2UgY2hhbmdlcyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIFJJU0MtViBhbmQgd2lsbCBub3QgYmUgZXhlcmNpc2VkIGJ5IGEgc3RhbmRhcmQgeDg2XzY0IEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gRnVydGhlcm1vcmUsIGJ1Z3MgaW4gSklUIGNvbXBpbGF0aW9uIGxvZ2ljIChzdWNoIGFzIGluY29ycmVjdCByZWdpc3RlciBhc3NpZ25tZW50cyBvciBzdGFjayBvZmZzZXRzKSB0eXBpY2FsbHkgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLCByZWdpc3RlciBjb3JydXB0aW9uLCBvciBjb250cm9sLWZsb3cgaGlqYWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgY3Jhc2hlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgc2VsZnRlc3Qgc3VpdGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMsIGNvbXBsZXggdW5pbml0aWFsaXplZCBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrIHZlY3RvcnMgdGhhdCB3b3VsZCBzcGVjaWZpY2FsbHkgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDA2OjI2OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKQEAgLTgyLDYgJiM0Mzs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgc3RhY2tfc2l6ZTsKIAlpbnQgdGNjX29mZnNldDsKJiM0MzsJdTE2IHN0YWNrX2FyZ19zaXplOwogCXU2NCBhcmVuYV92bV9zdGFydDsKIAl1NjQgdXNlcl92bV9zdGFydDsKIH07CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCA2Yjk5NzJiMDdjMWIwLi5iM2Y0YmY5ZTFlN2YyIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE4MTUsMTggJiM0MzsxODE1LDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCiAJCWlmIChpbnNuLSZndDtzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkgewogCQkJY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTsKLQkJCWludCBpZHg7CiYjNDM7CQkJaW50IGlkeCwgbmFyZ3M7CiAKIAkJCWZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC0mZ3Q7cHJvZywgaW5zbik7CiAJCQlpZiAoIWZtKQogCQkJCXJldHVybiAtRUlOVkFMOwogCi0JCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IGZtLSZndDtucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJbmFyZ3MgPSBtaW5fdChpbnQsIGZtLSZndDtucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpOwomIzQzOwkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbmFyZ3M7IGlkeCYjNDM7JiM0MzspIHsKIAkJCQl1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSAmIzQzOyBpZHgsIGN0eCk7CiAKIAkJCQlpZiAoZm0tJmd0O2FyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpCiAJCQkJCWVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7CiAJCQl9CiYjNDM7CiYjNDM7CQkJLyogQlBGIHN0YWNrIGFyZ3MgLSZndDsgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkmIzQzOyBhdCBTUCYjNDM7MCAqLwomIzQzOwkJCWlmIChmbS0mZ3Q7bnJfYXJncyAmZ3Q7IE1BWF9CUEZfRlVOQ19SRUdfQVJHUykgewomIzQzOwkJCQlpbnQgbl9zdGFjayA9IGZtLSZndDtucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTOwomIzQzOwkJCQlpbnQgbl9yZWcgPSBtaW5fdChpbnQsIG5fc3RhY2ssCiYjNDM7CQkJCQkJICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpOwomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IG5fcmVnOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19BNSAmIzQzOyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsJCQkJCWlmIChzeiA9PSBzaXplb2YoaW50KSkKJiM0MzsJCQkJCQllbWl0X3NleHR3KFJWX1JFR19BNSAmIzQzOyBpZHgsIFJWX1JFR19BNSAmIzQzOyBpZHgsIGN0eCk7CiYjNDM7CQkJCX0KJiM0MzsKJiM0MzsJCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuX3N0YWNrIC0gbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX1QxLCAobl9yZWcgJiM0MzsgaWR4KSAqIDgsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsJCQkJCWVtaXRfc2QoUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCX0KJiM0MzsJCQl9CiAJCX0KIAogCQkvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBicGYyYnBmIGNhbGwgKi8KQEAgLTE4OTEsNiAmIzQzOzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOgomIzQzOwkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHsKJiM0MzsJCQlpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpOwomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJaWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyAmYW1wOyZhbXA7IGluc25faXNfemV4dCgmYW1wO2luc25bMV0pKQomIzQzOwkJCQlyZXR1cm4gMTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOgpAQCAtMTkzOCw2ICYjNDM7MTk3NCwyMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzoKIAljYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7ZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSAtb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpOwomIzQzOwkJCQllbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpOwomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovCiAJY2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjoKIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMTk2MCw2ICYjNDM7MjAxMCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7ZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSAtb2ZmIC8gOCAtIDE7CiYjNDM7CiYjNDM7CQkJaWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1NQLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QxLCAwLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQkJfQomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJLyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBzcmMgKi8KIAljYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjoKIAljYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDoKQEAgLTIwMzYsNiAmIzQzOzIwOTksNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAogCXN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pOwogCXN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDsKJiM0MzsJc3RhY2tfYWRqdXN0ICYjNDM7PSBjdHgtJmd0O3N0YWNrX2FyZ19zaXplOwogCiAJc3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODsKIApAQCAtMjA5Myw3ICYjNDM7MjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCWVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpOwogCiAJaWYgKGJwZl9zdGFja19hZGp1c3QpCi0JCWVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTsKJiM0MzsJCWVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LSZndDtzdGFja19hcmdfc2l6ZSAmIzQzOyBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwogCiAJY3R4LSZndDtzdGFja19zaXplID0gc3RhY2tfYWRqdXN0OwogCkBAIC0yMTcxLDMgJiM0MzsyMjM1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTcyLDYgJiM0Mzs3MiwxMCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCWN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDt1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7cHJvZyA9IHByb2c7CiYjNDM7CiYjNDM7CWN0eC0mZ3Q7c3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqCiYjNDM7CQkJCSAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pOwomIzQzOwogCWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKIAkJZ290byBvdXRfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKQEAgLTQsNyAmIzQzOzQsNyBAQAogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw3IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMKaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jCkBAIC0zNzksNyAmIzQzOzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eCkKIAlyZXR1cm4gMTsKIH0KIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFwKIAkmYW1wOyZhbXA7IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi44YmE0OTkxYmJhYmQ0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsNyBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKaW5kZXggMzQ1ZjJkYTJlMzYxYi4uNmEyMjI1NWZjYWE3MyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwpAQCAtNiw3ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmIzM0O2JwZl9rZnVuY3MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCmluZGV4IGJlZTJlZWVjMDIxZDcuLmNmZmEwZGZiNmY1MjUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNiw3ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmIyYTcyNGEyNzkwZWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCmluZGV4IGM5ZmU0ODU3ZGEzZjUuLmVkMjYwMDQxZDgyNzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKQEAgLTUsNyAmIzQzOzUsNyBAQAogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAwNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzcwCgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDk4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSSVNDLVYgQlBGIEpJVCBTdGFjayBBcmd1bWVudCBTdXBwb3J0IC0gS01TQU4gQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGBicGZfaml0X2NvbXA2NC5jYCBhbmQgYGJwZl9qaXRfY29yZS5jYCB0byBoYW5kbGUgYEJQRl9SRUdfUEFSQU1TYCBhbmQgc3RhY2sgYXJndW1lbnRzIGZvciBga2Z1bmNgIGNhbGxzLiBNeSBhbmFseXNpcyBjZW50ZXJzIGFyb3VuZCBtZW1vcnkgc2FmZXR5IGFuZCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIHNwZWNpZmljYWxseS4KCkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjaGFuZ2VzIGluIGBicGZfaml0X2VtaXRfaW5zbmAgc2VlbSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBoYW5kbGluZyBgQlBGX1BTRVVET19LRlVOQ19DQUxMYCBhbmQgbG9hZGluZy9zdG9yaW5nIGFyZ3VtZW50cyBmcm9tIHRoZSBCUEYgc3RhY2sgdG8gUklTQy1WIHJlZ2lzdGVycyAoQTUtQTcpIG9yIHRoZSBSSVNDLVYgc3RhY2suIFRoZSBwcm9sb2d1ZSBhZGp1c3RtZW50IGFuZCBzdGFjayBzaXplIGNhbGN1bGF0aW9uIGFsc28gc2VlbSByZWFzb25hYmxlLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGFzIGFsd2F5cyB3aXRoIEpJVCBjb21waWxlcnMsIGlzIGVuc3VyaW5nIHRoZSBnZW5lcmF0ZWQgUklTQy1WIG1hY2hpbmUgY29kZSBpcyBjb3JyZWN0IGFuZCBzYWZlLiBBIGJ1ZyBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBpc3N1ZXMg4oCTIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIGV2ZW4gYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uLiBIb3dldmVyLCB0aGVzZSBhcmUgcHJlY2lzZWx5IHRoZSBraW5kcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpNeSBuZXh0IHN0ZXAgd2FzIHRvIGNvbnNpZGVyIEtNU0FOLiBXaGlsZSBLTVNBTiBpcyBleGNlbGxlbnQgYXQgZGV0ZWN0aW5nIHVzZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIHRoZSB2YXJpYWJsZXMgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIGFwcGVhciB0byBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4gVGhlICpnZW5lcmF0ZWQqIGNvZGUgaXMgdGhlIGtleS4gSWYgdGhlIEpJVCBjb21waWxlciBoYXMgYSBidWcgYW5kIGdlbmVyYXRlcyBjb2RlIHRoYXQgcmVhZHMgZnJvbSB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgS01TQU4gKm1pZ2h0KiBjYXRjaCBpdCwgYXNzdW1pbmcgS01TQU4gaXMgZXZlbiBzdXBwb3J0ZWQgb24gUklTQy1WLiBUaGF0IHdhcyB0aGUgbmV4dCBxdWVzdGlvbi4KCkkgbmVlZGVkIHRvIGRldGVybWluZSBpZiBLTVNBTiB3b3JrZWQgb24gUklTQy1WLiBMb29raW5nIGF0IGBhcmNoL3Jpc2N2L0tjb25maWdgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLCBidXQgSSByZW1lbWJlciBpdCYjMzk7cyBub3Qgc3VwcG9ydGVkLiBFdmVuIGlmIGl0ICp3ZXJlKiwgdGhlIHBhdGNoIGlzIHNwZWNpZmljYWxseSBmb3IgUklTQy1WLiBUZXN0aW5nIEtNU0FOIG9uIHg4Nl82NCwgYXMgaXMgdHlwaWNhbCwgd291bGRuJiMzOTt0IGV4ZXJjaXNlIHRoaXMgY29kZS4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGlzIG9ubHkgY29tcGlsZWQgZm9yIFJJU0MtVi4gU28geDg2XzY0IHN5emthbGxlciBpbnN0YW5jZXMgd2lsbCBoYXZlIHplcm8gY292ZXJhZ2UuCgpFdmVuIGlmIEtNU0FOICp3ZXJlKiBhdmFpbGFibGUgYW5kICpjb3VsZCogdGVzdCBSSVNDLVYgSklULCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgSklUIGJ1Z3MgaW4gdGhpcyBhcmVhIGFyZSBtb3JlIGxpa2VseSB0byByZXN1bHQgaW4gY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMuIEtBU0FOIGFuZCBCUEYgc2VsZnRlc3RzIHdvdWxkIGJlIG1vcmUgZWZmZWN0aXZlLiBUaGUgcGF0Y2ggaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzIG9yIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMgYmV5b25kIHRoZSBub3JtYWwgcmlzayBvZiBKSVQgY29tcGlsZXIgYnVncy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGBOZWVkc0tNU0FOYCBpcyBmYWxzZS4gVGhlIGNoYW5nZXMgYXJlIFJJU0MtViBzcGVjaWZpYywgYW5kIGJ1Z3MgYXJlIGxpa2VseSBkZXRlY3RhYmxlIHZpYSBLQVNBTiBhbmQgc2VsZnRlc3RzLCBldmVuIGlmIEtNU0FOIHdlcmUgYXZhaWxhYmxlLiBTbywgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGBOZWVkc0tNU0FOPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMDY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjozMy44MDU2NDY4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU5MTM4NzA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciB0byBzdXBwb3J0IHN0YWNrIGFyZ3VtZW50cyBmb3IgZUJQRiBwcm9ncmFtcy4gVGhlc2UgY2hhbmdlcyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIFJJU0MtViBhbmQgd2lsbCBub3QgYmUgZXhlcmNpc2VkIGJ5IGEgc3RhbmRhcmQgeDg2XzY0IEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gRnVydGhlcm1vcmUsIGJ1Z3MgaW4gSklUIGNvbXBpbGF0aW9uIGxvZ2ljIChzdWNoIGFzIGluY29ycmVjdCByZWdpc3RlciBhc3NpZ25tZW50cyBvciBzdGFjayBvZmZzZXRzKSB0eXBpY2FsbHkgcmVzdWx0IGluIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLCByZWdpc3RlciBjb3JydXB0aW9uLCBvciBjb250cm9sLWZsb3cgaGlqYWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBhbmQgY3Jhc2hlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgc2VsZnRlc3Qgc3VpdGUuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMsIGNvbXBsZXggdW5pbml0aWFsaXplZCBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrIHZlY3RvcnMgdGhhdCB3b3VsZCBzcGVjaWZpY2FsbHkgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6MzMuODA1NjUzMTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2ODQ5MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTdkYmU3ZWNhYzBjYTkzZmRmMjYyMWYxNmRjMDc2ZGQ4NGU5OWRiMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdGludCBzdGFja19zaXplO1xcbiBcXHRpbnQgdGNjX29mZnNldDtcXG4rXFx0dTE2IHN0YWNrX2FyZ19zaXplO1xcbiBcXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XFxuIFxcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xcbiB9O1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IDZiOTk3MmIwN2MxYjAuLmIzZjRiZjllMWU3ZjIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTgxNSwxOCArMTgxNSwzOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFxuIFxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xcbiBcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xcbi1cXHRcXHRcXHRpbnQgaWR4O1xcbitcXHRcXHRcXHRpbnQgaWR4LCBuYXJncztcXG4gXFxuIFxcdFxcdFxcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cXHUwMDNlcHJvZywgaW5zbik7XFxuIFxcdFxcdFxcdGlmICghZm0pXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBmbS1cXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcXG4rXFx0XFx0XFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVxcdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xcbitcXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIG5hcmdzOyBpZHgrKykge1xcbiBcXHRcXHRcXHRcXHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcXG4gXFxuIFxcdFxcdFxcdFxcdGlmIChmbS1cXHUwMDNlYXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSlcXG4gXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTtcXG4gXFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0LyogQlBGIHN0YWNrIGFyZ3MgLVxcdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkrIGF0IFNQKzAgKi9cXG4rXFx0XFx0XFx0aWYgKGZtLVxcdTAwM2Vucl9hcmdzIFxcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XFxuK1xcdFxcdFxcdFxcdGludCBuX3N0YWNrID0gZm0tXFx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XFxuK1xcdFxcdFxcdFxcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xcbitcXG4rXFx0XFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcXG4rXFx0XFx0XFx0XFx0XFx0aW50IHN6ID0gZm0tXFx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XFxuK1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19BNSArIGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2Mgbl9zdGFjayAtIG5fcmVnOyBpZHgrKykge1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgKG5fcmVnICsgaWR4KSAqIDgsIFJWX1JFR19TUCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xcbkBAIC0xODkxLDYgKzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRcXHRcXHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xcbitcXHRcXHRcXHRcXHRlbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXIFxcdTAwMjZcXHUwMDI2IGluc25faXNfemV4dChcXHUwMDI2aW5zblsxXSkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAxO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcXG5AQCAtMTkzOCw2ICsxOTc0LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6XFxuIFxcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcXG4rXFx0XFx0aWYgKGluc24tXFx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcXG4rXFx0XFx0XFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xcbitcXHRcXHRcXHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcXG5AQCAtMTk2MCw2ICsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6XFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcXG4rXFx0XFx0aWYgKGluc24tXFx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcXG4rXFx0XFx0XFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0LyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gc3JjICovXFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcXG5AQCAtMjAzNiw2ICsyMDk5LDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcbiBcXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcXG4gXFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XFxuK1xcdHN0YWNrX2FkanVzdCArPSBjdHgtXFx1MDAzZXN0YWNrX2FyZ19zaXplO1xcbiBcXG4gXFx0c3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODtcXG4gXFxuQEAgLTIwOTMsNyArMjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbiBcXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbi1cXHRcXHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuK1xcdFxcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVxcdTAwM2VzdGFja19hcmdfc2l6ZSArIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcbiBcXHRjdHgtXFx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XFxuIFxcbkBAIC0yMTcxLDMgKzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhcmVuYSk7XFxuIFxcdGN0eC1cXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2Vwcm9nID0gcHJvZztcXG4rXFxuK1xcdGN0eC1cXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXFxuK1xcdFxcdFxcdFxcdCAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pO1xcbitcXG4gXFx0Y3R4LVxcdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cXHUwMDNlbGVuKTtcXG4gXFx0aWYgKCFjdHgtXFx1MDAzZW9mZnNldClcXG4gXFx0XFx0Z290byBvdXRfb2Zmc2V0O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5jODU0MGQzMGUyOTNkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC00LDcgKzQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5AQCAtMyw3ICszLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY3ZtbGludXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xcbmluZGV4IGM4ZDcxNmZiZDQxOTEuLmRjNWQ0MjJhODJhNTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcXG5AQCAtMzc5LDcgKzM3OSw3IEBAIGludCBleGNlcHRpb25fYmFkX2Fzc2VydF9yYW5nZV93aXRoKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcXG4gXFx0cmV0dXJuIDE7XFxuIH1cXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFxcXFxcbiBcXHRcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi44YmE0OTkxYmJhYmQ0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw3IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xcbmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICNpbmNsdWRlIFxcXCJicGZfa2Z1bmNzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTYsNyArNiw3IEBAXFxuICNpbmNsdWRlIFxcXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw3IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWRcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5AQCAtNSw3ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjM1LjM3MzU1MjE3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MDM2NDcwNzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGluc3RydWN0aW9uIGVtaXNzaW9uIGFuZCBwcm9sb2d1ZSBnZW5lcmF0aW9uIHRvIGhhbmRsZSBzdGFjayBhcmd1bWVudHMgY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBmb3IgUklTQy1WIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBhbmQgcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbG9naWMgYnVncyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1N2RiZTdlY2FjMGNhOTNmZGYyNjIxZjE2ZGMwNzZkZDg0ZTk5ZGIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMDY6MjY6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuK1x0dTE2IHN0YWNrX2FyZ19zaXplO1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNmI5OTcyYjA3YzFiMC4uYjNmNGJmOWUxZTdmMiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xODE1LDE4ICsxODE1LDM5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFxuIFx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xuIFx0XHRcdGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07XG4tXHRcdFx0aW50IGlkeDtcbitcdFx0XHRpbnQgaWR4LCBuYXJncztcbiBcbiBcdFx0XHRmbSA9IGJwZl9qaXRfZmluZF9rZnVuY19tb2RlbChjdHgtXHUwMDNlcHJvZywgaW5zbik7XG4gXHRcdFx0aWYgKCFmbSlcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgrKykge1xuK1x0XHRcdG5hcmdzID0gbWluX3QoaW50LCBmbS1cdTAwM2Vucl9hcmdzLCBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuK1x0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuYXJnczsgaWR4KyspIHtcbiBcdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xuIFxuIFx0XHRcdFx0aWYgKGZtLVx1MDAzZWFyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpXG4gXHRcdFx0XHRcdGVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7XG4gXHRcdFx0fVxuK1xuK1x0XHRcdC8qIEJQRiBzdGFjayBhcmdzIC1cdTAwM2UgUklTQy1WIEFCSTogYXJncyA2LTggaW4gQTUtQTcsIDkrIGF0IFNQKzAgKi9cbitcdFx0XHRpZiAoZm0tXHUwMDNlbnJfYXJncyBcdTAwM2UgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7XG4rXHRcdFx0XHRpbnQgbl9zdGFjayA9IGZtLVx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XG4rXHRcdFx0XHRpbnQgbl9yZWcgPSBtaW5fdChpbnQsIG5fc3RhY2ssXG4rXHRcdFx0XHRcdFx0ICBSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpO1xuK1xuK1x0XHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5fcmVnOyBpZHgrKykge1xuK1x0XHRcdFx0XHRpbnQgc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgKyBpZHhdO1xuK1xuK1x0XHRcdFx0XHRlbWl0X2xkKFJWX1JFR19BNSArIGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuK1x0XHRcdFx0XHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXG4rXHRcdFx0XHRcdFx0ZW1pdF9zZXh0dyhSVl9SRUdfQTUgKyBpZHgsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcbitcdFx0XHRcdH1cbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3N0YWNrIC0gbl9yZWc7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAobl9yZWcgKyBpZHgpICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0fVxuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHQvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBicGYyYnBmIGNhbGwgKi9cbkBAIC0xODkxLDYgKzE5MTIsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IG9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19GUCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXIFx1MDAyNlx1MDAyNiBpbnNuX2lzX3pleHQoXHUwMDI2aW5zblsxXSkpXG4rXHRcdFx0XHRyZXR1cm4gMTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgKzE5NzQsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2Vkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbitcbitcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTtcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMiwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IGltbSAqL1xuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMTk2MCw2ICsyMDEwLDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1NQLCBSVl9SRUdfVDEsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdC8qIFNUWCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgKzIwOTksNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xuIFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XG4rXHRzdGFja19hZGp1c3QgKz0gY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplO1xuIFxuIFx0c3RvcmVfb2Zmc2V0ID0gc3RhY2tfYWRqdXN0IC0gODtcbiBcbkBAIC0yMDkzLDcgKzIxNTcsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4tXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbitcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgKyBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0Y3R4LVx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XG4gXG5AQCAtMjE3MSwzICsyMjM1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuK1xuK2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpXG4re1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjYuLjg0NGEwZjNlMGZhOTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC03Miw2ICs3MiwxMCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Y3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbitcbitcdGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICpcbitcdFx0XHRcdCAgICAgICBzaXplb2YodTY0KSwgU1RBQ0tfQUxJR04pO1xuK1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmM4NTQwZDMwZTI5M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyArNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uZDFjMzgyNjkzZmVkYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuaW5kZXggYzhkNzE2ZmJkNDE5MS4uZGM1ZDQyMmE4MmE1MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmNcbkBAIC0zNzksNyArMzc5LDcgQEAgaW50IGV4Y2VwdGlvbl9iYWRfYXNzZXJ0X3JhbmdlX3dpdGgoc3RydWN0IF9fc2tfYnVmZiAqY3R4KVxuIFx0cmV0dXJuIDE7XG4gfVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXFxcbiBcdFx1MDAyNlx1MDAyNiBkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbmluZGV4IDk0NGUzYmI2MDNlN2UuLjhiYTQ5OTFiYmFiZDQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuQEAgLTIxLDcgKzIxLDcgQEAgc3RydWN0IHtcbiBcbiBpbnQgdGltZXJfcmVzdWx0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi42YTIyMjU1ZmNhYTczIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgKzYsNyBAQFxuICNpbmNsdWRlIFwiYnBmX2tmdW5jcy5oXCJcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uY2ZmYTBkZmI2ZjUyNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsNyBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuaW5kZXggN2UwY2U1ZGIyOGEwZC4uYjJhNzI0YTI3OTBlYiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5AQCAtMTIsNyArMTIsNyBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwiLm1hcHNcIik7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IGM5ZmU0ODU3ZGEzZjUuLmVkMjYwMDQxZDgyNzEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjM1LjM3MzU1NDQzMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTAxODM2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBTdGFjayBBcmd1bWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN0YWNrIGFyZ3VtZW50IHN1cHBvcnQgdG8gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHdpdGhpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2AsIGFuZCBlbmFibGluZyByZWxldmFudCBzZWxmdGVzdHMuIFRoaXMgaXMgc3BlY2lmaWMgdG8gUklTQy1WLCB3aGljaCBpcyByZWxldmFudCBnaXZlbiB0aGUgc3RhdGVkIGZvY3VzLlxuXG5UaGUgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBPZiBjb3Vyc2UgaXQgaXMhIFdlIGNhbiBhYnNvbHV0ZWx5IHJ1biBhIFJJU0MtViBrZXJuZWwgaW4gUUVNVS4gQW5kIHRoZW4gdGhlIG5leHQgc3RlcCBpcyB0byByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIHdvcmsgd2l0aCBSSVNDLVY/IEl0IGRvZXMgKHNwZWNpZmljYWxseSB3aXRoIHRoZSBgcmlzY3Y2NGAgZXhlY3V0b3IpLiBEb2VzIHN5emthbGxlciBmdXp6IEJQRiBKSVQ/IEl0IHNob3VsZCwgaWYgaXQncyBjb25maWd1cmVkIGZvciBSSVNDLVYuIFRoZXJlZm9yZSB0aGlzIGNvZGUgcGF0aCAqaXMqIHJlYWNoYWJsZSBhbmQgKmlzKiBmdXp6YWJsZSwgd2hpY2ggbWVhbnMgaXQgYWxpZ25zIHdpdGggb3VyIHNjb3BlLlxuXG5UaGlzIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZSAoQlBGIEpJVCkgZm9yIGEgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZTsgaXQncyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYCBpbiBgYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBpbiBgYnBmX2ppdF9jb3JlLmNgLiBXZSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIG9uZShzKSBhcmUgYmVzdCBmb3Igb3VyIGFuYWx5c2lzLlxuXG5gYnBmX2ppdF9lbWl0X2luc25gIGlzIGFuIGludGVyZXN0aW5nIGNhbmRpZGF0ZS4gSG93ZXZlciwgaXQgbG9va3MgbGlrZSBhIGxhcmdlIGZ1bmN0aW9uIGFuZCBtaWdodCBiZSBjb25zaWRlcmVkIGEgXCJob3QgcGF0aFwiIGR1cmluZyBKSVQgY29tcGlsYXRpb24uIEJ1dCBob2xkIG9uLCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBpc24ndCBhIGhvdCBwYXRoIGluIHRoZSBzYW1lIHNlbnNlIGFzIHBhY2tldCBwcm9jZXNzaW5nLCBpdCdzIG1vcmUgb2YgYSBjb250cm9sIHBhdGggKGxvYWRpbmcgYSBCUEYgcHJvZ3JhbSkuIFNvIGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGZvY3VzIG9uIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAuXG5cbkknbGwgcHJvY2VlZCBieSBpbnZlc3RpZ2F0aW5nIGJvdGggYGJwZl9qaXRfZW1pdF9pbnNuYCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNoYW5nZXMgcmVsYXRlZCB0byBzdGFjayBhcmd1bWVudCBoYW5kbGluZywgYW5kIGhvdyB0aGV5IG1pZ2h0IGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIGNvbXBpbGF0aW9uIG9yIHByb2xvZ3VlIGdlbmVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo0NC42ODM3NDI2ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyMjk1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjQ9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzYxOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjQ0Ljc2ODk3OTAyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzkzMzk5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgaW50byBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGUgSklUIGJ1aWxkcyB0aGlzIGluaXRpYWwgc3RhY2sgZnJhbWUgZm9yIGVCUEYgcHJvZ3JhbXMuIEknbSBhc3N1bWluZyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNhdmluZyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzLCBwb3RlbnRpYWxseSBhbGxvY2F0aW5nIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc2V0dGluZyB1cCB0aGUgZnJhbWUgcG9pbnRlciBpZiB0aGF0J3MgdGhlIGNob3NlbiBBQkkuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgZG9lcyBhbnkgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvciBzcGlsbGluZyAqaGVyZSosIG9yIGlmIHRoYXQncyBoYW5kbGVkIGF0IGEgbGF0ZXIgc3RhZ2UsIHBvdGVudGlhbGx5IGJ5IHRoZSBnZW5lcmljIHJlZ2lzdGVyIGFsbG9jYXRvci5cblxuSSB3YW50IHRvIGtub3cgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb24gYmVpbmcgZm9sbG93ZWQgZm9yIGVCUEYsIGFuZCBob3cgdGhhdCBpcyByZWZsZWN0ZWQgaW4gdGhlIHByb2xvZ3VlLiBEb2VzIGl0IGRlYWwgd2l0aCByZXR1cm4gYWRkcmVzc2VzIG9uIHRoZSBzdGFjaywgYW5kIGhvdyBhcmUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgQlBGIHByb2dyYW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb2xvZ3VlIGludGVyYWN0cyB3aXRoIHRoZSBlcGlsb2d1ZSBkdXJpbmcgZnVuY3Rpb24gcmV0dXJuLiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gb2YgdGhlIHZhcmlvdXMgZUJQRiByZWdpc3RlcnMuXG5cbknigJltIGFsc28gY3VyaW91cyBhYm91dCBhbnkgb3B0aW1pemF0aW9ucyB0aGF0IGFyZSBkb25lIGhlcmUuIEZvciBpbnN0YW5jZSwgaXMgdGhlIHByb2xvZ3VlIGNvZGUgZ2VuZXJhdGVkIGlubGluZSwgb3IgZG9lcyBpdCB1dGlsaXplIHNvbWUga2luZCBvZiBwcmUtYnVpbHQgdGVtcGxhdGU/IEFueSBjbGV2ZXIgdHJpY2tzIHRvIG1pbmltaXplIG92ZXJoZWFkIHdvdWxkIGJlIHdvcnRoIG5vdGluZywgZXNwZWNpYWxseSBnaXZlbiB0aGUgcGVyZm9ybWFuY2UtY3JpdGljYWwgbmF0dXJlIG9mIGVCUEYuIEknbGwgbmVlZCB0byBsb29rIGF0IGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0b28sIHRvIHNlZSB3aGF0IGFyY2hpdGVjdHVyZXMvY29uZmlndXJhdGlvbnMgbWlnaHQgaW5mbHVlbmNlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbidzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMjIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo0OC45NDgzMjE4NTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcwMDk5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2MT1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjA3NC1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIwNzU6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDc2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NDkuMDM1MzM5MDgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTk0Nzg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2ludF9qaXRfY29tcGlsZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpc3NlY3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsJ3MgSklUIGNvbXBpbGVyIGZvciBCUEYgaW5zdHJ1Y3Rpb25zIHdvcmtzIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEknbSBnb2luZyB0byBxdWlja2x5IHJlY2FsbCB0aGUgdHlwaWNhbCBhcmNoaXRlY3R1cmUgYW5kIGRhdGEgZmxvdyBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIEJQRiBieXRlY29kZSBpcyB0cmFuc2xhdGVkIGludG8gbmF0aXZlIG1hY2hpbmUgY29kZS4gV2hhdCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb25zIGFyZSBlbXBsb3llZCwgYW5kIHdoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgYXJlIGltcGxlbWVudGVkIGF0IHRoaXMgc3RhZ2U/IEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlucHV0cyB0aGlzIGZ1bmN0aW9uIHRha2VzLCBhbmQgd2hhdCBzb3J0IG9mIG1lbW9yeSBsYXlvdXQgaXMgY3JlYXRlZC4gSXMgdGhpcyBhIGNvZGUgZ2VuZXJhdGlvbiBzdGVwLCBhIGxpbmtpbmcgcGhhc2UsIG9yIGJvdGg/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBhcmVhcyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBJIHNob3VsZCBrZWVwIGluIG1pbmQ/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgaW50ZXJlc3RpbmcgY29ybmVyIGNhc2VzIG9yIGxlc3MtdGhhbi1vYnZpb3VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTg4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NTIuMTYxMjkwMzExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4ODAyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9Mzk9Ym9vbCBicGZfaml0X25lZWRzX3pleHQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQzLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjQ0OnN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQwNjoyNjo1Mi4yMzAwOTgzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODk4OTE4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUklTQy1WIEJQRiBTdGFjayBBcmd1bWVudCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZ2V0dGluZyBCUEYgc3RhY2sgYXJndW1lbnRzIHdvcmtpbmcgb24gUklTQy1WLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzdGVwISBJdCBsb29rcyBsaWtlIHRoZXkndmUgZm9jdXNlZCB0aGUgY2hhbmdlcyBvbiB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlc2UgZnVuY3Rpb25zOiBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGBicGZfaW50X2ppdF9jb21waWxlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLiBNYWtlcyBzZW5zZSDigJMgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQgaGFuZGxpbmcgc3RhY2sgYXJndW1lbnRzIGR1cmluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uXG5cblRvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIHRoZSBzeXN0ZW0gd2lsbCwgb2YgY291cnNlLCBuZWVkIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBCUEYgSklUIHN1cHBvcnQuIFRoZSBvYnZpb3VzIGFyY2hpdGVjdHVyYWwgcHJlcmVxdWlzaXRlLCBgUklTQ1ZgLCBhbHNvIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvcmlzY3YvS2NvbmZpZ2AgZmlsZSB0byBzZWUgaG93IGBCUEZfSklUYCBpcyBkZWZpbmVkIGluIHRoZSBSSVNDLVYgY29udGV4dC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHMgdGhhdCBuZWVkIHRvIGJlIGFkZHJlc3NlZCBiZWZvcmUgaW50ZWdyYXRpbmcgdGhpcy4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTg5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI2OjU2LjUxOTk5MzIzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NTcwODk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6MjY6NTYuNjM3NTcwNzk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Nzc0NzQ2NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEJQRiBKSVQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBCUEYgSklULCB3aGljaCBpcyBwcm9iYWJseSBgQlBGX0pJVGAuIEdpdmVuIHRoZSBzdGFuZGFyZCBjb252ZW50aW9uLCBteSBndXQgaW5zdGluY3Qgc2F5cyBpdCdzIGxpa2VseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGluaXQvS2NvbmZpZ2Agb3IgbWF5YmUgbmVzdGxlZCB3aXRoaW4gdGhlIEJQRi1zcGVjaWZpYyBzZWN0aW9uIGluIGBrZXJuZWwvYnBmL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIHN0YXJ0IGxvb2tpbmcuIE5vIHJlYWwgbmVlZCB0byBvdmVydGhpbmsgaXQgLSB0aGUgbmFtZSBgQlBGX0pJVGAgaXMgcHJldHR5IHN0YW5kYXJkLCBzbyBpdCBzaG91bGQgYmUgZWFzeSBlbm91Z2ggdG8gdHJhY2sgZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM5NSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjAwLjIxNTA0OTAwM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0NDI5NjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MDIuNjU5MzUxNDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0OTY3NjQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuXG5cbioqQlBGIEpJVCBDb25maWd1cmF0aW9uIGFuZCBMb2NhdGlvbiBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgQlBGX0pJVGAuIFRoYXQncyB0aGUgZmxhZyB0aGF0IGRpY3RhdGVzIHdoZXRoZXIgd2UncmUgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIEpJVCBjb21waWxlciBmb3IgQlBGIHByb2dyYW1zLiBUaGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoaXMgYXJlIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYC4gVGhlc2UgZmlsZXMgc3BlY2lmaWNhbGx5LCBhcmUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCB0aGVzZSBmaWxlcyBhcmUgKmFjdHVhbGx5KiBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZC4gSXQncyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCBhbHdheXMgYSBnb29kIHNhbml0eSBjaGVjay4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIG1ha2Ugc3VyZSB0aGUgcHJlcHJvY2Vzc29yIGlzIGRvaW5nIHdoYXQgaXQgc2hvdWxkIGJlLiBUaGUgZGVwZW5kZW5jeSBncmFwaCBzaG91bGQgbWFrZSB0aGlzIHJlbGF0aXZlbHkgY2xlYXIuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjA2LjkwOTAzMjkyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTYyMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfY29tcDY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjA3LjAyMDk5OTc2OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQ2NTY2NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIHdpdGhpbiB0aGUgUklTQy1WIEpJVCBjb21waWxlci4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgYENPTkZJR19CUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBUaGF0IG1ha2VzIHNlbnNlLCBubyBKSVQsIG5vIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgSklULiBgQ09ORklHX0FSQ0hfUlY2NElgIGlzIGFsc28gcmVxdWlyZWQsIGJ1dCB0aGF0J3MgZXhwZWN0ZWQgZm9yIGEgNjQtYml0IFJJU0MtViBhcmNoaXRlY3R1cmUsIHNvIG5vIHN1cnByaXNlcyB0aGVyZS5cblxuVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgYWRkaXRpb24gb2Ygc3RhY2sgYXJndW1lbnQgc3VwcG9ydCwgd2hpY2ggc2NyZWFtcyAqZnVuY3Rpb25hbCBjaGFuZ2UqLiBXb3J0aCBmdXp6aW5nLCBubyBkb3VidC4gTXkgZm9jdXMgc2hpZnRzIHRvIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIG1vZGlmaWNhdGlvbi4gSSBpbml0aWFsbHkgbGlzdGVkIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC5cblxuYGJwZl9qaXRfZW1pdF9pbnNuYC4uLiB5ZXAsIHRoYXQncyB0aGUgYmlnIG9uZS4gSXQncyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgZW1pdHRpbmcgdGhlIEpJVCBpbnN0cnVjdGlvbnMuIEl04oCZcyBjcml0aWNhbC4gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGxvb2tzIGdvb2QgdG9vLCBpdCdzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBwcm9sb2d1ZSwgc28gSSdtIGV4cGVjdGluZyBzb21lIGNoYW5nZXMgdGhlcmUgdG8gaGFuZGxlIHRoZXNlIGFyZ3VtZW50cy4gQW5kIGZpbmFsbHksIGBicGZfaW50X2ppdF9jb21waWxlYCwgd2hpY2ggaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MgaXRzZWxmIOKAkyB0aGF04oCZcyB2aXRhbCB0b28uXG5cbkkgc2hvdWxkIHJlZmluZSB0aG9zZSBmb2N1cyBzeW1ib2xzIGEgbGl0dGxlIGJpdDpcblxuKiAgIGBicGZfaml0X2VtaXRfaW5zbmBcbiogICBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWBcbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCwgY29uY3JldGVseS4gVGhpcyBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGNoYW5naW5nIGhvdyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgaGFuZGxlcyBzdGFjayBhcmd1bWVudHMuIEl04oCZcyB0d2Vha2luZyB0aGUgaW5zdHJ1Y3Rpb24gZW1pc3Npb24gcHJvY2VzcywgYW5kIHRoZSBwcm9sb2d1ZSBnZW5lcmF0aW9uIHByb2Nlc3MsIHRvIGVuc3VyZSB0aGVzZSBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiBBbnkgY2hhbmdlcyB0byBjb3JlIGZ1bmN0aW9uYWxpdHkgbGlrZSB0aGlzIGRlbWFuZHMgY2FyZWZ1bCBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRob3NlIGtleSBmdW5jdGlvbnMuIFdlIG5lZWQgdG8gYmUgb24gdGhlIGxvb2tvdXQgZm9yIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgdGhhdCBtaWdodCBzbGlwIGluIGR1cmluZyB0aGUgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoZSBgQlBGX0pJVGAgY29uZmlnIGlzIGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGNvbmZpZyBmb3IgdGhlIHRlc3RzIEknbGwgcnVuLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI0MywiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuMjY3NTY5Njk4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNDQ3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBpbnN0cnVjdGlvbiBlbWlzc2lvbiBhbmQgcHJvbG9ndWUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgc3RhY2sgYXJndW1lbnRzIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgZm9yIFJJU0MtViBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MgYW5kIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvZ2ljIGJ1Z3MgZHVyaW5nIEpJVCBjb21waWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuNDEwMDI5MTA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk4Njk5MTAxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDA2OjI3OjE0LjQxMDkzNjQ0N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNDk4NjA3ODc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3ZGJlN2VjYWMwY2E5M2ZkZjI2MjFmMTZkYzA3NmRkODRlOTlkYjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAwNjoyNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4rXHR1MTYgc3RhY2tfYXJnX3NpemU7XG4gXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XG4gXHR1NjQgdXNlcl92bV9zdGFydDtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCA2Yjk5NzJiMDdjMWIwLi5iM2Y0YmY5ZTFlN2YyIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE4MTUsMTggKzE4MTUsMzkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XG4gXHRcdFx0Y29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICpmbTtcbi1cdFx0XHRpbnQgaWR4O1xuK1x0XHRcdGludCBpZHgsIG5hcmdzO1xuIFxuIFx0XHRcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cdTAwM2Vwcm9nLCBpbnNuKTtcbiBcdFx0XHRpZiAoIWZtKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGZtLVx1MDAzZW5yX2FyZ3M7IGlkeCsrKSB7XG4rXHRcdFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4rXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5hcmdzOyBpZHgrKykge1xuIFx0XHRcdFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgKyBpZHgsIGN0eCk7XG4gXG4gXHRcdFx0XHRpZiAoZm0tXHUwMDNlYXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSlcbiBcdFx0XHRcdFx0ZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTtcbiBcdFx0XHR9XG4rXG4rXHRcdFx0LyogQlBGIHN0YWNrIGFyZ3MgLVx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSsgYXQgU1ArMCAqL1xuK1x0XHRcdGlmIChmbS1cdTAwM2Vucl9hcmdzIFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcbitcdFx0XHRcdGludCBuX3N0YWNrID0gZm0tXHUwMDNlbnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUztcbitcdFx0XHRcdGludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjayxcbitcdFx0XHRcdFx0XHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2Mgbl9yZWc7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX0E1ICsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19BNSArIGlkeCwgUlZfUkVHX0E1ICsgaWR4LCBjdHgpO1xuK1x0XHRcdFx0fVxuK1xuK1x0XHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIG5fc3RhY2sgLSBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIChuX3JlZyArIGlkeCkgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiArMTkxMiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgMCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbitcdFx0XHRcdHJldHVybiAxO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOlxuQEAgLTE5MzgsNiArMTk3NCwyMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QyLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QyLCBSVl9SRUdfU1AsIFJWX1JFR19UMiwgY3R4KTtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH1cbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1x0XHRmYWxsdGhyb3VnaDtcbiBcdC8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgKzIwMTAsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuK1x0XHRpZiAoaW5zbi1cdTAwM2Vkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XG4rXHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QxLCAwLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1RYIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgKyBSVl9SRUdfQVJFTkEgKyBvZmYpID0gc3JjICovXG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfQjpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTIwMzYsNiArMjA5OSw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFxuIFx0c3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7XG4gXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcbitcdHN0YWNrX2FkanVzdCArPSBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemU7XG4gXG4gXHRzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4O1xuIFxuQEAgLTIwOTMsNyArMjE1Nyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuK1x0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZSArIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRjdHgtXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcbiBcbkBAIC0yMTcxLDMgKzIyMzUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2JmY2QyODdlYTE2Ni4uODQ0YTBmM2UwZmE5MCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuK1xuK1x0Y3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplID0gcm91bmRfdXAoYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZykgKlxuK1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4rXG4gXHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggOGQzOGFhZmU2NmEyOC4uYzg1NDBkMzBlMjkzZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5AQCAtNCw3ICs0LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5kMWMzODI2OTNmZWRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9leGNlcHRpb25zLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZXhjZXB0aW9ucy5jXG5pbmRleCBjOGQ3MTZmYmQ0MTkxLi5kYzVkNDIyYTgyYTUwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2V4Y2VwdGlvbnMuY1xuQEAgLTM3OSw3ICszNzksNyBAQCBpbnQgZXhjZXB0aW9uX2JhZF9hc3NlcnRfcmFuZ2Vfd2l0aChzdHJ1Y3QgX19za19idWZmICpjdHgpXG4gXHRyZXR1cm4gMTtcbiB9XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcXFxuIFx0XHUwMDI2XHUwMDI2IGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uOGJhNDk5MWJiYWJkNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsNyBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbmluZGV4IDM0NWYyZGEyZTM2MWIuLjZhMjIyNTVmY2FhNzMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuQEAgLTYsNyArNiw3IEBAXG4gI2luY2x1ZGUgXCJicGZfa2Z1bmNzLmhcIlxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li5jZmZhMGRmYjZmNTI1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyArNiw3IEBAXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5iMmE3MjRhMjc5MGViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw3IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggYzlmZTQ4NTdkYTNmNS4uZWQyNjAwNDFkODI3MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtNSw3ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MTQuNDEwOTM4NDg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0OTg2MDUyMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJJU0MtViBCUEYgSklUIFN0YWNrIEFyZ3VtZW50IFN1cHBvcnQgLSBLTVNBTiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN0YWNrIGFyZ3VtZW50IHN1cHBvcnQgdG8gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBgYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBicGZfaml0X2NvcmUuY2AgdG8gaGFuZGxlIGBCUEZfUkVHX1BBUkFNU2AgYW5kIHN0YWNrIGFyZ3VtZW50cyBmb3IgYGtmdW5jYCBjYWxscy4gTXkgYW5hbHlzaXMgY2VudGVycyBhcm91bmQgbWVtb3J5IHNhZmV0eSBhbmQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzcGVjaWZpY2FsbHkuXG5cbkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgY29kZSBpdHNlbGYuIFRoZSBjaGFuZ2VzIGluIGBicGZfaml0X2VtaXRfaW5zbmAgc2VlbSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGhhbmRsaW5nIGBCUEZfUFNFVURPX0tGVU5DX0NBTExgIGFuZCBsb2FkaW5nL3N0b3JpbmcgYXJndW1lbnRzIGZyb20gdGhlIEJQRiBzdGFjayB0byBSSVNDLVYgcmVnaXN0ZXJzIChBNS1BNykgb3IgdGhlIFJJU0MtViBzdGFjay4gVGhlIHByb2xvZ3VlIGFkanVzdG1lbnQgYW5kIHN0YWNrIHNpemUgY2FsY3VsYXRpb24gYWxzbyBzZWVtIHJlYXNvbmFibGUuIFRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZSwgYXMgYWx3YXlzIHdpdGggSklUIGNvbXBpbGVycywgaXMgZW5zdXJpbmcgdGhlIGdlbmVyYXRlZCBSSVNDLVYgbWFjaGluZSBjb2RlIGlzIGNvcnJlY3QgYW5kIHNhZmUuIEEgYnVnIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIGlzc3VlcyDigJMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgZXZlbiBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24uIEhvd2V2ZXIsIHRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIGtpbmRzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBpcyBkZXNpZ25lZCB0byBjYXRjaC5cblxuTXkgbmV4dCBzdGVwIHdhcyB0byBjb25zaWRlciBLTVNBTi4gV2hpbGUgS01TQU4gaXMgZXhjZWxsZW50IGF0IGRldGVjdGluZyB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB0aGUgdmFyaWFibGVzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyBhcHBlYXIgdG8gYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIFRoZSAqZ2VuZXJhdGVkKiBjb2RlIGlzIHRoZSBrZXkuIElmIHRoZSBKSVQgY29tcGlsZXIgaGFzIGEgYnVnIGFuZCBnZW5lcmF0ZXMgY29kZSB0aGF0IHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnksIEtNU0FOICptaWdodCogY2F0Y2ggaXQsIGFzc3VtaW5nIEtNU0FOIGlzIGV2ZW4gc3VwcG9ydGVkIG9uIFJJU0MtVi4gVGhhdCB3YXMgdGhlIG5leHQgcXVlc3Rpb24uXG5cbkkgbmVlZGVkIHRvIGRldGVybWluZSBpZiBLTVNBTiB3b3JrZWQgb24gUklTQy1WLiBMb29raW5nIGF0IGBhcmNoL3Jpc2N2L0tjb25maWdgLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLCBidXQgSSByZW1lbWJlciBpdCdzIG5vdCBzdXBwb3J0ZWQuIEV2ZW4gaWYgaXQgKndlcmUqLCB0aGUgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IGZvciBSSVNDLVYuIFRlc3RpbmcgS01TQU4gb24geDg2XzY0LCBhcyBpcyB0eXBpY2FsLCB3b3VsZG4ndCBleGVyY2lzZSB0aGlzIGNvZGUuIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBpcyBvbmx5IGNvbXBpbGVkIGZvciBSSVNDLVYuIFNvIHg4Nl82NCBzeXprYWxsZXIgaW5zdGFuY2VzIHdpbGwgaGF2ZSB6ZXJvIGNvdmVyYWdlLlxuXG5FdmVuIGlmIEtNU0FOICp3ZXJlKiBhdmFpbGFibGUgYW5kICpjb3VsZCogdGVzdCBSSVNDLVYgSklULCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgSklUIGJ1Z3MgaW4gdGhpcyBhcmVhIGFyZSBtb3JlIGxpa2VseSB0byByZXN1bHQgaW4gY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMuIEtBU0FOIGFuZCBCUEYgc2VsZnRlc3RzIHdvdWxkIGJlIG1vcmUgZWZmZWN0aXZlLiBUaGUgcGF0Y2ggaXNuJ3QgaW50cm9kdWNpbmcgYW55IG5ldyBrZXJuZWwtdG8tdXNlciBkYXRhIHN0cnVjdHVyZXMgb3IgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlcyBiZXlvbmQgdGhlIG5vcm1hbCByaXNrIG9mIEpJVCBjb21waWxlciBidWdzLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgTmVlZHNLTVNBTmAgaXMgZmFsc2UuIFRoZSBjaGFuZ2VzIGFyZSBSSVNDLVYgc3BlY2lmaWMsIGFuZCBidWdzIGFyZSBsaWtlbHkgZGV0ZWN0YWJsZSB2aWEgS0FTQU4gYW5kIHNlbGZ0ZXN0cywgZXZlbiBpZiBLTVNBTiB3ZXJlIGF2YWlsYWJsZS4gU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzAsIk91dHB1dFRva2VucyI6MTc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMDY6Mjc6MjkuMzk2OTkzOTEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIgdG8gc3VwcG9ydCBzdGFjayBhcmd1bWVudHMgZm9yIGVCUEYgcHJvZ3JhbXMuIFRoZXNlIGNoYW5nZXMgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBSSVNDLVYgYW5kIHdpbGwgbm90IGJlIGV4ZXJjaXNlZCBieSBhIHN0YW5kYXJkIHg4Nl82NCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIEZ1cnRoZXJtb3JlLCBidWdzIGluIEpJVCBjb21waWxhdGlvbiBsb2dpYyAoc3VjaCBhcyBpbmNvcnJlY3QgcmVnaXN0ZXIgYXNzaWdubWVudHMgb3Igc3RhY2sgb2Zmc2V0cykgdHlwaWNhbGx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcywgcmVnaXN0ZXIgY29ycnVwdGlvbiwgb3IgY29udHJvbC1mbG93IGhpamFja2luZyBpbiB0aGUgZ2VuZXJhdGVkIG1hY2hpbmUgY29kZS4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGNyYXNoZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHNlbGZ0ZXN0IHN1aXRlLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcga2VybmVsLXRvLXVzZXIgZGF0YSBzdHJ1Y3R1cmVzLCBjb21wbGV4IHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVhayB2ZWN0b3JzIHRoYXQgd291bGQgc3BlY2lmaWNhbGx5IHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyIHRvIHN1cHBvcnQgc3RhY2sgYXJndW1lbnRzIGZvciBlQlBGIHByb2dyYW1zLiBUaGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB3aWxsIG5vdCBiZSBleGVyY2lzZWQgYnkgYSBzdGFuZGFyZCB4ODZfNjQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBGdXJ0aGVybW9yZSwgYnVncyBpbiBKSVQgY29tcGlsYXRpb24gbG9naWMgKHN1Y2ggYXMgaW5jb3JyZWN0IHJlZ2lzdGVyIGFzc2lnbm1lbnRzIG9yIHN0YWNrIG9mZnNldHMpIHR5cGljYWxseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMsIHJlZ2lzdGVyIGNvcnJ1cHRpb24sIG9yIGNvbnRyb2wtZmxvdyBoaWphY2tpbmcgaW4gdGhlIGdlbmVyYXRlZCBtYWNoaW5lIGNvZGUuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBjcmFzaGVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiBzZWxmdGVzdCBzdWl0ZS4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGtlcm5lbC10by11c2VyIGRhdGEgc3RydWN0dXJlcywgY29tcGxleCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWsgdmVjdG9ycyB0aGF0IHdvdWxkIHNwZWNpZmljYWxseSByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowznfpj[1] Phase: Succeeded StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 06:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 06:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2] Phase: Succeeded StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 06:27:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 06:27:40 +0000 UTC FinishedAt: 2026-08-12 06:27:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowznfpj/series-workflowznfpj-convert-artifact-3603853168/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 06:27:50 +0000 UTC FinishedAt: 2026-08-12 06:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 06:27:50 +0000 UTC FinishedAt: 2026-08-12 06:46:53 +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:*9f164354-0e45-4cda-9c78-37d1b787e2b6,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-workflowznfpj/series-workflowznfpj-convert-artifact-3603853168/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": "7e3b17fa-5477-43f8-9cea-eef6cbbb6710", "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-workflowznfpj/series-workflowznfpj-build-action-1902606966/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 06:27:50 +0000 UTC FinishedAt: 2026-08-12 06:46:43 +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:*9f164354-0e45-4cda-9c78-37d1b787e2b6,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-workflowznfpj/series-workflowznfpj-convert-artifact-3603853168/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": "7e3b17fa-5477-43f8-9cea-eef6cbbb6710", "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-workflowznfpj/series-workflowznfpj-build-action-1902606966/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 06:46:53 +0000 UTC FinishedAt: 2026-08-12 06:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-12 06:46:53 +0000 UTC FinishedAt: 2026-08-12 06:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 06:46:53 +0000 UTC FinishedAt: 2026-08-12 06:47:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-12 06:46:53 +0000 UTC FinishedAt: 2026-08-12 06:46:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflowznfpj/series-workflowznfpj-convert-artifact-2557417559/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 06:47:03 +0000 UTC FinishedAt: 2026-08-12 06:49:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-12 06:47:03 +0000 UTC FinishedAt: 2026-08-12 06:48:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e3b17fa-5477-43f8-9cea-eef6cbbb6710,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-workflowznfpj/series-workflowznfpj-build-action-1902606966/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-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 06:49:05 +0000 UTC FinishedAt: 2026-08-12 06:49:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-12 06:49:05 +0000 UTC FinishedAt: 2026-08-12 06:49:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 06:49:05 +0000 UTC FinishedAt: 2026-08-12 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-12 06:49:05 +0000 UTC FinishedAt: 2026-08-12 07:09:36 +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:*9f164354-0e45-4cda-9c78-37d1b787e2b6,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-workflowznfpj/series-workflowznfpj-convert-artifact-2557417559/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": "abcb8552-31a2-4b8e-b9fe-e9893c288986", "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-workflowznfpj/series-workflowznfpj-build-action-1498517403/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-12 06:49:05 +0000 UTC FinishedAt: 2026-08-12 07:09:26 +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:*9f164354-0e45-4cda-9c78-37d1b787e2b6,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-workflowznfpj/series-workflowznfpj-convert-artifact-2557417559/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": "abcb8552-31a2-4b8e-b9fe-e9893c288986", "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-workflowznfpj/series-workflowznfpj-build-action-1498517403/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-12 07:09:36 +0000 UTC FinishedAt: 2026-08-12 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-12 07:09:36 +0000 UTC FinishedAt: 2026-08-12 07:09:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 07:09:36 +0000 UTC FinishedAt: 2026-08-12 07:11:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-12 07:09:36 +0000 UTC FinishedAt: 2026-08-12 07:11:27 +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:*abcb8552-31a2-4b8e-b9fe-e9893c288986,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-workflowznfpj/series-workflowznfpj-build-action-1498517403/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-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"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:*7e3b17fa-5477-43f8-9cea-eef6cbbb6710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abcb8552-31a2-4b8e-b9fe-e9893c288986,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-workflowznfpj/series-workflowznfpj-build-action-1902606966/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-workflowznfpj/series-workflowznfpj-build-action-1498517403/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:11:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:11:42 +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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"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-workflowznfpj/series-workflowznfpj-convert-artifact-3299754256/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:11:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:11:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-12 07:11:37 +0000 UTC FinishedAt: 2026-08-12 07:11:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-12 07:11:47 +0000 UTC FinishedAt: 2026-08-12 07:12:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznfpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue","bpf_int_jit_compile"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"64678ea5-62b9-4c50-a374-5b4f47e197c2","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-12 07:11:47 +0000 UTC FinishedAt: 2026-08-12 07:12:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e3b17fa-5477-43f8-9cea-eef6cbbb6710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abcb8552-31a2-4b8e-b9fe-e9893c288986,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-workflowznfpj/series-workflowznfpj-build-action-1902606966/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-workflowznfpj/series-workflowznfpj-build-action-1498517403/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-workflowznfpj/series-workflowznfpj-convert-artifact-3299754256/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,}