Name: series-workflow8zqkn Phase: Failed StartedAt: 2026-07-26 17:42:13 +0000 UTC FinishedAt: 2026-07-26 18:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8zqkn[0] Phase: Succeeded StartedAt: 2026-07-26 17:42:13 +0000 UTC FinishedAt: 2026-07-26 18:13:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8zqkn[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 17:42:13 +0000 UTC FinishedAt: 2026-07-26 18:13:24 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHB1cmVseSByZWZhY3RvcnMgdGhlIGNvZGUgYnkgcmVuYW1pbmcgYW4gZW51bSAoYXRoMTJrX2Zpcm13YXJlX21vZGUgdG8gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlKSwgbW92aW5nIGl0IHRvIGEgZGlmZmVyZW50IGhlYWRlciBmaWxlLCBhbmQgY29udmVydGluZyBhIG1hY3JvIChBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpIGludG8gYW4gZW51bSB2YWx1ZS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2ExNmMxZjkzMmEwYzI1M2I5M2E2YWI4ZDY4Zjc0ODExMDg3MDhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTg6MTM6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt3b3cuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2RwX2Ntbi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3FtaS5oXCYjMzQ7XG4gXG4gdW5zaWduZWQgaW50IGF0aDEya19kZWJ1Z19tYXNrO1xuIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBhdGgxMmtfZGVidWdfbWFzaywgdWludCwgMDY0NCk7XG5AQCAtNzk0LDcgJiM0Mzs3OTUsNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XG4tXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE07XG4mIzQzO1x0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTTtcbiBcdFx0YXRoMTJrX2luZm8oYWIsIFwmIzM0O0Jvb3RpbmcgaW4gZnRtIG1vZGVcXG5cJiMzNDspO1xuIFx0fVxuIFxuQEAgLTExODgsNyAmIzQzOzExODksNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0XHQgICAgICBlbnVtIGF0aDEya19maXJtd2FyZV9tb2RlIG1vZGUpXG4mIzQzO1x0XHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IDM3YTE5NGUwMDI0OGNjLi5lY2I0NTFkOTNmNDVhNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTE2MCwxNCAmIzQzOzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7XG4gXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxuIH07XG4gXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XG4tXHQvKiB0aGUgZGVmYXVsdCBtb2RlLCBzdGFuZGFyZCA4MDIuMTEgZnVuY3Rpb25hbGl0eSAqL1xuLVx0QVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLFxuLVxuLVx0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbi1cdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcbi19O1xuLVxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XG4gI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYXHQxNlxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cdDNcbkBAIC0xMTQ3LDcgJiM0MzsxMTM5LDcgQEAgc3RydWN0IGF0aDEya19iYXNlIHtcbiBcbiBcdHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnO1xuIFx0c3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbztcbi1cdGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgZndfbW9kZTtcbiYjNDM7XHRlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xuIFx0c3RydWN0IGF0aDEya19mdG1fZXZlbnRfb2JqIGZ0bV9ldmVudF9vYmo7XG4gXHRib29sIGh3X2dyb3VwX3JlZjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggZGI0NTNhMzEwN2U0MjkuLmQ5Y2EzYjY5OGI5ZTMwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTg1OSw3ICYjNDM7ODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2VudW1fcmFkaW9zOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE0pXG4mIzQzO1x0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNKVxuIFx0XHRcdHBkZXYgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1tpXTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuaW5kZXggYWU4YTlhY2VlM2YxMWUuLjlmOTQzZjcwN2EyYmZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuQEAgLTE3LDYgJiM0MzsxNyw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7bWhpLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZWJ1Zy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cW1pLmhcJiMzNDtcbiBcbiAjZGVmaW5lIEFUSDEyS19QQ0lfQkFSX05VTVx0XHQwXG4gI2RlZmluZSBBVEgxMktfUENJX0RNQV9NQVNLXHRcdDM2XG5AQCAtMTU1MSw3ICYjNDM7MTU1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGFiX3BjaS1cdTAwM2VhYiA9IGFiO1xuIFx0YWJfcGNpLVx1MDAzZXBkZXYgPSBwZGV2O1xuIFx0YWItXHUwMDNlaGlmLm9wcyA9IFx1MDAyNmF0aDEya19wY2lfaGlmX29wcztcbi1cdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4mIzQzO1x0YWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWJfcGNpLVx1MDAzZXdpbmRvd19sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuaW5kZXggYmI2MWM3OGU1YzI5ZDcuLjI4MGU1MGExZjMxZDg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuQEAgLTM0MzEsNyAmIzQzOzM0MzEsNyBAQCBpbnQgYXRoMTJrX3FtaV93bGFuZndfYXV4X3VjX2luZm9fc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdFx0ICAgICAgIHUzMiBtb2RlKVxuJiM0MztcdFx0XHRcdCAgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXFfbXNnX3YwMSByZXEgPSB7fTtcbiBcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXNwX21zZ192MDEgcmVzcCA9IHt9O1xuQEAgLTM0NjAsNyAmIzQzOzM0NjAsNyBAQCBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFxuIFx0cmV0ID0gcW1pX3R4bl93YWl0KFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbiYjNDM7XHRcdGlmIChtb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgXHUwMDI2XHUwMDI2IHJldCA9PSAtRU5FVFJFU0VUKSB7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O1dMRlcgc2VydmljZSBpcyBkaXMtY29ubmVjdGVkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuQEAgLTM2MjMsNyAmIzQzOzM2MjMsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFxuIFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1FNSV9GV19SRUFEWV9DT01QTEVURSwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdHJldCA9IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChhYiwgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGKTtcbiYjNDM7XHRyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7cW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG5AQCAtMzYzMSw3ICYjNDM7MzYzMSw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gfVxuIFxuIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0ICAgICAgdTMyIG1vZGUpXG4mIzQzO1x0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuaW5kZXggY2JlNWJlMzAwNTNhMGEuLjZkYTEwZjNjYjU5N2MzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuQEAgLTMyLDcgJiM0MzszMiw2IEBAXG4gI2RlZmluZSBRTUlfV0xGV19GV19SRUFEWV9JTkRfVjAxXHRcdDB4MDAzOFxuIFxuICNkZWZpbmUgUU1JX1dMQU5GV19NQVhfREFUQV9TSVpFX1YwMVx0XHQ2MTQ0XG4tI2RlZmluZSBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZcdFx0NFxuIFxuICNkZWZpbmUgQVRIMTJLX0JPQVJEX0lEX0RFRkFVTFRcdDB4RkZcbiBcbkBAIC02MDIsNiAmIzQzOzYwMSwxNyBAQCBlbnVtIGF0aDEya19xbWlfbWVtX21vZGUge1xuIFx0QVRIMTJLX1FNSV9NRU1PUllfTU9ERV9MT1dfNTEyX00sXG4gfTtcbiBcbiYjNDM7ZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUge1xuJiM0MztcdC8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovXG4mIzQzO1x0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX05PUk1BTCxcbiYjNDM7XG4mIzQzO1x0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbiYjNDM7XHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNLFxuJiM0MztcbiYjNDM7XHQvKiBmaXJtd2FyZSBvZmZsaW5lOyB2YWx1ZXMgMi0zIHJlc2VydmVkIGJ5IGZpcm13YXJlIEFCSSAqL1xuJiM0MztcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0LFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX3FtaV9zZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSwgYm9vbCBibG9jaylcbiB7XG4gXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNnFtaS1cdTAwM2VldmVudF9sb2NrKTtcbkBAIC02MTcsNyAmIzQzOzYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfcW1pX2dldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pKVxuIH1cbiBcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdCAgICAgIHUzMiBtb2RlKTtcbiYjNDM7XHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7XG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4gdm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3YTE2YzFmOTMyYTBjMjUzYjkzYTZhYjhkNjhmNzQ4MTEwODcwOGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxODoxMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMjMsNiAmIzQzOzIzLDcgQEAKICNpbmNsdWRlICYjMzQ7d293LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9jbW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3BlZXIuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtxbWkuaCYjMzQ7CiAKIHVuc2lnbmVkIGludCBhdGgxMmtfZGVidWdfbWFzazsKIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBhdGgxMmtfZGVidWdfbWFzaywgdWludCwgMDY0NCk7CkBAIC03OTQsNyAmIzQzOzc5NSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWludCByZXQ7CiAKIAlpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7Ci0JCWFiLSZndDtmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNOwomIzQzOwkJYWItJmd0O2Z3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNOwogCQlhdGgxMmtfaW5mbyhhYiwgJiMzNDtCb290aW5nIGluIGZ0bSBtb2RlXG4mIzM0Oyk7CiAJfQogCkBAIC0xMTg4LDcgJiM0MzsxMTg5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZykKIH0KIAogc3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydF9maXJtd2FyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLAotCQkJCSAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSkKJiM0MzsJCQkJICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSkKIHsKIAlpbnQgcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCmluZGV4IDM3YTE5NGUwMDI0OGNjLi5lY2I0NTFkOTNmNDVhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKQEAgLTE2MCwxNCAmIzQzOzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7CiAJQVRIMTJLX0hXX0lQUTU0MjRfSFcxMCwKIH07CiAKLWVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgewotCS8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovCi0JQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLAotCi0JLyogZmFjdG9yeSB0ZXN0cyBldGMgKi8KLQlBVEgxMktfRklSTVdBUkVfTU9ERV9GVE0sCi19OwotCiAjZGVmaW5lIEFUSDEyS19JUlFfTlVNX01BWCA1NwogI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYCTE2CiAjZGVmaW5lIEFUSDEyS19NQVhfVENMX1JJTkdfTlVNCTMKQEAgLTExNDcsNyAmIzQzOzExMzksNyBAQCBzdHJ1Y3QgYXRoMTJrX2Jhc2UgewogCiAJc3RydWN0IGF0aDEya19od19ncm91cCAqYWc7CiAJc3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbzsKLQllbnVtIGF0aDEya19maXJtd2FyZV9tb2RlIGZ3X21vZGU7CiYjNDM7CWVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIGZ3X21vZGU7CiAJc3RydWN0IGF0aDEya19mdG1fZXZlbnRfb2JqIGZ0bV9ldmVudF9vYmo7CiAJYm9vbCBod19ncm91cF9yZWY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC04NTksNyAmIzQzOzg1OSw3IEBAIHN0cnVjdCBhdGgxMmsgKmF0aDEya19tYWNfZ2V0X2FyX2J5X3BkZXZfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIHBkZXZfaWQpCiAJCXJldHVybiBOVUxMOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtudW1fcmFkaW9zOyBpJiM0MzsmIzQzOykgewotCQlpZiAoYWItJmd0O2Z3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKQomIzQzOwkJaWYgKGFiLSZndDtmd19tb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0pCiAJCQlwZGV2ID0gJmFtcDthYi0mZ3Q7cGRldnNbaV07CiAJCWVsc2UKIAkJCXBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItJmd0O3BkZXZzX2FjdGl2ZVtpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYwppbmRleCBhZThhOWFjZWUzZjExZS4uOWY5NDNmNzA3YTJiZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYwpAQCAtMTcsNiAmIzQzOzE3LDcgQEAKICNpbmNsdWRlICYjMzQ7bWhpLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Zy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aGFsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cW1pLmgmIzM0OwogCiAjZGVmaW5lIEFUSDEyS19QQ0lfQkFSX05VTQkJMAogI2RlZmluZSBBVEgxMktfUENJX0RNQV9NQVNLCQkzNgpAQCAtMTU1MSw3ICYjNDM7MTU1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlhYl9wY2ktJmd0O2FiID0gYWI7CiAJYWJfcGNpLSZndDtwZGV2ID0gcGRldjsKIAlhYi0mZ3Q7aGlmLm9wcyA9ICZhbXA7YXRoMTJrX3BjaV9oaWZfb3BzOwotCWFiLSZndDtmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMOwomIzQzOwlhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7CiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2FiX3BjaS0mZ3Q7d2luZG93X2xvY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYwppbmRleCBiYjYxYzc4ZTVjMjlkNy4uMjgwZTUwYTFmMzFkODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYwpAQCAtMzQzMSw3ICYjNDM7MzQzMSw3IEBAIGludCBhdGgxMmtfcW1pX3dsYW5md19hdXhfdWNfaW5mb19zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB9CiAKIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkJICAgICAgIHUzMiBtb2RlKQomIzQzOwkJCQkgICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSkKIHsKIAlzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVxX21zZ192MDEgcmVxID0ge307CiAJc3RydWN0IHFtaV93bGFuZndfd2xhbl9tb2RlX3Jlc3BfbXNnX3YwMSByZXNwID0ge307CkBAIC0zNDYwLDcgJiM0MzszNDYwLDcgQEAgc3RhdGljIGludCBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAogCXJldCA9IHFtaV90eG5fd2FpdCgmYW1wO3R4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7CiAJaWYgKHJldCAmbHQ7IDApIHsKLQkJaWYgKG1vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGICZhbXA7JmFtcDsgcmV0ID09IC1FTkVUUkVTRVQpIHsKJiM0MzsJCWlmIChtb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgJmFtcDsmYW1wOyByZXQgPT0gLUVORVRSRVNFVCkgewogCQkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7V0xGVyBzZXJ2aWNlIGlzIGRpcy1jb25uZWN0ZWRcbiYjMzQ7KTsKIAkJCXJldHVybiAwOwogCQl9CkBAIC0zNjIzLDcgJiM0MzszNjIzLDcgQEAgdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYikKIAogCWNsZWFyX2JpdChBVEgxMktfRkxBR19RTUlfRldfUkVBRFlfQ09NUExFVEUsICZhbXA7YWItJmd0O2Rldl9mbGFncyk7CiAKLQlyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRik7CiYjNDM7CXJldCA9IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChhYiwgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7cW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcbiYjMzQ7KTsKIAkJcmV0dXJuOwpAQCAtMzYzMSw3ICYjNDM7MzYzMSw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB9CiAKIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkgICAgICB1MzIgbW9kZSkKJiM0MzsJCQkgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKQogewogCWludCByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oCmluZGV4IGNiZTViZTMwMDUzYTBhLi42ZGExMGYzY2I1OTdjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oCkBAIC0zMiw3ICYjNDM7MzIsNiBAQAogI2RlZmluZSBRTUlfV0xGV19GV19SRUFEWV9JTkRfVjAxCQkweDAwMzgKIAogI2RlZmluZSBRTUlfV0xBTkZXX01BWF9EQVRBX1NJWkVfVjAxCQk2MTQ0Ci0jZGVmaW5lIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRgkJNAogCiAjZGVmaW5lIEFUSDEyS19CT0FSRF9JRF9ERUZBVUxUCTB4RkYKIApAQCAtNjAyLDYgJiM0Mzs2MDEsMTcgQEAgZW51bSBhdGgxMmtfcW1pX21lbV9tb2RlIHsKIAlBVEgxMktfUU1JX01FTU9SWV9NT0RFX0xPV181MTJfTSwKIH07CiAKJiM0MztlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSB7CiYjNDM7CS8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUwsCiYjNDM7CiYjNDM7CS8qIGZhY3RvcnkgdGVzdHMgZXRjICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0sCiYjNDM7CiYjNDM7CS8qIGZpcm13YXJlIG9mZmxpbmU7IHZhbHVlcyAyLTMgcmVzZXJ2ZWQgYnkgZmlybXdhcmUgQUJJICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0LAomIzQzO307CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX3FtaV9zZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSwgYm9vbCBibG9jaykKIHsKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7cW1pLSZndDtldmVudF9sb2NrKTsKQEAgLTYxNyw3ICYjNDM7NjI3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGF0aDEya19xbWlfZ2V0X2V2ZW50X2Jsb2NrKHN0cnVjdCBhdGgxMmtfcW1pICpxbWkpCiB9CiAKIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkgICAgICB1MzIgbW9kZSk7CiYjNDM7CQkJICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7CiB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKIHZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwNgoJCQkJCQkJb3V0cHV0OiAxMTIKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYSBGaXJtd2FyZSBNb2RlIEVudW0qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgcmVmYWN0b3JpbmcgZXhlcmNpc2U7IGEgYml0IG9mIGhvdXNla2VlcGluZyBpZiB5b3Ugd2lsbC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlbmFtaW5nIHRoZSBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZWAgdG8gYGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlYC4gVGhpcyBlbnVtIGlzIGN1cnJlbnRseSBsb2NhdGVkIGluIGBjb3JlLmhgLCBhbmQgdGhlIHBhdGNoIG1vdmVzIGl0IG92ZXIgdG8gYHFtaS5oYC4gVGhleSYjMzk7cmUgYWxzbyBpbnRyb2R1Y2luZyBhIG5ldyB2YWx1ZSwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YCwgd2hpY2ggaXMgcmVwbGFjaW5nIHRoZSBvbGRlciBtYWNybyBgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGYC4KCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGUgY29kZSBJJiMzOTttIGZ1enppbmcgd2lsbCBiZSB1bmNoYW5nZWQuIEZyb20gdGhlIGxvb2sgb2YgdGhlIGRpZmYsIEkgY2FuIHNlZSB0aGV5JiMzOTtyZSBqdXN0IHVwZGF0aW5nIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBvbGQgZW51bSBhbmQgbWFjcm8gd2VyZSB1c2VkIOKAkyBhY3Jvc3MgYGNvcmUuY2AsIGBjb3JlLmhgLCBgbWFjLmNgLCBgcGNpLmNgLCBgcW1pLmNgLCBhbmQgYHFtaS5oYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGRpcmVjdCBzdWJzdGl0dXRpb24sIGNvbmZpcm1pbmcgdGhhdCB0aGUgY2hhbmdlIGlzIHNpbXBseSByZW5hbWluZyBhbmQgcmVsb2NhdGluZy4KCkNoZWNraW5nIHRoZSBkaWZmIGFnYWluLi4uIFllcC4gQSBxdWljayB2aXN1YWwgaW5zcGVjdGlvbiBvZiB0aGUgY29kZSBjb25maXJtcyB0aGUgcmVuYW1lIGFuZCByZXBsYWNlbWVudC4gRm9yIGV4YW1wbGUsIGBhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTTtgIGlzIGJlY29taW5nIGBhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE07YC4gQWxzbyB0aGUgZW51bSBkZWNsYXJhdGlvbiBjaGFuZ2VzIGZyb20gYGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZWAgdG8gYGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGVgLiBBbHNvLCBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZWAgaXMgcmVtb3ZlZCBmcm9tIGBjb3JlLmhgIHdoaWxlIGBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZgIGlzIHJlbW92ZWQgZnJvbSBgcW1pLmhgLiBUaGUgbmV3IGVudW0gaXMgYWRkZWQgaW4gYHFtaS5oYCB3aXRoIGBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfTk9STUFMYCwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE1gLCBhbmQgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YC4KCkFscmlnaHQsIHNpbmNlIHRoaXMgaXMgYSBwdXJlIG5hbWUgY2hhbmdlIGFuZCBlbnVtIHZhbHVlIGFkZGl0aW9uLCBhbmQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb24sIHRoaXMgaXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIE5vIG5ldyBidWdzIHdpbGwgYmUgaW50cm9kdWNlZCBoZXJlLiBJIHdpbGwgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA0LjQzMzg2NDkwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDMzNTI2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHB1cmVseSByZWZhY3RvcnMgdGhlIGNvZGUgYnkgcmVuYW1pbmcgYW4gZW51bSAoYXRoMTJrX2Zpcm13YXJlX21vZGUgdG8gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlKSwgbW92aW5nIGl0IHRvIGEgZGlmZmVyZW50IGhlYWRlciBmaWxlLCBhbmQgY29udmVydGluZyBhIG1hY3JvIChBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpIGludG8gYW4gZW51bSB2YWx1ZS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA0LjQzMzg4MjQzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgzOTU3MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzdhMTZjMWY5MzJhMGMyNTNiOTNhNmFiOGQ2OGY3NDgxMTA4NzA4YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODoxMzowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMjMsNiArMjMsNyBAQFxcbiAjaW5jbHVkZSBcXFwid293LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9jbW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInFtaS5oXFxcIlxcbiBcXG4gdW5zaWduZWQgaW50IGF0aDEya19kZWJ1Z19tYXNrO1xcbiBtb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTJrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xcbkBAIC03OTQsNyArNzk1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XFxuLVxcdFxcdGFiLVxcdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNO1xcbitcXHRcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE07XFxuIFxcdFxcdGF0aDEya19pbmZvKGFiLCBcXFwiQm9vdGluZyBpbiBmdG0gbW9kZVxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuQEAgLTExODgsNyArMTE4OSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tXFx0XFx0XFx0XFx0ICAgICAgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBtb2RlKVxcbitcXHRcXHRcXHRcXHQgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuaW5kZXggMzdhMTk0ZTAwMjQ4Y2MuLmVjYjQ1MWQ5M2Y0NWE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5AQCAtMTYwLDE0ICsxNjAsNiBAQCBlbnVtIGF0aDEya19od19yZXYge1xcbiBcXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxcbiB9O1xcbiBcXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XFxuLVxcdC8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovXFxuLVxcdEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTCxcXG4tXFxuLVxcdC8qIGZhY3RvcnkgdGVzdHMgZXRjICovXFxuLVxcdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcXG4tfTtcXG4tXFxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XFxuICNkZWZpbmUgQVRIMTJLX0VYVF9JUlFfTlVNX01BWFxcdDE2XFxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cXHQzXFxuQEAgLTExNDcsNyArMTEzOSw3IEBAIHN0cnVjdCBhdGgxMmtfYmFzZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZztcXG4gXFx0c3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbztcXG4tXFx0ZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xcbitcXHRlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2Z0bV9ldmVudF9vYmogZnRtX2V2ZW50X29iajtcXG4gXFx0Ym9vbCBod19ncm91cF9yZWY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC04NTksNyArODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZW51bV9yYWRpb3M7IGkrKykge1xcbi1cXHRcXHRpZiAoYWItXFx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKVxcbitcXHRcXHRpZiAoYWItXFx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTSlcXG4gXFx0XFx0XFx0cGRldiA9IFxcdTAwMjZhYi1cXHUwMDNlcGRldnNbaV07XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0cGRldiA9IHJjdV9kZXJlZmVyZW5jZShhYi1cXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNcXG5pbmRleCBhZThhOWFjZWUzZjExZS4uOWY5NDNmNzA3YTJiZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNcXG5AQCAtMTcsNiArMTcsNyBAQFxcbiAjaW5jbHVkZSBcXFwibWhpLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaGFsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJxbWkuaFxcXCJcXG4gXFxuICNkZWZpbmUgQVRIMTJLX1BDSV9CQVJfTlVNXFx0XFx0MFxcbiAjZGVmaW5lIEFUSDEyS19QQ0lfRE1BX01BU0tcXHRcXHQzNlxcbkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuIFxcdGFiX3BjaS1cXHUwMDNlYWIgPSBhYjtcXG4gXFx0YWJfcGNpLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gXFx0YWItXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2YXRoMTJrX3BjaV9oaWZfb3BzO1xcbi1cXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG4rXFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfTk9STUFMO1xcbiBcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWJfcGNpLVxcdTAwM2V3aW5kb3dfbG9jayk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbmluZGV4IGJiNjFjNzhlNWMyOWQ3Li4yODBlNTBhMWYzMWQ4OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbkBAIC0zNDMxLDcgKzM0MzEsNyBAQCBpbnQgYXRoMTJrX3FtaV93bGFuZndfYXV4X3VjX2luZm9fc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTMyIG1vZGUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxcbiB7XFxuIFxcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXFfbXNnX3YwMSByZXEgPSB7fTtcXG4gXFx0c3RydWN0IHFtaV93bGFuZndfd2xhbl9tb2RlX3Jlc3BfbXNnX3YwMSByZXNwID0ge307XFxuQEAgLTM0NjAsNyArMzQ2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuIFxcbiBcXHRyZXQgPSBxbWlfdHhuX3dhaXQoXFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcXHUwMDI2XFx1MDAyNiByZXQgPT0gLUVORVRSRVNFVCkge1xcbitcXHRcXHRpZiAobW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGIFxcdTAwMjZcXHUwMDI2IHJldCA9PSAtRU5FVFJFU0VUKSB7XFxuIFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiV0xGVyBzZXJ2aWNlIGlzIGRpcy1jb25uZWN0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fVxcbkBAIC0zNjIzLDcgKzM2MjMsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXG4gXFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1FNSV9GV19SRUFEWV9DT01QTEVURSwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpO1xcbiBcXG4tXFx0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpO1xcbitcXHRyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInFtaSBmYWlsZWQgdG8gc2VuZCB3bGFuIG1vZGUgb2ZmXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0zNjMxLDcgKzM2MzEsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB9XFxuIFxcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi1cXHRcXHRcXHQgICAgICB1MzIgbW9kZSlcXG4rXFx0XFx0XFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmhcXG5pbmRleCBjYmU1YmUzMDA1M2EwYS4uNmRhMTBmM2NiNTk3YzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmhcXG5AQCAtMzIsNyArMzIsNiBAQFxcbiAjZGVmaW5lIFFNSV9XTEZXX0ZXX1JFQURZX0lORF9WMDFcXHRcXHQweDAwMzhcXG4gXFxuICNkZWZpbmUgUU1JX1dMQU5GV19NQVhfREFUQV9TSVpFX1YwMVxcdFxcdDYxNDRcXG4tI2RlZmluZSBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZcXHRcXHQ0XFxuIFxcbiAjZGVmaW5lIEFUSDEyS19CT0FSRF9JRF9ERUZBVUxUXFx0MHhGRlxcbiBcXG5AQCAtNjAyLDYgKzYwMSwxNyBAQCBlbnVtIGF0aDEya19xbWlfbWVtX21vZGUge1xcbiBcXHRBVEgxMktfUU1JX01FTU9SWV9NT0RFX0xPV181MTJfTSxcXG4gfTtcXG4gXFxuK2VudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIHtcXG4rXFx0LyogdGhlIGRlZmF1bHQgbW9kZSwgc3RhbmRhcmQgODAyLjExIGZ1bmN0aW9uYWxpdHkgKi9cXG4rXFx0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX05PUk1BTCxcXG4rXFxuK1xcdC8qIGZhY3RvcnkgdGVzdHMgZXRjICovXFxuK1xcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0sXFxuK1xcbitcXHQvKiBmaXJtd2FyZSBvZmZsaW5lOyB2YWx1ZXMgMi0zIHJlc2VydmVkIGJ5IGZpcm13YXJlIEFCSSAqL1xcbitcXHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGID0gNCxcXG4rfTtcXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfcW1pX3NldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pLCBib29sIGJsb2NrKVxcbiB7XFxuIFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNnFtaS1cXHUwMDNlZXZlbnRfbG9jayk7XFxuQEAgLTYxNyw3ICs2MjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX3FtaV9nZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSlcXG4gfVxcbiBcXG4gaW50IGF0aDEya19xbWlfZmlybXdhcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tXFx0XFx0XFx0ICAgICAgdTMyIG1vZGUpO1xcbitcXHRcXHRcXHQgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKTtcXG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuIHZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4gaW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODoxMzowNS4zMTkxMTczMjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MzE4MDkxMzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwdXJlbHkgcmVmYWN0b3JzIHRoZSBjb2RlIGJ5IHJlbmFtaW5nIGFuIGVudW0gKGF0aDEya19maXJtd2FyZV9tb2RlIHRvIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSksIG1vdmluZyBpdCB0byBhIGRpZmZlcmVudCBoZWFkZXIgZmlsZSwgYW5kIGNvbnZlcnRpbmcgYSBtYWNybyAoQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGKSBpbnRvIGFuIGVudW0gdmFsdWUuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3N2ExNmMxZjkzMmEwYzI1M2I5M2E2YWI4ZDY4Zjc0ODExMDg3MDhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTg6MTM6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCBhOTExMjc2MDE4NWYzNy4uZDAyM2M2NDY0NzhmZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0yMyw2ICsyMyw3IEBAXG4gI2luY2x1ZGUgXCJ3b3cuaFwiXG4gI2luY2x1ZGUgXCJkcF9jbW4uaFwiXG4gI2luY2x1ZGUgXCJwZWVyLmhcIlxuKyNpbmNsdWRlIFwicW1pLmhcIlxuIFxuIHVuc2lnbmVkIGludCBhdGgxMmtfZGVidWdfbWFzaztcbiBtb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTJrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xuQEAgLTc5NCw3ICs3OTUsNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XG4tXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE07XG4rXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNO1xuIFx0XHRhdGgxMmtfaW5mbyhhYiwgXCJCb290aW5nIGluIGZ0bSBtb2RlXFxuXCIpO1xuIFx0fVxuIFxuQEAgLTExODgsNyArMTE4OSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcbi1cdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcbitcdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCAzN2ExOTRlMDAyNDhjYy4uZWNiNDUxZDkzZjQ1YTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC0xNjAsMTQgKzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7XG4gXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxuIH07XG4gXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XG4tXHQvKiB0aGUgZGVmYXVsdCBtb2RlLCBzdGFuZGFyZCA4MDIuMTEgZnVuY3Rpb25hbGl0eSAqL1xuLVx0QVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLFxuLVxuLVx0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbi1cdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcbi19O1xuLVxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XG4gI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYXHQxNlxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cdDNcbkBAIC0xMTQ3LDcgKzExMzksNyBAQCBzdHJ1Y3QgYXRoMTJrX2Jhc2Uge1xuIFxuIFx0c3RydWN0IGF0aDEya19od19ncm91cCAqYWc7XG4gXHRzdHJ1Y3QgYXRoMTJrX3dzaV9pbmZvIHdzaV9pbmZvO1xuLVx0ZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xuK1x0ZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgZndfbW9kZTtcbiBcdHN0cnVjdCBhdGgxMmtfZnRtX2V2ZW50X29iaiBmdG1fZXZlbnRfb2JqO1xuIFx0Ym9vbCBod19ncm91cF9yZWY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC04NTksNyArODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2VudW1fcmFkaW9zOyBpKyspIHtcbi1cdFx0aWYgKGFiLVx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKVxuK1x0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNKVxuIFx0XHRcdHBkZXYgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1tpXTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuaW5kZXggYWU4YTlhY2VlM2YxMWUuLjlmOTQzZjcwN2EyYmZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuQEAgLTE3LDYgKzE3LDcgQEBcbiAjaW5jbHVkZSBcIm1oaS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnLmhcIlxuICNpbmNsdWRlIFwiaGFsLmhcIlxuKyNpbmNsdWRlIFwicW1pLmhcIlxuIFxuICNkZWZpbmUgQVRIMTJLX1BDSV9CQVJfTlVNXHRcdDBcbiAjZGVmaW5lIEFUSDEyS19QQ0lfRE1BX01BU0tcdFx0MzZcbkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbiBcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbiBcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XG4tXHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuK1x0YWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWJfcGNpLVx1MDAzZXdpbmRvd19sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuaW5kZXggYmI2MWM3OGU1YzI5ZDcuLjI4MGU1MGExZjMxZDg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuQEAgLTM0MzEsNyArMzQzMSw3IEBAIGludCBhdGgxMmtfcW1pX3dsYW5md19hdXhfdWNfaW5mb19zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0XHQgICAgICAgdTMyIG1vZGUpXG4rXHRcdFx0XHQgICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVxX21zZ192MDEgcmVxID0ge307XG4gXHRzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVzcF9tc2dfdjAxIHJlc3AgPSB7fTtcbkBAIC0zNDYwLDcgKzM0NjAsNyBAQCBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFxuIFx0cmV0ID0gcW1pX3R4bl93YWl0KFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbitcdFx0aWYgKG1vZGUgPT0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCJXTEZXIHNlcnZpY2UgaXMgZGlzLWNvbm5lY3RlZFxcblwiKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuQEAgLTM2MjMsNyArMzYyMyw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXG4gXHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUU1JX0ZXX1JFQURZX0NPTVBMRVRFLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuIFxuLVx0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpO1xuK1x0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0YXRoMTJrX3dhcm4oYWIsIFwicW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcXG5cIik7XG4gXHRcdHJldHVybjtcbkBAIC0zNjMxLDcgKzM2MzEsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIH1cbiBcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdCAgICAgIHUzMiBtb2RlKVxuK1x0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuaW5kZXggY2JlNWJlMzAwNTNhMGEuLjZkYTEwZjNjYjU5N2MzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuQEAgLTMyLDcgKzMyLDYgQEBcbiAjZGVmaW5lIFFNSV9XTEZXX0ZXX1JFQURZX0lORF9WMDFcdFx0MHgwMDM4XG4gXG4gI2RlZmluZSBRTUlfV0xBTkZXX01BWF9EQVRBX1NJWkVfVjAxXHRcdDYxNDRcbi0jZGVmaW5lIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRlx0XHQ0XG4gXG4gI2RlZmluZSBBVEgxMktfQk9BUkRfSURfREVGQVVMVFx0MHhGRlxuIFxuQEAgLTYwMiw2ICs2MDEsMTcgQEAgZW51bSBhdGgxMmtfcW1pX21lbV9tb2RlIHtcbiBcdEFUSDEyS19RTUlfTUVNT1JZX01PREVfTE9XXzUxMl9NLFxuIH07XG4gXG4rZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUge1xuK1x0LyogdGhlIGRlZmF1bHQgbW9kZSwgc3RhbmRhcmQgODAyLjExIGZ1bmN0aW9uYWxpdHkgKi9cbitcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUwsXG4rXG4rXHQvKiBmYWN0b3J5IHRlc3RzIGV0YyAqL1xuK1x0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTSxcbitcbitcdC8qIGZpcm13YXJlIG9mZmxpbmU7IHZhbHVlcyAyLTMgcmVzZXJ2ZWQgYnkgZmlybXdhcmUgQUJJICovXG4rXHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGID0gNCxcbit9O1xuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfcW1pX3NldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pLCBib29sIGJsb2NrKVxuIHtcbiBcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2cW1pLVx1MDAzZWV2ZW50X2xvY2spO1xuQEAgLTYxNyw3ICs2MjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX3FtaV9nZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSlcbiB9XG4gXG4gaW50IGF0aDEya19xbWlfZmlybXdhcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYixcbi1cdFx0XHQgICAgICB1MzIgbW9kZSk7XG4rXHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7XG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4gdm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA1LjMxOTExOTkyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMTgwNDI1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgYSBGaXJtd2FyZSBNb2RlIEVudW0qKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSByZWZhY3RvcmluZyBleGVyY2lzZTsgYSBiaXQgb2YgaG91c2VrZWVwaW5nIGlmIHlvdSB3aWxsLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSdyZSByZW5hbWluZyB0aGUgYGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGVgIHRvIGBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZWAuIFRoaXMgZW51bSBpcyBjdXJyZW50bHkgbG9jYXRlZCBpbiBgY29yZS5oYCwgYW5kIHRoZSBwYXRjaCBtb3ZlcyBpdCBvdmVyIHRvIGBxbWkuaGAuIFRoZXkncmUgYWxzbyBpbnRyb2R1Y2luZyBhIG5ldyB2YWx1ZSwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YCwgd2hpY2ggaXMgcmVwbGFjaW5nIHRoZSBvbGRlciBtYWNybyBgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZSBjb2RlIEknbSBmdXp6aW5nIHdpbGwgYmUgdW5jaGFuZ2VkLiBGcm9tIHRoZSBsb29rIG9mIHRoZSBkaWZmLCBJIGNhbiBzZWUgdGhleSdyZSBqdXN0IHVwZGF0aW5nIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBvbGQgZW51bSBhbmQgbWFjcm8gd2VyZSB1c2VkIOKAkyBhY3Jvc3MgYGNvcmUuY2AsIGBjb3JlLmhgLCBgbWFjLmNgLCBgcGNpLmNgLCBgcW1pLmNgLCBhbmQgYHFtaS5oYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgZGlyZWN0IHN1YnN0aXR1dGlvbiwgY29uZmlybWluZyB0aGF0IHRoZSBjaGFuZ2UgaXMgc2ltcGx5IHJlbmFtaW5nIGFuZCByZWxvY2F0aW5nLlxuXG5DaGVja2luZyB0aGUgZGlmZiBhZ2Fpbi4uLiBZZXAuIEEgcXVpY2sgdmlzdWFsIGluc3BlY3Rpb24gb2YgdGhlIGNvZGUgY29uZmlybXMgdGhlIHJlbmFtZSBhbmQgcmVwbGFjZW1lbnQuIEZvciBleGFtcGxlLCBgYWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTTtgIGlzIGJlY29taW5nIGBhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTTtgLiBBbHNvIHRoZSBlbnVtIGRlY2xhcmF0aW9uIGNoYW5nZXMgZnJvbSBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBtb2RlYCB0byBgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZWAuIEFsc28sIGBlbnVtIGF0aDEya19maXJtd2FyZV9tb2RlYCBpcyByZW1vdmVkIGZyb20gYGNvcmUuaGAgd2hpbGUgYEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRmAgaXMgcmVtb3ZlZCBmcm9tIGBxbWkuaGAuIFRoZSBuZXcgZW51bSBpcyBhZGRlZCBpbiBgcW1pLmhgIHdpdGggYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUxgLCBgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTWAsIGFuZCBgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRiA9IDRgLlxuXG5BbHJpZ2h0LCBzaW5jZSB0aGlzIGlzIGEgcHVyZSBuYW1lIGNoYW5nZSBhbmQgZW51bSB2YWx1ZSBhZGRpdGlvbiwgYW5kIHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb24sIHRoaXMgaXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIE5vIG5ldyBidWdzIHdpbGwgYmUgaW50cm9kdWNlZCBoZXJlLiBJIHdpbGwgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjEyLjYzNzE2ODAwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8zqkn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 17:42:13 +0000 UTC FinishedAt: 2026-07-26 18:13:13 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHB1cmVseSByZWZhY3RvcnMgdGhlIGNvZGUgYnkgcmVuYW1pbmcgYW4gZW51bSAoYXRoMTJrX2Zpcm13YXJlX21vZGUgdG8gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlKSwgbW92aW5nIGl0IHRvIGEgZGlmZmVyZW50IGhlYWRlciBmaWxlLCBhbmQgY29udmVydGluZyBhIG1hY3JvIChBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpIGludG8gYW4gZW51bSB2YWx1ZS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2ExNmMxZjkzMmEwYzI1M2I5M2E2YWI4ZDY4Zjc0ODExMDg3MDhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTg6MTM6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt3b3cuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2RwX2Ntbi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3FtaS5oXCYjMzQ7XG4gXG4gdW5zaWduZWQgaW50IGF0aDEya19kZWJ1Z19tYXNrO1xuIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBhdGgxMmtfZGVidWdfbWFzaywgdWludCwgMDY0NCk7XG5AQCAtNzk0LDcgJiM0Mzs3OTUsNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XG4tXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE07XG4mIzQzO1x0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTTtcbiBcdFx0YXRoMTJrX2luZm8oYWIsIFwmIzM0O0Jvb3RpbmcgaW4gZnRtIG1vZGVcXG5cJiMzNDspO1xuIFx0fVxuIFxuQEAgLTExODgsNyAmIzQzOzExODksNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0XHQgICAgICBlbnVtIGF0aDEya19maXJtd2FyZV9tb2RlIG1vZGUpXG4mIzQzO1x0XHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbmluZGV4IDM3YTE5NGUwMDI0OGNjLi5lY2I0NTFkOTNmNDVhNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuQEAgLTE2MCwxNCAmIzQzOzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7XG4gXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxuIH07XG4gXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XG4tXHQvKiB0aGUgZGVmYXVsdCBtb2RlLCBzdGFuZGFyZCA4MDIuMTEgZnVuY3Rpb25hbGl0eSAqL1xuLVx0QVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLFxuLVxuLVx0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbi1cdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcbi19O1xuLVxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XG4gI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYXHQxNlxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cdDNcbkBAIC0xMTQ3LDcgJiM0MzsxMTM5LDcgQEAgc3RydWN0IGF0aDEya19iYXNlIHtcbiBcbiBcdHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnO1xuIFx0c3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbztcbi1cdGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgZndfbW9kZTtcbiYjNDM7XHRlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xuIFx0c3RydWN0IGF0aDEya19mdG1fZXZlbnRfb2JqIGZ0bV9ldmVudF9vYmo7XG4gXHRib29sIGh3X2dyb3VwX3JlZjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggZGI0NTNhMzEwN2U0MjkuLmQ5Y2EzYjY5OGI5ZTMwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTg1OSw3ICYjNDM7ODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2VudW1fcmFkaW9zOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE0pXG4mIzQzO1x0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNKVxuIFx0XHRcdHBkZXYgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1tpXTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuaW5kZXggYWU4YTlhY2VlM2YxMWUuLjlmOTQzZjcwN2EyYmZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuQEAgLTE3LDYgJiM0MzsxNyw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7bWhpLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZWJ1Zy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cW1pLmhcJiMzNDtcbiBcbiAjZGVmaW5lIEFUSDEyS19QQ0lfQkFSX05VTVx0XHQwXG4gI2RlZmluZSBBVEgxMktfUENJX0RNQV9NQVNLXHRcdDM2XG5AQCAtMTU1MSw3ICYjNDM7MTU1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGFiX3BjaS1cdTAwM2VhYiA9IGFiO1xuIFx0YWJfcGNpLVx1MDAzZXBkZXYgPSBwZGV2O1xuIFx0YWItXHUwMDNlaGlmLm9wcyA9IFx1MDAyNmF0aDEya19wY2lfaGlmX29wcztcbi1cdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4mIzQzO1x0YWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWJfcGNpLVx1MDAzZXdpbmRvd19sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuaW5kZXggYmI2MWM3OGU1YzI5ZDcuLjI4MGU1MGExZjMxZDg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuQEAgLTM0MzEsNyAmIzQzOzM0MzEsNyBAQCBpbnQgYXRoMTJrX3FtaV93bGFuZndfYXV4X3VjX2luZm9fc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdFx0ICAgICAgIHUzMiBtb2RlKVxuJiM0MztcdFx0XHRcdCAgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXFfbXNnX3YwMSByZXEgPSB7fTtcbiBcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXNwX21zZ192MDEgcmVzcCA9IHt9O1xuQEAgLTM0NjAsNyAmIzQzOzM0NjAsNyBAQCBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFxuIFx0cmV0ID0gcW1pX3R4bl93YWl0KFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbiYjNDM7XHRcdGlmIChtb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgXHUwMDI2XHUwMDI2IHJldCA9PSAtRU5FVFJFU0VUKSB7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O1dMRlcgc2VydmljZSBpcyBkaXMtY29ubmVjdGVkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuQEAgLTM2MjMsNyAmIzQzOzM2MjMsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFxuIFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1FNSV9GV19SRUFEWV9DT01QTEVURSwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdHJldCA9IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChhYiwgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGKTtcbiYjNDM7XHRyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7cW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG5AQCAtMzYzMSw3ICYjNDM7MzYzMSw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gfVxuIFxuIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0ICAgICAgdTMyIG1vZGUpXG4mIzQzO1x0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuaW5kZXggY2JlNWJlMzAwNTNhMGEuLjZkYTEwZjNjYjU5N2MzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuQEAgLTMyLDcgJiM0MzszMiw2IEBAXG4gI2RlZmluZSBRTUlfV0xGV19GV19SRUFEWV9JTkRfVjAxXHRcdDB4MDAzOFxuIFxuICNkZWZpbmUgUU1JX1dMQU5GV19NQVhfREFUQV9TSVpFX1YwMVx0XHQ2MTQ0XG4tI2RlZmluZSBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZcdFx0NFxuIFxuICNkZWZpbmUgQVRIMTJLX0JPQVJEX0lEX0RFRkFVTFRcdDB4RkZcbiBcbkBAIC02MDIsNiAmIzQzOzYwMSwxNyBAQCBlbnVtIGF0aDEya19xbWlfbWVtX21vZGUge1xuIFx0QVRIMTJLX1FNSV9NRU1PUllfTU9ERV9MT1dfNTEyX00sXG4gfTtcbiBcbiYjNDM7ZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUge1xuJiM0MztcdC8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovXG4mIzQzO1x0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX05PUk1BTCxcbiYjNDM7XG4mIzQzO1x0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbiYjNDM7XHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNLFxuJiM0MztcbiYjNDM7XHQvKiBmaXJtd2FyZSBvZmZsaW5lOyB2YWx1ZXMgMi0zIHJlc2VydmVkIGJ5IGZpcm13YXJlIEFCSSAqL1xuJiM0MztcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0LFxuJiM0Mzt9O1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX3FtaV9zZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSwgYm9vbCBibG9jaylcbiB7XG4gXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNnFtaS1cdTAwM2VldmVudF9sb2NrKTtcbkBAIC02MTcsNyAmIzQzOzYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfcW1pX2dldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pKVxuIH1cbiBcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdCAgICAgIHUzMiBtb2RlKTtcbiYjNDM7XHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7XG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4gdm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxODoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3YTE2YzFmOTMyYTBjMjUzYjkzYTZhYjhkNjhmNzQ4MTEwODcwOGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxODoxMzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMjMsNiAmIzQzOzIzLDcgQEAKICNpbmNsdWRlICYjMzQ7d293LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9jbW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3BlZXIuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtxbWkuaCYjMzQ7CiAKIHVuc2lnbmVkIGludCBhdGgxMmtfZGVidWdfbWFzazsKIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBhdGgxMmtfZGVidWdfbWFzaywgdWludCwgMDY0NCk7CkBAIC03OTQsNyAmIzQzOzc5NSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWludCByZXQ7CiAKIAlpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7Ci0JCWFiLSZndDtmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNOwomIzQzOwkJYWItJmd0O2Z3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNOwogCQlhdGgxMmtfaW5mbyhhYiwgJiMzNDtCb290aW5nIGluIGZ0bSBtb2RlXG4mIzM0Oyk7CiAJfQogCkBAIC0xMTg4LDcgJiM0MzsxMTg5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9zdGFydChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZykKIH0KIAogc3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydF9maXJtd2FyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLAotCQkJCSAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSkKJiM0MzsJCQkJICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSkKIHsKIAlpbnQgcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCmluZGV4IDM3YTE5NGUwMDI0OGNjLi5lY2I0NTFkOTNmNDVhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKQEAgLTE2MCwxNCAmIzQzOzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7CiAJQVRIMTJLX0hXX0lQUTU0MjRfSFcxMCwKIH07CiAKLWVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgewotCS8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovCi0JQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLAotCi0JLyogZmFjdG9yeSB0ZXN0cyBldGMgKi8KLQlBVEgxMktfRklSTVdBUkVfTU9ERV9GVE0sCi19OwotCiAjZGVmaW5lIEFUSDEyS19JUlFfTlVNX01BWCA1NwogI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYCTE2CiAjZGVmaW5lIEFUSDEyS19NQVhfVENMX1JJTkdfTlVNCTMKQEAgLTExNDcsNyAmIzQzOzExMzksNyBAQCBzdHJ1Y3QgYXRoMTJrX2Jhc2UgewogCiAJc3RydWN0IGF0aDEya19od19ncm91cCAqYWc7CiAJc3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbzsKLQllbnVtIGF0aDEya19maXJtd2FyZV9tb2RlIGZ3X21vZGU7CiYjNDM7CWVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIGZ3X21vZGU7CiAJc3RydWN0IGF0aDEya19mdG1fZXZlbnRfb2JqIGZ0bV9ldmVudF9vYmo7CiAJYm9vbCBod19ncm91cF9yZWY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC04NTksNyAmIzQzOzg1OSw3IEBAIHN0cnVjdCBhdGgxMmsgKmF0aDEya19tYWNfZ2V0X2FyX2J5X3BkZXZfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIHBkZXZfaWQpCiAJCXJldHVybiBOVUxMOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtudW1fcmFkaW9zOyBpJiM0MzsmIzQzOykgewotCQlpZiAoYWItJmd0O2Z3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKQomIzQzOwkJaWYgKGFiLSZndDtmd19tb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0pCiAJCQlwZGV2ID0gJmFtcDthYi0mZ3Q7cGRldnNbaV07CiAJCWVsc2UKIAkJCXBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItJmd0O3BkZXZzX2FjdGl2ZVtpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYwppbmRleCBhZThhOWFjZWUzZjExZS4uOWY5NDNmNzA3YTJiZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYwpAQCAtMTcsNiAmIzQzOzE3LDcgQEAKICNpbmNsdWRlICYjMzQ7bWhpLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Zy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aGFsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cW1pLmgmIzM0OwogCiAjZGVmaW5lIEFUSDEyS19QQ0lfQkFSX05VTQkJMAogI2RlZmluZSBBVEgxMktfUENJX0RNQV9NQVNLCQkzNgpAQCAtMTU1MSw3ICYjNDM7MTU1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlhYl9wY2ktJmd0O2FiID0gYWI7CiAJYWJfcGNpLSZndDtwZGV2ID0gcGRldjsKIAlhYi0mZ3Q7aGlmLm9wcyA9ICZhbXA7YXRoMTJrX3BjaV9oaWZfb3BzOwotCWFiLSZndDtmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMOwomIzQzOwlhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7CiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2FiX3BjaS0mZ3Q7d2luZG93X2xvY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYwppbmRleCBiYjYxYzc4ZTVjMjlkNy4uMjgwZTUwYTFmMzFkODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYwpAQCAtMzQzMSw3ICYjNDM7MzQzMSw3IEBAIGludCBhdGgxMmtfcW1pX3dsYW5md19hdXhfdWNfaW5mb19zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB9CiAKIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkJICAgICAgIHUzMiBtb2RlKQomIzQzOwkJCQkgICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSkKIHsKIAlzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVxX21zZ192MDEgcmVxID0ge307CiAJc3RydWN0IHFtaV93bGFuZndfd2xhbl9tb2RlX3Jlc3BfbXNnX3YwMSByZXNwID0ge307CkBAIC0zNDYwLDcgJiM0MzszNDYwLDcgQEAgc3RhdGljIGludCBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAogCXJldCA9IHFtaV90eG5fd2FpdCgmYW1wO3R4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7CiAJaWYgKHJldCAmbHQ7IDApIHsKLQkJaWYgKG1vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGICZhbXA7JmFtcDsgcmV0ID09IC1FTkVUUkVTRVQpIHsKJiM0MzsJCWlmIChtb2RlID09IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgJmFtcDsmYW1wOyByZXQgPT0gLUVORVRSRVNFVCkgewogCQkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7V0xGVyBzZXJ2aWNlIGlzIGRpcy1jb25uZWN0ZWRcbiYjMzQ7KTsKIAkJCXJldHVybiAwOwogCQl9CkBAIC0zNjIzLDcgJiM0MzszNjIzLDcgQEAgdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYikKIAogCWNsZWFyX2JpdChBVEgxMktfRkxBR19RTUlfRldfUkVBRFlfQ09NUExFVEUsICZhbXA7YWItJmd0O2Rldl9mbGFncyk7CiAKLQlyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRik7CiYjNDM7CXJldCA9IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChhYiwgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRik7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7cW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcbiYjMzQ7KTsKIAkJcmV0dXJuOwpAQCAtMzYzMSw3ICYjNDM7MzYzMSw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB9CiAKIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkgICAgICB1MzIgbW9kZSkKJiM0MzsJCQkgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKQogewogCWludCByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oCmluZGV4IGNiZTViZTMwMDUzYTBhLi42ZGExMGYzY2I1OTdjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oCkBAIC0zMiw3ICYjNDM7MzIsNiBAQAogI2RlZmluZSBRTUlfV0xGV19GV19SRUFEWV9JTkRfVjAxCQkweDAwMzgKIAogI2RlZmluZSBRTUlfV0xBTkZXX01BWF9EQVRBX1NJWkVfVjAxCQk2MTQ0Ci0jZGVmaW5lIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRgkJNAogCiAjZGVmaW5lIEFUSDEyS19CT0FSRF9JRF9ERUZBVUxUCTB4RkYKIApAQCAtNjAyLDYgJiM0Mzs2MDEsMTcgQEAgZW51bSBhdGgxMmtfcW1pX21lbV9tb2RlIHsKIAlBVEgxMktfUU1JX01FTU9SWV9NT0RFX0xPV181MTJfTSwKIH07CiAKJiM0MztlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSB7CiYjNDM7CS8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUwsCiYjNDM7CiYjNDM7CS8qIGZhY3RvcnkgdGVzdHMgZXRjICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0sCiYjNDM7CiYjNDM7CS8qIGZpcm13YXJlIG9mZmxpbmU7IHZhbHVlcyAyLTMgcmVzZXJ2ZWQgYnkgZmlybXdhcmUgQUJJICovCiYjNDM7CUFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0LAomIzQzO307CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX3FtaV9zZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSwgYm9vbCBibG9jaykKIHsKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7cW1pLSZndDtldmVudF9sb2NrKTsKQEAgLTYxNyw3ICYjNDM7NjI3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGF0aDEya19xbWlfZ2V0X2V2ZW50X2Jsb2NrKHN0cnVjdCBhdGgxMmtfcW1pICpxbWkpCiB9CiAKIGludCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCi0JCQkgICAgICB1MzIgbW9kZSk7CiYjNDM7CQkJICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7CiB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKIHZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwNgoJCQkJCQkJb3V0cHV0OiAxMTIKCQkJCQkJCXRob3VnaHRzOiA0MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYSBGaXJtd2FyZSBNb2RlIEVudW0qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgcmVmYWN0b3JpbmcgZXhlcmNpc2U7IGEgYml0IG9mIGhvdXNla2VlcGluZyBpZiB5b3Ugd2lsbC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlbmFtaW5nIHRoZSBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZWAgdG8gYGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlYC4gVGhpcyBlbnVtIGlzIGN1cnJlbnRseSBsb2NhdGVkIGluIGBjb3JlLmhgLCBhbmQgdGhlIHBhdGNoIG1vdmVzIGl0IG92ZXIgdG8gYHFtaS5oYC4gVGhleSYjMzk7cmUgYWxzbyBpbnRyb2R1Y2luZyBhIG5ldyB2YWx1ZSwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YCwgd2hpY2ggaXMgcmVwbGFjaW5nIHRoZSBvbGRlciBtYWNybyBgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGYC4KCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGUgY29kZSBJJiMzOTttIGZ1enppbmcgd2lsbCBiZSB1bmNoYW5nZWQuIEZyb20gdGhlIGxvb2sgb2YgdGhlIGRpZmYsIEkgY2FuIHNlZSB0aGV5JiMzOTtyZSBqdXN0IHVwZGF0aW5nIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBvbGQgZW51bSBhbmQgbWFjcm8gd2VyZSB1c2VkIOKAkyBhY3Jvc3MgYGNvcmUuY2AsIGBjb3JlLmhgLCBgbWFjLmNgLCBgcGNpLmNgLCBgcW1pLmNgLCBhbmQgYHFtaS5oYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGRpcmVjdCBzdWJzdGl0dXRpb24sIGNvbmZpcm1pbmcgdGhhdCB0aGUgY2hhbmdlIGlzIHNpbXBseSByZW5hbWluZyBhbmQgcmVsb2NhdGluZy4KCkNoZWNraW5nIHRoZSBkaWZmIGFnYWluLi4uIFllcC4gQSBxdWljayB2aXN1YWwgaW5zcGVjdGlvbiBvZiB0aGUgY29kZSBjb25maXJtcyB0aGUgcmVuYW1lIGFuZCByZXBsYWNlbWVudC4gRm9yIGV4YW1wbGUsIGBhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTTtgIGlzIGJlY29taW5nIGBhYi0mZ3Q7ZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE07YC4gQWxzbyB0aGUgZW51bSBkZWNsYXJhdGlvbiBjaGFuZ2VzIGZyb20gYGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZWAgdG8gYGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGVgLiBBbHNvLCBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZWAgaXMgcmVtb3ZlZCBmcm9tIGBjb3JlLmhgIHdoaWxlIGBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZgIGlzIHJlbW92ZWQgZnJvbSBgcW1pLmhgLiBUaGUgbmV3IGVudW0gaXMgYWRkZWQgaW4gYHFtaS5oYCB3aXRoIGBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfTk9STUFMYCwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE1gLCBhbmQgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YC4KCkFscmlnaHQsIHNpbmNlIHRoaXMgaXMgYSBwdXJlIG5hbWUgY2hhbmdlIGFuZCBlbnVtIHZhbHVlIGFkZGl0aW9uLCBhbmQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb24sIHRoaXMgaXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIE5vIG5ldyBidWdzIHdpbGwgYmUgaW50cm9kdWNlZCBoZXJlLiBJIHdpbGwgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA0LjQzMzg2NDkwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDMzNTI2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHB1cmVseSByZWZhY3RvcnMgdGhlIGNvZGUgYnkgcmVuYW1pbmcgYW4gZW51bSAoYXRoMTJrX2Zpcm13YXJlX21vZGUgdG8gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlKSwgbW92aW5nIGl0IHRvIGEgZGlmZmVyZW50IGhlYWRlciBmaWxlLCBhbmQgY29udmVydGluZyBhIG1hY3JvIChBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpIGludG8gYW4gZW51bSB2YWx1ZS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA0LjQzMzg4MjQzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgzOTU3MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzdhMTZjMWY5MzJhMGMyNTNiOTNhNmFiOGQ2OGY3NDgxMTA4NzA4YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxODoxMzowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuaW5kZXggYTkxMTI3NjAxODVmMzcuLmQwMjNjNjQ2NDc4ZmRiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMjMsNiArMjMsNyBAQFxcbiAjaW5jbHVkZSBcXFwid293LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9jbW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInFtaS5oXFxcIlxcbiBcXG4gdW5zaWduZWQgaW50IGF0aDEya19kZWJ1Z19tYXNrO1xcbiBtb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTJrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xcbkBAIC03OTQsNyArNzk1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XFxuLVxcdFxcdGFiLVxcdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNO1xcbitcXHRcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE07XFxuIFxcdFxcdGF0aDEya19pbmZvKGFiLCBcXFwiQm9vdGluZyBpbiBmdG0gbW9kZVxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuQEAgLTExODgsNyArMTE4OSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tXFx0XFx0XFx0XFx0ICAgICAgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBtb2RlKVxcbitcXHRcXHRcXHRcXHQgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuaW5kZXggMzdhMTk0ZTAwMjQ4Y2MuLmVjYjQ1MWQ5M2Y0NWE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5AQCAtMTYwLDE0ICsxNjAsNiBAQCBlbnVtIGF0aDEya19od19yZXYge1xcbiBcXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxcbiB9O1xcbiBcXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XFxuLVxcdC8qIHRoZSBkZWZhdWx0IG1vZGUsIHN0YW5kYXJkIDgwMi4xMSBmdW5jdGlvbmFsaXR5ICovXFxuLVxcdEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTCxcXG4tXFxuLVxcdC8qIGZhY3RvcnkgdGVzdHMgZXRjICovXFxuLVxcdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcXG4tfTtcXG4tXFxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XFxuICNkZWZpbmUgQVRIMTJLX0VYVF9JUlFfTlVNX01BWFxcdDE2XFxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cXHQzXFxuQEAgLTExNDcsNyArMTEzOSw3IEBAIHN0cnVjdCBhdGgxMmtfYmFzZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZztcXG4gXFx0c3RydWN0IGF0aDEya193c2lfaW5mbyB3c2lfaW5mbztcXG4tXFx0ZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xcbitcXHRlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2Z0bV9ldmVudF9vYmogZnRtX2V2ZW50X29iajtcXG4gXFx0Ym9vbCBod19ncm91cF9yZWY7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC04NTksNyArODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZW51bV9yYWRpb3M7IGkrKykge1xcbi1cXHRcXHRpZiAoYWItXFx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKVxcbitcXHRcXHRpZiAoYWItXFx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTSlcXG4gXFx0XFx0XFx0cGRldiA9IFxcdTAwMjZhYi1cXHUwMDNlcGRldnNbaV07XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0cGRldiA9IHJjdV9kZXJlZmVyZW5jZShhYi1cXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNcXG5pbmRleCBhZThhOWFjZWUzZjExZS4uOWY5NDNmNzA3YTJiZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNcXG5AQCAtMTcsNiArMTcsNyBAQFxcbiAjaW5jbHVkZSBcXFwibWhpLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaGFsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJxbWkuaFxcXCJcXG4gXFxuICNkZWZpbmUgQVRIMTJLX1BDSV9CQVJfTlVNXFx0XFx0MFxcbiAjZGVmaW5lIEFUSDEyS19QQ0lfRE1BX01BU0tcXHRcXHQzNlxcbkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuIFxcdGFiX3BjaS1cXHUwMDNlYWIgPSBhYjtcXG4gXFx0YWJfcGNpLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gXFx0YWItXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2YXRoMTJrX3BjaV9oaWZfb3BzO1xcbi1cXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG4rXFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfTk9STUFMO1xcbiBcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWJfcGNpLVxcdTAwM2V3aW5kb3dfbG9jayk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbmluZGV4IGJiNjFjNzhlNWMyOWQ3Li4yODBlNTBhMWYzMWQ4OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbkBAIC0zNDMxLDcgKzM0MzEsNyBAQCBpbnQgYXRoMTJrX3FtaV93bGFuZndfYXV4X3VjX2luZm9fc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTMyIG1vZGUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKVxcbiB7XFxuIFxcdHN0cnVjdCBxbWlfd2xhbmZ3X3dsYW5fbW9kZV9yZXFfbXNnX3YwMSByZXEgPSB7fTtcXG4gXFx0c3RydWN0IHFtaV93bGFuZndfd2xhbl9tb2RlX3Jlc3BfbXNnX3YwMSByZXNwID0ge307XFxuQEAgLTM0NjAsNyArMzQ2MCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuIFxcbiBcXHRyZXQgPSBxbWlfdHhuX3dhaXQoXFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcXHUwMDI2XFx1MDAyNiByZXQgPT0gLUVORVRSRVNFVCkge1xcbitcXHRcXHRpZiAobW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGIFxcdTAwMjZcXHUwMDI2IHJldCA9PSAtRU5FVFJFU0VUKSB7XFxuIFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiV0xGVyBzZXJ2aWNlIGlzIGRpcy1jb25uZWN0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fVxcbkBAIC0zNjIzLDcgKzM2MjMsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXG4gXFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1FNSV9GV19SRUFEWV9DT01QTEVURSwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpO1xcbiBcXG4tXFx0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpO1xcbitcXHRyZXQgPSBhdGgxMmtfcW1pX3dsYW5md19tb2RlX3NlbmQoYWIsIEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInFtaSBmYWlsZWQgdG8gc2VuZCB3bGFuIG1vZGUgb2ZmXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0zNjMxLDcgKzM2MzEsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB9XFxuIFxcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi1cXHRcXHRcXHQgICAgICB1MzIgbW9kZSlcXG4rXFx0XFx0XFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcXG4ge1xcbiBcXHRpbnQgcmV0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmhcXG5pbmRleCBjYmU1YmUzMDA1M2EwYS4uNmRhMTBmM2NiNTk3YzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmhcXG5AQCAtMzIsNyArMzIsNiBAQFxcbiAjZGVmaW5lIFFNSV9XTEZXX0ZXX1JFQURZX0lORF9WMDFcXHRcXHQweDAwMzhcXG4gXFxuICNkZWZpbmUgUU1JX1dMQU5GV19NQVhfREFUQV9TSVpFX1YwMVxcdFxcdDYxNDRcXG4tI2RlZmluZSBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkZcXHRcXHQ0XFxuIFxcbiAjZGVmaW5lIEFUSDEyS19CT0FSRF9JRF9ERUZBVUxUXFx0MHhGRlxcbiBcXG5AQCAtNjAyLDYgKzYwMSwxNyBAQCBlbnVtIGF0aDEya19xbWlfbWVtX21vZGUge1xcbiBcXHRBVEgxMktfUU1JX01FTU9SWV9NT0RFX0xPV181MTJfTSxcXG4gfTtcXG4gXFxuK2VudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIHtcXG4rXFx0LyogdGhlIGRlZmF1bHQgbW9kZSwgc3RhbmRhcmQgODAyLjExIGZ1bmN0aW9uYWxpdHkgKi9cXG4rXFx0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX05PUk1BTCxcXG4rXFxuK1xcdC8qIGZhY3RvcnkgdGVzdHMgZXRjICovXFxuK1xcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9GVE0sXFxuK1xcbitcXHQvKiBmaXJtd2FyZSBvZmZsaW5lOyB2YWx1ZXMgMi0zIHJlc2VydmVkIGJ5IGZpcm13YXJlIEFCSSAqL1xcbitcXHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGID0gNCxcXG4rfTtcXG4rXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfcW1pX3NldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pLCBib29sIGJsb2NrKVxcbiB7XFxuIFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNnFtaS1cXHUwMDNlZXZlbnRfbG9jayk7XFxuQEAgLTYxNyw3ICs2MjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX3FtaV9nZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSlcXG4gfVxcbiBcXG4gaW50IGF0aDEya19xbWlfZmlybXdhcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tXFx0XFx0XFx0ICAgICAgdTMyIG1vZGUpO1xcbitcXHRcXHRcXHQgICAgICBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSBtb2RlKTtcXG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuIHZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4gaW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxODoxMzowNS4zMTkxMTczMjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MzE4MDkxMzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwdXJlbHkgcmVmYWN0b3JzIHRoZSBjb2RlIGJ5IHJlbmFtaW5nIGFuIGVudW0gKGF0aDEya19maXJtd2FyZV9tb2RlIHRvIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZSksIG1vdmluZyBpdCB0byBhIGRpZmZlcmVudCBoZWFkZXIgZmlsZSwgYW5kIGNvbnZlcnRpbmcgYSBtYWNybyAoQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGKSBpbnRvIGFuIGVudW0gdmFsdWUuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3N2ExNmMxZjkzMmEwYzI1M2I5M2E2YWI4ZDY4Zjc0ODExMDg3MDhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTg6MTM6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCBhOTExMjc2MDE4NWYzNy4uZDAyM2M2NDY0NzhmZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0yMyw2ICsyMyw3IEBAXG4gI2luY2x1ZGUgXCJ3b3cuaFwiXG4gI2luY2x1ZGUgXCJkcF9jbW4uaFwiXG4gI2luY2x1ZGUgXCJwZWVyLmhcIlxuKyNpbmNsdWRlIFwicW1pLmhcIlxuIFxuIHVuc2lnbmVkIGludCBhdGgxMmtfZGVidWdfbWFzaztcbiBtb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTJrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xuQEAgLTc5NCw3ICs3OTUsNyBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoYXRoMTJrX2Z0bV9tb2RlKSB7XG4tXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfRklSTVdBUkVfTU9ERV9GVE07XG4rXHRcdGFiLVx1MDAzZWZ3X21vZGUgPSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNO1xuIFx0XHRhdGgxMmtfaW5mbyhhYiwgXCJCb290aW5nIGluIGZ0bSBtb2RlXFxuXCIpO1xuIFx0fVxuIFxuQEAgLTExODgsNyArMTE4OSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcbi1cdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcbitcdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCAzN2ExOTRlMDAyNDhjYy4uZWNiNDUxZDkzZjQ1YTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC0xNjAsMTQgKzE2MCw2IEBAIGVudW0gYXRoMTJrX2h3X3JldiB7XG4gXHRBVEgxMktfSFdfSVBRNTQyNF9IVzEwLFxuIH07XG4gXG4tZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSB7XG4tXHQvKiB0aGUgZGVmYXVsdCBtb2RlLCBzdGFuZGFyZCA4MDIuMTEgZnVuY3Rpb25hbGl0eSAqL1xuLVx0QVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMLFxuLVxuLVx0LyogZmFjdG9yeSB0ZXN0cyBldGMgKi9cbi1cdEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTSxcbi19O1xuLVxuICNkZWZpbmUgQVRIMTJLX0lSUV9OVU1fTUFYIDU3XG4gI2RlZmluZSBBVEgxMktfRVhUX0lSUV9OVU1fTUFYXHQxNlxuICNkZWZpbmUgQVRIMTJLX01BWF9UQ0xfUklOR19OVU1cdDNcbkBAIC0xMTQ3LDcgKzExMzksNyBAQCBzdHJ1Y3QgYXRoMTJrX2Jhc2Uge1xuIFxuIFx0c3RydWN0IGF0aDEya19od19ncm91cCAqYWc7XG4gXHRzdHJ1Y3QgYXRoMTJrX3dzaV9pbmZvIHdzaV9pbmZvO1xuLVx0ZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBmd19tb2RlO1xuK1x0ZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgZndfbW9kZTtcbiBcdHN0cnVjdCBhdGgxMmtfZnRtX2V2ZW50X29iaiBmdG1fZXZlbnRfb2JqO1xuIFx0Ym9vbCBod19ncm91cF9yZWY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IGRiNDUzYTMxMDdlNDI5Li5kOWNhM2I2OThiOWUzMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC04NTksNyArODU5LDcgQEAgc3RydWN0IGF0aDEyayAqYXRoMTJrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2VudW1fcmFkaW9zOyBpKyspIHtcbi1cdFx0aWYgKGFiLVx1MDAzZWZ3X21vZGUgPT0gQVRIMTJLX0ZJUk1XQVJFX01PREVfRlRNKVxuK1x0XHRpZiAoYWItXHUwMDNlZndfbW9kZSA9PSBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfRlRNKVxuIFx0XHRcdHBkZXYgPSBcdTAwMjZhYi1cdTAwM2VwZGV2c1tpXTtcbiBcdFx0ZWxzZVxuIFx0XHRcdHBkZXYgPSByY3VfZGVyZWZlcmVuY2UoYWItXHUwMDNlcGRldnNfYWN0aXZlW2ldKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuaW5kZXggYWU4YTlhY2VlM2YxMWUuLjlmOTQzZjcwN2EyYmZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY1xuQEAgLTE3LDYgKzE3LDcgQEBcbiAjaW5jbHVkZSBcIm1oaS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnLmhcIlxuICNpbmNsdWRlIFwiaGFsLmhcIlxuKyNpbmNsdWRlIFwicW1pLmhcIlxuIFxuICNkZWZpbmUgQVRIMTJLX1BDSV9CQVJfTlVNXHRcdDBcbiAjZGVmaW5lIEFUSDEyS19QQ0lfRE1BX01BU0tcdFx0MzZcbkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbiBcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbiBcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XG4tXHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuK1x0YWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUw7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWJfcGNpLVx1MDAzZXdpbmRvd19sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuaW5kZXggYmI2MWM3OGU1YzI5ZDcuLjI4MGU1MGExZjMxZDg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xuQEAgLTM0MzEsNyArMzQzMSw3IEBAIGludCBhdGgxMmtfcW1pX3dsYW5md19hdXhfdWNfaW5mb19zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tXHRcdFx0XHQgICAgICAgdTMyIG1vZGUpXG4rXHRcdFx0XHQgICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSlcbiB7XG4gXHRzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVxX21zZ192MDEgcmVxID0ge307XG4gXHRzdHJ1Y3QgcW1pX3dsYW5md193bGFuX21vZGVfcmVzcF9tc2dfdjAxIHJlc3AgPSB7fTtcbkBAIC0zNDYwLDcgKzM0NjAsNyBAQCBzdGF0aWMgaW50IGF0aDEya19xbWlfd2xhbmZ3X21vZGVfc2VuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFxuIFx0cmV0ID0gcW1pX3R4bl93YWl0KFx1MDAyNnR4biwgbXNlY3NfdG9famlmZmllcyhBVEgxMktfUU1JX1dMQU5GV19USU1FT1VUX01TKSk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdGlmIChtb2RlID09IEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbitcdFx0aWYgKG1vZGUgPT0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRiBcdTAwMjZcdTAwMjYgcmV0ID09IC1FTkVUUkVTRVQpIHtcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCJXTEZXIHNlcnZpY2UgaXMgZGlzLWNvbm5lY3RlZFxcblwiKTtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuQEAgLTM2MjMsNyArMzYyMyw3IEBAIHZvaWQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXG4gXHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUU1JX0ZXX1JFQURZX0NPTVBMRVRFLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuIFxuLVx0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfRklSTVdBUkVfTU9ERV9PRkYpO1xuK1x0cmV0ID0gYXRoMTJrX3FtaV93bGFuZndfbW9kZV9zZW5kKGFiLCBBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0YXRoMTJrX3dhcm4oYWIsIFwicW1pIGZhaWxlZCB0byBzZW5kIHdsYW4gbW9kZSBvZmZcXG5cIik7XG4gXHRcdHJldHVybjtcbkBAIC0zNjMxLDcgKzM2MzEsNyBAQCB2b2lkIGF0aDEya19xbWlfZmlybXdhcmVfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIH1cbiBcbiBpbnQgYXRoMTJrX3FtaV9maXJtd2FyZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLVx0XHRcdCAgICAgIHUzMiBtb2RlKVxuK1x0XHRcdCAgICAgIGVudW0gYXRoMTJrX3FtaV9maXJtd2FyZV9tb2RlIG1vZGUpXG4ge1xuIFx0aW50IHJldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuaW5kZXggY2JlNWJlMzAwNTNhMGEuLjZkYTEwZjNjYjU5N2MzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaFxuQEAgLTMyLDcgKzMyLDYgQEBcbiAjZGVmaW5lIFFNSV9XTEZXX0ZXX1JFQURZX0lORF9WMDFcdFx0MHgwMDM4XG4gXG4gI2RlZmluZSBRTUlfV0xBTkZXX01BWF9EQVRBX1NJWkVfVjAxXHRcdDYxNDRcbi0jZGVmaW5lIEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRlx0XHQ0XG4gXG4gI2RlZmluZSBBVEgxMktfQk9BUkRfSURfREVGQVVMVFx0MHhGRlxuIFxuQEAgLTYwMiw2ICs2MDEsMTcgQEAgZW51bSBhdGgxMmtfcW1pX21lbV9tb2RlIHtcbiBcdEFUSDEyS19RTUlfTUVNT1JZX01PREVfTE9XXzUxMl9NLFxuIH07XG4gXG4rZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUge1xuK1x0LyogdGhlIGRlZmF1bHQgbW9kZSwgc3RhbmRhcmQgODAyLjExIGZ1bmN0aW9uYWxpdHkgKi9cbitcdEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUwsXG4rXG4rXHQvKiBmYWN0b3J5IHRlc3RzIGV0YyAqL1xuK1x0QVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTSxcbitcbitcdC8qIGZpcm13YXJlIG9mZmxpbmU7IHZhbHVlcyAyLTMgcmVzZXJ2ZWQgYnkgZmlybXdhcmUgQUJJICovXG4rXHRBVEgxMktfUU1JX0ZJUk1XQVJFX01PREVfT0ZGID0gNCxcbit9O1xuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfcW1pX3NldF9ldmVudF9ibG9jayhzdHJ1Y3QgYXRoMTJrX3FtaSAqcW1pLCBib29sIGJsb2NrKVxuIHtcbiBcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2cW1pLVx1MDAzZWV2ZW50X2xvY2spO1xuQEAgLTYxNyw3ICs2MjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX3FtaV9nZXRfZXZlbnRfYmxvY2soc3RydWN0IGF0aDEya19xbWkgKnFtaSlcbiB9XG4gXG4gaW50IGF0aDEya19xbWlfZmlybXdhcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYixcbi1cdFx0XHQgICAgICB1MzIgbW9kZSk7XG4rXHRcdFx0ICAgICAgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZSk7XG4gdm9pZCBhdGgxMmtfcW1pX2Zpcm13YXJlX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4gdm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjA1LjMxOTExOTkyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMTgwNDI1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgYSBGaXJtd2FyZSBNb2RlIEVudW0qKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSByZWZhY3RvcmluZyBleGVyY2lzZTsgYSBiaXQgb2YgaG91c2VrZWVwaW5nIGlmIHlvdSB3aWxsLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhleSdyZSByZW5hbWluZyB0aGUgYGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGVgIHRvIGBlbnVtIGF0aDEya19xbWlfZmlybXdhcmVfbW9kZWAuIFRoaXMgZW51bSBpcyBjdXJyZW50bHkgbG9jYXRlZCBpbiBgY29yZS5oYCwgYW5kIHRoZSBwYXRjaCBtb3ZlcyBpdCBvdmVyIHRvIGBxbWkuaGAuIFRoZXkncmUgYWxzbyBpbnRyb2R1Y2luZyBhIG5ldyB2YWx1ZSwgYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9PRkYgPSA0YCwgd2hpY2ggaXMgcmVwbGFjaW5nIHRoZSBvbGRlciBtYWNybyBgQVRIMTJLX0ZJUk1XQVJFX01PREVfT0ZGYC5cblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZSBjb2RlIEknbSBmdXp6aW5nIHdpbGwgYmUgdW5jaGFuZ2VkLiBGcm9tIHRoZSBsb29rIG9mIHRoZSBkaWZmLCBJIGNhbiBzZWUgdGhleSdyZSBqdXN0IHVwZGF0aW5nIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBvbGQgZW51bSBhbmQgbWFjcm8gd2VyZSB1c2VkIOKAkyBhY3Jvc3MgYGNvcmUuY2AsIGBjb3JlLmhgLCBgbWFjLmNgLCBgcGNpLmNgLCBgcW1pLmNgLCBhbmQgYHFtaS5oYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgZGlyZWN0IHN1YnN0aXR1dGlvbiwgY29uZmlybWluZyB0aGF0IHRoZSBjaGFuZ2UgaXMgc2ltcGx5IHJlbmFtaW5nIGFuZCByZWxvY2F0aW5nLlxuXG5DaGVja2luZyB0aGUgZGlmZiBhZ2Fpbi4uLiBZZXAuIEEgcXVpY2sgdmlzdWFsIGluc3BlY3Rpb24gb2YgdGhlIGNvZGUgY29uZmlybXMgdGhlIHJlbmFtZSBhbmQgcmVwbGFjZW1lbnQuIEZvciBleGFtcGxlLCBgYWItXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX0ZUTTtgIGlzIGJlY29taW5nIGBhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTTtgLiBBbHNvIHRoZSBlbnVtIGRlY2xhcmF0aW9uIGNoYW5nZXMgZnJvbSBgZW51bSBhdGgxMmtfZmlybXdhcmVfbW9kZSBtb2RlYCB0byBgZW51bSBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUgbW9kZWAuIEFsc28sIGBlbnVtIGF0aDEya19maXJtd2FyZV9tb2RlYCBpcyByZW1vdmVkIGZyb20gYGNvcmUuaGAgd2hpbGUgYEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRmAgaXMgcmVtb3ZlZCBmcm9tIGBxbWkuaGAuIFRoZSBuZXcgZW51bSBpcyBhZGRlZCBpbiBgcW1pLmhgIHdpdGggYEFUSDEyS19RTUlfRklSTVdBUkVfTU9ERV9OT1JNQUxgLCBgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX0ZUTWAsIGFuZCBgQVRIMTJLX1FNSV9GSVJNV0FSRV9NT0RFX09GRiA9IDRgLlxuXG5BbHJpZ2h0LCBzaW5jZSB0aGlzIGlzIGEgcHVyZSBuYW1lIGNoYW5nZSBhbmQgZW51bSB2YWx1ZSBhZGRpdGlvbiwgYW5kIHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byBhbnkgZXhlY3V0aW9uIGZsb3cgb3IgZnVuY3Rpb24sIHRoaXMgaXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIE5vIG5ldyBidWdzIHdpbGwgYmUgaW50cm9kdWNlZCBoZXJlLiBJIHdpbGwgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE4OjEzOjEyLjYzNzE2ODAwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHVyZWx5IHJlZmFjdG9ycyB0aGUgY29kZSBieSByZW5hbWluZyBhbiBlbnVtIChhdGgxMmtfZmlybXdhcmVfbW9kZSB0byBhdGgxMmtfcW1pX2Zpcm13YXJlX21vZGUpLCBtb3ZpbmcgaXQgdG8gYSBkaWZmZXJlbnQgaGVhZGVyIGZpbGUsIGFuZCBjb252ZXJ0aW5nIGEgbWFjcm8gKEFUSDEyS19GSVJNV0FSRV9NT0RFX09GRikgaW50byBhbiBlbnVtIHZhbHVlLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8zqkn[1] Phase: Running StartedAt: 2026-07-26 18:13:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8zqkn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-26 18:13:24 +0000 UTC FinishedAt: 2026-07-26 18:13:50 +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,}