Name: series-workflowqtnbl Phase: Failed StartedAt: 2026-09-05 22:29:07 +0000 UTC FinishedAt: 2026-09-05 22:31:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqtnbl[0] Phase: Succeeded StartedAt: 2026-09-05 22:29:07 +0000 UTC FinishedAt: 2026-09-05 22:31:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqtnbl[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 22:29:07 +0000 UTC FinishedAt: 2026-09-05 22:31:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZTllZjIzOGYwODY4OGRiNThlMTQ2ZDI1NzQ3ZWEzMWQyNWRmZGNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAyMjozMTowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTE5MCw2ICYjNDM7MTkwLDYwIEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdKVxuIFx0fVxuIH1cbiBcbiYjNDM7LyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuJiM0MztcdFx0XHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNsbCwgbG8oZHN0KSwgbG8oc3JjKSwgc2hpZnQpO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNyYSwgbG8oZHN0KSwgbG8oZHN0KSwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xuJiM0MztcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4mIzQzO1x0XHRcdCBjb25zdCB1OCBzcmNbXSwgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGludCBzaGlmdDtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChvZmYpIHtcbiYjNDM7XHRjYXNlIDg6XG4mIzQzO1x0Y2FzZSAxNjpcbiYjNDM7XHRcdHNoaWZ0ID0gMzIgLSBvZmY7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc3JhLCBsbyhkc3QpLCBsbyhkc3QpLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc3JhLCBoaShkc3QpLCBsbyhkc3QpLCAzMSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIDMyOlxuJiM0MztcdFx0ZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXG4mIzQzO1x0XHQgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZVxuJiM0MztcdFx0ICogYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpIG9yIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEoKSxcbiYjNDM7XHRcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xuJiM0MztcdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIExvYWQgZGVsYXkgc2xvdCwgaWYgSVNBIG1hbmRhdGVzIGl0ICovXG4gc3RhdGljIHZvaWQgZW1pdF9sb2FkX2RlbGF5KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIHtcbkBAIC0xNDg1LDggJiM0MzsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiYjNDM7XHRcdFx0ZW1pdF9tb3ZfcjMyKGN0eCwgZHN0LCBzcmMsIG9mZik7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICovXG5AQCAtMTU1NSw4ICYjNDM7MTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xuLVx0XHRlbWl0X21vdl9yKGN0eCwgaGkoZHN0KSwgaGkoc3JjKSk7XG4mIzQzO1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xMjAsNiAmIzQzOzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpXG4gXHRcdGVtaXRfemV4dChjdHgsIGRzdCk7XG4gfVxuIFxuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoMzItYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbiYjNDM7XHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1x0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuJiM0MztcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbiYjNDM7XHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAzMjpcbiYjNDM7XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlclxuJiM0MztcdFx0ICogb2Zmc2V0czsgZGVmaW5lZCBleGNlcHRpb25zIHJlcXVpcmVcbiYjNDM7XHRcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXG4mIzQzO1x0XHQgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1x0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpXG4ge1xuQEAgLTY1Niw4ICYjNDM7NzA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0MztcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC03NDIsNyAmIzQzOzc5Miw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXRfbW92X3I2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAyMjozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBlOWVmMjM4ZjA4Njg4ZGI1OGUxNDZkMjU3NDdlYTMxZDI1ZGZkY2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDIyOjMxOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTE5MCw2ICYjNDM7MTkwLDYwIEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdKQogCX0KIH0KIAomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICgzMi1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSBjb25zdCB1OCBzcmNbXSwgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCWVtaXQoY3R4LCBzbGwsIGxvKGRzdCksIGxvKHNyYyksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJLyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJY2xvYmJlcl9yZWcoY3R4LCBsbyhkc3QpKTsKJiM0MzsJZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSBjb25zdCB1OCBzcmNbXSwgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCWVtaXQoY3R4LCBzbGwsIGxvKGRzdCksIGxvKHNyYyksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIDMyOgomIzQzOwkJZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpOwomIzQzOwkJZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQkvKgomIzQzOwkJICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlcgomIzQzOwkJICogb2Zmc2V0czsgZGVmaW5lZCBleGNlcHRpb25zIHJlcXVpcmUKJiM0MzsJCSAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksCiYjNDM7CQkgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuCiYjNDM7CQkgKi8KJiM0MzsJCWVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTsKJiM0MzsJCWVtaXRfbW92X3IoY3R4LCBoaShkc3QpLCBoaShzcmMpKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpOwomIzQzO30KJiM0MzsKIC8qIExvYWQgZGVsYXkgc2xvdCwgaWYgSVNBIG1hbmRhdGVzIGl0ICovCiBzdGF0aWMgdm9pZCBlbWl0X2xvYWRfZGVsYXkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiB7CkBAIC0xNDg1LDggJiM0MzsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJCS8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi8KIAkJCWVtaXRfbW92X2koY3R4LCBoaShkc3QpLCAwKTsKIAkJfSBlbHNlIHsKLQkJCWVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTsKLQkJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwomIzQzOwkJCWVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpOwogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IC1kc3QgKi8KQEAgLTE1NTUsOCAmIzQzOzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCQlicmVhazsKIAkvKiBkc3QgPSBzcmMgKDY0LWJpdCkgKi8KIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDoKLQkJZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpOwotCQllbWl0X21vdl9yKGN0eCwgaGkoZHN0KSwgaGkoc3JjKSk7CiYjNDM7CQllbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gLWRzdCAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xMjAsNiAmIzQzOzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpCiAJCWVtaXRfemV4dChjdHgsIGRzdCk7CiB9CiAKJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoMzItYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9tb3ZfcjMyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCS8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovCiYjNDM7CQllbWl0KGN0eCwgZHNsbDMyLCBkc3QsIHNyYywgc2hpZnQpOwomIzQzOwkJZW1pdChjdHgsIGRzcmEzMiwgZHN0LCBkc3QsIHNoaWZ0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJLyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKJiM0MzsJZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKQomIzQzO3sKJiM0MzsJaW50IHNoaWZ0OwomIzQzOwomIzQzOwlzd2l0Y2ggKG9mZikgewomIzQzOwljYXNlIDg6CiYjNDM7CWNhc2UgMTY6CiYjNDM7CQlzaGlmdCA9IDMyIC0gb2ZmOwomIzQzOwkJLyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi8KJiM0MzsJCWVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7CiYjNDM7CQllbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMzI6CiYjNDM7CQllbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCS8qCiYjNDM7CQkgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyCiYjNDM7CQkgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZQomIzQzOwkJICogYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpIG9yIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEoKSwKJiM0MzsJCSAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy4KJiM0MzsJCSAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKJiM0Mzt9CiYjNDM7CiAvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpCiB7CkBAIC02NTYsOCAmIzQzOzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJCQkvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovCiAJCQllbWl0X3pleHQoY3R4LCBkc3QpOwogCQl9IGVsc2UgewotCQkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKLQkJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwomIzQzOwkJCWVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpOwogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IC1kc3QgKi8KQEAgLTc0Miw3ICYjNDM7NzkyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX1g6Ci0JCWVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gLWRzdCAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5OAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDMyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEV2YWx1YXRpb246IFBhdGNoIFNlcmllcyoqCgpPa2F5LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggc2VyaWVzIGZvciBpdHMgZnV6emluZyBwb3RlbnRpYWwgb24gYW1kNjQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBzeXprYWxsZXIgaXMgYSBnb29kIGZpdCBoZXJlLiBGaXJzdCwgSSYjMzk7bGwgZXhhbWluZSB0aGUgZGlmZjsgd2hhdCBjb2RlIGlzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQ/IEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBIbW0sIGJvdGggZmlsZXMgcmVzaWRlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBgYXJjaC9taXBzL2AgZGlyZWN0b3J5LgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBTZWN0aW9uIDIgZGVhbHMgd2l0aCB3aGVuIHRvICpub3QqIGZ1enouIFRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBzdGF0ZSB0aGF0IHdlIHNob3VsZG4mIzM5O3QgZnV6eiBpZiB0aGUgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhpcyBzZWVtcyBkaXJlY3RseSBhcHBsaWNhYmxlLiBUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gTUlQUyBhcmNoaXRlY3R1cmUgY29kZSwgY29tcGxldGVseSBpcnJlbGV2YW50IHRvIGFtZDY0LCBvdXIgdGFyZ2V0LiBJdOKAmXMgYSBjbGVhciBjYXNlIG9mIGluZWxpZ2liaWxpdHkuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBtaWdodCBnbGFuY2UgYXQgdGhlIGRpZmYgYWdhaW4gb3IgcXVpY2tseSB2ZXJpZnkgaXQsIGJ1dCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWtlcyB0aGUgc2l0dWF0aW9uIGFwcGFyZW50LgoKTm8gb3RoZXIgZmlsZXMgYXJlIHRvdWNoZWQuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGZ1enppbmcgcmVzdWx0IHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgaXJyZWxldmFudCBoZXJlLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBNSVBTLXNwZWNpZmljIEJQRiBKSVQgY29tcGlsYXRpb24gZmlsZXMgKGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCkuIFRoaXMgY29kZSBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgaXMgdW5yZWFjaGFibGUgb24gYW1kNjQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjAyLjIwNTY5NTkzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzg5MDg1OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjAyLjIwNTcwMDg2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU0MTE4NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGU5ZWYyMzhmMDg2ODhkYjU4ZTE0NmQyNTc0N2VhMzFkMjVkZmRjZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDIyOjMxOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTE5MCw2ICsxOTAsNjAgQEAgc3RhdGljIHZvaWQgZW1pdF96ZXh0X3ZlcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10pXFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbitcXHRcXHRcXHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXFxuK3tcXG4rXFx0aW50IHNoaWZ0O1xcbitcXG4rXFx0c3dpdGNoIChvZmYpIHtcXG4rXFx0Y2FzZSA4OlxcbitcXHRjYXNlIDE2OlxcbitcXHRcXHRzaGlmdCA9IDMyIC0gb2ZmO1xcbitcXHRcXHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cXG4rXFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xcbitcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4rfVxcbitcXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDY0LWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbitcXHRcXHRcXHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXFxuK3tcXG4rXFx0aW50IHNoaWZ0O1xcbitcXG4rXFx0c3dpdGNoIChvZmYpIHtcXG4rXFx0Y2FzZSA4OlxcbitcXHRjYXNlIDE2OlxcbitcXHRcXHRzaGlmdCA9IDMyIC0gb2ZmO1xcbitcXHRcXHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcXG4rXFx0XFx0ZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAzMjpcXG4rXFx0XFx0ZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpO1xcbitcXHRcXHRlbWl0KGN0eCwgc3JhLCBoaShkc3QpLCBsbyhkc3QpLCAzMSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXFxuK1xcdFxcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXFxuK1xcdFxcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXFxuK1xcdFxcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcXG4rXFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcXG4rfVxcbitcXG4gLyogTG9hZCBkZWxheSBzbG90LCBpZiBJU0EgbWFuZGF0ZXMgaXQgKi9cXG4gc3RhdGljIHZvaWQgZW1pdF9sb2FkX2RlbGF5KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiB7XFxuQEAgLTE0ODUsOCArMTUzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdFxcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0X21vdl9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSk7XFxuLVxcdFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbitcXHRcXHRcXHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gLWRzdCAqL1xcbkBAIC0xNTU1LDggKzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X21vdl9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSk7XFxuLVxcdFxcdGVtaXRfbW92X3IoY3R4LCBoaShkc3QpLCBoaShzcmMpKTtcXG4rXFx0XFx0ZW1pdF9tb3ZfcjY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmE3ZTlhYTM3ZjQ5OC4uYTFkZmI3NDkyYTljNCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTIwLDYgKzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpXFxuIFxcdFxcdGVtaXRfemV4dChjdHgsIGRzdCk7XFxuIH1cXG4gXFxuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICgzMi1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjMyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpbnQgc2hpZnQ7XFxuK1xcbitcXHRzd2l0Y2ggKG9mZikge1xcbitcXHRjYXNlIDg6XFxuK1xcdGNhc2UgMTY6XFxuK1xcdFxcdHNoaWZ0ID0gMzIgLSBvZmY7XFxuK1xcdFxcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXFxuK1xcdFxcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKiBvZmYgPT0gMCBpcyBNT1Y7IHRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyIG9mZnNldHMuICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4rXFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuK31cXG4rXFxuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpbnQgc2hpZnQ7XFxuK1xcbitcXHRzd2l0Y2ggKG9mZikge1xcbitcXHRjYXNlIDg6XFxuK1xcdGNhc2UgMTY6XFxuK1xcdFxcdHNoaWZ0ID0gMzIgLSBvZmY7XFxuK1xcdFxcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXFxuK1xcdFxcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDMyOlxcbitcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXFxuK1xcdFxcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXFxuK1xcdFxcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXFxuK1xcdFxcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4rfVxcbitcXG4gLyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpXFxuIHtcXG5AQCAtNjU2LDggKzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdFxcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cXG4gXFx0XFx0XFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuK1xcdFxcdFxcdGVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSAtZHN0ICovXFxuQEAgLTc0Miw3ICs3OTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IC1kc3QgKDY0LWJpdCkgKi9cXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMTowMi41NjA1NzcxODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyMDM0MTkxMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZTllZjIzOGYwODY4OGRiNThlMTQ2ZDI1NzQ3ZWEzMWQyNWRmZGNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAyMjozMTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuaW5kZXggNDBhODc4YjY3MmY1ZC4uODg1ZGEwZDBkNzRiNiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5AQCAtMTkwLDYgKzE5MCw2MCBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSlcbiBcdH1cbiB9XG4gXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4rXHRcdFx0IGNvbnN0IHU4IHNyY1tdLCBzMTYgb2ZmKVxuK3tcbitcdGludCBzaGlmdDtcbitcbitcdHN3aXRjaCAob2ZmKSB7XG4rXHRjYXNlIDg6XG4rXHRjYXNlIDE2OlxuK1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuK1x0XHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHQvKiBvZmYgPT0gMCBpcyBNT1Y7IHRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyIG9mZnNldHMuICovXG4rXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xuK1x0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4rfVxuK1xuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuK1x0XHRcdCBjb25zdCB1OCBzcmNbXSwgczE2IG9mZilcbit7XG4rXHRpbnQgc2hpZnQ7XG4rXG4rXHRzd2l0Y2ggKG9mZikge1xuK1x0Y2FzZSA4OlxuK1x0Y2FzZSAxNjpcbitcdFx0c2hpZnQgPSAzMiAtIG9mZjtcbitcdFx0ZW1pdChjdHgsIHNsbCwgbG8oZHN0KSwgbG8oc3JjKSwgc2hpZnQpO1xuK1x0XHRlbWl0KGN0eCwgc3JhLCBsbyhkc3QpLCBsbyhkc3QpLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDMyOlxuK1x0XHRlbWl0KGN0eCwgbW92ZSwgbG8oZHN0KSwgbG8oc3JjKSk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHQvKlxuK1x0XHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXG4rXHRcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXG4rXHRcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXG4rXHRcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cbitcdFx0ICovXG4rXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbitcdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xuK31cbitcbiAvKiBMb2FkIGRlbGF5IHNsb3QsIGlmIElTQSBtYW5kYXRlcyBpdCAqL1xuIHN0YXRpYyB2b2lkIGVtaXRfbG9hZF9kZWxheShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiB7XG5AQCAtMTQ4NSw4ICsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbitcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC0xNTU1LDggKzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IHNyYyAoNjQtYml0KSAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX1g6XG4tXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuK1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xMjAsNiArMTIwLDU3IEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdClcbiBcdFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcbiB9XG4gXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aW50IHNoaWZ0O1xuK1xuK1x0c3dpdGNoIChvZmYpIHtcbitcdGNhc2UgODpcbitcdGNhc2UgMTY6XG4rXHRcdHNoaWZ0ID0gMzIgLSBvZmY7XG4rXHRcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXG4rXHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0Lyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqL1xuK1x0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbitcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuK31cbitcbisvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpbnQgc2hpZnQ7XG4rXG4rXHRzd2l0Y2ggKG9mZikge1xuK1x0Y2FzZSA4OlxuK1x0Y2FzZSAxNjpcbitcdFx0c2hpZnQgPSAzMiAtIG9mZjtcbitcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbitcdFx0ZW1pdChjdHgsIGRzbGwzMiwgZHN0LCBzcmMsIHNoaWZ0KTtcbitcdFx0ZW1pdChjdHgsIGRzcmEzMiwgZHN0LCBkc3QsIHNoaWZ0KTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDMyOlxuK1x0XHRlbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0LypcbitcdFx0ICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlclxuK1x0XHQgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZVxuK1x0XHQgKiBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKCkgb3IgYnBmX2ppdF9zdXBwb3J0c19hcmVuYSgpLFxuK1x0XHQgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuXG4rXHRcdCAqL1xuK1x0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbit9XG4rXG4gLyogZHN0ID0gaW1tICg2NC1iaXQpICovXG4gc3RhdGljIHZvaWQgZW1pdF9tb3ZfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU2NCBpbW02NClcbiB7XG5AQCAtNjU2LDggKzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdFx0LyogU3BlY2lhbCBtb3YzMiBmb3IgemV4dCAqL1xuIFx0XHRcdGVtaXRfemV4dChjdHgsIGRzdCk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbitcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC03NDIsNyArNzkyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxuLVx0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMTowMi41NjA1Nzk0NzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjAzNDE2MDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEV2YWx1YXRpb246IFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIHNlcmllcyBmb3IgaXRzIGZ1enppbmcgcG90ZW50aWFsIG9uIGFtZDY0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgc3l6a2FsbGVyIGlzIGEgZ29vZCBmaXQgaGVyZS4gRmlyc3QsIEknbGwgZXhhbWluZSB0aGUgZGlmZjsgd2hhdCBjb2RlIGlzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQ/IEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBIbW0sIGJvdGggZmlsZXMgcmVzaWRlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBgYXJjaC9taXBzL2AgZGlyZWN0b3J5LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiBkZWFscyB3aXRoIHdoZW4gdG8gKm5vdCogZnV6ei4gVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIHN0YXRlIHRoYXQgd2Ugc2hvdWxkbid0IGZ1enogaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuIFRoaXMgc2VlbXMgZGlyZWN0bHkgYXBwbGljYWJsZS4gVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIE1JUFMgYXJjaGl0ZWN0dXJlIGNvZGUsIGNvbXBsZXRlbHkgaXJyZWxldmFudCB0byBhbWQ2NCwgb3VyIHRhcmdldC4gSXTigJlzIGEgY2xlYXIgY2FzZSBvZiBpbmVsaWdpYmlsaXR5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBtaWdodCBnbGFuY2UgYXQgdGhlIGRpZmYgYWdhaW4gb3IgcXVpY2tseSB2ZXJpZnkgaXQsIGJ1dCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWtlcyB0aGUgc2l0dWF0aW9uIGFwcGFyZW50LlxuXG5ObyBvdGhlciBmaWxlcyBhcmUgdG91Y2hlZC5cblxuVGhlcmVmb3JlLCBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGZ1enppbmcgcmVzdWx0IHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgaXJyZWxldmFudCBoZXJlLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIE1JUFMtc3BlY2lmaWMgQlBGIEpJVCBjb21waWxhdGlvbiBmaWxlcyAoYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgKS4gVGhpcyBjb2RlIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCBpcyB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5OCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjE0LjU5NDc0MzgzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGNvZGUgKGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBhbmQgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jKSwgd2hpY2ggaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIE1JUFMgYW5kIHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMToxNC41OTQ3NzE0MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqtnbl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 22:29:07 +0000 UTC FinishedAt: 2026-09-05 22:31:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDIyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZTllZjIzOGYwODY4OGRiNThlMTQ2ZDI1NzQ3ZWEzMWQyNWRmZGNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAyMjozMTowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTE5MCw2ICYjNDM7MTkwLDYwIEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdKVxuIFx0fVxuIH1cbiBcbiYjNDM7LyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuJiM0MztcdFx0XHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNsbCwgbG8oZHN0KSwgbG8oc3JjKSwgc2hpZnQpO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNyYSwgbG8oZHN0KSwgbG8oZHN0KSwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xuJiM0MztcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4mIzQzO1x0XHRcdCBjb25zdCB1OCBzcmNbXSwgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGludCBzaGlmdDtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChvZmYpIHtcbiYjNDM7XHRjYXNlIDg6XG4mIzQzO1x0Y2FzZSAxNjpcbiYjNDM7XHRcdHNoaWZ0ID0gMzIgLSBvZmY7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc3JhLCBsbyhkc3QpLCBsbyhkc3QpLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgc3JhLCBoaShkc3QpLCBsbyhkc3QpLCAzMSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIDMyOlxuJiM0MztcdFx0ZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpO1xuJiM0MztcdFx0ZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXG4mIzQzO1x0XHQgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZVxuJiM0MztcdFx0ICogYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpIG9yIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEoKSxcbiYjNDM7XHRcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xuJiM0MztcdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIExvYWQgZGVsYXkgc2xvdCwgaWYgSVNBIG1hbmRhdGVzIGl0ICovXG4gc3RhdGljIHZvaWQgZW1pdF9sb2FkX2RlbGF5KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIHtcbkBAIC0xNDg1LDggJiM0MzsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiYjNDM7XHRcdFx0ZW1pdF9tb3ZfcjMyKGN0eCwgZHN0LCBzcmMsIG9mZik7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICovXG5AQCAtMTU1NSw4ICYjNDM7MTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xuLVx0XHRlbWl0X21vdl9yKGN0eCwgaGkoZHN0KSwgaGkoc3JjKSk7XG4mIzQzO1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xMjAsNiAmIzQzOzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpXG4gXHRcdGVtaXRfemV4dChjdHgsIGRzdCk7XG4gfVxuIFxuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoMzItYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbiYjNDM7XHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1x0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuJiM0MztcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW92X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4mIzQzO3tcbiYjNDM7XHRpbnQgc2hpZnQ7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAob2ZmKSB7XG4mIzQzO1x0Y2FzZSA4OlxuJiM0MztcdGNhc2UgMTY6XG4mIzQzO1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuJiM0MztcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbiYjNDM7XHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAzMjpcbiYjNDM7XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlclxuJiM0MztcdFx0ICogb2Zmc2V0czsgZGVmaW5lZCBleGNlcHRpb25zIHJlcXVpcmVcbiYjNDM7XHRcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXG4mIzQzO1x0XHQgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1x0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpXG4ge1xuQEAgLTY1Niw4ICYjNDM7NzA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuJiM0MztcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC03NDIsNyAmIzQzOzc5Miw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXRfbW92X3I2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAyMjozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBlOWVmMjM4ZjA4Njg4ZGI1OGUxNDZkMjU3NDdlYTMxZDI1ZGZkY2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDIyOjMxOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKQEAgLTE5MCw2ICYjNDM7MTkwLDYwIEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdKQogCX0KIH0KIAomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICgzMi1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSBjb25zdCB1OCBzcmNbXSwgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCWVtaXQoY3R4LCBzbGwsIGxvKGRzdCksIGxvKHNyYyksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJLyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJY2xvYmJlcl9yZWcoY3R4LCBsbyhkc3QpKTsKJiM0MzsJZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSBjb25zdCB1OCBzcmNbXSwgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCWVtaXQoY3R4LCBzbGwsIGxvKGRzdCksIGxvKHNyYyksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTsKJiM0MzsJCWVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIDMyOgomIzQzOwkJZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpOwomIzQzOwkJZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQkvKgomIzQzOwkJICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlcgomIzQzOwkJICogb2Zmc2V0czsgZGVmaW5lZCBleGNlcHRpb25zIHJlcXVpcmUKJiM0MzsJCSAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksCiYjNDM7CQkgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuCiYjNDM7CQkgKi8KJiM0MzsJCWVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTsKJiM0MzsJCWVtaXRfbW92X3IoY3R4LCBoaShkc3QpLCBoaShzcmMpKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpOwomIzQzO30KJiM0MzsKIC8qIExvYWQgZGVsYXkgc2xvdCwgaWYgSVNBIG1hbmRhdGVzIGl0ICovCiBzdGF0aWMgdm9pZCBlbWl0X2xvYWRfZGVsYXkoc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiB7CkBAIC0xNDg1LDggJiM0MzsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJCS8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi8KIAkJCWVtaXRfbW92X2koY3R4LCBoaShkc3QpLCAwKTsKIAkJfSBlbHNlIHsKLQkJCWVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTsKLQkJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwomIzQzOwkJCWVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpOwogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IC1kc3QgKi8KQEAgLTE1NTUsOCAmIzQzOzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCQlicmVhazsKIAkvKiBkc3QgPSBzcmMgKDY0LWJpdCkgKi8KIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDoKLQkJZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpOwotCQllbWl0X21vdl9yKGN0eCwgaGkoZHN0KSwgaGkoc3JjKSk7CiYjNDM7CQllbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gLWRzdCAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xMjAsNiAmIzQzOzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpCiAJCWVtaXRfemV4dChjdHgsIGRzdCk7CiB9CiAKJiM0MzsvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoMzItYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9tb3ZfcjMyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWludCBzaGlmdDsKJiM0MzsKJiM0MzsJc3dpdGNoIChvZmYpIHsKJiM0MzsJY2FzZSA4OgomIzQzOwljYXNlIDE2OgomIzQzOwkJc2hpZnQgPSAzMiAtIG9mZjsKJiM0MzsJCS8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovCiYjNDM7CQllbWl0KGN0eCwgZHNsbDMyLCBkc3QsIHNyYywgc2hpZnQpOwomIzQzOwkJZW1pdChjdHgsIGRzcmEzMiwgZHN0LCBkc3QsIHNoaWZ0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJLyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKJiM0MzsJZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKQomIzQzO3sKJiM0MzsJaW50IHNoaWZ0OwomIzQzOwomIzQzOwlzd2l0Y2ggKG9mZikgewomIzQzOwljYXNlIDg6CiYjNDM7CWNhc2UgMTY6CiYjNDM7CQlzaGlmdCA9IDMyIC0gb2ZmOwomIzQzOwkJLyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi8KJiM0MzsJCWVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7CiYjNDM7CQllbWl0KGN0eCwgZHNyYTMyLCBkc3QsIGRzdCwgc2hpZnQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMzI6CiYjNDM7CQllbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCS8qCiYjNDM7CQkgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyCiYjNDM7CQkgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZQomIzQzOwkJICogYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpIG9yIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEoKSwKJiM0MzsJCSAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy4KJiM0MzsJCSAqLwomIzQzOwkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKJiM0Mzt9CiYjNDM7CiAvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpCiB7CkBAIC02NTYsOCAmIzQzOzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJCQkvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovCiAJCQllbWl0X3pleHQoY3R4LCBkc3QpOwogCQl9IGVsc2UgewotCQkJZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTsKLQkJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwomIzQzOwkJCWVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpOwogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IC1kc3QgKi8KQEAgLTc0Miw3ICYjNDM7NzkyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX1g6Ci0JCWVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gLWRzdCAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5OAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDMyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEV2YWx1YXRpb246IFBhdGNoIFNlcmllcyoqCgpPa2F5LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggc2VyaWVzIGZvciBpdHMgZnV6emluZyBwb3RlbnRpYWwgb24gYW1kNjQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiBzeXprYWxsZXIgaXMgYSBnb29kIGZpdCBoZXJlLiBGaXJzdCwgSSYjMzk7bGwgZXhhbWluZSB0aGUgZGlmZjsgd2hhdCBjb2RlIGlzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQ/IEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBIbW0sIGJvdGggZmlsZXMgcmVzaWRlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBgYXJjaC9taXBzL2AgZGlyZWN0b3J5LgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCBTZWN0aW9uIDIgZGVhbHMgd2l0aCB3aGVuIHRvICpub3QqIGZ1enouIFRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBzdGF0ZSB0aGF0IHdlIHNob3VsZG4mIzM5O3QgZnV6eiBpZiB0aGUgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gVGhpcyBzZWVtcyBkaXJlY3RseSBhcHBsaWNhYmxlLiBUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gTUlQUyBhcmNoaXRlY3R1cmUgY29kZSwgY29tcGxldGVseSBpcnJlbGV2YW50IHRvIGFtZDY0LCBvdXIgdGFyZ2V0LiBJdOKAmXMgYSBjbGVhciBjYXNlIG9mIGluZWxpZ2liaWxpdHkuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBtaWdodCBnbGFuY2UgYXQgdGhlIGRpZmYgYWdhaW4gb3IgcXVpY2tseSB2ZXJpZnkgaXQsIGJ1dCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWtlcyB0aGUgc2l0dWF0aW9uIGFwcGFyZW50LgoKTm8gb3RoZXIgZmlsZXMgYXJlIHRvdWNoZWQuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGZ1enppbmcgcmVzdWx0IHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgaXJyZWxldmFudCBoZXJlLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBNSVBTLXNwZWNpZmljIEJQRiBKSVQgY29tcGlsYXRpb24gZmlsZXMgKGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCkuIFRoaXMgY29kZSBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgaXMgdW5yZWFjaGFibGUgb24gYW1kNjQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMjI6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjAyLjIwNTY5NTkzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzg5MDg1OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjAyLjIwNTcwMDg2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU0MTE4NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGU5ZWYyMzhmMDg2ODhkYjU4ZTE0NmQyNTc0N2VhMzFkMjVkZmRjZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDIyOjMxOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjg4NWRhMGQwZDc0YjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTE5MCw2ICsxOTAsNjAgQEAgc3RhdGljIHZvaWQgZW1pdF96ZXh0X3ZlcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10pXFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yMzIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbitcXHRcXHRcXHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXFxuK3tcXG4rXFx0aW50IHNoaWZ0O1xcbitcXG4rXFx0c3dpdGNoIChvZmYpIHtcXG4rXFx0Y2FzZSA4OlxcbitcXHRjYXNlIDE2OlxcbitcXHRcXHRzaGlmdCA9IDMyIC0gb2ZmO1xcbitcXHRcXHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdC8qIG9mZiA9PSAwIGlzIE1PVjsgdGhlIHZlcmlmaWVyIHJlamVjdHMgb3RoZXIgb2Zmc2V0cy4gKi9cXG4rXFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGxvKGRzdCksIGxvKHNyYykpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xcbitcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4rfVxcbitcXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDY0LWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbitcXHRcXHRcXHQgY29uc3QgdTggc3JjW10sIHMxNiBvZmYpXFxuK3tcXG4rXFx0aW50IHNoaWZ0O1xcbitcXG4rXFx0c3dpdGNoIChvZmYpIHtcXG4rXFx0Y2FzZSA4OlxcbitcXHRjYXNlIDE2OlxcbitcXHRcXHRzaGlmdCA9IDMyIC0gb2ZmO1xcbitcXHRcXHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcXG4rXFx0XFx0ZW1pdChjdHgsIHNyYSwgaGkoZHN0KSwgbG8oZHN0KSwgMzEpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAzMjpcXG4rXFx0XFx0ZW1pdChjdHgsIG1vdmUsIGxvKGRzdCksIGxvKHNyYykpO1xcbitcXHRcXHRlbWl0KGN0eCwgc3JhLCBoaShkc3QpLCBsbyhkc3QpLCAzMSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXFxuK1xcdFxcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXFxuK1xcdFxcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXFxuK1xcdFxcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcXG4rXFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcXG4rfVxcbitcXG4gLyogTG9hZCBkZWxheSBzbG90LCBpZiBJU0EgbWFuZGF0ZXMgaXQgKi9cXG4gc3RhdGljIHZvaWQgZW1pdF9sb2FkX2RlbGF5KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiB7XFxuQEAgLTE0ODUsOCArMTUzOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdFxcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0X21vdl9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSk7XFxuLVxcdFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbitcXHRcXHRcXHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gLWRzdCAqL1xcbkBAIC0xNTU1LDggKzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X21vdl9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSk7XFxuLVxcdFxcdGVtaXRfbW92X3IoY3R4LCBoaShkc3QpLCBoaShzcmMpKTtcXG4rXFx0XFx0ZW1pdF9tb3ZfcjY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX05FRzpcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZmE3ZTlhYTM3ZjQ5OC4uYTFkZmI3NDkyYTljNCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTIwLDYgKzEyMCw1NyBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QpXFxuIFxcdFxcdGVtaXRfemV4dChjdHgsIGRzdCk7XFxuIH1cXG4gXFxuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICgzMi1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjMyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpbnQgc2hpZnQ7XFxuK1xcbitcXHRzd2l0Y2ggKG9mZikge1xcbitcXHRjYXNlIDg6XFxuK1xcdGNhc2UgMTY6XFxuK1xcdFxcdHNoaWZ0ID0gMzIgLSBvZmY7XFxuK1xcdFxcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXFxuK1xcdFxcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKiBvZmYgPT0gMCBpcyBNT1Y7IHRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyIG9mZnNldHMuICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4rXFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuK31cXG4rXFxuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpbnQgc2hpZnQ7XFxuK1xcbitcXHRzd2l0Y2ggKG9mZikge1xcbitcXHRjYXNlIDg6XFxuK1xcdGNhc2UgMTY6XFxuK1xcdFxcdHNoaWZ0ID0gMzIgLSBvZmY7XFxuK1xcdFxcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXFxuK1xcdFxcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XFxuK1xcdFxcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDMyOlxcbitcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXFxuK1xcdFxcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXFxuK1xcdFxcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXFxuK1xcdFxcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGVtaXRfbW92X3IoY3R4LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4rfVxcbitcXG4gLyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuIHN0YXRpYyB2b2lkIGVtaXRfbW92X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1NjQgaW1tNjQpXFxuIHtcXG5AQCAtNjU2LDggKzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdFxcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cXG4gXFx0XFx0XFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuK1xcdFxcdFxcdGVtaXRfbW92X3IzMihjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSAtZHN0ICovXFxuQEAgLTc0Miw3ICs3OTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gc3JjICg2NC1iaXQpICovXFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IC1kc3QgKDY0LWJpdCkgKi9cXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTkVHOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMTowMi41NjA1NzcxODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyMDM0MTkxMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIE1JUFMgQlBGIEpJVCBjb21waWxlciBjb2RlIChhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYW5kIGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyksIHdoaWNoIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZTllZjIzOGYwODY4OGRiNThlMTQ2ZDI1NzQ3ZWEzMWQyNWRmZGNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAyMjozMTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuaW5kZXggNDBhODc4YjY3MmY1ZC4uODg1ZGEwZDBkNzRiNiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5AQCAtMTkwLDYgKzE5MCw2MCBAQCBzdGF0aWMgdm9pZCBlbWl0X3pleHRfdmVyKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSlcbiBcdH1cbiB9XG4gXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4rXHRcdFx0IGNvbnN0IHU4IHNyY1tdLCBzMTYgb2ZmKVxuK3tcbitcdGludCBzaGlmdDtcbitcbitcdHN3aXRjaCAob2ZmKSB7XG4rXHRjYXNlIDg6XG4rXHRjYXNlIDE2OlxuK1x0XHRzaGlmdCA9IDMyIC0gb2ZmO1xuK1x0XHRlbWl0KGN0eCwgc2xsLCBsbyhkc3QpLCBsbyhzcmMpLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGxvKGRzdCksIGxvKGRzdCksIHNoaWZ0KTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHQvKiBvZmYgPT0gMCBpcyBNT1Y7IHRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyIG9mZnNldHMuICovXG4rXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXHRjbG9iYmVyX3JlZyhjdHgsIGxvKGRzdCkpO1xuK1x0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4rfVxuK1xuKy8qIFJlZ2lzdGVyIG1vdmUgb3BlcmF0aW9uICg2NC1iaXQpLCBvcHRpb25hbGx5IHdpdGggc2lnbiBleHRlbnNpb24gKi9cbitzdGF0aWMgdm9pZCBlbWl0X21vdl9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuK1x0XHRcdCBjb25zdCB1OCBzcmNbXSwgczE2IG9mZilcbit7XG4rXHRpbnQgc2hpZnQ7XG4rXG4rXHRzd2l0Y2ggKG9mZikge1xuK1x0Y2FzZSA4OlxuK1x0Y2FzZSAxNjpcbitcdFx0c2hpZnQgPSAzMiAtIG9mZjtcbitcdFx0ZW1pdChjdHgsIHNsbCwgbG8oZHN0KSwgbG8oc3JjKSwgc2hpZnQpO1xuK1x0XHRlbWl0KGN0eCwgc3JhLCBsbyhkc3QpLCBsbyhkc3QpLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDMyOlxuK1x0XHRlbWl0KGN0eCwgbW92ZSwgbG8oZHN0KSwgbG8oc3JjKSk7XG4rXHRcdGVtaXQoY3R4LCBzcmEsIGhpKGRzdCksIGxvKGRzdCksIDMxKTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHQvKlxuK1x0XHQgKiBvZmYgPT0gMCBpcyBvcmRpbmFyeSBNT1YuIFRoZSB2ZXJpZmllciByZWplY3RzIG90aGVyXG4rXHRcdCAqIG9mZnNldHM7IGRlZmluZWQgZXhjZXB0aW9ucyByZXF1aXJlXG4rXHRcdCAqIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSBvciBicGZfaml0X3N1cHBvcnRzX2FyZW5hKCksXG4rXHRcdCAqIG5laXRoZXIgaW1wbGVtZW50ZWQgYnkgTUlQUy5cbitcdFx0ICovXG4rXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbitcdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xuK31cbitcbiAvKiBMb2FkIGRlbGF5IHNsb3QsIGlmIElTQSBtYW5kYXRlcyBpdCAqL1xuIHN0YXRpYyB2b2lkIGVtaXRfbG9hZF9kZWxheShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiB7XG5AQCAtMTQ4NSw4ICsxNTM5LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0XHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIGhpKGRzdCksIDApO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbitcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC0xNTU1LDggKzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IHNyYyAoNjQtYml0KSAqL1xuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9WIHwgQlBGX1g6XG4tXHRcdGVtaXRfbW92X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpKTtcbi1cdFx0ZW1pdF9tb3ZfcihjdHgsIGhpKGRzdCksIGhpKHNyYykpO1xuK1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5hMWRmYjc0OTJhOWM0IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xMjAsNiArMTIwLDU3IEBAIHN0YXRpYyB2b2lkIGVtaXRfemV4dF92ZXIoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdClcbiBcdFx0ZW1pdF96ZXh0KGN0eCwgZHN0KTtcbiB9XG4gXG4rLyogUmVnaXN0ZXIgbW92ZSBvcGVyYXRpb24gKDMyLWJpdCksIG9wdGlvbmFsbHkgd2l0aCBzaWduIGV4dGVuc2lvbiAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW92X3IzMihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aW50IHNoaWZ0O1xuK1xuK1x0c3dpdGNoIChvZmYpIHtcbitcdGNhc2UgODpcbitcdGNhc2UgMTY6XG4rXHRcdHNoaWZ0ID0gMzIgLSBvZmY7XG4rXHRcdC8qIGRzbGwzMiBhbmQgZHNyYTMyIGFkZCAzMiB0byB0aGUgc2hpZnQgYXJndW1lbnQuICovXG4rXHRcdGVtaXQoY3R4LCBkc2xsMzIsIGRzdCwgc3JjLCBzaGlmdCk7XG4rXHRcdGVtaXQoY3R4LCBkc3JhMzIsIGRzdCwgZHN0LCBzaGlmdCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0Lyogb2ZmID09IDAgaXMgTU9WOyB0aGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlciBvZmZzZXRzLiAqL1xuK1x0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbitcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuK31cbitcbisvKiBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbiAoNjQtYml0KSwgb3B0aW9uYWxseSB3aXRoIHNpZ24gZXh0ZW5zaW9uICovXG4rc3RhdGljIHZvaWQgZW1pdF9tb3ZfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpbnQgc2hpZnQ7XG4rXG4rXHRzd2l0Y2ggKG9mZikge1xuK1x0Y2FzZSA4OlxuK1x0Y2FzZSAxNjpcbitcdFx0c2hpZnQgPSAzMiAtIG9mZjtcbitcdFx0LyogZHNsbDMyIGFuZCBkc3JhMzIgYWRkIDMyIHRvIHRoZSBzaGlmdCBhcmd1bWVudC4gKi9cbitcdFx0ZW1pdChjdHgsIGRzbGwzMiwgZHN0LCBzcmMsIHNoaWZ0KTtcbitcdFx0ZW1pdChjdHgsIGRzcmEzMiwgZHN0LCBkc3QsIHNoaWZ0KTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDMyOlxuK1x0XHRlbWl0X3NleHQoY3R4LCBkc3QsIHNyYyk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0LypcbitcdFx0ICogb2ZmID09IDAgaXMgb3JkaW5hcnkgTU9WLiBUaGUgdmVyaWZpZXIgcmVqZWN0cyBvdGhlclxuK1x0XHQgKiBvZmZzZXRzOyBkZWZpbmVkIGV4Y2VwdGlvbnMgcmVxdWlyZVxuK1x0XHQgKiBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKCkgb3IgYnBmX2ppdF9zdXBwb3J0c19hcmVuYSgpLFxuK1x0XHQgKiBuZWl0aGVyIGltcGxlbWVudGVkIGJ5IE1JUFMuXG4rXHRcdCAqL1xuK1x0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRicmVhaztcbitcdH1cbitcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbit9XG4rXG4gLyogZHN0ID0gaW1tICg2NC1iaXQpICovXG4gc3RhdGljIHZvaWQgZW1pdF9tb3ZfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU2NCBpbW02NClcbiB7XG5AQCAtNjU2LDggKzcwNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdFx0LyogU3BlY2lhbCBtb3YzMiBmb3IgemV4dCAqL1xuIFx0XHRcdGVtaXRfemV4dChjdHgsIGRzdCk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9tb3ZfcihjdHgsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbitcdFx0XHRlbWl0X21vdl9yMzIoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IC1kc3QgKi9cbkBAIC03NDIsNyArNzkyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PViB8IEJQRl9YOlxuLVx0XHRlbWl0X21vdl9yKGN0eCwgZHN0LCBzcmMpO1xuK1x0XHRlbWl0X21vdl9yNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSAtZHN0ICg2NC1iaXQpICovXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ORUc6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMTowMi41NjA1Nzk0NzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjAzNDE2MDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEV2YWx1YXRpb246IFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIHNlcmllcyBmb3IgaXRzIGZ1enppbmcgcG90ZW50aWFsIG9uIGFtZDY0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgc3l6a2FsbGVyIGlzIGEgZ29vZCBmaXQgaGVyZS4gRmlyc3QsIEknbGwgZXhhbWluZSB0aGUgZGlmZjsgd2hhdCBjb2RlIGlzIGFjdHVhbGx5IGJlaW5nIGNoYW5nZWQ/IEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBIbW0sIGJvdGggZmlsZXMgcmVzaWRlICpleGNsdXNpdmVseSogd2l0aGluIHRoZSBgYXJjaC9taXBzL2AgZGlyZWN0b3J5LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiBkZWFscyB3aXRoIHdoZW4gdG8gKm5vdCogZnV6ei4gVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIHN0YXRlIHRoYXQgd2Ugc2hvdWxkbid0IGZ1enogaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuIFRoaXMgc2VlbXMgZGlyZWN0bHkgYXBwbGljYWJsZS4gVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIE1JUFMgYXJjaGl0ZWN0dXJlIGNvZGUsIGNvbXBsZXRlbHkgaXJyZWxldmFudCB0byBhbWQ2NCwgb3VyIHRhcmdldC4gSXTigJlzIGEgY2xlYXIgY2FzZSBvZiBpbmVsaWdpYmlsaXR5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBtaWdodCBnbGFuY2UgYXQgdGhlIGRpZmYgYWdhaW4gb3IgcXVpY2tseSB2ZXJpZnkgaXQsIGJ1dCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWtlcyB0aGUgc2l0dWF0aW9uIGFwcGFyZW50LlxuXG5ObyBvdGhlciBmaWxlcyBhcmUgdG91Y2hlZC5cblxuVGhlcmVmb3JlLCBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGZ1enppbmcgcmVzdWx0IHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhcmUgaXJyZWxldmFudCBoZXJlLiBNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIE1JUFMtc3BlY2lmaWMgQlBGIEpJVCBjb21waWxhdGlvbiBmaWxlcyAoYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgKS4gVGhpcyBjb2RlIGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0byBNSVBTIGFuZCBpcyB1bnJlYWNoYWJsZSBvbiBhbWQ2NC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5OCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDIyOjMxOjE0LjU5NDc0MzgzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBNSVBTIEJQRiBKSVQgY29tcGlsZXIgY29kZSAoYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGFuZCBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMpLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG8gTUlQUyBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGNvZGUgKGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBhbmQgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jKSwgd2hpY2ggaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvIE1JUFMgYW5kIHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQyMjozMToxNC41OTQ3NzE0MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqtnbl[1] Phase: Running StartedAt: 2026-09-05 22:31:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqtnbl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 22:31:25 +0000 UTC FinishedAt: 2026-09-05 22:31:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}