LS0tIG1pc2Mvb3BlbnNzbC0wLjkuOHpnL2NyeXB0by94NTA5djMvdjNfcGNpLmMJMjAwNy0wMy0wNSAwMTowNjo0Ny4wMDAwMDAwMDAgKzAxMDAKKysrIG1pc2MvYnVpbGQvb3BlbnNzbC0wLjkuOHpnL2NyeXB0by94NTA5djMvdjNfcGNpLmMJMjAxMC0wMy0yNiAxMjowNDoyMC45NjE1NDczMDAgKzAxMDAKQEAgLTIsNyArMiw3IEBACiAvKiBDb250cmlidXRlZCB0byB0aGUgT3BlblNTTCBQcm9qZWN0IDIwMDQKICAqIGJ5IFJpY2hhcmQgTGV2aXR0ZSAocmljaGFyZEBsZXZpdHRlLm9yZykKICAqLwotLyogQ29weXJpZ2h0IChjKSAyMDA0IEt1bmdsaWdhIFRla25pc2thIEj2Z3Nrb2xhbgorLyogQ29weXJpZ2h0IChjKSAyMDA0IEt1bmdsaWdhIFRla25pc2thIEhvZWdza29sYW4KICAqIChSb3lhbCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgU3RvY2tob2xtLCBTd2VkZW4pLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0tLSBtaXNjL29wZW5zc2wtMC45Ljh6Zy9jcnlwdG8veDUwOXYzL3YzX3BjaWEuYwkyMDA0LTEyLTI4IDAxOjIxOjMzLjAwMDAwMDAwMCArMDEwMAorKysgbWlzYy9idWlsZC9vcGVuc3NsLTAuOS44emcvY3J5cHRvL3g1MDl2My92M19wY2lhLmMJMjAxMC0wMy0yNiAxMjowNDoyMC45NjE1NDczMDAgKzAxMDAKQEAgLTMsNyArMyw3IEBACiAvKiBDb250cmlidXRlZCB0byB0aGUgT3BlblNTTCBQcm9qZWN0IDIwMDQKICAqIGJ5IFJpY2hhcmQgTGV2aXR0ZSAocmljaGFyZEBsZXZpdHRlLm9yZykKICAqLwotLyogQ29weXJpZ2h0IChjKSAyMDA0IEt1bmdsaWdhIFRla25pc2thIEj2Z3Nrb2xhbgorLyogQ29weXJpZ2h0IChjKSAyMDA0IEt1bmdsaWdhIFRla25pc2thIEhvZWdza29sYW4KICAqIChSb3lhbCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgU3RvY2tob2xtLCBTd2VkZW4pLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0tLSBtaXNjL29wZW5zc2wtMC45Ljh6Zy9tcy9kb19tcy5iYXQJMjAwOS0wNy0yOCAxNDo1MToxOS4wMDAwMDAwMDAgKzAyMDAKKysrIG1pc2MvYnVpbGQvb3BlbnNzbC0wLjkuOHpnL21zL2RvX21zLmJhdAkyMDEwLTAzLTI2IDEyOjE5OjE5LjM5OTA0NzMwMCArMDEwMApAQCAtMSwxMSArMSwxMSBAQAogCi1wZXJsIHV0aWxcbWtmaWxlcy5wbCA+TUlORk8KLXBlcmwgdXRpbFxtazFtZi5wbCBuby1hc20gVkMtV0lOMzIgPm1zXG50Lm1hawotcGVybCB1dGlsXG1rMW1mLnBsIGRsbCBuby1hc20gVkMtV0lOMzIgPm1zXG50ZGxsLm1haworJTEgdXRpbFxta2ZpbGVzLnBsID5NSU5GTworJTEgdXRpbFxtazFtZi5wbCBuby1hc20gVkMtV0lOMzIgPm1zXG50Lm1haworJTEgdXRpbFxtazFtZi5wbCBkbGwgbm8tYXNtIFZDLVdJTjMyID5tc1xudGRsbC5tYWsKIGlmIHglT1NWRVJTSU9OJSA9PSB4IGdvdG8gc2tpcGNlCi1wZXJsIHV0aWxcbWsxbWYucGwgbm8tYXNtIFZDLUNFID5tc1xjZS5tYWsKLXBlcmwgdXRpbFxtazFtZi5wbCBkbGwgbm8tYXNtIFZDLUNFID5tc1xjZWRsbC5tYWsKKyUxIHV0aWxcbWsxbWYucGwgbm8tYXNtIFZDLUNFID5tc1xjZS5tYWsKKyUxIHV0aWxcbWsxbWYucGwgZGxsIG5vLWFzbSBWQy1DRSA+bXNcY2VkbGwubWFrCiA6c2tpcGNlCiAKLXBlcmwgdXRpbFxta2RlZi5wbCAzMiBsaWJlYXkgPiBtc1xsaWJlYXkzMi5kZWYKLXBlcmwgdXRpbFxta2RlZi5wbCAzMiBzc2xlYXkgPiBtc1xzc2xlYXkzMi5kZWYKKyUxIHV0aWxcbWtkZWYucGwgMzIgbGliZWF5ID4gbXNcbGliZWF5MzIuZGVmCislMSB1dGlsXG1rZGVmLnBsIDMyIHNzbGVheSA+IG1zXHNzbGVheTMyLmRlZgotLS0gbWlzYy9vcGVuc3NsLTAuOS44emcvdXRpbC9tazFtZi5wbAkyMDA5LTA5LTIwIDE0OjQ2OjQyLjAwMDAwMDAwMCArMDIwMAorKysgbWlzYy9idWlsZC9vcGVuc3NsLTAuOS44emcvdXRpbC9tazFtZi5wbAkyMDEwLTAzLTI2IDEyOjA0OjIwLjk3NzE3MjMwMCArMDEwMApAQCAtMTI4LDcgKzEyOCw3IEBACiAkaW5jX2RlZj0ib3V0aW5jIjsKICR0bXBfZGVmPSJ0bXAiOwogCi0kcGVybD0icGVybCIgdW5sZXNzIGRlZmluZWQgJHBlcmw7CiskcGVybD0iJEVOVntQRVJMfSIgdW5sZXNzIGRlZmluZWQgJHBlcmw7CiAkbWtkaXI9Ii1ta2RpciIgdW5sZXNzIGRlZmluZWQgJG1rZGlyOwogCiAoJHNzbCwkY3J5cHRvKT0oInNzbCIsImNyeXB0byIpOwpAQCAtMjkwLDYgKzI5MCwxMSBAQAogCWNob3A7CiAKIAkoJGtleSwkdmFsKT0vXihbXj1dKyk9KC4qKS87CisKKwkjIE9uIHNvbWUgV2luZG93cyBtYWNoaW5lcywgJHZhbCBoYXMgbGluZWZlZWRzIGF0IHRoZSBlbmQsIHdoaWNoIGNvbmZ1c2VzCisJIyBzdWJzZXF1ZW50IGNvZGUgaW4gdGhpcyBmaWxlLiBTbyB3ZSBzdHJpcCBhbGwgd2hpdGVzcGFjZSBhdCB0aGUgZW5kLgorCSR2YWwgPX4gcy9ccyskLy87CisKIAlpZiAoJGtleSBlcSAiUkVMQVRJVkVfRElSRUNUT1JZIikKIAkJewogCQlpZiAoJGxpYiBuZSAiIikKQEAgLTczMCw3ICs3MzUsNyBAQAogcHJpbnRmIE9VVCA8PEVPRjsKICNpZmRlZiAkcGxhdGZvcm1fY3BwX3N5bWJvbAogICAvKiBhdXRvLWdlbmVyYXRlZC91cGRhdGVkIGJ5IHV0aWwvbWsxbWYucGwgZm9yIGNyeXB0by9jdmVyc2lvbi5jICovCi0gICNkZWZpbmUgQ0ZMQUdTICIkY2MgJGNmbGFncyIKKyAgI2RlZmluZSBDRkxBR1MgIiRjZmxhZ3MiCiAgICNkZWZpbmUgUExBVEZPUk0gIiRwbGF0Zm9ybSIKIEVPRgogcHJpbnRmIE9VVCAiICAjZGVmaW5lIERBVEUgXCIlc1wiXG4iLCBzY2FsYXIgZ210aW1lKCk7Ci0tLSBtaXNjL29wZW5zc2wtMC45Ljh6Zy91dGlsL3BsL1ZDLTMyLnBsCTIwMTAtMDItMDQgMDI6MTA6MjQuMDAwMDAwMDAwICswMTAwCisrKyBtaXNjL2J1aWxkL29wZW5zc2wtMC45Ljh6Zy91dGlsL3BsL1ZDLTMyLnBsCTIwMTAtMDMtMjYgMTI6MDQ6MjAuOTc3MTcyMzAwICswMTAwCkBAIC0zMiw3ICszMiw3IEBACiAkbF9mbGFncyA9fiBzLy1MKFxTKykvXC9saWJwYXRoOiQxL2c7CiAKICMgQyBjb21waWxlciBzdHVmZgotJGNjPSdjbCc7CiskY2M9JEVOVnsnQ0MnfTsKIGlmICgkRkxBVk9SID1+IC9XSU42NC8pCiAgICAgewogICAgICMgTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkb24ndCBoYXZlIC9XWCBvbiBXaW42NCEgVGhlcmUgaXMgYSBsb3Qgb2YKQEAgLTEwMywyMSArMTAzLDIxIEBACiAgICAgfQogCiAgICAgJGNjPSckKENDKSc7Ci0gICAgJGJhc2VfY2ZsYWdzPScgL1czIC9XWCAvR0YgL0d5IC9ub2xvZ28gLURVTklDT0RFIC1EX1VOSUNPREUgLURPUEVOU1NMX1NZU05BTUVfV0lOQ0UgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLUREU09fV0lOMzIgLUROT19DSE1PRCAtSSQoV0NFQ09NUEFUKS9pbmNsdWRlIC1ET1BFTlNTTF9TTUFMTF9GT09UUFJJTlQnOworICAgICRiYXNlX2NmbGFncz0nIC1XMyAtV1ggLUdGIC1HeSAtbm9sb2dvIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1ET1BFTlNTTF9TWVNOQU1FX1dJTkNFIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5ESUFOIC1ERFNPX1dJTjMyIC1ETk9fQ0hNT0QgLUkkKFdDRUNPTVBBVCkvaW5jbHVkZSAtRE9QRU5TU0xfU01BTExfRk9PVFBSSU5UJzsKICAgICAkYmFzZV9jZmxhZ3MuPSIgJHdjZWNkZWZzIjsKLSAgICAkb3B0X2NmbGFncz0nIC9NQyAvTzFpJzsJIyBvcHRpbWl6ZSBmb3Igc3BhY2UsIGJ1dCB3aXRoIGludHJpbnNpY3MuLi4KLSAgICAkZGJnX2NsZmFncz0nIC9NQyAvT2QgLURERUJVRyAtRF9ERUJVRyc7CisgICAgJG9wdF9jZmxhZ3M9JyAtTUMgLU8xaSc7CSMgb3B0aW1pemUgZm9yIHNwYWNlLCBidXQgd2l0aCBpbnRyaW5zaWNzLi4uCisgICAgJGRiZ19jbGZhZ3M9JyAtTUMgLU9kIC1EREVCVUcgLURfREVCVUcnOwogICAgICRsZmxhZ3M9Ii9ub2xvZ28gL29wdDpyZWYgJHdjZWxmbGFnIjsKICAgICB9CiBlbHNlCSMgV2luMzIKICAgICB7Ci0gICAgJGJhc2VfY2ZsYWdzPScgL1czIC9XWCAvR3MwIC9HRiAvR3kgL25vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRERTT19XSU4zMic7CisgICAgJGJhc2VfY2ZsYWdzPScgLVczIC1XWCAtR3MwIC1HRiAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRERTT19XSU4zMic7CiAgICAgJGJhc2VfY2ZsYWdzLj0nIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFJzsJIyBzaHV0IHVwIFZDOAogICAgICRiYXNlX2NmbGFncy49JyAtRF9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUnOwkjIHNodXQgdXAgVkM4Ci0gICAgbXkgJGYgPSAkc2hsaWIgfHwgJGZpcHMgPycgL01EJzonIC9NVCc7Ci0gICAgJGxpYl9jZmxhZz0nL1psJyBpZiAoISRzaGxpYik7CSMgcmVtb3ZlIC9ERUZBVUxUTElCcyBmcm9tIHN0YXRpYyBsaWIKLSAgICAkb3B0X2NmbGFncz0kZi4nIC9PeCAvTzIgL09iMic7Ci0gICAgJGRiZ19jZmxhZ3M9JGYuJ2QgL09kIC1EREVCVUcgLURfREVCVUcnOworICAgIG15ICRmID0gJHNobGliIHx8ICRmaXBzID8nIC1NRCc6JyAtTVQnOworICAgICRsaWJfY2ZsYWc9Jy1abCcgaWYgKCEkc2hsaWIpOwkjIHJlbW92ZSAvREVGQVVMVExJQnMgZnJvbSBzdGF0aWMgbGliCisgICAgJG9wdF9jZmxhZ3M9JGYuJyAtT3ggLU8yIC1PYjInOworICAgICRkYmdfY2ZsYWdzPSRmLidkIC1PZCAtRERFQlVHIC1EX0RFQlVHJzsKICAgICAkbGZsYWdzPSIvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvb3B0OnJlZiI7CiAgICAgfQogJG1sZmxhZ3M9Jyc7CkBAIC0xMzgsNyArMTM4LDcgQEAKIAl9CiAKICRvYmo9Jy5vYmonOwotJG9maWxlPSIvRm8iOworJG9maWxlPSItRm8uXFwiOwogCiAjIEVYRSBsaW5raW5nIHN0dWZmCiAkbGluaz0ibGluayI7CkBAIC0yOTgsNyArMjk4LDcgQEAKIAkkdG1wX2RlZj0ndG1wMzJkbGxfJChUQVJHRVRDUFUpJzsKIAl9CiAKLSRjZmxhZ3MuPSIgL0ZkJG91dF9kZWYiOworJGNmbGFncy49IiAtRmQkb3V0X2RlZiI7CiAKIHN1YiBkb19saWJfcnVsZQogCXsK