Name: series-workflowcglt8 Phase: Failed StartedAt: 2026-07-24 10:06:11 +0000 UTC FinishedAt: 2026-07-24 10:26:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcglt8[0] Phase: Succeeded StartedAt: 2026-07-24 10:06:11 +0000 UTC FinishedAt: 2026-07-24 10:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcglt8[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 10:06:11 +0000 UTC FinishedAt: 2026-07-24 10:26:48 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxMzkxM2Q4ZGJiOWM2NTU2YTc4ZGVkZWU1ZWVmYmIzZWY5MmQ0YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMDoyNTo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuQEAgLTExMyw4ICYjNDM7MTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfYm91bmNlX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4tXHRcdFx0XHRcdCAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbiBcdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pO1xuIFx0c3RydWN0IG1seDVfZmxvd19ncm91cCAqZndkX2dycDtcbkBAIC0xMjIsMjIgJiM0MzsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuIFx0dTMyIGZsb3dfaW5kZXggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkge1xuLVx0XHRyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cbiYjNDM7XHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbiBcdFx0Zmxvd19pbmRleCYjNDM7JiM0Mzs7XG4tXHR9XG4tXG4tXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpKVxuLVx0XHRnb3RvIG91dDtcbiBcbiBcdGZsb3dfZ3JvdXBfaW4gPSBrdnphbGxvYyhpbmxlbiwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWZsb3dfZ3JvdXBfaW4pIHtcbi1cdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0Z290byBmd2RfZ3JwX2Vycjtcbi1cdH1cbiYjNDM7XHRpZiAoIWZsb3dfZ3JvdXBfaW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdC8qIFRoaXMgZ3JvdXAgaG9sZHMgMSBGVEUgdG8gZm9yd2FyZCBhbGwgcGFja2V0cyB0byBvdGhlciB2cG9ydFxuIFx0ICogd2hlbiBib25kIHZwb3J0cyBpcyBzdXBwb3J0ZWQuXG5AQCAtMTUwLDE2ICYjNDM7MTQwLDE1IEBAIHN0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiBcdFx0ZXN3X3dhcm4oZXN3LVx1MDAzZWRldixcbiBcdFx0XHQgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2cG9ydFslZF0gZWdyZXNzIGZ3ZDJ2cG9ydCBmbG93IGdyb3VwLCBlcnIoJWQpXFxuXCYjMzQ7LFxuIFx0XHRcdCB2cG9ydC1cdTAwM2V2cG9ydCwgcmV0KTtcbi1cdFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xuLVx0XHRnb3RvIGZ3ZF9ncnBfZXJyO1xuJiM0MztcdFx0Z290byBvdXQ7XG4gXHR9XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycCA9IGZ3ZF9ncnA7XG4tXHRrdmZyZWUoZmxvd19ncm91cF9pbik7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRlc3dfZGVidWcoZXN3LVx1MDAzZWRldixcbiYjNDM7XHRcdCAgXCYjMzQ7bGF6eS1jcmVhdGVkIGZ3ZF9ncnAgZm9yIHZwb3J0ICVkIChmbG93X2luZGV4PSV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdCAgdnBvcnQtXHUwMDNldnBvcnQsIGZsb3dfaW5kZXgpO1xuIFxuLWZ3ZF9ncnBfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XG4gb3V0OlxuJiM0MztcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NSwyMiAmIzQzOzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKVxuIFxuIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbi1cdGludCB0YWJsZV9zaXplID0gMDtcbiYjNDM7XHRpbnQgdGFibGVfc2l6ZSA9IDE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAhTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbiYjNDM7XHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiYjNDM7XHQvKiBUaGUgZndkMnZwb3J0IEZUL2dyb3VwIGlzIGNyZWF0ZWQgbGF6aWx5IG9uIGJvbmQgZXZlbnRzOyBpZiBwcmlvX3RhZ1xuJiM0MztcdCAqIGlzIG5vdCByZXF1aXJlZCwgc2tpcCBlYWdlciBGVCBhbGxvY2F0aW9uIGhlcmUgZW50aXJlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveSh2cG9ydCk7XG4gXG4mIzQzO1x0LyogUmVzZXJ2ZSBhbiBleHRyYSBGVEUgc28gdGhlIGZ3ZF9ncnAgY2FuIGJlIGFkZGVkIGxhemlseSBsYXRlci4gKi9cbiBcdGlmIChtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSlcbiBcdFx0dGFibGVfc2l6ZSYjNDM7JiM0Mzs7XG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbi1cdFx0dGFibGVfc2l6ZSYjNDM7JiM0Mzs7XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiBcdFx0XHRcdFx0XHQgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTtcbiBcdGlmIChJU19FUlIodnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkpIHtcbkBAIC0yMTAsMjEgJiM0MzsyMDAsMjEgQEAgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnRcbiBcdH1cbiBcdHZwb3J0LVx1MDAzZWVncmVzcy50eXBlID0gVlBPUlRfRUdSRVNTX0FDTF9UWVBFX0RFRkFVTFQ7XG4gXG4tXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoZXN3LCB2cG9ydCk7XG4mIzQzO1x0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBncm91cF9lcnI7XG4mIzQzO1x0XHRnb3RvIHRhYmxlX2VycjtcbiBcbiBcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LCBcJiMzNDt2cG9ydFslZF0gY29uZmlndXJlIGVncmVzcyBydWxlc1xcblwmIzM0OywgdnBvcnQtXHUwMDNldnBvcnQpO1xuIFxuIFx0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCB2cG9ydCwgTlVMTCk7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIHJ1bGVzX2VycjtcbiYjNDM7XHRcdGdvdG8gdmxhbl9ncnBfZXJyO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tcnVsZXNfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfZGVzdHJveSh2cG9ydCk7XG4tZ3JvdXBfZXJyOlxuJiM0Mzt2bGFuX2dycF9lcnI6XG4mIzQzO1x0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XG4mIzQzO3RhYmxlX2VycjpcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjM2LDE4ICYjNDM7MjI2LDUzIEBAIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9jbGVhbnVwKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbiYjNDM7LyogTGF6aWx5IGFsbG9jYXRlIHRoZSBlZ3Jlc3MgQUNMIHRhYmxlIGFuZCBmd2RfZ3JwIGZvciBhIHZwb3J0IHRoYXQgaXMgYWJvdXRcbiYjNDM7ICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XG4mIzQzOyAqIHdoZW4gcHJpb190YWcgaXMgcmVxdWlyZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghdnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkge1xuJiM0MztcdFx0YWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiYjNDM7XHRcdFx0XHRcdCAgIE1MWDVfRkxPV19OQU1FU1BBQ0VfRVNXX0VHUkVTUywgMSk7XG4mIzQzO1x0XHRpZiAoSVNfRVJSKGFjbCkpXG4mIzQzO1x0XHRcdHJldHVybiBQVFJfRVJSKGFjbCk7XG4mIzQzO1x0XHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gYWNsO1xuJiM0MztcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICh2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuJiM0MztcdGlmIChlcnIgXHUwMDI2XHUwMDI2IGFjbClcbiYjNDM7XHRcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7XG4gaW50IG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiBhY3RpdmVfdnBvcnRfbnVtLFxuIFx0XHRcdFx0ICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKVxuIHtcbiBcdHN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTtcbiBcdHN0cnVjdCBtbHg1X3Zwb3J0ICphY3RpdmVfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGVzdywgYWN0aXZlX3Zwb3J0X251bSk7XG4gXHRzdHJ1Y3QgbWx4NV9mbG93X2Rlc3RpbmF0aW9uIGZ3ZF9kZXN0ID0ge307XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTtcbiBcdGlmIChJU19FUlIocGFzc2l2ZV92cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBhc3NpdmVfdnBvcnQpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XG4gXHQvKiBDbGVhbnVwIGFuZCByZWNyZWF0ZSBydWxlcyBXSVRIT1VUIGZ3ZDJ2cG9ydCBvZiBhY3RpdmUgdnBvcnQgKi9cbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xuQEAgLTI1OSwxNiAmIzQzOzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udVxuIFx0ZndkX2Rlc3QudnBvcnQudmhjYV9pZCA9IE1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCB2aGNhX2lkKTtcbiBcdGZ3ZF9kZXN0LnZwb3J0LmZsYWdzID0gTUxYNV9GTE9XX0RFU1RfVlBPUlRfVkhDQV9JRDtcbiBcbi1cdHJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsIFx1MDAyNmZ3ZF9kZXN0KTtcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsIFx1MDAyNmZ3ZF9kZXN0KTtcbiYjNDM7XG4mIzQzO3VubG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4ge1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIodnBvcnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUih2cG9ydCk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuLVx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuJiM0MztcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjEzOTEzZDhkYmI5YzY1NTZhNzhkZWRlZTVlZWZiYjNlZjkyZDRiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMKaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMKQEAgLTExMyw4ICYjNDM7MTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAllc3dfYWNsX2VncmVzc19vZmxkX2JvdW5jZV9ydWxlc19kZXN0cm95KHZwb3J0KTsKIH0KIAotc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAotCQkJCQkgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAomIzQzOwkJCQkJICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KQogewogCWludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pOwogCXN0cnVjdCBtbHg1X2Zsb3dfZ3JvdXAgKmZ3ZF9ncnA7CkBAIC0xMjIsMjIgJiM0MzsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAogCXUzMiBmbG93X2luZGV4ID0gMDsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkgewotCQlyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCiYjNDM7CWlmIChNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkKIAkJZmxvd19pbmRleCYjNDM7JiM0Mzs7Ci0JfQotCi0JaWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSkKLQkJZ290byBvdXQ7CiAKIAlmbG93X2dyb3VwX2luID0ga3Z6YWxsb2MoaW5sZW4sIEdGUF9LRVJORUwpOwotCWlmICghZmxvd19ncm91cF9pbikgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGZ3ZF9ncnBfZXJyOwotCX0KJiM0MzsJaWYgKCFmbG93X2dyb3VwX2luKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAKIAkvKiBUaGlzIGdyb3VwIGhvbGRzIDEgRlRFIHRvIGZvcndhcmQgYWxsIHBhY2tldHMgdG8gb3RoZXIgdnBvcnQKIAkgKiB3aGVuIGJvbmQgdnBvcnRzIGlzIHN1cHBvcnRlZC4KQEAgLTE1MCwxNiAmIzQzOzE0MCwxNSBAQCBzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csCiAJCWVzd193YXJuKGVzdy0mZ3Q7ZGV2LAogCQkJICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2cG9ydFslZF0gZWdyZXNzIGZ3ZDJ2cG9ydCBmbG93IGdyb3VwLCBlcnIoJWQpXG4mIzM0OywKIAkJCSB2cG9ydC0mZ3Q7dnBvcnQsIHJldCk7Ci0JCWt2ZnJlZShmbG93X2dyb3VwX2luKTsKLQkJZ290byBmd2RfZ3JwX2VycjsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAl2cG9ydC0mZ3Q7ZWdyZXNzLm9mZmxvYWRzLmZ3ZF9ncnAgPSBmd2RfZ3JwOwotCWt2ZnJlZShmbG93X2dyb3VwX2luKTsKLQlyZXR1cm4gMDsKJiM0MzsJZXN3X2RlYnVnKGVzdy0mZ3Q7ZGV2LAomIzQzOwkJICAmIzM0O2xhenktY3JlYXRlZCBmd2RfZ3JwIGZvciB2cG9ydCAlZCAoZmxvd19pbmRleD0ldSlcbiYjMzQ7LAomIzQzOwkJICB2cG9ydC0mZ3Q7dnBvcnQsIGZsb3dfaW5kZXgpOwogCi1md2RfZ3JwX2VycjoKLQllc3dfYWNsX2VncmVzc192bGFuX2dycF9kZXN0cm95KHZwb3J0KTsKIG91dDoKJiM0MzsJa3ZmcmVlKGZsb3dfZ3JvdXBfaW4pOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE4NSwyMiAmIzQzOzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKQogCiBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9zZXR1cChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIHsKLQlpbnQgdGFibGVfc2l6ZSA9IDA7CiYjNDM7CWludCB0YWJsZV9zaXplID0gMTsKIAlpbnQgZXJyOwogCi0JaWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSAmYW1wOyZhbXA7Ci0JICAgICFNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkKJiM0MzsJaWYgKCFlc3dfYWNsX2VncmVzc19uZWVkZWQoZXN3LCB2cG9ydC0mZ3Q7dnBvcnQpKQogCQlyZXR1cm4gMDsKIAotCWlmICghZXN3X2FjbF9lZ3Jlc3NfbmVlZGVkKGVzdywgdnBvcnQtJmd0O3Zwb3J0KSkKJiM0MzsJLyogVGhlIGZ3ZDJ2cG9ydCBGVC9ncm91cCBpcyBjcmVhdGVkIGxhemlseSBvbiBib25kIGV2ZW50czsgaWYgcHJpb190YWcKJiM0MzsJICogaXMgbm90IHJlcXVpcmVkLCBza2lwIGVhZ2VyIEZUIGFsbG9jYXRpb24gaGVyZSBlbnRpcmVseS4KJiM0MzsJICovCiYjNDM7CWlmICghTUxYNV9DQVBfR0VOKGVzdy0mZ3Q7ZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpCiAJCXJldHVybiAwOwogCiAJZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTsKIAomIzQzOwkvKiBSZXNlcnZlIGFuIGV4dHJhIEZURSBzbyB0aGUgZndkX2dycCBjYW4gYmUgYWRkZWQgbGF6aWx5IGxhdGVyLiAqLwogCWlmIChtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSkKIAkJdGFibGVfc2l6ZSYjNDM7JiM0Mzs7Ci0JaWYgKE1MWDVfQ0FQX0dFTihlc3ctJmd0O2RldiwgcHJpb190YWdfcmVxdWlyZWQpKQotCQl0YWJsZV9zaXplJiM0MzsmIzQzOzsKIAl2cG9ydC0mZ3Q7ZWdyZXNzLmFjbCA9IGVzd19hY2xfdGFibGVfY3JlYXRlKGVzdywgdnBvcnQsCiAJCQkJCQkgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTsKIAlpZiAoSVNfRVJSKHZwb3J0LSZndDtlZ3Jlc3MuYWNsKSkgewpAQCAtMjEwLDIxICYjNDM7MjAwLDIxIEBAIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0CiAJfQogCXZwb3J0LSZndDtlZ3Jlc3MudHlwZSA9IFZQT1JUX0VHUkVTU19BQ0xfVFlQRV9ERUZBVUxUOwogCi0JZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKGVzdywgdnBvcnQpOwomIzQzOwllcnIgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7CiAJaWYgKGVycikKLQkJZ290byBncm91cF9lcnI7CiYjNDM7CQlnb3RvIHRhYmxlX2VycjsKIAogCWVzd19kZWJ1Zyhlc3ctJmd0O2RldiwgJiMzNDt2cG9ydFslZF0gY29uZmlndXJlIGVncmVzcyBydWxlc1xuJiMzNDssIHZwb3J0LSZndDt2cG9ydCk7CiAKIAllcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTsKIAlpZiAoZXJyKQotCQlnb3RvIHJ1bGVzX2VycjsKJiM0MzsJCWdvdG8gdmxhbl9ncnBfZXJyOwogCiAJcmV0dXJuIDA7CiAKLXJ1bGVzX2VycjoKLQllc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19kZXN0cm95KHZwb3J0KTsKLWdyb3VwX2VycjoKJiM0Mzt2bGFuX2dycF9lcnI6CiYjNDM7CWVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpOwomIzQzO3RhYmxlX2VycjoKIAllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjM2LDE4ICYjNDM7MjI2LDUzIEBAIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9jbGVhbnVwKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKIH0KIAomIzQzOy8qIExhemlseSBhbGxvY2F0ZSB0aGUgZWdyZXNzIEFDTCB0YWJsZSBhbmQgZndkX2dycCBmb3IgYSB2cG9ydCB0aGF0IGlzIGFib3V0CiYjNDM7ICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5CiYjNDM7ICogd2hlbiBwcmlvX3RhZyBpcyByZXF1aXJlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywKJiM0MzsJCQkJCSAgICAgICBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoIXZwb3J0LSZndDtlZ3Jlc3MuYWNsKSB7CiYjNDM7CQlhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LAomIzQzOwkJCQkJICAgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCAxKTsKJiM0MzsJCWlmIChJU19FUlIoYWNsKSkKJiM0MzsJCQlyZXR1cm4gUFRSX0VSUihhY2wpOwomIzQzOwkJdnBvcnQtJmd0O2VncmVzcy5hY2wgPSBhY2w7CiYjNDM7CQl2cG9ydC0mZ3Q7ZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAodnBvcnQtJmd0O2VncmVzcy5vZmZsb2Fkcy5md2RfZ3JwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7CiYjNDM7CWlmIChlcnIgJmFtcDsmYW1wOyBhY2wpCiYjNDM7CQllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udW0sCiAJCQkJICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKQogewogCXN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqYWN0aXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIGFjdGl2ZV92cG9ydF9udW0pOwogCXN0cnVjdCBtbHg1X2Zsb3dfZGVzdGluYXRpb24gZndkX2Rlc3QgPSB7fTsKJiM0MzsJaW50IGVycjsKIAogCWlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSkKIAkJcmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTsKIAlpZiAoSVNfRVJSKHBhc3NpdmVfdnBvcnQpKQogCQlyZXR1cm4gUFRSX0VSUihwYXNzaXZlX3Zwb3J0KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsKJiM0MzsJZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9md2QydnBvcnRfc2V0dXAoZXN3LCBwYXNzaXZlX3Zwb3J0KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gdW5sb2NrOwomIzQzOwogCS8qIENsZWFudXAgYW5kIHJlY3JlYXRlIHJ1bGVzIFdJVEhPVVQgZndkMnZwb3J0IG9mIGFjdGl2ZSB2cG9ydCAqLwogCWVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpOwogCWVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgYWN0aXZlX3Zwb3J0LCBOVUxMKTsKQEAgLTI1OSwxNiAmIzQzOzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udQogCWZ3ZF9kZXN0LnZwb3J0LnZoY2FfaWQgPSBNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHZoY2FfaWQpOwogCWZ3ZF9kZXN0LnZwb3J0LmZsYWdzID0gTUxYNV9GTE9XX0RFU1RfVlBPUlRfVkhDQV9JRDsKIAotCXJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsICZhbXA7ZndkX2Rlc3QpOwomIzQzOwllcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsICZhbXA7ZndkX2Rlc3QpOwomIzQzOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsJcmV0dXJuIGVycjsKIH0KIAogaW50IG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IHZwb3J0X251bSkKIHsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGVzdywgdnBvcnRfbnVtKTsKJiM0MzsJaW50IGVycjsKIAogCWlmIChJU19FUlIodnBvcnQpKQogCQlyZXR1cm4gUFRSX0VSUih2cG9ydCk7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTsKLQlyZXR1cm4gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCB2cG9ydCwgTlVMTCk7CiYjNDM7CWVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtlc3ctJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBFZ3Jlc3MgQUNMIFBhdGNoIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZWdyZXNzIEFDTCBzZXR1cCB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwYCwgYGVzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmRgLCBhbmQgYG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kYCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRvIGludHJvZHVjZSBhIGxhenkgYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgdGhlIGVncmVzcyBBQ0wgdGFibGUgYW5kIHRoZSBmd2RfZ3JwIHdoZW4gYSB2cG9ydCBpcyBhYm91dCB0byBnZXQgYSBmd2QydnBvcnQgcnVsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogaG93IGRvIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgpTaW5jZSB0aGlzIGRlYWxzIHdpdGggdGhlIGBtbHg1YCBkcml2ZXIsIHdoaWNoIHN1cHBvcnRzIHRoZSBDb25uZWN0WC00LCBDb25uZWN0WC01LCBhbmQgQ29ubmVjdFgtNiBmYW1pbGllcyBvZiBNZWxsYW5veCBOSUNzLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgSSBjYW4gZW11bGF0ZSBvciBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBDYW4gSSBydW4gdGhpcyBpbiBhIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnQ/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIGhhcyBhbnkgc29ydCBvZiBNZWxsYW5veCBoYXJkd2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLiBJbW1lZGlhdGVseSwgSSByZWNhbGwgdGhhdCB0aGVyZSBpc24mIzM5O3QgYW55IHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uIG9mIG1seDUgaGFyZHdhcmUgbGlrZSB3ZSBoYXZlIHdpdGggbWFjODAyMTFfaHdzaW0gb3IgbmV0ZGV2c2ltIGZvciBvdGhlciBkZXZpY2VzLiBJdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50LgoKQWxyaWdodCwgYSBxdWljayBzZWFyY2ggb2YgUUVNVSBjb25maXJtcyB0aGlzOyB0aGVyZSYjMzk7cyBubyBuYXRpdmUgbWx4NSBlbXVsYXRpb24uIEkgY2FuIHNlZSB0aGUgYGh3L25ldC9yb2NrZXJgIHdoaWNoIGlzIGEgZ29vZCByZW1pbmRlci4gU28sIHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIHdvcmsuIERvZXMgdGhhdCBtZWFuIEkmIzM5O20gc3R1Y2sgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSBmb3IgdGVzdGluZz8KCk5vLCBsZXQmIzM5O3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgb3Igc2ltdWxhdGlvbiBkcml2ZXJzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvYCBkaXJlY3RvcnkuIE1heWJlIHRoZXJlJiMzOTtzIGEgc2ltdWxhdGlvbiBjb21wb25lbnQsIEkmIzM5O20gaG9waW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBteSBwcmVmZXJyZWQgdG9vbHMsIGxpa2UgYGdyZXBwZXJgLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjbHVlcyByZWdhcmRpbmcgbWx4NSBlbXVsYXRpb24gb3Igc2ltdWxhdGlvbiwgaW4gdGhlIGtlcm5lbCBvciBRRU1VLiBUaGF0JiMzOTtzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1LipzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NzYwPXN0YXRpYyBpbnQgbWx4NWVfcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpvbGRxLCBpbnQgcXVldWVfaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU3NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlx0LyogSW4gbWx4NSBhIHR4cSBjYW5ub3QgYmUgc2ltcGx5IHN0b3BwZWQgaW4gaXNvbGF0aW9uLCBvbmx5IHJlc3RhcnRlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2My1cdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTE4MD1zdGF0aWMgaW50IGh3c19id2NfbWF0Y2hlcl9tb3ZlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTIyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MjI3OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzUzLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzozNTQ6XHRcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzU1LVx0XHRcdFx0XHRcdFx0dGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjM3MTppbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zODg9aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy00MDAtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcdFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTYwOT1zdGF0aWMgaW50IGh3c19id2NfcnVsZV9jbnRfZGVjX3dpdGhfc2hyaW5rKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6NjQyOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTY2Nj1pbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY3NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1Olx0XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTAwMT1zdGF0aWMgaW50IGh3c19id2NfcnVsZV9jbnRfaW5jX3dpdGhfcmVoYXNoKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjEwMzc6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXHRcdFx0XHQgICB1MzIgKm1hdGNoX3BhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTcxLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoxMTcyOlx0XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzMtXHRcdFx0XHRcdFx0ICAgICBwYXJhbXMtXHUwMDNlbWF0Y2hfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9NzA9aW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjcxOm1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVx0XHRcdFx0ICBzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6Nzg6aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaD04Mj12b2lkIG1seDVod3NfYndjX3J1bGVfZnJlZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTg1LVx0XHRcdFx0ICAgdTMyICptYXRjaF9wYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaDo5MDppbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9Mzg4PXN0YXRpYyBpbnQgaHdzX3N1Ym1hdGNoZXJfaW5pdF9maXJzdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0MTE6XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlciwgc3VibS1cdTAwM2V0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVx0XHRcdFx0XHRcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDI3LWRlc3Ryb3lfbWF0Y2hlcjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NDMzPXN0YXRpYyBpbnQgaHdzX3N1Ym1hdGNoZXJfaW5pdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsIGludCBpZHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQ4MS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyLCBzdWJtLVx1MDAzZXRibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODMtXHRcdFx0XHRcdFx0cHJpb3JpdHksIG1hdGNoX2NyaXRlcmlhLCBtYXNrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUwMDpcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTAxLWZyZWVfbWF0Y2hlcjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjItXHRpZiAoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUyMzpcdFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXHRcdGlmIChpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc0OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjc4MzpcdHJldCA9IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdWJydWxlLCBtYXRjaF9wYXJhbXMsIGFjdGlvbnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVx0XHRcdFx0XHQgICAgIGZsb3dfc291cmNlLCBid2NfcXVldWVfaWR4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9Nzk5PXN0YXRpYyBpbnQgaHdzX2NvbXBsZXhfc3VicnVsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVx0YndjX3J1bGUtXHUwMDNlcnVsZS1cdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6ODE3Olx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShid2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVx0aWYgKHVubGlrZWx5KHJldCkpXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDctXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0OS1cdHU4ICAgICAgICAgaXB2Nl8xMjdfOTZbMHgyMF07XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTU1PXVuaW9uIG1seDVfaWZjX2lwdjZfbGF5b3V0X2lwdjRfbGF5b3V0X2F1dG9fYml0cyB7XG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NTY6XHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmgtNTU3LVx0c3RydWN0IG1seDVfaWZjX2lwdjZfbGF5b3V0X2JpdHMgaXB2Nl9sYXlvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFRlc3RpbmcgTUxYNSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGVzZSBgZ3JlcGAgcmVzdWx0cywgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGxzLCBsaWtlIGBtbHg1ZV9xdWV1ZV9zdG9wYCBhbmQgYG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZWAsIGFyZW4mIzM5O3QgcGFydCBvZiBhbnkgc2ltdWxhdG9yLiBUaGV5IGFyZSBhbGwgTWVsbGFub3ggaGFyZHdhcmUtc3BlY2lmaWMgZnVuY3Rpb25zLiAgSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gdGVzdCBgbWx4NWAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSBgbmV0ZGV2c2ltYCwgYnV0IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IGl0IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGBtbHg1YCBoYXJkd2FyZS4gIFdoYXQgYWJvdXQgZGl2aW5nIGludG8gYG1seDVfY29yZWA/IERvZXMgaXQgaGF2ZSBzb21lIGtpbmQgb2YgZHVtbXkgZGV2aWNlIG1vZGUsIHNvbWUgd2F5IHRvIGJlIHRlc3RlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBgQ09ORklHX01MWDVfQ09SRWAgaXMgdGVzdGFibGUgd2l0aGluIFN5emthbGxlci4KCkhtbSwgU3l6a2FsbGVyLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIHdpdGhvdXQgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUsIFN5emthbGxlciBjYW4mIzM5O3QgZWZmZWN0aXZlbHkgdGVzdCBgbWx4NWAuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6LWNsdXN0ZXJgLCBidXQgdGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBhdm9pZCBjb2RlIHBhdGhzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIG5vdGVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9mIGhhcmR3YXJlIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAsIGNhbiYjMzk7dCBiZSB0ZXN0ZWQuCgpTaW5jZSBgbWx4NWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGEgUENJZSBkZXZpY2UsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBgbmV0ZGV2c2ltYCwgb3IgYHZoY2lgLCBJIGNhbiBzZWUgd2h5IGl0IHdvdWxkbiYjMzk7dCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZywgcGVyaGFwcyBhIHZpcnR1YWwgYG1seDVgIGRyaXZlcj8gIE1heWJlIHNvbWV0aGluZyBpbiB0aGUgYHZkcGFgIG9yIGB2ZmlvYCBhcmVhcz8gTm9wZSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nOyB0aGUgYGRyaXZlcnMvdmRwYS9tbHg1L2AgYW5kIGBkcml2ZXJzL3ZmaW8vcGNpL21seDUvYCBkaXJlY3RvcmllcyBhcmUsIHVuc3VycHJpc2luZ2x5LCBmb3IgbWx4NSBoYXJkd2FyZS4gVGhleSB3b3VsZG4mIzM5O3QgaGVscCBtZSBoZXJlLgoKQWxyaWdodCwgd2hhdCBhYm91dCBpbmplY3RpbmcgYSBmYWtlIFBDSSBkZXZpY2UgdG8gcmVwcmVzZW50IGBtbHg1YD8gVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhlIGtlcm5lbCBkb2VzbiYjMzk7dCBvZmZlciBhIG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgYSBmYWtlIG1seDUgUENJIGRldmljZS4gU28sIGl0IGFwcGVhcnMgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbW9jayBvciBvdGhlcndpc2Ugc2ltdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBgbWx4NWAgZGV2aWNlIGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1Liptb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE1MWDUgRHJpdmVyIFF1aXJrcyoqCgpIbW0sIHRoaW5raW5nIGFib3V0IHRoZSBNTFg1IGRyaXZlci4uLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nLiBDb3VsZCB0aGVyZSBiZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRob3NlICYjMzQ7ZHVtbXkmIzM0OyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgYW55dGhpbmcgbmFtZWQgYG1seDUuKmR1bW15YD8gSSYjMzk7dmUgc2VlbiBzb21lIG9kZGl0aWVzIGluIHRoZSBwYXN0IHdpdGggZHJpdmVycyBhbmQgdmlydHVhbCBvciBzaW11bGF0ZWQgZGV2aWNlcywgZXNwZWNpYWxseSBkdXJpbmcgY2VydGFpbiB0ZXN0aW5nIHNjZW5hcmlvcyBvciBjb3JuZXItY2FzZSBjb25maWd1cmF0aW9ucy4gSXTigJlzIHdvcnRoIGRpZ2dpbmcgZGVlcGVyIGludG8gaWYgd2UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCBvdXIgY3VycmVudCBzZXR1cC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhvc2UgZHVtbXkgZGV2aWNlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgTUxYNSBmcmFtZXdvcmssIGFuZCBob3cgdGhlaXIgaW50ZXJhY3Rpb25zIG1pZ2h0IG1hbmlmZXN0IGluIHByYWN0aWNhbCBkZXBsb3ltZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1LipkdW1teSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDA6c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTA4PWludCBtbHg1X2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDMtXHRpZiAoIWNxLVx1MDAzZWNvbXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxNDQ6XHRcdGNxLVx1MDAzZWNvbXAgPSBtbHg1X2NvcmVfY3FfZHVtbXlfY2I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDUtXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODIyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlJldmlzaXRpbmcgYG1seDUuKnNpbWAqKgoKSG1tLCBgbWx4NS4qc2ltYC4uLiB0aGF0JiMzOTtzIGJlZW4gcmF0dGxpbmcgYXJvdW5kIGluIG15IGhlYWQgYWdhaW4uIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIHRob3NlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpbmdzLiBBcmUgd2UgZ2V0dGluZyB0aGUgZmlkZWxpdHkgd2UgbmVlZD8gT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsPyBJcyBpdCB3b3J0aCBkaXZpbmcgYmFjayBpbnRvIHRoYXQsIG1heWJlIHJ1bm5pbmcgc29tZSBtb3JlIHRhcmdldGVkIHRlc3RzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgbGluZ2VyaW5nIHVuY2VydGFpbnR5IHRoZXJlLiBJZiB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBibGluZCBzcG90LCBub3cgaXMgdGhlIHRpbWUgdG8gdW5jb3ZlciBpdC4gVWx0aW1hdGVseSwgaXMgdGhpcyBzdGlsbCB0aGUgbW9zdCBlZmZlY3RpdmUgbWVhbnMgdG8gdGhlIGVuZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NS4qc2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTc2MjpcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU3NjMtXHQgKiBtbHg1ZV9xdWV1ZV9zdGFydCBkb2VzIG5vdCBmYWlsLCB3ZSBzdG9wIHRoZSBvbGQgcXVldWUgdGhlcmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xODA9c3RhdGljIGludCBod3NfYndjX21hdGNoZXJfbW92ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjIyNzppbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjI4LVx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MzIxPW1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1My1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0Olx0XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoYndjX21hdGNoZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cdFx0XHRcdFx0XHRcdHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzozNzE6aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9Mzg4PWludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo0MDE6XHRcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz02MDk9c3RhdGljIGludCBod3NfYndjX3J1bGVfY250X2RlY193aXRoX3NocmluayhzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjY0MjppbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY0My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz02NjY9aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjY3NTpcdFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShid2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY3Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTEwMDE9c3RhdGljIGludCBod3NfYndjX3J1bGVfY250X2luY193aXRoX3JlaGFzaChzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoxMDM3OmludCBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM4LVx0XHRcdFx0ICAgdTMyICptYXRjaF9wYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTExNDA9bWx4NWh3c19id2NfcnVsZV9jcmVhdGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMTE3MS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcdFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKGJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVx0XHRcdFx0XHRcdCAgICAgcGFyYW1zLVx1MDAzZW1hdGNoX2J1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaDo3MTptbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Mi1cdFx0XHRcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjg0OmludCBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cdFx0XHRcdCAgIHUzMiAqbWF0Y2hfcGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6OTA6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTM4OD1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXRfZmlyc3Qoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NDExOlx0cmV0ID0gbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXHUwMDNldGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQxMi1cdFx0XHRcdFx0XHRwcmlvcml0eSwgbWF0Y2hfY3JpdGVyaWEsIG1hc2ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyNy1kZXN0cm95X21hdGNoZXI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NDI4Olx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTQzMz1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0ODI6XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlciwgc3VibS1cdTAwM2V0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVx0XHRcdFx0XHRcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDk5LWRlc3Ryb3lfbWF0Y2hlcjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTUxMT1zdGF0aWMgdm9pZCBod3Nfc3VibWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTIyLVx0aWYgKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MjM6XHRcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTI0LVx0XHRpZiAoaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTc4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3VicnVsZSwgbWF0Y2hfcGFyYW1zLCBhY3Rpb25zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTc4NC1cdFx0XHRcdFx0ICAgICBmbG93X3NvdXJjZSwgYndjX3F1ZXVlX2lkeCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTgxNi1cdGJ3Y19ydWxlLVx1MDAzZXJ1bGUtXHUwMDNlc2tpcF9kZWxldGUgPSAhaXNfbGFzdF9ydWxlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTgxOC1cdGlmICh1bmxpa2VseShyZXQpKVxuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU0ND1zdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmgtNTQ3LVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg6NTQ4OnN0cnVjdCBtbHg1X2lmY19pcHY2X3NpbXBsZV9sYXlvdXRfYml0cyB7XG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXHR1OCAgICAgICAgIGlwdjZfMTI3Xzk2WzB4MjBdO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg6NTU2Olx0c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIGlwdjZfc2ltcGxlX2xheW91dDtcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cdHN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIGlwdjZfbGF5b3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc5OQoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaW52b2x2ZXMgZGV0ZXJtaW5pbmcgaWYgYSBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBUaGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgKnVucmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdlIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGV4YW1wbGVzIGdpdmVuIHNwZWNpZmljYWxseSBwb2ludCB0byBoYXJkd2FyZSB0aGF0IGhhcyBzb2Z0d2FyZSBlbXVsYXRpb24gKGxpa2UgVVNCIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIGJ1dCBJJiMzOTttIGxvb2tpbmcgYXQgYG1seDVgLgoKTXkgdW5kZXJzdGFuZGluZyBvZiBgbWx4NWAgaXMgdGhhdCBpdCYjMzk7cyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIC0gTWVsbGFub3ggYWRhcHRlcnMsIHRvIGJlIHByZWNpc2UuIENydWNpYWxseSwgdGhlcmUmIzM5O3Mgbm8gZXF1aXZhbGVudCBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBUaGVyZSYjMzk7cyBubyB3YXkgdG8gcmVsaWFibHkgdHJpZ2dlciB0aG9zZSBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgYXQgbGVhc3Qgbm90IHdpdGhvdXQgc29tZSBzaWduaWZpY2FudCBleHRlcm5hbCBzZXR1cCBvdXRzaWRlIHRoZSBrZXJuZWwsIHdoaWNoIGlzbiYjMzk7dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGVjay4gVGhhdOKAmXMgdGhlIGtleS4gU2luY2UgYG1seDVgJiMzOTtzIGNvZGUgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpbywgaXQmIzM5O3MgZGVmaW5pdGl2ZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCwgSSBuZWVkIHRvIGZsYWcgdGhpcyBhcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1KS4gVGhpcyBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTEuNDQxNDM3MzA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1ODEwOTYyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTEuNDQxNDQzODc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1OTQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTM5MTNkOGRiYjljNjU1NmE3OGRlZGVlNWVlZmJiM2VmOTJkNGIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jXFxuaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jXFxuQEAgLTExMyw4ICsxMTMsOCBAQCBzdGF0aWMgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3koc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRlc3dfYWNsX2VncmVzc19vZmxkX2JvdW5jZV9ydWxlc19kZXN0cm95KHZwb3J0KTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4rc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiB7XFxuIFxcdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pO1xcbiBcXHRzdHJ1Y3QgbWx4NV9mbG93X2dyb3VwICpmd2RfZ3JwO1xcbkBAIC0xMjIsMjIgKzEyMiwxMiBAQCBzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXFxuIFxcdHUzMiBmbG93X2luZGV4ID0gMDtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbi1cXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpIHtcXG4tXFx0XFx0cmV0ID0gZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4rXFx0aWYgKE1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbiBcXHRcXHRmbG93X2luZGV4Kys7XFxuLVxcdH1cXG4tXFxuLVxcdGlmICghbWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0Zmxvd19ncm91cF9pbiA9IGt2emFsbG9jKGlubGVuLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFmbG93X2dyb3VwX2luKSB7XFxuLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdGdvdG8gZndkX2dycF9lcnI7XFxuLVxcdH1cXG4rXFx0aWYgKCFmbG93X2dyb3VwX2luKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdC8qIFRoaXMgZ3JvdXAgaG9sZHMgMSBGVEUgdG8gZm9yd2FyZCBhbGwgcGFja2V0cyB0byBvdGhlciB2cG9ydFxcbiBcXHQgKiB3aGVuIGJvbmQgdnBvcnRzIGlzIHN1cHBvcnRlZC5cXG5AQCAtMTUwLDE2ICsxNDAsMTUgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxcbiBcXHRcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0IFxcXCJGYWlsZWQgdG8gY3JlYXRlIHZwb3J0WyVkXSBlZ3Jlc3MgZndkMnZwb3J0IGZsb3cgZ3JvdXAsIGVyciglZClcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCB2cG9ydC1cXHUwMDNldnBvcnQsIHJldCk7XFxuLVxcdFxcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcXG4tXFx0XFx0Z290byBmd2RfZ3JwX2VycjtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFx0dnBvcnQtXFx1MDAzZWVncmVzcy5vZmZsb2Fkcy5md2RfZ3JwID0gZndkX2dycDtcXG4tXFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xcbi1cXHRyZXR1cm4gMDtcXG4rXFx0ZXN3X2RlYnVnKGVzdy1cXHUwMDNlZGV2LFxcbitcXHRcXHQgIFxcXCJsYXp5LWNyZWF0ZWQgZndkX2dycCBmb3IgdnBvcnQgJWQgKGZsb3dfaW5kZXg9JXUpXFxcXG5cXFwiLFxcbitcXHRcXHQgIHZwb3J0LVxcdTAwM2V2cG9ydCwgZmxvd19pbmRleCk7XFxuIFxcbi1md2RfZ3JwX2VycjpcXG4tXFx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XFxuIG91dDpcXG4rXFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0xODUsMjIgKzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKVxcbiBcXG4gaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXFxuIHtcXG4tXFx0aW50IHRhYmxlX3NpemUgPSAwO1xcbitcXHRpbnQgdGFibGVfc2l6ZSA9IDE7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAhTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXFxuK1xcdGlmICghZXN3X2FjbF9lZ3Jlc3NfbmVlZGVkKGVzdywgdnBvcnQtXFx1MDAzZXZwb3J0KSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVxcdTAwM2V2cG9ydCkpXFxuK1xcdC8qIFRoZSBmd2QydnBvcnQgRlQvZ3JvdXAgaXMgY3JlYXRlZCBsYXppbHkgb24gYm9uZCBldmVudHM7IGlmIHByaW9fdGFnXFxuK1xcdCAqIGlzIG5vdCByZXF1aXJlZCwgc2tpcCBlYWdlciBGVCBhbGxvY2F0aW9uIGhlcmUgZW50aXJlbHkuXFxuK1xcdCAqL1xcbitcXHRpZiAoIU1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveSh2cG9ydCk7XFxuIFxcbitcXHQvKiBSZXNlcnZlIGFuIGV4dHJhIEZURSBzbyB0aGUgZndkX2dycCBjYW4gYmUgYWRkZWQgbGF6aWx5IGxhdGVyLiAqL1xcbiBcXHRpZiAobWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXFxuIFxcdFxcdHRhYmxlX3NpemUrKztcXG4tXFx0aWYgKE1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbi1cXHRcXHR0YWJsZV9zaXplKys7XFxuIFxcdHZwb3J0LVxcdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IE1MWDVfRkxPV19OQU1FU1BBQ0VfRVNXX0VHUkVTUywgdGFibGVfc2l6ZSk7XFxuIFxcdGlmIChJU19FUlIodnBvcnQtXFx1MDAzZWVncmVzcy5hY2wpKSB7XFxuQEAgLTIxMCwyMSArMjAwLDIxIEBAIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0XFxuIFxcdH1cXG4gXFx0dnBvcnQtXFx1MDAzZWVncmVzcy50eXBlID0gVlBPUlRfRUdSRVNTX0FDTF9UWVBFX0RFRkFVTFQ7XFxuIFxcbi1cXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoZXN3LCB2cG9ydCk7XFxuK1xcdGVyciA9IGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2NyZWF0ZShlc3csIHZwb3J0KTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBncm91cF9lcnI7XFxuK1xcdFxcdGdvdG8gdGFibGVfZXJyO1xcbiBcXG4gXFx0ZXN3X2RlYnVnKGVzdy1cXHUwMDNlZGV2LCBcXFwidnBvcnRbJWRdIGNvbmZpZ3VyZSBlZ3Jlc3MgcnVsZXNcXFxcblxcXCIsIHZwb3J0LVxcdTAwM2V2cG9ydCk7XFxuIFxcbiBcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBydWxlc19lcnI7XFxuK1xcdFxcdGdvdG8gdmxhbl9ncnBfZXJyO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1ydWxlc19lcnI6XFxuLVxcdGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2Rlc3Ryb3kodnBvcnQpO1xcbi1ncm91cF9lcnI6XFxuK3ZsYW5fZ3JwX2VycjpcXG4rXFx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XFxuK3RhYmxlX2VycjpcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjM2LDE4ICsyMjYsNTMgQEAgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX2NsZWFudXAoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRlc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTtcXG4gfVxcbiBcXG4rLyogTGF6aWx5IGFsbG9jYXRlIHRoZSBlZ3Jlc3MgQUNMIHRhYmxlIGFuZCBmd2RfZ3JwIGZvciBhIHZwb3J0IHRoYXQgaXMgYWJvdXRcXG4rICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XFxuKyAqIHdoZW4gcHJpb190YWcgaXMgcmVxdWlyZWQuXFxuKyAqL1xcbitzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4re1xcbitcXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKCF2cG9ydC1cXHUwMDNlZWdyZXNzLmFjbCkge1xcbitcXHRcXHRhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LFxcbitcXHRcXHRcXHRcXHRcXHQgICBNTFg1X0ZMT1dfTkFNRVNQQUNFX0VTV19FR1JFU1MsIDEpO1xcbitcXHRcXHRpZiAoSVNfRVJSKGFjbCkpXFxuK1xcdFxcdFxcdHJldHVybiBQVFJfRVJSKGFjbCk7XFxuK1xcdFxcdHZwb3J0LVxcdTAwM2VlZ3Jlc3MuYWNsID0gYWNsO1xcbitcXHRcXHR2cG9ydC1cXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHZwb3J0LVxcdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xcbitcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IGFjbClcXG4rXFx0XFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251bSxcXG4gXFx0XFx0XFx0XFx0ICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKmFjdGl2ZV92cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZXN3LCBhY3RpdmVfdnBvcnRfbnVtKTtcXG4gXFx0c3RydWN0IG1seDVfZmxvd19kZXN0aW5hdGlvbiBmd2RfZGVzdCA9IHt9O1xcbitcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKElTX0VSUihhY3RpdmVfdnBvcnQpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihhY3RpdmVfdnBvcnQpO1xcbiBcXHRpZiAoSVNfRVJSKHBhc3NpdmVfdnBvcnQpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwYXNzaXZlX3Zwb3J0KTtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIHVubG9jaztcXG4rXFxuIFxcdC8qIENsZWFudXAgYW5kIHJlY3JlYXRlIHJ1bGVzIFdJVEhPVVQgZndkMnZwb3J0IG9mIGFjdGl2ZSB2cG9ydCAqL1xcbiBcXHRlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3koYWN0aXZlX3Zwb3J0KTtcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xcbkBAIC0yNTksMTYgKzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udVxcbiBcXHRmd2RfZGVzdC52cG9ydC52aGNhX2lkID0gTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCB2aGNhX2lkKTtcXG4gXFx0ZndkX2Rlc3QudnBvcnQuZmxhZ3MgPSBNTFg1X0ZMT1dfREVTVF9WUE9SVF9WSENBX0lEO1xcbiBcXG4tXFx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgcGFzc2l2ZV92cG9ydCwgXFx1MDAyNmZ3ZF9kZXN0KTtcXG4rXFx0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBwYXNzaXZlX3Zwb3J0LCBcXHUwMDI2ZndkX2Rlc3QpO1xcbitcXG4rdW5sb2NrOlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXFxuIHtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoSVNfRVJSKHZwb3J0KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIodnBvcnQpO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcXG4tXFx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEwOjI1OjUyLjA3NDAzOTIwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ0OTQ4NDg4NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUpLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjEzOTEzZDhkYmI5YzY1NTZhNzhkZWRlZTVlZWZiYjNlZjkyZDRiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbmluZGV4IDI0YjFjYTRlNGZmODc0Li45ODFjZTQ0NjM1ODI5NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbkBAIC0xMTMsOCArMTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfYm91bmNlX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4tXHRcdFx0XHRcdCAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuK3N0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9md2RfZ3JwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4rXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiB7XG4gXHRpbnQgaW5sZW4gPSBNTFg1X1NUX1NaX0JZVEVTKGNyZWF0ZV9mbG93X2dyb3VwX2luKTtcbiBcdHN0cnVjdCBtbHg1X2Zsb3dfZ3JvdXAgKmZ3ZF9ncnA7XG5AQCAtMTIyLDIyICsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuIFx0dTMyIGZsb3dfaW5kZXggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkge1xuLVx0XHRyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cbitcdGlmIChNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuIFx0XHRmbG93X2luZGV4Kys7XG4tXHR9XG4tXG4tXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpKVxuLVx0XHRnb3RvIG91dDtcbiBcbiBcdGZsb3dfZ3JvdXBfaW4gPSBrdnphbGxvYyhpbmxlbiwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWZsb3dfZ3JvdXBfaW4pIHtcbi1cdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0Z290byBmd2RfZ3JwX2Vycjtcbi1cdH1cbitcdGlmICghZmxvd19ncm91cF9pbilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHQvKiBUaGlzIGdyb3VwIGhvbGRzIDEgRlRFIHRvIGZvcndhcmQgYWxsIHBhY2tldHMgdG8gb3RoZXIgdnBvcnRcbiBcdCAqIHdoZW4gYm9uZCB2cG9ydHMgaXMgc3VwcG9ydGVkLlxuQEAgLTE1MCwxNiArMTQwLDE1IEBAIHN0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiBcdFx0ZXN3X3dhcm4oZXN3LVx1MDAzZWRldixcbiBcdFx0XHQgXCJGYWlsZWQgdG8gY3JlYXRlIHZwb3J0WyVkXSBlZ3Jlc3MgZndkMnZwb3J0IGZsb3cgZ3JvdXAsIGVyciglZClcXG5cIixcbiBcdFx0XHQgdnBvcnQtXHUwMDNldnBvcnQsIHJldCk7XG4tXHRcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbi1cdFx0Z290byBmd2RfZ3JwX2VycjtcbitcdFx0Z290byBvdXQ7XG4gXHR9XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycCA9IGZ3ZF9ncnA7XG4tXHRrdmZyZWUoZmxvd19ncm91cF9pbik7XG4tXHRyZXR1cm4gMDtcbitcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LFxuK1x0XHQgIFwibGF6eS1jcmVhdGVkIGZ3ZF9ncnAgZm9yIHZwb3J0ICVkIChmbG93X2luZGV4PSV1KVxcblwiLFxuK1x0XHQgIHZwb3J0LVx1MDAzZXZwb3J0LCBmbG93X2luZGV4KTtcbiBcbi1md2RfZ3JwX2Vycjpcbi1cdGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpO1xuIG91dDpcbitcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NSwyMiArMTc0LDIzIEBAIHN0YXRpYyBib29sIGVzd19hY2xfZWdyZXNzX25lZWRlZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4gXG4gaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4ge1xuLVx0aW50IHRhYmxlX3NpemUgPSAwO1xuK1x0aW50IHRhYmxlX3NpemUgPSAxO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykgXHUwMDI2XHUwMDI2XG4tXHQgICAgIU1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXG4rXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbitcdC8qIFRoZSBmd2QydnBvcnQgRlQvZ3JvdXAgaXMgY3JlYXRlZCBsYXppbHkgb24gYm9uZCBldmVudHM7IGlmIHByaW9fdGFnXG4rXHQgKiBpcyBub3QgcmVxdWlyZWQsIHNraXAgZWFnZXIgRlQgYWxsb2NhdGlvbiBoZXJlIGVudGlyZWx5LlxuK1x0ICovXG4rXHRpZiAoIU1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcbiBcbitcdC8qIFJlc2VydmUgYW4gZXh0cmEgRlRFIHNvIHRoZSBmd2RfZ3JwIGNhbiBiZSBhZGRlZCBsYXppbHkgbGF0ZXIuICovXG4gXHRpZiAobWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXG4gXHRcdHRhYmxlX3NpemUrKztcbi1cdGlmIChNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuLVx0XHR0YWJsZV9zaXplKys7XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiBcdFx0XHRcdFx0XHQgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTtcbiBcdGlmIChJU19FUlIodnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkpIHtcbkBAIC0yMTAsMjEgKzIwMCwyMSBAQCBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9zZXR1cChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydFxuIFx0fVxuIFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbiBcbi1cdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShlc3csIHZwb3J0KTtcbitcdGVyciA9IGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2NyZWF0ZShlc3csIHZwb3J0KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZ3JvdXBfZXJyO1xuK1x0XHRnb3RvIHRhYmxlX2VycjtcbiBcbiBcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LCBcInZwb3J0WyVkXSBjb25maWd1cmUgZWdyZXNzIHJ1bGVzXFxuXCIsIHZwb3J0LVx1MDAzZXZwb3J0KTtcbiBcbiBcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBydWxlc19lcnI7XG4rXHRcdGdvdG8gdmxhbl9ncnBfZXJyO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tcnVsZXNfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfZGVzdHJveSh2cG9ydCk7XG4tZ3JvdXBfZXJyOlxuK3ZsYW5fZ3JwX2VycjpcbitcdGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpO1xuK3RhYmxlX2VycjpcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjM2LDE4ICsyMjYsNTMgQEAgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX2NsZWFudXAoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XG4gfVxuIFxuKy8qIExhemlseSBhbGxvY2F0ZSB0aGUgZWdyZXNzIEFDTCB0YWJsZSBhbmQgZndkX2dycCBmb3IgYSB2cG9ydCB0aGF0IGlzIGFib3V0XG4rICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XG4rICogd2hlbiBwcmlvX3RhZyBpcyByZXF1aXJlZC5cbisgKi9cbitzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbitcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbit7XG4rXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghdnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkge1xuK1x0XHRhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LFxuK1x0XHRcdFx0XHQgICBNTFg1X0ZMT1dfTkFNRVNQQUNFX0VTV19FR1JFU1MsIDEpO1xuK1x0XHRpZiAoSVNfRVJSKGFjbCkpXG4rXHRcdFx0cmV0dXJuIFBUUl9FUlIoYWNsKTtcbitcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLmFjbCA9IGFjbDtcbitcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbitcdH1cbitcbitcdGlmICh2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgYWNsKVxuK1x0XHRlc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTtcbitcdHJldHVybiBlcnI7XG4rfVxuK1xuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251bSxcbiBcdFx0XHRcdCAgIHUxNiBwYXNzaXZlX3Zwb3J0X251bSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqcGFzc2l2ZV92cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZXN3LCBwYXNzaXZlX3Zwb3J0X251bSk7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqYWN0aXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIGFjdGl2ZV92cG9ydF9udW0pO1xuIFx0c3RydWN0IG1seDVfZmxvd19kZXN0aW5hdGlvbiBmd2RfZGVzdCA9IHt9O1xuK1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTtcbiBcdGlmIChJU19FUlIocGFzc2l2ZV92cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBhc3NpdmVfdnBvcnQpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4rXG4rXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byB1bmxvY2s7XG4rXG4gXHQvKiBDbGVhbnVwIGFuZCByZWNyZWF0ZSBydWxlcyBXSVRIT1VUIGZ3ZDJ2cG9ydCBvZiBhY3RpdmUgdnBvcnQgKi9cbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xuQEAgLTI1OSwxNiArMjg0LDI0IEBAIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251XG4gXHRmd2RfZGVzdC52cG9ydC52aGNhX2lkID0gTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHZoY2FfaWQpO1xuIFx0ZndkX2Rlc3QudnBvcnQuZmxhZ3MgPSBNTFg1X0ZMT1dfREVTVF9WUE9SVF9WSENBX0lEO1xuIFxuLVx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgcGFzc2l2ZV92cG9ydCwgXHUwMDI2ZndkX2Rlc3QpO1xuK1x0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBwYXNzaXZlX3Zwb3J0LCBcdTAwMjZmd2RfZGVzdCk7XG4rXG4rdW5sb2NrOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4ge1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XG4rXHRpbnQgZXJyO1xuIFxuIFx0aWYgKElTX0VSUih2cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHZwb3J0KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcbi1cdHJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcbitcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTIuMDc0MDQxMzI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwNDA2MjIwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEVncmVzcyBBQ0wgUGF0Y2ggUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZWdyZXNzIEFDTCBzZXR1cCB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwYCwgYGVzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmRgLCBhbmQgYG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kYCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRvIGludHJvZHVjZSBhIGxhenkgYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgdGhlIGVncmVzcyBBQ0wgdGFibGUgYW5kIHRoZSBmd2RfZ3JwIHdoZW4gYSB2cG9ydCBpcyBhYm91dCB0byBnZXQgYSBmd2QydnBvcnQgcnVsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogaG93IGRvIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cblNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0aGUgYG1seDVgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgdGhlIENvbm5lY3RYLTQsIENvbm5lY3RYLTUsIGFuZCBDb25uZWN0WC02IGZhbWlsaWVzIG9mIE1lbGxhbm94IE5JQ3MsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBJIGNhbiBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoaXMgZW52aXJvbm1lbnQuIENhbiBJIHJ1biB0aGlzIGluIGEgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudD8gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgaGFzIGFueSBzb3J0IG9mIE1lbGxhbm94IGhhcmR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEltbWVkaWF0ZWx5LCBJIHJlY2FsbCB0aGF0IHRoZXJlIGlzbid0IGFueSBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBvZiBtbHg1IGhhcmR3YXJlIGxpa2Ugd2UgaGF2ZSB3aXRoIG1hYzgwMjExX2h3c2ltIG9yIG5ldGRldnNpbSBmb3Igb3RoZXIgZGV2aWNlcy4gSXQncyBhIGNyaXRpY2FsIHBvaW50LlxuXG5BbHJpZ2h0LCBhIHF1aWNrIHNlYXJjaCBvZiBRRU1VIGNvbmZpcm1zIHRoaXM7IHRoZXJlJ3Mgbm8gbmF0aXZlIG1seDUgZW11bGF0aW9uLiBJIGNhbiBzZWUgdGhlIGBody9uZXQvcm9ja2VyYCB3aGljaCBpcyBhIGdvb2QgcmVtaW5kZXIuIFNvLCB0aGF0J3Mgbm90IGdvaW5nIHRvIHdvcmsuIERvZXMgdGhhdCBtZWFuIEknbSBzdHVjayBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGZvciB0ZXN0aW5nP1xuXG5ObywgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgb3Igc2ltdWxhdGlvbiBkcml2ZXJzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvYCBkaXJlY3RvcnkuIE1heWJlIHRoZXJlJ3MgYSBzaW11bGF0aW9uIGNvbXBvbmVudCwgSSdtIGhvcGluZy4gSSdsbCBuZWVkIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBteSBwcmVmZXJyZWQgdG9vbHMsIGxpa2UgYGdyZXBwZXJgLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjbHVlcyByZWdhcmRpbmcgbWx4NSBlbXVsYXRpb24gb3Igc2ltdWxhdGlvbiwgaW4gdGhlIGtlcm5lbCBvciBRRU1VLiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MDQuMTE0NjY1OTE4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTYzNjU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NS4qc2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlxcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYzLVxcdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTgwPXN0YXRpYyBpbnQgaHdzX2J3Y19tYXRjaGVyX21vdmUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyMjc6aW50IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0OlxcdFxcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzcxOmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTM4OD1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcXHRcXHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19tYXRjaGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjA5PXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9kZWNfd2l0aF9zaHJpbmsoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo2NDI6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjY2PWludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1OlxcdFxcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xMDAxPXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9pbmNfd2l0aF9yZWhhc2goc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTAzNzppbnQgbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXFx0XFx0XFx0XFx0ICAgdTMyICptYXRjaF9wYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcXHRcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcGFyYW1zLVxcdTAwM2VtYXRjaF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6NzE6bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cXHRcXHRcXHRcXHQgICB1MzIgKm1hdGNoX3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjkwOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz0zODg9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0X2ZpcnN0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQxMTpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjctZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUyMi1cXHRpZiAoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTIzOlxcdFxcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXFx0XFx0aWYgKGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN1YnJ1bGUsIG1hdGNoX3BhcmFtcywgYWN0aW9ucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgZmxvd19zb3VyY2UsIGJ3Y19xdWV1ZV9pZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVxcdGJ3Y19ydWxlLVxcdTAwM2VydWxlLVxcdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVxcdGlmICh1bmxpa2VseShyZXQpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0Ny1cXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXFx0dTggICAgICAgICBpcHY2XzEyN185NlsweDIwXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oOjU1NjpcXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyBpcHY2X2xheW91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MDcuMzcxMDQwMDI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwMzc5NzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRlc3RpbmcgTUxYNSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlc2UgYGdyZXBgIHJlc3VsdHMsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGxzLCBsaWtlIGBtbHg1ZV9xdWV1ZV9zdG9wYCBhbmQgYG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZWAsIGFyZW4ndCBwYXJ0IG9mIGFueSBzaW11bGF0b3IuIFRoZXkgYXJlIGFsbCBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gZmluZCBhIHdheSB0byB0ZXN0IGBtbHg1YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgYG5ldGRldnNpbWAsIGJ1dCBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCBpdCBkb2Vzbid0IGVtdWxhdGUgdGhlIGBtbHg1YCBoYXJkd2FyZS4gIFdoYXQgYWJvdXQgZGl2aW5nIGludG8gYG1seDVfY29yZWA/IERvZXMgaXQgaGF2ZSBzb21lIGtpbmQgb2YgZHVtbXkgZGV2aWNlIG1vZGUsIHNvbWUgd2F5IHRvIGJlIHRlc3RlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIGBDT05GSUdfTUxYNV9DT1JFYCBpcyB0ZXN0YWJsZSB3aXRoaW4gU3l6a2FsbGVyLlxuXG5IbW0sIFN5emthbGxlci4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCB3aXRob3V0IHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlLCBTeXprYWxsZXIgY2FuJ3QgZWZmZWN0aXZlbHkgdGVzdCBgbWx4NWAuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6LWNsdXN0ZXJgLCBidXQgdGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGF2b2lkIGNvZGUgcGF0aHMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGUgbm90ZXMgc3BlY2lmaWNhbGx5IG1lbnRpb24gdGhhdCBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaGFyZHdhcmUgbGlrZSBgdXNiIGdhZGdldGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgY2FuJ3QgYmUgdGVzdGVkLlxuXG5TaW5jZSBgbWx4NWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGEgUENJZSBkZXZpY2UsIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGBuZXRkZXZzaW1gLCBvciBgdmhjaWAsIEkgY2FuIHNlZSB3aHkgaXQgd291bGRuJ3QgYmUgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZywgcGVyaGFwcyBhIHZpcnR1YWwgYG1seDVgIGRyaXZlcj8gIE1heWJlIHNvbWV0aGluZyBpbiB0aGUgYHZkcGFgIG9yIGB2ZmlvYCBhcmVhcz8gTm9wZSwgSSBkb24ndCBzZWUgYW55dGhpbmc7IHRoZSBgZHJpdmVycy92ZHBhL21seDUvYCBhbmQgYGRyaXZlcnMvdmZpby9wY2kvbWx4NS9gIGRpcmVjdG9yaWVzIGFyZSwgdW5zdXJwcmlzaW5nbHksIGZvciBtbHg1IGhhcmR3YXJlLiBUaGV5IHdvdWxkbid0IGhlbHAgbWUgaGVyZS5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBpbmplY3RpbmcgYSBmYWtlIFBDSSBkZXZpY2UgdG8gcmVwcmVzZW50IGBtbHg1YD8gVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhlIGtlcm5lbCBkb2Vzbid0IG9mZmVyIGEgbWVjaGFuaXNtIGZvciBjcmVhdGluZyBhIGZha2UgbWx4NSBQQ0kgZGV2aWNlLiBTbywgaXQgYXBwZWFycyB0aGF0IHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggaXMgZGVmaW5pdGVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlcmUncyBubyB3YXkgdG8gbW9jayBvciBvdGhlcndpc2Ugc2ltdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBgbWx4NWAgZGV2aWNlIGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMjksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MTUuMzc0ODQwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY0MjI4OTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1Liptb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoxOC4xMzkwNzk4MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIyODAxMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTUxYNSBEcml2ZXIgUXVpcmtzKipcblxuSG1tLCB0aGlua2luZyBhYm91dCB0aGUgTUxYNSBkcml2ZXIuLi4gSSdtIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nLiBDb3VsZCB0aGVyZSBiZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRob3NlIFwiZHVtbXlcIiBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgYW55dGhpbmcgbmFtZWQgYG1seDUuKmR1bW15YD8gSSd2ZSBzZWVuIHNvbWUgb2RkaXRpZXMgaW4gdGhlIHBhc3Qgd2l0aCBkcml2ZXJzIGFuZCB2aXJ0dWFsIG9yIHNpbXVsYXRlZCBkZXZpY2VzLCBlc3BlY2lhbGx5IGR1cmluZyBjZXJ0YWluIHRlc3Rpbmcgc2NlbmFyaW9zIG9yIGNvcm5lci1jYXNlIGNvbmZpZ3VyYXRpb25zLiBJdOKAmXMgd29ydGggZGlnZ2luZyBkZWVwZXIgaW50byBpZiB3ZSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIG91ciBjdXJyZW50IHNldHVwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aG9zZSBkdW1teSBkZXZpY2VzIGFyZSB1c2VkIGludGVybmFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBNTFg1IGZyYW1ld29yaywgYW5kIGhvdyB0aGVpciBpbnRlcmFjdGlvbnMgbWlnaHQgbWFuaWZlc3QgaW4gcHJhY3RpY2FsIGRlcGxveW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MjEuMDYxODg1NzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NzMxNjI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1LipkdW1teVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwMDpzdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDg9aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTQzLVxcdGlmICghY3EtXFx1MDAzZWNvbXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTQ0OlxcdFxcdGNxLVxcdTAwM2Vjb21wID0gbWx4NV9jb3JlX2NxX2R1bW15X2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE0NS1cXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoyMy44MDkyMDc0NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY3NTA0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmV2aXNpdGluZyBgbWx4NS4qc2ltYCoqXG5cbkhtbSwgYG1seDUuKnNpbWAuLi4gdGhhdCdzIGJlZW4gcmF0dGxpbmcgYXJvdW5kIGluIG15IGhlYWQgYWdhaW4uIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIHRob3NlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzIGFuZCBob3cgdGhleSdyZSBoYW5kbGluZyB0aGluZ3MuIEFyZSB3ZSBnZXR0aW5nIHRoZSBmaWRlbGl0eSB3ZSBuZWVkPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGNydWNpYWw/IElzIGl0IHdvcnRoIGRpdmluZyBiYWNrIGludG8gdGhhdCwgbWF5YmUgcnVubmluZyBzb21lIG1vcmUgdGFyZ2V0ZWQgdGVzdHM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGxpbmdlcmluZyB1bmNlcnRhaW50eSB0aGVyZS4gSWYgdGhlcmUncyBhIHBvdGVudGlhbCBibGluZCBzcG90LCBub3cgaXMgdGhlIHRpbWUgdG8gdW5jb3ZlciBpdC4gVWx0aW1hdGVseSwgaXMgdGhpcyBzdGlsbCB0aGUgbW9zdCBlZmZlY3RpdmUgbWVhbnMgdG8gdGhlIGVuZD9cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MjIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoyNy41NzY3MTUxMjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDI4ODA1NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NS4qc2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlxcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYzLVxcdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTgwPXN0YXRpYyBpbnQgaHdzX2J3Y19tYXRjaGVyX21vdmUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyMjc6aW50IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0OlxcdFxcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzcxOmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTM4OD1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcXHRcXHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19tYXRjaGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjA5PXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9kZWNfd2l0aF9zaHJpbmsoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo2NDI6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjY2PWludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1OlxcdFxcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xMDAxPXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9pbmNfd2l0aF9yZWhhc2goc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTAzNzppbnQgbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXFx0XFx0XFx0XFx0ICAgdTMyICptYXRjaF9wYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcXHRcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcGFyYW1zLVxcdTAwM2VtYXRjaF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6NzE6bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cXHRcXHRcXHRcXHQgICB1MzIgKm1hdGNoX3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjkwOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz0zODg9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0X2ZpcnN0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQxMTpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjctZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUyMi1cXHRpZiAoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTIzOlxcdFxcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXFx0XFx0aWYgKGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN1YnJ1bGUsIG1hdGNoX3BhcmFtcywgYWN0aW9ucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgZmxvd19zb3VyY2UsIGJ3Y19xdWV1ZV9pZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVxcdGJ3Y19ydWxlLVxcdTAwM2VydWxlLVxcdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVxcdGlmICh1bmxpa2VseShyZXQpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0Ny1cXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXFx0dTggICAgICAgICBpcHY2XzEyN185NlsweDIwXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oOjU1NjpcXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyBpcHY2X2xheW91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MzAuMTE5NjA2MTQ3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MDI4OTYxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gdGhlIHRhc2sgYXQgaGFuZCBpbnZvbHZlcyBkZXRlcm1pbmluZyBpZiBhIHBhdGNoIGlzIFwiV29ydGhGdXp6aW5nLlwiIFRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGNvZGUgdGhhdCdzICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3ZSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBleGFtcGxlcyBnaXZlbiBzcGVjaWZpY2FsbHkgcG9pbnQgdG8gaGFyZHdhcmUgdGhhdCBoYXMgc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0pLCBidXQgSSdtIGxvb2tpbmcgYXQgYG1seDVgLlxuXG5NeSB1bmRlcnN0YW5kaW5nIG9mIGBtbHg1YCBpcyB0aGF0IGl0J3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSAtIE1lbGxhbm94IGFkYXB0ZXJzLCB0byBiZSBwcmVjaXNlLiBDcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBUaGVyZSdzIG5vIHdheSB0byByZWxpYWJseSB0cmlnZ2VyIHRob3NlIGNvZGUgcGF0aHMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLCBhdCBsZWFzdCBub3Qgd2l0aG91dCBzb21lIHNpZ25pZmljYW50IGV4dGVybmFsIHNldHVwIG91dHNpZGUgdGhlIGtlcm5lbCwgd2hpY2ggaXNuJ3QgdGhlIHNjb3BlIG9mIHRoaXMgY2hlY2suIFRoYXTigJlzIHRoZSBrZXkuIFNpbmNlIGBtbHg1YCdzIGNvZGUgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLCBpdCdzIGRlZmluaXRpdmVseSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgY3JpdGVyaWEgb3V0bGluZWQsIEkgbmVlZCB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5OSwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MzcuMDIyNTA0NzM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1KS4gVGhpcyBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gc3VjaCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUpLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcglt8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 10:06:11 +0000 UTC FinishedAt: 2026-07-24 10:26:38 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIxMzkxM2Q4ZGJiOWM2NTU2YTc4ZGVkZWU1ZWVmYmIzZWY5MmQ0YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMDoyNTo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuY1xuQEAgLTExMyw4ICYjNDM7MTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfYm91bmNlX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4tXHRcdFx0XHRcdCAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbiBcdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pO1xuIFx0c3RydWN0IG1seDVfZmxvd19ncm91cCAqZndkX2dycDtcbkBAIC0xMjIsMjIgJiM0MzsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuIFx0dTMyIGZsb3dfaW5kZXggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkge1xuLVx0XHRyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cbiYjNDM7XHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbiBcdFx0Zmxvd19pbmRleCYjNDM7JiM0Mzs7XG4tXHR9XG4tXG4tXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpKVxuLVx0XHRnb3RvIG91dDtcbiBcbiBcdGZsb3dfZ3JvdXBfaW4gPSBrdnphbGxvYyhpbmxlbiwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWZsb3dfZ3JvdXBfaW4pIHtcbi1cdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0Z290byBmd2RfZ3JwX2Vycjtcbi1cdH1cbiYjNDM7XHRpZiAoIWZsb3dfZ3JvdXBfaW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdC8qIFRoaXMgZ3JvdXAgaG9sZHMgMSBGVEUgdG8gZm9yd2FyZCBhbGwgcGFja2V0cyB0byBvdGhlciB2cG9ydFxuIFx0ICogd2hlbiBib25kIHZwb3J0cyBpcyBzdXBwb3J0ZWQuXG5AQCAtMTUwLDE2ICYjNDM7MTQwLDE1IEBAIHN0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiBcdFx0ZXN3X3dhcm4oZXN3LVx1MDAzZWRldixcbiBcdFx0XHQgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2cG9ydFslZF0gZWdyZXNzIGZ3ZDJ2cG9ydCBmbG93IGdyb3VwLCBlcnIoJWQpXFxuXCYjMzQ7LFxuIFx0XHRcdCB2cG9ydC1cdTAwM2V2cG9ydCwgcmV0KTtcbi1cdFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xuLVx0XHRnb3RvIGZ3ZF9ncnBfZXJyO1xuJiM0MztcdFx0Z290byBvdXQ7XG4gXHR9XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycCA9IGZ3ZF9ncnA7XG4tXHRrdmZyZWUoZmxvd19ncm91cF9pbik7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRlc3dfZGVidWcoZXN3LVx1MDAzZWRldixcbiYjNDM7XHRcdCAgXCYjMzQ7bGF6eS1jcmVhdGVkIGZ3ZF9ncnAgZm9yIHZwb3J0ICVkIChmbG93X2luZGV4PSV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdCAgdnBvcnQtXHUwMDNldnBvcnQsIGZsb3dfaW5kZXgpO1xuIFxuLWZ3ZF9ncnBfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XG4gb3V0OlxuJiM0MztcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NSwyMiAmIzQzOzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKVxuIFxuIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbi1cdGludCB0YWJsZV9zaXplID0gMDtcbiYjNDM7XHRpbnQgdGFibGVfc2l6ZSA9IDE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSBcdTAwMjZcdTAwMjZcbi1cdCAgICAhTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbiYjNDM7XHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiYjNDM7XHQvKiBUaGUgZndkMnZwb3J0IEZUL2dyb3VwIGlzIGNyZWF0ZWQgbGF6aWx5IG9uIGJvbmQgZXZlbnRzOyBpZiBwcmlvX3RhZ1xuJiM0MztcdCAqIGlzIG5vdCByZXF1aXJlZCwgc2tpcCBlYWdlciBGVCBhbGxvY2F0aW9uIGhlcmUgZW50aXJlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveSh2cG9ydCk7XG4gXG4mIzQzO1x0LyogUmVzZXJ2ZSBhbiBleHRyYSBGVEUgc28gdGhlIGZ3ZF9ncnAgY2FuIGJlIGFkZGVkIGxhemlseSBsYXRlci4gKi9cbiBcdGlmIChtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSlcbiBcdFx0dGFibGVfc2l6ZSYjNDM7JiM0Mzs7XG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSlcbi1cdFx0dGFibGVfc2l6ZSYjNDM7JiM0Mzs7XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiBcdFx0XHRcdFx0XHQgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTtcbiBcdGlmIChJU19FUlIodnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkpIHtcbkBAIC0yMTAsMjEgJiM0MzsyMDAsMjEgQEAgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnRcbiBcdH1cbiBcdHZwb3J0LVx1MDAzZWVncmVzcy50eXBlID0gVlBPUlRfRUdSRVNTX0FDTF9UWVBFX0RFRkFVTFQ7XG4gXG4tXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoZXN3LCB2cG9ydCk7XG4mIzQzO1x0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBncm91cF9lcnI7XG4mIzQzO1x0XHRnb3RvIHRhYmxlX2VycjtcbiBcbiBcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LCBcJiMzNDt2cG9ydFslZF0gY29uZmlndXJlIGVncmVzcyBydWxlc1xcblwmIzM0OywgdnBvcnQtXHUwMDNldnBvcnQpO1xuIFxuIFx0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCB2cG9ydCwgTlVMTCk7XG4gXHRpZiAoZXJyKVxuLVx0XHRnb3RvIHJ1bGVzX2VycjtcbiYjNDM7XHRcdGdvdG8gdmxhbl9ncnBfZXJyO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tcnVsZXNfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfZGVzdHJveSh2cG9ydCk7XG4tZ3JvdXBfZXJyOlxuJiM0Mzt2bGFuX2dycF9lcnI6XG4mIzQzO1x0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XG4mIzQzO3RhYmxlX2VycjpcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjM2LDE4ICYjNDM7MjI2LDUzIEBAIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9jbGVhbnVwKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbiYjNDM7LyogTGF6aWx5IGFsbG9jYXRlIHRoZSBlZ3Jlc3MgQUNMIHRhYmxlIGFuZCBmd2RfZ3JwIGZvciBhIHZwb3J0IHRoYXQgaXMgYWJvdXRcbiYjNDM7ICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XG4mIzQzOyAqIHdoZW4gcHJpb190YWcgaXMgcmVxdWlyZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghdnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkge1xuJiM0MztcdFx0YWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiYjNDM7XHRcdFx0XHRcdCAgIE1MWDVfRkxPV19OQU1FU1BBQ0VfRVNXX0VHUkVTUywgMSk7XG4mIzQzO1x0XHRpZiAoSVNfRVJSKGFjbCkpXG4mIzQzO1x0XHRcdHJldHVybiBQVFJfRVJSKGFjbCk7XG4mIzQzO1x0XHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gYWNsO1xuJiM0MztcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICh2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuJiM0MztcdGlmIChlcnIgXHUwMDI2XHUwMDI2IGFjbClcbiYjNDM7XHRcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7XG4gaW50IG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiBhY3RpdmVfdnBvcnRfbnVtLFxuIFx0XHRcdFx0ICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKVxuIHtcbiBcdHN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTtcbiBcdHN0cnVjdCBtbHg1X3Zwb3J0ICphY3RpdmVfdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGVzdywgYWN0aXZlX3Zwb3J0X251bSk7XG4gXHRzdHJ1Y3QgbWx4NV9mbG93X2Rlc3RpbmF0aW9uIGZ3ZF9kZXN0ID0ge307XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTtcbiBcdGlmIChJU19FUlIocGFzc2l2ZV92cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBhc3NpdmVfdnBvcnQpO1xuIFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIHVubG9jaztcbiYjNDM7XG4gXHQvKiBDbGVhbnVwIGFuZCByZWNyZWF0ZSBydWxlcyBXSVRIT1VUIGZ3ZDJ2cG9ydCBvZiBhY3RpdmUgdnBvcnQgKi9cbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xuQEAgLTI1OSwxNiAmIzQzOzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udVxuIFx0ZndkX2Rlc3QudnBvcnQudmhjYV9pZCA9IE1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCB2aGNhX2lkKTtcbiBcdGZ3ZF9kZXN0LnZwb3J0LmZsYWdzID0gTUxYNV9GTE9XX0RFU1RfVlBPUlRfVkhDQV9JRDtcbiBcbi1cdHJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsIFx1MDAyNmZ3ZF9kZXN0KTtcbiYjNDM7XHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsIFx1MDAyNmZ3ZF9kZXN0KTtcbiYjNDM7XG4mIzQzO3VubG9jazpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4ge1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIodnBvcnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUih2cG9ydCk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4gXHRlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuLVx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuJiM0MztcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjEzOTEzZDhkYmI5YzY1NTZhNzhkZWRlZTVlZWZiYjNlZjkyZDRiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMKaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMKQEAgLTExMyw4ICYjNDM7MTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAllc3dfYWNsX2VncmVzc19vZmxkX2JvdW5jZV9ydWxlc19kZXN0cm95KHZwb3J0KTsKIH0KIAotc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAotCQkJCQkgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAomIzQzOwkJCQkJICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KQogewogCWludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pOwogCXN0cnVjdCBtbHg1X2Zsb3dfZ3JvdXAgKmZ3ZF9ncnA7CkBAIC0xMjIsMjIgJiM0MzsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAogCXUzMiBmbG93X2luZGV4ID0gMDsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkgewotCQlyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCiYjNDM7CWlmIChNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkKIAkJZmxvd19pbmRleCYjNDM7JiM0Mzs7Ci0JfQotCi0JaWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSkKLQkJZ290byBvdXQ7CiAKIAlmbG93X2dyb3VwX2luID0ga3Z6YWxsb2MoaW5sZW4sIEdGUF9LRVJORUwpOwotCWlmICghZmxvd19ncm91cF9pbikgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGZ3ZF9ncnBfZXJyOwotCX0KJiM0MzsJaWYgKCFmbG93X2dyb3VwX2luKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAKIAkvKiBUaGlzIGdyb3VwIGhvbGRzIDEgRlRFIHRvIGZvcndhcmQgYWxsIHBhY2tldHMgdG8gb3RoZXIgdnBvcnQKIAkgKiB3aGVuIGJvbmQgdnBvcnRzIGlzIHN1cHBvcnRlZC4KQEAgLTE1MCwxNiAmIzQzOzE0MCwxNSBAQCBzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csCiAJCWVzd193YXJuKGVzdy0mZ3Q7ZGV2LAogCQkJICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2cG9ydFslZF0gZWdyZXNzIGZ3ZDJ2cG9ydCBmbG93IGdyb3VwLCBlcnIoJWQpXG4mIzM0OywKIAkJCSB2cG9ydC0mZ3Q7dnBvcnQsIHJldCk7Ci0JCWt2ZnJlZShmbG93X2dyb3VwX2luKTsKLQkJZ290byBmd2RfZ3JwX2VycjsKJiM0MzsJCWdvdG8gb3V0OwogCX0KIAl2cG9ydC0mZ3Q7ZWdyZXNzLm9mZmxvYWRzLmZ3ZF9ncnAgPSBmd2RfZ3JwOwotCWt2ZnJlZShmbG93X2dyb3VwX2luKTsKLQlyZXR1cm4gMDsKJiM0MzsJZXN3X2RlYnVnKGVzdy0mZ3Q7ZGV2LAomIzQzOwkJICAmIzM0O2xhenktY3JlYXRlZCBmd2RfZ3JwIGZvciB2cG9ydCAlZCAoZmxvd19pbmRleD0ldSlcbiYjMzQ7LAomIzQzOwkJICB2cG9ydC0mZ3Q7dnBvcnQsIGZsb3dfaW5kZXgpOwogCi1md2RfZ3JwX2VycjoKLQllc3dfYWNsX2VncmVzc192bGFuX2dycF9kZXN0cm95KHZwb3J0KTsKIG91dDoKJiM0MzsJa3ZmcmVlKGZsb3dfZ3JvdXBfaW4pOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE4NSwyMiAmIzQzOzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKQogCiBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9zZXR1cChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIHsKLQlpbnQgdGFibGVfc2l6ZSA9IDA7CiYjNDM7CWludCB0YWJsZV9zaXplID0gMTsKIAlpbnQgZXJyOwogCi0JaWYgKCFtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSAmYW1wOyZhbXA7Ci0JICAgICFNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkKJiM0MzsJaWYgKCFlc3dfYWNsX2VncmVzc19uZWVkZWQoZXN3LCB2cG9ydC0mZ3Q7dnBvcnQpKQogCQlyZXR1cm4gMDsKIAotCWlmICghZXN3X2FjbF9lZ3Jlc3NfbmVlZGVkKGVzdywgdnBvcnQtJmd0O3Zwb3J0KSkKJiM0MzsJLyogVGhlIGZ3ZDJ2cG9ydCBGVC9ncm91cCBpcyBjcmVhdGVkIGxhemlseSBvbiBib25kIGV2ZW50czsgaWYgcHJpb190YWcKJiM0MzsJICogaXMgbm90IHJlcXVpcmVkLCBza2lwIGVhZ2VyIEZUIGFsbG9jYXRpb24gaGVyZSBlbnRpcmVseS4KJiM0MzsJICovCiYjNDM7CWlmICghTUxYNV9DQVBfR0VOKGVzdy0mZ3Q7ZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpCiAJCXJldHVybiAwOwogCiAJZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTsKIAomIzQzOwkvKiBSZXNlcnZlIGFuIGV4dHJhIEZURSBzbyB0aGUgZndkX2dycCBjYW4gYmUgYWRkZWQgbGF6aWx5IGxhdGVyLiAqLwogCWlmIChtbHg1X2Vzd19hY2xfZWdyZXNzX2Z3ZDJ2cG9ydF9zdXBwb3J0ZWQoZXN3KSkKIAkJdGFibGVfc2l6ZSYjNDM7JiM0Mzs7Ci0JaWYgKE1MWDVfQ0FQX0dFTihlc3ctJmd0O2RldiwgcHJpb190YWdfcmVxdWlyZWQpKQotCQl0YWJsZV9zaXplJiM0MzsmIzQzOzsKIAl2cG9ydC0mZ3Q7ZWdyZXNzLmFjbCA9IGVzd19hY2xfdGFibGVfY3JlYXRlKGVzdywgdnBvcnQsCiAJCQkJCQkgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTsKIAlpZiAoSVNfRVJSKHZwb3J0LSZndDtlZ3Jlc3MuYWNsKSkgewpAQCAtMjEwLDIxICYjNDM7MjAwLDIxIEBAIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0CiAJfQogCXZwb3J0LSZndDtlZ3Jlc3MudHlwZSA9IFZQT1JUX0VHUkVTU19BQ0xfVFlQRV9ERUZBVUxUOwogCi0JZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKGVzdywgdnBvcnQpOwomIzQzOwllcnIgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7CiAJaWYgKGVycikKLQkJZ290byBncm91cF9lcnI7CiYjNDM7CQlnb3RvIHRhYmxlX2VycjsKIAogCWVzd19kZWJ1Zyhlc3ctJmd0O2RldiwgJiMzNDt2cG9ydFslZF0gY29uZmlndXJlIGVncmVzcyBydWxlc1xuJiMzNDssIHZwb3J0LSZndDt2cG9ydCk7CiAKIAllcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTsKIAlpZiAoZXJyKQotCQlnb3RvIHJ1bGVzX2VycjsKJiM0MzsJCWdvdG8gdmxhbl9ncnBfZXJyOwogCiAJcmV0dXJuIDA7CiAKLXJ1bGVzX2VycjoKLQllc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19kZXN0cm95KHZwb3J0KTsKLWdyb3VwX2VycjoKJiM0Mzt2bGFuX2dycF9lcnI6CiYjNDM7CWVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpOwomIzQzO3RhYmxlX2VycjoKIAllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjM2LDE4ICYjNDM7MjI2LDUzIEBAIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9jbGVhbnVwKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKIH0KIAomIzQzOy8qIExhemlseSBhbGxvY2F0ZSB0aGUgZWdyZXNzIEFDTCB0YWJsZSBhbmQgZndkX2dycCBmb3IgYSB2cG9ydCB0aGF0IGlzIGFib3V0CiYjNDM7ICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5CiYjNDM7ICogd2hlbiBwcmlvX3RhZyBpcyByZXF1aXJlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywKJiM0MzsJCQkJCSAgICAgICBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoIXZwb3J0LSZndDtlZ3Jlc3MuYWNsKSB7CiYjNDM7CQlhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LAomIzQzOwkJCQkJICAgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCAxKTsKJiM0MzsJCWlmIChJU19FUlIoYWNsKSkKJiM0MzsJCQlyZXR1cm4gUFRSX0VSUihhY2wpOwomIzQzOwkJdnBvcnQtJmd0O2VncmVzcy5hY2wgPSBhY2w7CiYjNDM7CQl2cG9ydC0mZ3Q7ZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAodnBvcnQtJmd0O2VncmVzcy5vZmZsb2Fkcy5md2RfZ3JwKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfZndkX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7CiYjNDM7CWlmIChlcnIgJmFtcDsmYW1wOyBhY2wpCiYjNDM7CQllc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTsKJiM0MzsJcmV0dXJuIGVycjsKJiM0Mzt9CiYjNDM7CiBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udW0sCiAJCQkJICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKQogewogCXN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqYWN0aXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIGFjdGl2ZV92cG9ydF9udW0pOwogCXN0cnVjdCBtbHg1X2Zsb3dfZGVzdGluYXRpb24gZndkX2Rlc3QgPSB7fTsKJiM0MzsJaW50IGVycjsKIAogCWlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSkKIAkJcmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTsKIAlpZiAoSVNfRVJSKHBhc3NpdmVfdnBvcnQpKQogCQlyZXR1cm4gUFRSX0VSUihwYXNzaXZlX3Zwb3J0KTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsKJiM0MzsJZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9md2QydnBvcnRfc2V0dXAoZXN3LCBwYXNzaXZlX3Zwb3J0KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gdW5sb2NrOwomIzQzOwogCS8qIENsZWFudXAgYW5kIHJlY3JlYXRlIHJ1bGVzIFdJVEhPVVQgZndkMnZwb3J0IG9mIGFjdGl2ZSB2cG9ydCAqLwogCWVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpOwogCWVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgYWN0aXZlX3Zwb3J0LCBOVUxMKTsKQEAgLTI1OSwxNiAmIzQzOzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udQogCWZ3ZF9kZXN0LnZwb3J0LnZoY2FfaWQgPSBNTFg1X0NBUF9HRU4oZXN3LSZndDtkZXYsIHZoY2FfaWQpOwogCWZ3ZF9kZXN0LnZwb3J0LmZsYWdzID0gTUxYNV9GTE9XX0RFU1RfVlBPUlRfVkhDQV9JRDsKIAotCXJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsICZhbXA7ZndkX2Rlc3QpOwomIzQzOwllcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHBhc3NpdmVfdnBvcnQsICZhbXA7ZndkX2Rlc3QpOwomIzQzOwomIzQzO3VubG9jazoKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7ZXN3LSZndDtzdGF0ZV9sb2NrKTsKJiM0MzsJcmV0dXJuIGVycjsKIH0KIAogaW50IG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IHZwb3J0X251bSkKIHsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBtbHg1X2Vzd2l0Y2hfZ2V0X3Zwb3J0KGVzdywgdnBvcnRfbnVtKTsKJiM0MzsJaW50IGVycjsKIAogCWlmIChJU19FUlIodnBvcnQpKQogCQlyZXR1cm4gUFRSX0VSUih2cG9ydCk7CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Vzdy0mZ3Q7c3RhdGVfbG9jayk7CiAJZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTsKLQlyZXR1cm4gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCB2cG9ydCwgTlVMTCk7CiYjNDM7CWVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtlc3ctJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBFZ3Jlc3MgQUNMIFBhdGNoIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZWdyZXNzIEFDTCBzZXR1cCB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwYCwgYGVzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmRgLCBhbmQgYG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kYCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRvIGludHJvZHVjZSBhIGxhenkgYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgdGhlIGVncmVzcyBBQ0wgdGFibGUgYW5kIHRoZSBmd2RfZ3JwIHdoZW4gYSB2cG9ydCBpcyBhYm91dCB0byBnZXQgYSBmd2QydnBvcnQgcnVsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogaG93IGRvIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgpTaW5jZSB0aGlzIGRlYWxzIHdpdGggdGhlIGBtbHg1YCBkcml2ZXIsIHdoaWNoIHN1cHBvcnRzIHRoZSBDb25uZWN0WC00LCBDb25uZWN0WC01LCBhbmQgQ29ubmVjdFgtNiBmYW1pbGllcyBvZiBNZWxsYW5veCBOSUNzLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgSSBjYW4gZW11bGF0ZSBvciBzaW11bGF0ZSB0aGlzIGVudmlyb25tZW50LiBDYW4gSSBydW4gdGhpcyBpbiBhIFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnQ/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIGhhcyBhbnkgc29ydCBvZiBNZWxsYW5veCBoYXJkd2FyZSBlbXVsYXRpb24gYXZhaWxhYmxlLiBJbW1lZGlhdGVseSwgSSByZWNhbGwgdGhhdCB0aGVyZSBpc24mIzM5O3QgYW55IHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uIG9mIG1seDUgaGFyZHdhcmUgbGlrZSB3ZSBoYXZlIHdpdGggbWFjODAyMTFfaHdzaW0gb3IgbmV0ZGV2c2ltIGZvciBvdGhlciBkZXZpY2VzLiBJdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50LgoKQWxyaWdodCwgYSBxdWljayBzZWFyY2ggb2YgUUVNVSBjb25maXJtcyB0aGlzOyB0aGVyZSYjMzk7cyBubyBuYXRpdmUgbWx4NSBlbXVsYXRpb24uIEkgY2FuIHNlZSB0aGUgYGh3L25ldC9yb2NrZXJgIHdoaWNoIGlzIGEgZ29vZCByZW1pbmRlci4gU28sIHRoYXQmIzM5O3Mgbm90IGdvaW5nIHRvIHdvcmsuIERvZXMgdGhhdCBtZWFuIEkmIzM5O20gc3R1Y2sgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSBmb3IgdGVzdGluZz8KCk5vLCBsZXQmIzM5O3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgb3Igc2ltdWxhdGlvbiBkcml2ZXJzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvYCBkaXJlY3RvcnkuIE1heWJlIHRoZXJlJiMzOTtzIGEgc2ltdWxhdGlvbiBjb21wb25lbnQsIEkmIzM5O20gaG9waW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBteSBwcmVmZXJyZWQgdG9vbHMsIGxpa2UgYGdyZXBwZXJgLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjbHVlcyByZWdhcmRpbmcgbWx4NSBlbXVsYXRpb24gb3Igc2ltdWxhdGlvbiwgaW4gdGhlIGtlcm5lbCBvciBRRU1VLiBUaGF0JiMzOTtzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1LipzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NzYwPXN0YXRpYyBpbnQgbWx4NWVfcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpvbGRxLCBpbnQgcXVldWVfaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU3NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlx0LyogSW4gbWx4NSBhIHR4cSBjYW5ub3QgYmUgc2ltcGx5IHN0b3BwZWQgaW4gaXNvbGF0aW9uLCBvbmx5IHJlc3RhcnRlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2My1cdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTE4MD1zdGF0aWMgaW50IGh3c19id2NfbWF0Y2hlcl9tb3ZlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTIyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MjI3OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzUzLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzozNTQ6XHRcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzU1LVx0XHRcdFx0XHRcdFx0dGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjM3MTppbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zODg9aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy00MDAtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcdFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTYwOT1zdGF0aWMgaW50IGh3c19id2NfcnVsZV9jbnRfZGVjX3dpdGhfc2hyaW5rKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6NjQyOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTY2Nj1pbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY3NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1Olx0XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTAwMT1zdGF0aWMgaW50IGh3c19id2NfcnVsZV9jbnRfaW5jX3dpdGhfcmVoYXNoKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjEwMzc6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXHRcdFx0XHQgICB1MzIgKm1hdGNoX3BhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTcxLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoxMTcyOlx0XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzMtXHRcdFx0XHRcdFx0ICAgICBwYXJhbXMtXHUwMDNlbWF0Y2hfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9NzA9aW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjcxOm1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVx0XHRcdFx0ICBzdHJ1Y3QgbWx4NWh3c190YWJsZSAqdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6Nzg6aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaD04Mj12b2lkIG1seDVod3NfYndjX3J1bGVfZnJlZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTg1LVx0XHRcdFx0ICAgdTMyICptYXRjaF9wYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaDo5MDppbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9Mzg4PXN0YXRpYyBpbnQgaHdzX3N1Ym1hdGNoZXJfaW5pdF9maXJzdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0MTE6XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlciwgc3VibS1cdTAwM2V0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVx0XHRcdFx0XHRcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDI3LWRlc3Ryb3lfbWF0Y2hlcjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NDMzPXN0YXRpYyBpbnQgaHdzX3N1Ym1hdGNoZXJfaW5pdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsIGludCBpZHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQ4MS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyLCBzdWJtLVx1MDAzZXRibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODMtXHRcdFx0XHRcdFx0cHJpb3JpdHksIG1hdGNoX2NyaXRlcmlhLCBtYXNrLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUwMDpcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTAxLWZyZWVfbWF0Y2hlcjpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjItXHRpZiAoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjUyMzpcdFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXHRcdGlmIChpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc0OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjc4MzpcdHJldCA9IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdWJydWxlLCBtYXRjaF9wYXJhbXMsIGFjdGlvbnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVx0XHRcdFx0XHQgICAgIGZsb3dfc291cmNlLCBid2NfcXVldWVfaWR4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9Nzk5PXN0YXRpYyBpbnQgaHdzX2NvbXBsZXhfc3VicnVsZV9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVx0YndjX3J1bGUtXHUwMDNlcnVsZS1cdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6ODE3Olx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShid2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVx0aWYgKHVubGlrZWx5KHJldCkpXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDctXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0OS1cdHU4ICAgICAgICAgaXB2Nl8xMjdfOTZbMHgyMF07XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTU1PXVuaW9uIG1seDVfaWZjX2lwdjZfbGF5b3V0X2lwdjRfbGF5b3V0X2F1dG9fYml0cyB7XG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NTY6XHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmgtNTU3LVx0c3RydWN0IG1seDVfaWZjX2lwdjZfbGF5b3V0X2JpdHMgaXB2Nl9sYXlvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMyOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFRlc3RpbmcgTUxYNSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGVzZSBgZ3JlcGAgcmVzdWx0cywgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGxzLCBsaWtlIGBtbHg1ZV9xdWV1ZV9zdG9wYCBhbmQgYG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZWAsIGFyZW4mIzM5O3QgcGFydCBvZiBhbnkgc2ltdWxhdG9yLiBUaGV5IGFyZSBhbGwgTWVsbGFub3ggaGFyZHdhcmUtc3BlY2lmaWMgZnVuY3Rpb25zLiAgSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gdGVzdCBgbWx4NWAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSBgbmV0ZGV2c2ltYCwgYnV0IEkgcXVpY2tseSByZWFsaXplZCB0aGF0IGl0IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGBtbHg1YCBoYXJkd2FyZS4gIFdoYXQgYWJvdXQgZGl2aW5nIGludG8gYG1seDVfY29yZWA/IERvZXMgaXQgaGF2ZSBzb21lIGtpbmQgb2YgZHVtbXkgZGV2aWNlIG1vZGUsIHNvbWUgd2F5IHRvIGJlIHRlc3RlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hldGhlciBgQ09ORklHX01MWDVfQ09SRWAgaXMgdGVzdGFibGUgd2l0aGluIFN5emthbGxlci4KCkhtbSwgU3l6a2FsbGVyLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIHdpdGhvdXQgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUsIFN5emthbGxlciBjYW4mIzM5O3QgZWZmZWN0aXZlbHkgdGVzdCBgbWx4NWAuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6LWNsdXN0ZXJgLCBidXQgdGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCYjMzk7cyBkZXNpZ25lZCB0byBhdm9pZCBjb2RlIHBhdGhzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIG5vdGVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoYXQgY29kZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9mIGhhcmR3YXJlIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAsIGNhbiYjMzk7dCBiZSB0ZXN0ZWQuCgpTaW5jZSBgbWx4NWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGEgUENJZSBkZXZpY2UsIGFuZCB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBgbmV0ZGV2c2ltYCwgb3IgYHZoY2lgLCBJIGNhbiBzZWUgd2h5IGl0IHdvdWxkbiYjMzk7dCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZywgcGVyaGFwcyBhIHZpcnR1YWwgYG1seDVgIGRyaXZlcj8gIE1heWJlIHNvbWV0aGluZyBpbiB0aGUgYHZkcGFgIG9yIGB2ZmlvYCBhcmVhcz8gTm9wZSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nOyB0aGUgYGRyaXZlcnMvdmRwYS9tbHg1L2AgYW5kIGBkcml2ZXJzL3ZmaW8vcGNpL21seDUvYCBkaXJlY3RvcmllcyBhcmUsIHVuc3VycHJpc2luZ2x5LCBmb3IgbWx4NSBoYXJkd2FyZS4gVGhleSB3b3VsZG4mIzM5O3QgaGVscCBtZSBoZXJlLgoKQWxyaWdodCwgd2hhdCBhYm91dCBpbmplY3RpbmcgYSBmYWtlIFBDSSBkZXZpY2UgdG8gcmVwcmVzZW50IGBtbHg1YD8gVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhlIGtlcm5lbCBkb2VzbiYjMzk7dCBvZmZlciBhIG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgYSBmYWtlIG1seDUgUENJIGRldmljZS4gU28sIGl0IGFwcGVhcnMgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbW9jayBvciBvdGhlcndpc2Ugc2ltdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBgbWx4NWAgZGV2aWNlIGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1Liptb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwMQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE1MWDUgRHJpdmVyIFF1aXJrcyoqCgpIbW0sIHRoaW5raW5nIGFib3V0IHRoZSBNTFg1IGRyaXZlci4uLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nLiBDb3VsZCB0aGVyZSBiZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRob3NlICYjMzQ7ZHVtbXkmIzM0OyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgYW55dGhpbmcgbmFtZWQgYG1seDUuKmR1bW15YD8gSSYjMzk7dmUgc2VlbiBzb21lIG9kZGl0aWVzIGluIHRoZSBwYXN0IHdpdGggZHJpdmVycyBhbmQgdmlydHVhbCBvciBzaW11bGF0ZWQgZGV2aWNlcywgZXNwZWNpYWxseSBkdXJpbmcgY2VydGFpbiB0ZXN0aW5nIHNjZW5hcmlvcyBvciBjb3JuZXItY2FzZSBjb25maWd1cmF0aW9ucy4gSXTigJlzIHdvcnRoIGRpZ2dpbmcgZGVlcGVyIGludG8gaWYgd2UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCBvdXIgY3VycmVudCBzZXR1cC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhvc2UgZHVtbXkgZGV2aWNlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgTUxYNSBmcmFtZXdvcmssIGFuZCBob3cgdGhlaXIgaW50ZXJhY3Rpb25zIG1pZ2h0IG1hbmlmZXN0IGluIHByYWN0aWNhbCBkZXBsb3ltZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1LipkdW1teSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDA6c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTA4PWludCBtbHg1X2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDMtXHRpZiAoIWNxLVx1MDAzZWNvbXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxNDQ6XHRcdGNxLVx1MDAzZWNvbXAgPSBtbHg1X2NvcmVfY3FfZHVtbXlfY2I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDUtXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODIyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlJldmlzaXRpbmcgYG1seDUuKnNpbWAqKgoKSG1tLCBgbWx4NS4qc2ltYC4uLiB0aGF0JiMzOTtzIGJlZW4gcmF0dGxpbmcgYXJvdW5kIGluIG15IGhlYWQgYWdhaW4uIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIHRob3NlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzIGFuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpbmdzLiBBcmUgd2UgZ2V0dGluZyB0aGUgZmlkZWxpdHkgd2UgbmVlZD8gT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsPyBJcyBpdCB3b3J0aCBkaXZpbmcgYmFjayBpbnRvIHRoYXQsIG1heWJlIHJ1bm5pbmcgc29tZSBtb3JlIHRhcmdldGVkIHRlc3RzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgbGluZ2VyaW5nIHVuY2VydGFpbnR5IHRoZXJlLiBJZiB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBibGluZCBzcG90LCBub3cgaXMgdGhlIHRpbWUgdG8gdW5jb3ZlciBpdC4gVWx0aW1hdGVseSwgaXMgdGhpcyBzdGlsbCB0aGUgbW9zdCBlZmZlY3RpdmUgbWVhbnMgdG8gdGhlIGVuZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTA6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NS4qc2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTc2MjpcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU3NjMtXHQgKiBtbHg1ZV9xdWV1ZV9zdGFydCBkb2VzIG5vdCBmYWlsLCB3ZSBzdG9wIHRoZSBvbGQgcXVldWUgdGhlcmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xODA9c3RhdGljIGludCBod3NfYndjX21hdGNoZXJfbW92ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjIyNzppbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjI4LVx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MzIxPW1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlKHN0cnVjdCBtbHg1aHdzX3RhYmxlICp0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1My1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0Olx0XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoYndjX21hdGNoZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cdFx0XHRcdFx0XHRcdHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzozNzE6aW50IG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9Mzg4PWludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo0MDE6XHRcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz02MDk9c3RhdGljIGludCBod3NfYndjX3J1bGVfY250X2RlY193aXRoX3NocmluayhzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjY0MjppbnQgbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY0My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz02NjY9aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjY3NTpcdFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9kZXN0cm95X3NpbXBsZShid2NfcnVsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTY3Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTEwMDE9c3RhdGljIGludCBod3NfYndjX3J1bGVfY250X2luY193aXRoX3JlaGFzaChzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoxMDM3OmludCBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM4LVx0XHRcdFx0ICAgdTMyICptYXRjaF9wYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTExNDA9bWx4NWh3c19id2NfcnVsZV9jcmVhdGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMTE3MS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcdFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKGJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVx0XHRcdFx0XHRcdCAgICAgcGFyYW1zLVx1MDAzZW1hdGNoX2J1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaDo3MTptbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Mi1cdFx0XHRcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjg0OmludCBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cdFx0XHRcdCAgIHUzMiAqbWF0Y2hfcGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6OTA6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmgtOTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTM4OD1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXRfZmlyc3Qoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NDExOlx0cmV0ID0gbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXHUwMDNldGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQxMi1cdFx0XHRcdFx0XHRwcmlvcml0eSwgbWF0Y2hfY3JpdGVyaWEsIG1hc2ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyNy1kZXN0cm95X21hdGNoZXI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NDI4Olx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVx1MDAzZWJ3Y19tYXRjaGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTQzMz1zdGF0aWMgaW50IGh3c19zdWJtYXRjaGVyX2luaXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0ODI6XHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlciwgc3VibS1cdTAwM2V0YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVx0XHRcdFx0XHRcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDk5LWRlc3Ryb3lfbWF0Y2hlcjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTUxMT1zdGF0aWMgdm9pZCBod3Nfc3VibWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTIyLVx0aWYgKHN1Ym0tXHUwMDNlYndjX21hdGNoZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MjM6XHRcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cdTAwM2Vid2NfbWF0Y2hlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNTI0LVx0XHRpZiAoaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTc4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoc3VicnVsZSwgbWF0Y2hfcGFyYW1zLCBhY3Rpb25zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTc4NC1cdFx0XHRcdFx0ICAgICBmbG93X3NvdXJjZSwgYndjX3F1ZXVlX2lkeCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTgxNi1cdGJ3Y19ydWxlLVx1MDAzZXJ1bGUtXHUwMDNlc2tpcF9kZWxldGUgPSAhaXNfbGFzdF9ydWxlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTgxOC1cdGlmICh1bmxpa2VseShyZXQpKVxuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU0ND1zdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyB7XG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmgtNTQ3LVxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg6NTQ4OnN0cnVjdCBtbHg1X2lmY19pcHY2X3NpbXBsZV9sYXlvdXRfYml0cyB7XG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXHR1OCAgICAgICAgIGlwdjZfMTI3Xzk2WzB4MjBdO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg6NTU2Olx0c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIGlwdjZfc2ltcGxlX2xheW91dDtcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cdHN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIGlwdjZfbGF5b3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc5OQoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaW52b2x2ZXMgZGV0ZXJtaW5pbmcgaWYgYSBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBUaGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgKnVucmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdlIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGV4YW1wbGVzIGdpdmVuIHNwZWNpZmljYWxseSBwb2ludCB0byBoYXJkd2FyZSB0aGF0IGhhcyBzb2Z0d2FyZSBlbXVsYXRpb24gKGxpa2UgVVNCIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIGJ1dCBJJiMzOTttIGxvb2tpbmcgYXQgYG1seDVgLgoKTXkgdW5kZXJzdGFuZGluZyBvZiBgbWx4NWAgaXMgdGhhdCBpdCYjMzk7cyBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIC0gTWVsbGFub3ggYWRhcHRlcnMsIHRvIGJlIHByZWNpc2UuIENydWNpYWxseSwgdGhlcmUmIzM5O3Mgbm8gZXF1aXZhbGVudCBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBUaGVyZSYjMzk7cyBubyB3YXkgdG8gcmVsaWFibHkgdHJpZ2dlciB0aG9zZSBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgYXQgbGVhc3Qgbm90IHdpdGhvdXQgc29tZSBzaWduaWZpY2FudCBleHRlcm5hbCBzZXR1cCBvdXRzaWRlIHRoZSBrZXJuZWwsIHdoaWNoIGlzbiYjMzk7dCB0aGUgc2NvcGUgb2YgdGhpcyBjaGVjay4gVGhhdOKAmXMgdGhlIGtleS4gU2luY2UgYG1seDVgJiMzOTtzIGNvZGUgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpbywgaXQmIzM5O3MgZGVmaW5pdGl2ZWx5IHVucmVhY2hhYmxlLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBvdXRsaW5lZCwgSSBuZWVkIHRvIGZsYWcgdGhpcyBhcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1KS4gVGhpcyBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gc3VjaCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTEuNDQxNDM3MzA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1ODEwOTYyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSkuIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgaXQgaW4gdGhlIGtlcm5lbCBvciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHN1Y2ggZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTEuNDQxNDQzODc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzE1OTQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTM5MTNkOGRiYjljNjU1NmE3OGRlZGVlNWVlZmJiM2VmOTJkNGIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jXFxuaW5kZXggMjRiMWNhNGU0ZmY4NzQuLjk4MWNlNDQ2MzU4Mjk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5jXFxuQEAgLTExMyw4ICsxMTMsOCBAQCBzdGF0aWMgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3koc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRlc3dfYWNsX2VncmVzc19vZmxkX2JvdW5jZV9ydWxlc19kZXN0cm95KHZwb3J0KTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4rc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiB7XFxuIFxcdGludCBpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pO1xcbiBcXHRzdHJ1Y3QgbWx4NV9mbG93X2dyb3VwICpmd2RfZ3JwO1xcbkBAIC0xMjIsMjIgKzEyMiwxMiBAQCBzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXFxuIFxcdHUzMiBmbG93X2luZGV4ID0gMDtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbi1cXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpIHtcXG4tXFx0XFx0cmV0ID0gZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXG4rXFx0aWYgKE1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbiBcXHRcXHRmbG93X2luZGV4Kys7XFxuLVxcdH1cXG4tXFxuLVxcdGlmICghbWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXFxuLVxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0Zmxvd19ncm91cF9pbiA9IGt2emFsbG9jKGlubGVuLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFmbG93X2dyb3VwX2luKSB7XFxuLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdGdvdG8gZndkX2dycF9lcnI7XFxuLVxcdH1cXG4rXFx0aWYgKCFmbG93X2dyb3VwX2luKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdC8qIFRoaXMgZ3JvdXAgaG9sZHMgMSBGVEUgdG8gZm9yd2FyZCBhbGwgcGFja2V0cyB0byBvdGhlciB2cG9ydFxcbiBcXHQgKiB3aGVuIGJvbmQgdnBvcnRzIGlzIHN1cHBvcnRlZC5cXG5AQCAtMTUwLDE2ICsxNDAsMTUgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxcbiBcXHRcXHRlc3dfd2Fybihlc3ctXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0IFxcXCJGYWlsZWQgdG8gY3JlYXRlIHZwb3J0WyVkXSBlZ3Jlc3MgZndkMnZwb3J0IGZsb3cgZ3JvdXAsIGVyciglZClcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCB2cG9ydC1cXHUwMDNldnBvcnQsIHJldCk7XFxuLVxcdFxcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcXG4tXFx0XFx0Z290byBmd2RfZ3JwX2VycjtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG4gXFx0dnBvcnQtXFx1MDAzZWVncmVzcy5vZmZsb2Fkcy5md2RfZ3JwID0gZndkX2dycDtcXG4tXFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xcbi1cXHRyZXR1cm4gMDtcXG4rXFx0ZXN3X2RlYnVnKGVzdy1cXHUwMDNlZGV2LFxcbitcXHRcXHQgIFxcXCJsYXp5LWNyZWF0ZWQgZndkX2dycCBmb3IgdnBvcnQgJWQgKGZsb3dfaW5kZXg9JXUpXFxcXG5cXFwiLFxcbitcXHRcXHQgIHZwb3J0LVxcdTAwM2V2cG9ydCwgZmxvd19pbmRleCk7XFxuIFxcbi1md2RfZ3JwX2VycjpcXG4tXFx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XFxuIG91dDpcXG4rXFx0a3ZmcmVlKGZsb3dfZ3JvdXBfaW4pO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0xODUsMjIgKzE3NCwyMyBAQCBzdGF0aWMgYm9vbCBlc3dfYWNsX2VncmVzc19uZWVkZWQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgdnBvcnRfbnVtKVxcbiBcXG4gaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXFxuIHtcXG4tXFx0aW50IHRhYmxlX3NpemUgPSAwO1xcbitcXHRpbnQgdGFibGVfc2l6ZSA9IDE7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAhTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXFxuK1xcdGlmICghZXN3X2FjbF9lZ3Jlc3NfbmVlZGVkKGVzdywgdnBvcnQtXFx1MDAzZXZwb3J0KSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVxcdTAwM2V2cG9ydCkpXFxuK1xcdC8qIFRoZSBmd2QydnBvcnQgRlQvZ3JvdXAgaXMgY3JlYXRlZCBsYXppbHkgb24gYm9uZCBldmVudHM7IGlmIHByaW9fdGFnXFxuK1xcdCAqIGlzIG5vdCByZXF1aXJlZCwgc2tpcCBlYWdlciBGVCBhbGxvY2F0aW9uIGhlcmUgZW50aXJlbHkuXFxuK1xcdCAqL1xcbitcXHRpZiAoIU1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveSh2cG9ydCk7XFxuIFxcbitcXHQvKiBSZXNlcnZlIGFuIGV4dHJhIEZURSBzbyB0aGUgZndkX2dycCBjYW4gYmUgYWRkZWQgbGF6aWx5IGxhdGVyLiAqL1xcbiBcXHRpZiAobWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXFxuIFxcdFxcdHRhYmxlX3NpemUrKztcXG4tXFx0aWYgKE1MWDVfQ0FQX0dFTihlc3ctXFx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxcbi1cXHRcXHR0YWJsZV9zaXplKys7XFxuIFxcdHZwb3J0LVxcdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IE1MWDVfRkxPV19OQU1FU1BBQ0VfRVNXX0VHUkVTUywgdGFibGVfc2l6ZSk7XFxuIFxcdGlmIChJU19FUlIodnBvcnQtXFx1MDAzZWVncmVzcy5hY2wpKSB7XFxuQEAgLTIxMCwyMSArMjAwLDIxIEBAIGludCBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0XFxuIFxcdH1cXG4gXFx0dnBvcnQtXFx1MDAzZWVncmVzcy50eXBlID0gVlBPUlRfRUdSRVNTX0FDTF9UWVBFX0RFRkFVTFQ7XFxuIFxcbi1cXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoZXN3LCB2cG9ydCk7XFxuK1xcdGVyciA9IGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2NyZWF0ZShlc3csIHZwb3J0KTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBncm91cF9lcnI7XFxuK1xcdFxcdGdvdG8gdGFibGVfZXJyO1xcbiBcXG4gXFx0ZXN3X2RlYnVnKGVzdy1cXHUwMDNlZGV2LCBcXFwidnBvcnRbJWRdIGNvbmZpZ3VyZSBlZ3Jlc3MgcnVsZXNcXFxcblxcXCIsIHZwb3J0LVxcdTAwM2V2cG9ydCk7XFxuIFxcbiBcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBydWxlc19lcnI7XFxuK1xcdFxcdGdvdG8gdmxhbl9ncnBfZXJyO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbi1ydWxlc19lcnI6XFxuLVxcdGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2Rlc3Ryb3kodnBvcnQpO1xcbi1ncm91cF9lcnI6XFxuK3ZsYW5fZ3JwX2VycjpcXG4rXFx0ZXN3X2FjbF9lZ3Jlc3Nfdmxhbl9ncnBfZGVzdHJveSh2cG9ydCk7XFxuK3RhYmxlX2VycjpcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjM2LDE4ICsyMjYsNTMgQEAgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX2NsZWFudXAoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRlc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTtcXG4gfVxcbiBcXG4rLyogTGF6aWx5IGFsbG9jYXRlIHRoZSBlZ3Jlc3MgQUNMIHRhYmxlIGFuZCBmd2RfZ3JwIGZvciBhIHZwb3J0IHRoYXQgaXMgYWJvdXRcXG4rICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XFxuKyAqIHdoZW4gcHJpb190YWcgaXMgcmVxdWlyZWQuXFxuKyAqL1xcbitzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4re1xcbitcXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKCF2cG9ydC1cXHUwMDNlZWdyZXNzLmFjbCkge1xcbitcXHRcXHRhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LFxcbitcXHRcXHRcXHRcXHRcXHQgICBNTFg1X0ZMT1dfTkFNRVNQQUNFX0VTV19FR1JFU1MsIDEpO1xcbitcXHRcXHRpZiAoSVNfRVJSKGFjbCkpXFxuK1xcdFxcdFxcdHJldHVybiBQVFJfRVJSKGFjbCk7XFxuK1xcdFxcdHZwb3J0LVxcdTAwM2VlZ3Jlc3MuYWNsID0gYWNsO1xcbitcXHRcXHR2cG9ydC1cXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHZwb3J0LVxcdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xcbitcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IGFjbClcXG4rXFx0XFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XFxuK1xcdHJldHVybiBlcnI7XFxuK31cXG4rXFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251bSxcXG4gXFx0XFx0XFx0XFx0ICAgdTE2IHBhc3NpdmVfdnBvcnRfbnVtKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X3Zwb3J0ICpwYXNzaXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHBhc3NpdmVfdnBvcnRfbnVtKTtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKmFjdGl2ZV92cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZXN3LCBhY3RpdmVfdnBvcnRfbnVtKTtcXG4gXFx0c3RydWN0IG1seDVfZmxvd19kZXN0aW5hdGlvbiBmd2RfZGVzdCA9IHt9O1xcbitcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKElTX0VSUihhY3RpdmVfdnBvcnQpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihhY3RpdmVfdnBvcnQpO1xcbiBcXHRpZiAoSVNfRVJSKHBhc3NpdmVfdnBvcnQpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihwYXNzaXZlX3Zwb3J0KTtcXG4gXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIHVubG9jaztcXG4rXFxuIFxcdC8qIENsZWFudXAgYW5kIHJlY3JlYXRlIHJ1bGVzIFdJVEhPVVQgZndkMnZwb3J0IG9mIGFjdGl2ZSB2cG9ydCAqL1xcbiBcXHRlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2Rlc3Ryb3koYWN0aXZlX3Zwb3J0KTtcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xcbkBAIC0yNTksMTYgKzI4NCwyNCBAQCBpbnQgbWx4NV9lc3dfYWNsX2VncmVzc192cG9ydF9ib25kKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgdTE2IGFjdGl2ZV92cG9ydF9udVxcbiBcXHRmd2RfZGVzdC52cG9ydC52aGNhX2lkID0gTUxYNV9DQVBfR0VOKGVzdy1cXHUwMDNlZGV2LCB2aGNhX2lkKTtcXG4gXFx0ZndkX2Rlc3QudnBvcnQuZmxhZ3MgPSBNTFg1X0ZMT1dfREVTVF9WUE9SVF9WSENBX0lEO1xcbiBcXG4tXFx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgcGFzc2l2ZV92cG9ydCwgXFx1MDAyNmZ3ZF9kZXN0KTtcXG4rXFx0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBwYXNzaXZlX3Zwb3J0LCBcXHUwMDI2ZndkX2Rlc3QpO1xcbitcXG4rdW5sb2NrOlxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmVzdy1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXFxuIHtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoSVNfRVJSKHZwb3J0KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIodnBvcnQpO1xcbiBcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2ZXN3LVxcdTAwM2VzdGF0ZV9sb2NrKTtcXG4gXFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcXG4tXFx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xcbitcXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZlc3ctXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEwOjI1OjUyLjA3NDAzOTIwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ0OTQ4NDg4NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUpLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjEzOTEzZDhkYmI5YzY1NTZhNzhkZWRlZTVlZWZiYjNlZjkyZDRiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDEwOjI1OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9hY2wvZWdyZXNzX29mbGQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbmluZGV4IDI0YjFjYTRlNGZmODc0Li45ODFjZTQ0NjM1ODI5NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYWNsL2VncmVzc19vZmxkLmNcbkBAIC0xMTMsOCArMTEzLDggQEAgc3RhdGljIHZvaWQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfYm91bmNlX3J1bGVzX2Rlc3Ryb3kodnBvcnQpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4tXHRcdFx0XHRcdCAgICAgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuK3N0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9md2RfZ3JwX2NyZWF0ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csXG4rXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbiB7XG4gXHRpbnQgaW5sZW4gPSBNTFg1X1NUX1NaX0JZVEVTKGNyZWF0ZV9mbG93X2dyb3VwX2luKTtcbiBcdHN0cnVjdCBtbHg1X2Zsb3dfZ3JvdXAgKmZ3ZF9ncnA7XG5AQCAtMTIyLDIyICsxMjIsMTIgQEAgc3RhdGljIGludCBlc3dfYWNsX2VncmVzc19vZmxkX2dyb3Vwc19jcmVhdGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LFxuIFx0dTMyIGZsb3dfaW5kZXggPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRpZiAoTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHByaW9fdGFnX3JlcXVpcmVkKSkge1xuLVx0XHRyZXQgPSBlc3dfYWNsX2VncmVzc192bGFuX2dycF9jcmVhdGUoZXN3LCB2cG9ydCk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbi1cbitcdGlmIChNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuIFx0XHRmbG93X2luZGV4Kys7XG4tXHR9XG4tXG4tXHRpZiAoIW1seDVfZXN3X2FjbF9lZ3Jlc3NfZndkMnZwb3J0X3N1cHBvcnRlZChlc3cpKVxuLVx0XHRnb3RvIG91dDtcbiBcbiBcdGZsb3dfZ3JvdXBfaW4gPSBrdnphbGxvYyhpbmxlbiwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWZsb3dfZ3JvdXBfaW4pIHtcbi1cdFx0cmV0ID0gLUVOT01FTTtcbi1cdFx0Z290byBmd2RfZ3JwX2Vycjtcbi1cdH1cbitcdGlmICghZmxvd19ncm91cF9pbilcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHQvKiBUaGlzIGdyb3VwIGhvbGRzIDEgRlRFIHRvIGZvcndhcmQgYWxsIHBhY2tldHMgdG8gb3RoZXIgdnBvcnRcbiBcdCAqIHdoZW4gYm9uZCB2cG9ydHMgaXMgc3VwcG9ydGVkLlxuQEAgLTE1MCwxNiArMTQwLDE1IEBAIHN0YXRpYyBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfY3JlYXRlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbiBcdFx0ZXN3X3dhcm4oZXN3LVx1MDAzZWRldixcbiBcdFx0XHQgXCJGYWlsZWQgdG8gY3JlYXRlIHZwb3J0WyVkXSBlZ3Jlc3MgZndkMnZwb3J0IGZsb3cgZ3JvdXAsIGVyciglZClcXG5cIixcbiBcdFx0XHQgdnBvcnQtXHUwMDNldnBvcnQsIHJldCk7XG4tXHRcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbi1cdFx0Z290byBmd2RfZ3JwX2VycjtcbitcdFx0Z290byBvdXQ7XG4gXHR9XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycCA9IGZ3ZF9ncnA7XG4tXHRrdmZyZWUoZmxvd19ncm91cF9pbik7XG4tXHRyZXR1cm4gMDtcbitcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LFxuK1x0XHQgIFwibGF6eS1jcmVhdGVkIGZ3ZF9ncnAgZm9yIHZwb3J0ICVkIChmbG93X2luZGV4PSV1KVxcblwiLFxuK1x0XHQgIHZwb3J0LVx1MDAzZXZwb3J0LCBmbG93X2luZGV4KTtcbiBcbi1md2RfZ3JwX2Vycjpcbi1cdGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpO1xuIG91dDpcbitcdGt2ZnJlZShmbG93X2dyb3VwX2luKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTE4NSwyMiArMTc0LDIzIEBAIHN0YXRpYyBib29sIGVzd19hY2xfZWdyZXNzX25lZWRlZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4gXG4gaW50IGVzd19hY2xfZWdyZXNzX29mbGRfc2V0dXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4ge1xuLVx0aW50IHRhYmxlX3NpemUgPSAwO1xuK1x0aW50IHRhYmxlX3NpemUgPSAxO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykgXHUwMDI2XHUwMDI2XG4tXHQgICAgIU1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXG4rXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoIWVzd19hY2xfZWdyZXNzX25lZWRlZChlc3csIHZwb3J0LVx1MDAzZXZwb3J0KSlcbitcdC8qIFRoZSBmd2QydnBvcnQgRlQvZ3JvdXAgaXMgY3JlYXRlZCBsYXppbHkgb24gYm9uZCBldmVudHM7IGlmIHByaW9fdGFnXG4rXHQgKiBpcyBub3QgcmVxdWlyZWQsIHNraXAgZWFnZXIgRlQgYWxsb2NhdGlvbiBoZXJlIGVudGlyZWx5LlxuK1x0ICovXG4rXHRpZiAoIU1MWDVfQ0FQX0dFTihlc3ctXHUwMDNlZGV2LCBwcmlvX3RhZ19yZXF1aXJlZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcbiBcbitcdC8qIFJlc2VydmUgYW4gZXh0cmEgRlRFIHNvIHRoZSBmd2RfZ3JwIGNhbiBiZSBhZGRlZCBsYXppbHkgbGF0ZXIuICovXG4gXHRpZiAobWx4NV9lc3dfYWNsX2VncmVzc19md2QydnBvcnRfc3VwcG9ydGVkKGVzdykpXG4gXHRcdHRhYmxlX3NpemUrKztcbi1cdGlmIChNTFg1X0NBUF9HRU4oZXN3LVx1MDAzZWRldiwgcHJpb190YWdfcmVxdWlyZWQpKVxuLVx0XHR0YWJsZV9zaXplKys7XG4gXHR2cG9ydC1cdTAwM2VlZ3Jlc3MuYWNsID0gZXN3X2FjbF90YWJsZV9jcmVhdGUoZXN3LCB2cG9ydCxcbiBcdFx0XHRcdFx0XHQgTUxYNV9GTE9XX05BTUVTUEFDRV9FU1dfRUdSRVNTLCB0YWJsZV9zaXplKTtcbiBcdGlmIChJU19FUlIodnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkpIHtcbkBAIC0yMTAsMjEgKzIwMCwyMSBAQCBpbnQgZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9zZXR1cChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydFxuIFx0fVxuIFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbiBcbi1cdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfZ3JvdXBzX2NyZWF0ZShlc3csIHZwb3J0KTtcbitcdGVyciA9IGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2NyZWF0ZShlc3csIHZwb3J0KTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZ3JvdXBfZXJyO1xuK1x0XHRnb3RvIHRhYmxlX2VycjtcbiBcbiBcdGVzd19kZWJ1Zyhlc3ctXHUwMDNlZGV2LCBcInZwb3J0WyVkXSBjb25maWd1cmUgZWdyZXNzIHJ1bGVzXFxuXCIsIHZwb3J0LVx1MDAzZXZwb3J0KTtcbiBcbiBcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBydWxlc19lcnI7XG4rXHRcdGdvdG8gdmxhbl9ncnBfZXJyO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG4tcnVsZXNfZXJyOlxuLVx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ncm91cHNfZGVzdHJveSh2cG9ydCk7XG4tZ3JvdXBfZXJyOlxuK3ZsYW5fZ3JwX2VycjpcbitcdGVzd19hY2xfZWdyZXNzX3ZsYW5fZ3JwX2Rlc3Ryb3kodnBvcnQpO1xuK3RhYmxlX2VycjpcbiBcdGVzd19hY2xfZWdyZXNzX3RhYmxlX2Rlc3Ryb3kodnBvcnQpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjM2LDE4ICsyMjYsNTMgQEAgdm9pZCBlc3dfYWNsX2VncmVzc19vZmxkX2NsZWFudXAoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0ZXN3X2FjbF9lZ3Jlc3NfdGFibGVfZGVzdHJveSh2cG9ydCk7XG4gfVxuIFxuKy8qIExhemlseSBhbGxvY2F0ZSB0aGUgZWdyZXNzIEFDTCB0YWJsZSBhbmQgZndkX2dycCBmb3IgYSB2cG9ydCB0aGF0IGlzIGFib3V0XG4rICogdG8gcmVjZWl2ZSBhIGZ3ZDJ2cG9ydCBydWxlLiBUaGUgdGFibGUgaXMgb3RoZXJ3aXNlIGNyZWF0ZWQgZWFnZXJseSBvbmx5XG4rICogd2hlbiBwcmlvX3RhZyBpcyByZXF1aXJlZC5cbisgKi9cbitzdGF0aWMgaW50IGVzd19hY2xfZWdyZXNzX29mbGRfZndkMnZwb3J0X3NldHVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyxcbitcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcbit7XG4rXHRzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICphY2wgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdGlmICghdnBvcnQtXHUwMDNlZWdyZXNzLmFjbCkge1xuK1x0XHRhY2wgPSBlc3dfYWNsX3RhYmxlX2NyZWF0ZShlc3csIHZwb3J0LFxuK1x0XHRcdFx0XHQgICBNTFg1X0ZMT1dfTkFNRVNQQUNFX0VTV19FR1JFU1MsIDEpO1xuK1x0XHRpZiAoSVNfRVJSKGFjbCkpXG4rXHRcdFx0cmV0dXJuIFBUUl9FUlIoYWNsKTtcbitcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLmFjbCA9IGFjbDtcbitcdFx0dnBvcnQtXHUwMDNlZWdyZXNzLnR5cGUgPSBWUE9SVF9FR1JFU1NfQUNMX1RZUEVfREVGQVVMVDtcbitcdH1cbitcbitcdGlmICh2cG9ydC1cdTAwM2VlZ3Jlc3Mub2ZmbG9hZHMuZndkX2dycClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZF9ncnBfY3JlYXRlKGVzdywgdnBvcnQpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgYWNsKVxuK1x0XHRlc3dfYWNsX2VncmVzc190YWJsZV9kZXN0cm95KHZwb3J0KTtcbitcdHJldHVybiBlcnI7XG4rfVxuK1xuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251bSxcbiBcdFx0XHRcdCAgIHUxNiBwYXNzaXZlX3Zwb3J0X251bSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqcGFzc2l2ZV92cG9ydCA9IG1seDVfZXN3aXRjaF9nZXRfdnBvcnQoZXN3LCBwYXNzaXZlX3Zwb3J0X251bSk7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqYWN0aXZlX3Zwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIGFjdGl2ZV92cG9ydF9udW0pO1xuIFx0c3RydWN0IG1seDVfZmxvd19kZXN0aW5hdGlvbiBmd2RfZGVzdCA9IHt9O1xuK1x0aW50IGVycjtcbiBcbiBcdGlmIChJU19FUlIoYWN0aXZlX3Zwb3J0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYWN0aXZlX3Zwb3J0KTtcbiBcdGlmIChJU19FUlIocGFzc2l2ZV92cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHBhc3NpdmVfdnBvcnQpO1xuIFxuK1x0bXV0ZXhfbG9jayhcdTAwMjZlc3ctXHUwMDNlc3RhdGVfbG9jayk7XG4rXG4rXHRlcnIgPSBlc3dfYWNsX2VncmVzc19vZmxkX2Z3ZDJ2cG9ydF9zZXR1cChlc3csIHBhc3NpdmVfdnBvcnQpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byB1bmxvY2s7XG4rXG4gXHQvKiBDbGVhbnVwIGFuZCByZWNyZWF0ZSBydWxlcyBXSVRIT1VUIGZ3ZDJ2cG9ydCBvZiBhY3RpdmUgdnBvcnQgKi9cbiBcdGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfZGVzdHJveShhY3RpdmVfdnBvcnQpO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBhY3RpdmVfdnBvcnQsIE5VTEwpO1xuQEAgLTI1OSwxNiArMjg0LDI0IEBAIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1MTYgYWN0aXZlX3Zwb3J0X251XG4gXHRmd2RfZGVzdC52cG9ydC52aGNhX2lkID0gTUxYNV9DQVBfR0VOKGVzdy1cdTAwM2VkZXYsIHZoY2FfaWQpO1xuIFx0ZndkX2Rlc3QudnBvcnQuZmxhZ3MgPSBNTFg1X0ZMT1dfREVTVF9WUE9SVF9WSENBX0lEO1xuIFxuLVx0cmV0dXJuIGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgcGFzc2l2ZV92cG9ydCwgXHUwMDI2ZndkX2Rlc3QpO1xuK1x0ZXJyID0gZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19jcmVhdGUoZXN3LCBwYXNzaXZlX3Zwb3J0LCBcdTAwMjZmd2RfZGVzdCk7XG4rXG4rdW5sb2NrOlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIGludCBtbHg1X2Vzd19hY2xfZWdyZXNzX3Zwb3J0X3VuYm9uZChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pXG4ge1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gbWx4NV9lc3dpdGNoX2dldF92cG9ydChlc3csIHZwb3J0X251bSk7XG4rXHRpbnQgZXJyO1xuIFxuIFx0aWYgKElTX0VSUih2cG9ydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKHZwb3J0KTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2ZXN3LVx1MDAzZXN0YXRlX2xvY2spO1xuIFx0ZXN3X2FjbF9lZ3Jlc3Nfb2ZsZF9ydWxlc19kZXN0cm95KHZwb3J0KTtcbi1cdHJldHVybiBlc3dfYWNsX2VncmVzc19vZmxkX3J1bGVzX2NyZWF0ZShlc3csIHZwb3J0LCBOVUxMKTtcbitcdGVyciA9IGVzd19hY2xfZWdyZXNzX29mbGRfcnVsZXNfY3JlYXRlKGVzdywgdnBvcnQsIE5VTEwpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmVzdy1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjU6NTIuMDc0MDQxMzI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwNDA2MjIwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEVncmVzcyBBQ0wgUGF0Y2ggUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgZWdyZXNzIEFDTCBzZXR1cCB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBlc3dfYWNsX2VncmVzc19vZmxkX3NldHVwYCwgYGVzd19hY2xfZWdyZXNzX3Zwb3J0X2JvbmRgLCBhbmQgYG1seDVfZXN3X2FjbF9lZ3Jlc3NfdnBvcnRfdW5ib25kYCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRvIGludHJvZHVjZSBhIGxhenkgYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgdGhlIGVncmVzcyBBQ0wgdGFibGUgYW5kIHRoZSBmd2RfZ3JwIHdoZW4gYSB2cG9ydCBpcyBhYm91dCB0byBnZXQgYSBmd2QydnBvcnQgcnVsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogaG93IGRvIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSwgZXNwZWNpYWxseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cblNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0aGUgYG1seDVgIGRyaXZlciwgd2hpY2ggc3VwcG9ydHMgdGhlIENvbm5lY3RYLTQsIENvbm5lY3RYLTUsIGFuZCBDb25uZWN0WC02IGZhbWlsaWVzIG9mIE1lbGxhbm94IE5JQ3MsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBJIGNhbiBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoaXMgZW52aXJvbm1lbnQuIENhbiBJIHJ1biB0aGlzIGluIGEgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudD8gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgaGFzIGFueSBzb3J0IG9mIE1lbGxhbm94IGhhcmR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuIEltbWVkaWF0ZWx5LCBJIHJlY2FsbCB0aGF0IHRoZXJlIGlzbid0IGFueSBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBvZiBtbHg1IGhhcmR3YXJlIGxpa2Ugd2UgaGF2ZSB3aXRoIG1hYzgwMjExX2h3c2ltIG9yIG5ldGRldnNpbSBmb3Igb3RoZXIgZGV2aWNlcy4gSXQncyBhIGNyaXRpY2FsIHBvaW50LlxuXG5BbHJpZ2h0LCBhIHF1aWNrIHNlYXJjaCBvZiBRRU1VIGNvbmZpcm1zIHRoaXM7IHRoZXJlJ3Mgbm8gbmF0aXZlIG1seDUgZW11bGF0aW9uLiBJIGNhbiBzZWUgdGhlIGBody9uZXQvcm9ja2VyYCB3aGljaCBpcyBhIGdvb2QgcmVtaW5kZXIuIFNvLCB0aGF0J3Mgbm90IGdvaW5nIHRvIHdvcmsuIERvZXMgdGhhdCBtZWFuIEknbSBzdHVjayBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGZvciB0ZXN0aW5nP1xuXG5ObywgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgYW55IG1vY2sgb3Igc2ltdWxhdGlvbiBkcml2ZXJzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvYCBkaXJlY3RvcnkuIE1heWJlIHRoZXJlJ3MgYSBzaW11bGF0aW9uIGNvbXBvbmVudCwgSSdtIGhvcGluZy4gSSdsbCBuZWVkIHRvIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB1c2luZyBteSBwcmVmZXJyZWQgdG9vbHMsIGxpa2UgYGdyZXBwZXJgLCB0byBxdWlja2x5IGlkZW50aWZ5IGFueSBjbHVlcyByZWdhcmRpbmcgbWx4NSBlbXVsYXRpb24gb3Igc2ltdWxhdGlvbiwgaW4gdGhlIGtlcm5lbCBvciBRRU1VLiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MDQuMTE0NjY1OTE4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTYzNjU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NS4qc2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlxcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYzLVxcdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTgwPXN0YXRpYyBpbnQgaHdzX2J3Y19tYXRjaGVyX21vdmUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyMjc6aW50IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0OlxcdFxcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzcxOmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTM4OD1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcXHRcXHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19tYXRjaGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjA5PXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9kZWNfd2l0aF9zaHJpbmsoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo2NDI6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjY2PWludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1OlxcdFxcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xMDAxPXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9pbmNfd2l0aF9yZWhhc2goc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTAzNzppbnQgbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXFx0XFx0XFx0XFx0ICAgdTMyICptYXRjaF9wYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcXHRcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcGFyYW1zLVxcdTAwM2VtYXRjaF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6NzE6bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cXHRcXHRcXHRcXHQgICB1MzIgKm1hdGNoX3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjkwOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz0zODg9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0X2ZpcnN0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQxMTpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjctZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUyMi1cXHRpZiAoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTIzOlxcdFxcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXFx0XFx0aWYgKGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN1YnJ1bGUsIG1hdGNoX3BhcmFtcywgYWN0aW9ucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgZmxvd19zb3VyY2UsIGJ3Y19xdWV1ZV9pZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVxcdGJ3Y19ydWxlLVxcdTAwM2VydWxlLVxcdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVxcdGlmICh1bmxpa2VseShyZXQpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0Ny1cXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXFx0dTggICAgICAgICBpcHY2XzEyN185NlsweDIwXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oOjU1NjpcXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyBpcHY2X2xheW91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MDcuMzcxMDQwMDI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwMzc5NzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRlc3RpbmcgTUxYNSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlc2UgYGdyZXBgIHJlc3VsdHMsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGxzLCBsaWtlIGBtbHg1ZV9xdWV1ZV9zdG9wYCBhbmQgYG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZWAsIGFyZW4ndCBwYXJ0IG9mIGFueSBzaW11bGF0b3IuIFRoZXkgYXJlIGFsbCBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gZmluZCBhIHdheSB0byB0ZXN0IGBtbHg1YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgYG5ldGRldnNpbWAsIGJ1dCBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCBpdCBkb2Vzbid0IGVtdWxhdGUgdGhlIGBtbHg1YCBoYXJkd2FyZS4gIFdoYXQgYWJvdXQgZGl2aW5nIGludG8gYG1seDVfY29yZWA/IERvZXMgaXQgaGF2ZSBzb21lIGtpbmQgb2YgZHVtbXkgZGV2aWNlIG1vZGUsIHNvbWUgd2F5IHRvIGJlIHRlc3RlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGV0aGVyIGBDT05GSUdfTUxYNV9DT1JFYCBpcyB0ZXN0YWJsZSB3aXRoaW4gU3l6a2FsbGVyLlxuXG5IbW0sIFN5emthbGxlci4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCB3aXRob3V0IHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlLCBTeXprYWxsZXIgY2FuJ3QgZWZmZWN0aXZlbHkgdGVzdCBgbWx4NWAuIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6LWNsdXN0ZXJgLCBidXQgdGhlIGRvY3VtZW50YXRpb24gY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCdzIGRlc2lnbmVkIHRvIGF2b2lkIGNvZGUgcGF0aHMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGUgbm90ZXMgc3BlY2lmaWNhbGx5IG1lbnRpb24gdGhhdCBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaGFyZHdhcmUgbGlrZSBgdXNiIGdhZGdldGAgb3IgYG1hYzgwMjExX2h3c2ltYCwgY2FuJ3QgYmUgdGVzdGVkLlxuXG5TaW5jZSBgbWx4NWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGEgUENJZSBkZXZpY2UsIGFuZCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGBuZXRkZXZzaW1gLCBvciBgdmhjaWAsIEkgY2FuIHNlZSB3aHkgaXQgd291bGRuJ3QgYmUgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQgbWUgZG91YmxlIGNoZWNrIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZywgcGVyaGFwcyBhIHZpcnR1YWwgYG1seDVgIGRyaXZlcj8gIE1heWJlIHNvbWV0aGluZyBpbiB0aGUgYHZkcGFgIG9yIGB2ZmlvYCBhcmVhcz8gTm9wZSwgSSBkb24ndCBzZWUgYW55dGhpbmc7IHRoZSBgZHJpdmVycy92ZHBhL21seDUvYCBhbmQgYGRyaXZlcnMvdmZpby9wY2kvbWx4NS9gIGRpcmVjdG9yaWVzIGFyZSwgdW5zdXJwcmlzaW5nbHksIGZvciBtbHg1IGhhcmR3YXJlLiBUaGV5IHdvdWxkbid0IGhlbHAgbWUgaGVyZS5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBpbmplY3RpbmcgYSBmYWtlIFBDSSBkZXZpY2UgdG8gcmVwcmVzZW50IGBtbHg1YD8gVW5mb3J0dW5hdGVseSwgaXQgc2VlbXMgdGhlIGtlcm5lbCBkb2Vzbid0IG9mZmVyIGEgbWVjaGFuaXNtIGZvciBjcmVhdGluZyBhIGZha2UgbWx4NSBQQ0kgZGV2aWNlLiBTbywgaXQgYXBwZWFycyB0aGF0IHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGggaXMgZGVmaW5pdGVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlcmUncyBubyB3YXkgdG8gbW9jayBvciBvdGhlcndpc2Ugc2ltdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBgbWx4NWAgZGV2aWNlIGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMjksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MTUuMzc0ODQwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY0MjI4OTA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1Liptb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoxOC4xMzkwNzk4MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIyODAxMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgTUxYNSBEcml2ZXIgUXVpcmtzKipcblxuSG1tLCB0aGlua2luZyBhYm91dCB0aGUgTUxYNSBkcml2ZXIuLi4gSSdtIGN1cmlvdXMgYWJvdXQgc29tZXRoaW5nLiBDb3VsZCB0aGVyZSBiZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRob3NlIFwiZHVtbXlcIiBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgYW55dGhpbmcgbmFtZWQgYG1seDUuKmR1bW15YD8gSSd2ZSBzZWVuIHNvbWUgb2RkaXRpZXMgaW4gdGhlIHBhc3Qgd2l0aCBkcml2ZXJzIGFuZCB2aXJ0dWFsIG9yIHNpbXVsYXRlZCBkZXZpY2VzLCBlc3BlY2lhbGx5IGR1cmluZyBjZXJ0YWluIHRlc3Rpbmcgc2NlbmFyaW9zIG9yIGNvcm5lci1jYXNlIGNvbmZpZ3VyYXRpb25zLiBJdOKAmXMgd29ydGggZGlnZ2luZyBkZWVwZXIgaW50byBpZiB3ZSBhcmUgZXhwZXJpZW5jaW5nIGFueSBwcm9ibGVtcyB3aXRoIG91ciBjdXJyZW50IHNldHVwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aG9zZSBkdW1teSBkZXZpY2VzIGFyZSB1c2VkIGludGVybmFsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBNTFg1IGZyYW1ld29yaywgYW5kIGhvdyB0aGVpciBpbnRlcmFjdGlvbnMgbWlnaHQgbWFuaWZlc3QgaW4gcHJhY3RpY2FsIGRlcGxveW1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwMSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MjEuMDYxODg1NzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NzMxNjI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1LipkdW1teVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwMDpzdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDg9aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTQzLVxcdGlmICghY3EtXFx1MDAzZWNvbXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTQ0OlxcdFxcdGNxLVxcdTAwM2Vjb21wID0gbWx4NV9jb3JlX2NxX2R1bW15X2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE0NS1cXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoyMy44MDkyMDc0NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY3NTA0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmV2aXNpdGluZyBgbWx4NS4qc2ltYCoqXG5cbkhtbSwgYG1seDUuKnNpbWAuLi4gdGhhdCdzIGJlZW4gcmF0dGxpbmcgYXJvdW5kIGluIG15IGhlYWQgYWdhaW4uIEkga2VlcCBjaXJjbGluZyBiYWNrIHRvIHRob3NlIHNpbXVsYXRpb24gZW52aXJvbm1lbnRzIGFuZCBob3cgdGhleSdyZSBoYW5kbGluZyB0aGluZ3MuIEFyZSB3ZSBnZXR0aW5nIHRoZSBmaWRlbGl0eSB3ZSBuZWVkPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nIGNydWNpYWw/IElzIGl0IHdvcnRoIGRpdmluZyBiYWNrIGludG8gdGhhdCwgbWF5YmUgcnVubmluZyBzb21lIG1vcmUgdGFyZ2V0ZWQgdGVzdHM/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IGxpbmdlcmluZyB1bmNlcnRhaW50eSB0aGVyZS4gSWYgdGhlcmUncyBhIHBvdGVudGlhbCBibGluZCBzcG90LCBub3cgaXMgdGhlIHRpbWUgdG8gdW5jb3ZlciBpdC4gVWx0aW1hdGVseSwgaXMgdGhpcyBzdGlsbCB0aGUgbW9zdCBlZmZlY3RpdmUgbWVhbnMgdG8gdGhlIGVuZD9cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MjIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMDoyNjoyNy41NzY3MTUxMjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDI4ODA1NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NS4qc2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc2MD1zdGF0aWMgaW50IG1seDVlX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqb2xkcSwgaW50IHF1ZXVlX2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NzYyOlxcdC8qIEluIG1seDUgYSB0eHEgY2Fubm90IGJlIHNpbXBseSBzdG9wcGVkIGluIGlzb2xhdGlvbiwgb25seSByZXN0YXJ0ZWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NzYzLVxcdCAqIG1seDVlX3F1ZXVlX3N0YXJ0IGRvZXMgbm90IGZhaWwsIHdlIHN0b3AgdGhlIG9sZCBxdWV1ZSB0aGVyZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTgwPXN0YXRpYyBpbnQgaHdzX2J3Y19tYXRjaGVyX21vdmUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyMjc6aW50IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0yMjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0zMjE9bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGUoc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0zNTMtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzU0OlxcdFxcdHJldCA9IG1seDVod3NfYndjX21hdGNoZXJfY3JlYXRlX3NpbXBsZShid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM1NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MzcxOmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTM4OD1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNDAwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjQwMTpcXHRcXHRtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19tYXRjaGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjA5PXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9kZWNfd2l0aF9zaHJpbmsoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo2NDI6aW50IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9NjY2PWludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy02NzQtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6Njc1OlxcdFxcdHJldCA9IG1seDVod3NfYndjX3J1bGVfZGVzdHJveV9zaW1wbGUoYndjX3J1bGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz0xMDAxPXN0YXRpYyBpbnQgaHdzX2J3Y19ydWxlX2NudF9pbmNfd2l0aF9yZWhhc2goc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTAzNzppbnQgbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTEwMzgtXFx0XFx0XFx0XFx0ICAgdTMyICptYXRjaF9wYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MTE0MD1tbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTExNzEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MTE3MjpcXHRcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2NyZWF0ZV9zaW1wbGUoYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy0xMTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgcGFyYW1zLVxcdTAwM2VtYXRjaF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oPTcwPWludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6NzE6bWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTcyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVod3NfdGFibGUgKnRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjc4OmludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg9ODI9dm9pZCBtbHg1aHdzX2J3Y19ydWxlX2ZyZWUoc3RydWN0IG1seDVod3NfYndjX3J1bGUgKmJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oLTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmg6ODQ6aW50IG1seDVod3NfYndjX3J1bGVfY3JlYXRlX3NpbXBsZShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04NS1cXHRcXHRcXHRcXHQgICB1MzIgKm1hdGNoX3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5oOjkwOmludCBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19ydWxlICpid2NfcnVsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuaC05MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz0zODg9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0X2ZpcnN0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQxMTpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDEyLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00MjctZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo0Mjg6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTQyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz00MzM9c3RhdGljIGludCBod3Nfc3VibWF0Y2hlcl9pbml0KHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpjbWF0Y2hlciwgaW50IGlkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00ODEtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjQ4MjpcXHRyZXQgPSBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIsIHN1Ym0tXFx1MDAzZXRibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNDgzLVxcdFxcdFxcdFxcdFxcdFxcdHByaW9yaXR5LCBtYXRjaF9jcml0ZXJpYSwgbWFzayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy00OTktZGVzdHJveV9tYXRjaGVyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo1MDA6XFx0bWx4NWh3c19id2NfbWF0Y2hlcl9kZXN0cm95X3NpbXBsZShzdWJtLVxcdTAwM2Vid2NfbWF0Y2hlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUwMS1mcmVlX21hdGNoZXI6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM9NTExPXN0YXRpYyB2b2lkIGh3c19zdWJtYXRjaGVyX2Rlc3Ryb3koc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmNtYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jLTUyMi1cXHRpZiAoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmM6NTIzOlxcdFxcdG1seDVod3NfYndjX21hdGNoZXJfZGVzdHJveV9zaW1wbGUoc3VibS1cXHUwMDNlYndjX21hdGNoZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYy01MjQtXFx0XFx0aWYgKGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYz03NDk9c3RhdGljIGludCBod3NfY29tcGxleF9zdWJydWxlX2NyZWF0ZShzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqY21hdGNoZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjX2NvbXBsZXguYzo3ODM6XFx0cmV0ID0gbWx4NWh3c19id2NfcnVsZV9jcmVhdGVfc2ltcGxlKHN1YnJ1bGUsIG1hdGNoX3BhcmFtcywgYWN0aW9ucyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtNzg0LVxcdFxcdFxcdFxcdFxcdCAgICAgZmxvd19zb3VyY2UsIGJ3Y19xdWV1ZV9pZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jPTc5OT1zdGF0aWMgaW50IGh3c19jb21wbGV4X3N1YnJ1bGVfZGVzdHJveShzdHJ1Y3QgbWx4NWh3c19id2NfcnVsZSAqYndjX3J1bGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE2LVxcdGJ3Y19ydWxlLVxcdTAwM2VydWxlLVxcdTAwM2Vza2lwX2RlbGV0ZSA9ICFpc19sYXN0X3J1bGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2NfY29tcGxleC5jOjgxNzpcXHRyZXQgPSBtbHg1aHdzX2J3Y19ydWxlX2Rlc3Ryb3lfc2ltcGxlKGJ3Y19ydWxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Y19jb21wbGV4LmMtODE4LVxcdGlmICh1bmxpa2VseShyZXQpKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L21seDVfaWZjLmg9NTQ0PXN0cnVjdCBtbHg1X2lmY19pcHY2X2xheW91dF9iaXRzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU0Ny1cXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaDo1NDg6c3RydWN0IG1seDVfaWZjX2lwdjZfc2ltcGxlX2xheW91dF9iaXRzIHtcXG5pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaC01NDktXFx0dTggICAgICAgICBpcHY2XzEyN185NlsweDIwXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oPTU1NT11bmlvbiBtbHg1X2lmY19pcHY2X2xheW91dF9pcHY0X2xheW91dF9hdXRvX2JpdHMge1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oOjU1NjpcXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9zaW1wbGVfbGF5b3V0X2JpdHMgaXB2Nl9zaW1wbGVfbGF5b3V0O1xcbmluY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oLTU1Ny1cXHRzdHJ1Y3QgbWx4NV9pZmNfaXB2Nl9sYXlvdXRfYml0cyBpcHY2X2xheW91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MzAuMTE5NjA2MTQ3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MDI4OTYxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gdGhlIHRhc2sgYXQgaGFuZCBpbnZvbHZlcyBkZXRlcm1pbmluZyBpZiBhIHBhdGNoIGlzIFwiV29ydGhGdXp6aW5nLlwiIFRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGNvZGUgdGhhdCdzICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3ZSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBleGFtcGxlcyBnaXZlbiBzcGVjaWZpY2FsbHkgcG9pbnQgdG8gaGFyZHdhcmUgdGhhdCBoYXMgc29mdHdhcmUgZW11bGF0aW9uIChsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0pLCBidXQgSSdtIGxvb2tpbmcgYXQgYG1seDVgLlxuXG5NeSB1bmRlcnN0YW5kaW5nIG9mIGBtbHg1YCBpcyB0aGF0IGl0J3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSAtIE1lbGxhbm94IGFkYXB0ZXJzLCB0byBiZSBwcmVjaXNlLiBDcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBzb2Z0d2FyZSBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBUaGVyZSdzIG5vIHdheSB0byByZWxpYWJseSB0cmlnZ2VyIHRob3NlIGNvZGUgcGF0aHMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLCBhdCBsZWFzdCBub3Qgd2l0aG91dCBzb21lIHNpZ25pZmljYW50IGV4dGVybmFsIHNldHVwIG91dHNpZGUgdGhlIGtlcm5lbCwgd2hpY2ggaXNuJ3QgdGhlIHNjb3BlIG9mIHRoaXMgY2hlY2suIFRoYXTigJlzIHRoZSBrZXkuIFNpbmNlIGBtbHg1YCdzIGNvZGUgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIHdpdGhpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvLCBpdCdzIGRlZmluaXRpdmVseSB1bnJlYWNoYWJsZS4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgY3JpdGVyaWEgb3V0bGluZWQsIEkgbmVlZCB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5OSwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTA6MjY6MzcuMDIyNTA0NzM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1KS4gVGhpcyBpcyBhIGRyaXZlciBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCBpbiB0aGUga2VybmVsIG9yIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gc3VjaCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUpLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0IGluIHRoZSBrZXJuZWwgb3Igc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiBzdWNoIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcglt8[1] Phase: Running StartedAt: 2026-07-24 10:26:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcglt8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-24 10:26:48 +0000 UTC FinishedAt: 2026-07-24 10:26:55 +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,}