ZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5jcHJvamVjdCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5jcHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWJlMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmNwcm9qZWN0CkBAIC0wLDAgKzEsMTQ1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4NCis8P2ZpbGVWZXJzaW9uIDQuMC4wPz48Y3Byb2plY3Qgc3RvcmFnZV90eXBlX2lkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5YbWxQcm9qZWN0RGVzY3JpcHRpb25TdG9yYWdlIj4NCisJPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIj4NCisJCTxjY29uZmlndXJhdGlvbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1Ij4NCisJCQk8c3RvcmFnZU1vZHVsZSBidWlsZFN5c3RlbUlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5jb25maWd1cmF0aW9uRGF0YVByb3ZpZGVyIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1IiBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiIG5hbWU9IkRlYnVnIj4NCisJCQkJPGV4dGVybmFsU2V0dGluZ3MvPg0KKwkJCQk8ZXh0ZW5zaW9ucz4NCisJCQkJCTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLlBFIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuQmluYXJ5UGFyc2VyIi8+DQorCQkJCQk8ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HQVNFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQorCQkJCQk8ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HTERFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQorCQkJCQk8ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HQ0NFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQorCQkJCTwvZXh0ZW5zaW9ucz4NCisJCQk8L3N0b3JhZ2VNb2R1bGU+DQorCQkJPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQorCQkJCTxjb25maWd1cmF0aW9uIGFydGlmYWN0TmFtZT0iJHtQcm9qTmFtZX0iIGJ1aWxkQXJ0ZWZhY3RUeXBlPSJvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZEFydGVmYWN0VHlwZS5leGUiIGJ1aWxkUHJvcGVydGllcz0ib3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGUuZXhlLG9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkVHlwZT1vcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGUuZGVidWciIGNsZWFuQ29tbWFuZD0icm0gLXJmIiBkZXNjcmlwdGlvbj0iIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1IiBuYW1lPSJEZWJ1ZyIgcGFyZW50PSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnIiBwcmVidWlsZFN0ZXA9IndpbmRyZXMgLS1sYW5ndWFnZSAweDBDMDkgLi4vcmVzb3VyY2UucmMgLW8gcmVzb3VyY2UubyI+DQorCQkJCQk8Zm9sZGVySW5mbyBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1LiIgbmFtZT0iLyIgcmVzb3VyY2VQYXRoPSIiPg0KKwkJCQkJCTx0b29sQ2hhaW4gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5taW5ndy5leGUuZGVidWcuMTIxMjM2NTkzMyIgbmFtZT0iTWluR1cgR0NDIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUubWluZ3cuZXhlLmRlYnVnIj4NCisJCQkJCQkJPHRhcmdldFBsYXRmb3JtIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUucGxhdGZvcm0ubWluZ3cuZXhlLmRlYnVnLjQ0MTQ2NzkzOSIgbmFtZT0iRGVidWcgUGxhdGZvcm0iIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5taW5ndy5leGUuZGVidWciLz4NCisJCQkJCQkJPGJ1aWxkZXIgYnVpbGRQYXRoPSIke3dvcmtzcGFjZV9sb2M6L0hhc2hDaGVja30vRGVidWciIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmJ1aWxkZXIubWluZ3cuYmFzZS4zMTQ0MzQ5OTMiIGtlZXBFbnZpcm9ubWVudEluQnVpbGRmaWxlPSJmYWxzZSIgbWFuYWdlZEJ1aWxkT249InRydWUiIG5hbWU9IkNEVCBJbnRlcm5hbCBCdWlsZGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmJ1aWxkZXIubWluZ3cuYmFzZSIvPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIubWluZ3cuZXhlLmRlYnVnLjM5OTc1OTg5MiIgbmFtZT0iR0NDIEFzc2VtYmxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIubWluZ3cuZXhlLmRlYnVnIj4NCisJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0LjEyODQ2NzIzOSIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuaW5wdXQiLz4NCisJCQkJCQkJPC90b29sPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hcmNoaXZlci5taW5ndy5iYXNlLjk2NDc5NzA2OCIgbmFtZT0iR0NDIEFyY2hpdmVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFyY2hpdmVyLm1pbmd3LmJhc2UiLz4NCisJCQkJCQkJPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLm1pbmd3LmV4ZS5kZWJ1Zy41Nzc0OTM1NzgiIG5hbWU9IkdDQyBDKysgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLm1pbmd3LmV4ZS5kZWJ1ZyI+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLm1pbmd3LmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjE1NzI1MjQ5MDQiIG5hbWU9Ik9wdGltaXphdGlvbiBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5taW5ndy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdXNlQnlTY2FubmVyRGlzY292ZXJ5PSJmYWxzZSIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5taW5ndy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC4xNzUxMTU4NDczIiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5taW5ndy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbCIgdXNlQnlTY2FubmVyRGlzY292ZXJ5PSJmYWxzZSIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGlvbi5kaWFsZWN0LnN0ZC4yNjE0NzQyMTkiIG5hbWU9Ikxhbmd1YWdlIHN0YW5kYXJkIiBzdXBlckNsYXNzPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGlvbi5kaWFsZWN0LnN0ZCIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIuZGlhbGVjdC5jKysxMSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGlvbi5wcmVwcm9jZXNzb3IuZGVmLjQyNjQ1ODI0NCIgbmFtZT0iRGVmaW5lZCBzeW1ib2xzICgtRCkiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIub3B0aW9uLnByZXByb2Nlc3Nvci5kZWYiIHZhbHVlVHlwZT0iZGVmaW5lZFN5bWJvbHMiPg0KKwkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSJXSU5WRVI9MHgwNTAwIi8+DQorCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IlVOSUNPREUiLz4NCisJCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iX1VOSUNPREUiLz4NCisJCQkJCQkJCTwvb3B0aW9uPg0KKwkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuaW5wdXQuOTk5MzUxNzM2IiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5pbnB1dCIvPg0KKwkJCQkJCQk8L3Rvb2w+DQorCQkJCQkJCTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIubWluZ3cuZXhlLmRlYnVnLjE5MDA4ODg2OCIgbmFtZT0iR0NDIEMgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5taW5ndy5leGUuZGVidWciPg0KKwkJCQkJCQkJPG9wdGlvbiBkZWZhdWx0VmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiBpZD0iZ251LmMuY29tcGlsZXIubWluZ3cuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuMjExMTMxOTM1NCIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5taW5ndy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdXNlQnlTY2FubmVyRGlzY292ZXJ5PSJmYWxzZSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuYy5jb21waWxlci5taW5ndy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC4xNDc3MTY4OTM3IiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmMuY29tcGlsZXIubWluZ3cuZXhlLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwiIHVzZUJ5U2Nhbm5lckRpc2NvdmVyeT0iZmFsc2UiIHZhbHVlPSJnbnUuYy5kZWJ1Z2dpbmcubGV2ZWwubWF4IiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCisJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dC4yMTQ1NTc4NTY0IiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQiLz4NCisJCQkJCQkJPC90b29sPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5taW5ndy5leGUuZGVidWcuMjIzNzI0MzQyIiBuYW1lPSJNaW5HVyBDIExpbmtlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5taW5ndy5leGUuZGVidWciLz4NCisJCQkJCQkJPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5taW5ndy5leGUuZGVidWcuNzc4MzkwMjk0IiBuYW1lPSJNaW5HVyBDKysgTGlua2VyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5saW5rZXIubWluZ3cuZXhlLmRlYnVnIj4NCisJCQkJCQkJCTxvcHRpb24gaWQ9ImdudS5jcHAubGluay5vcHRpb24uZmxhZ3MuMTM3OTM5NDM0NiIgbmFtZT0iTGlua2VyIGZsYWdzIiBzdXBlckNsYXNzPSJnbnUuY3BwLmxpbmsub3B0aW9uLmZsYWdzIiB2YWx1ZT0iLXN0YXRpYyAtbXdpbmRvd3MiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmxpbmsub3B0aW9uLnVzZXJvYmpzLjE1MDcwMDkxMzYiIG5hbWU9Ik90aGVyIG9iamVjdHMiIHN1cGVyQ2xhc3M9ImdudS5jcHAubGluay5vcHRpb24udXNlcm9ianMiIHZhbHVlVHlwZT0idXNlck9ianMiPg0KKwkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSJEZWJ1Z1xyZXNvdXJjZS5vIi8+DQorCQkJCQkJCQk8L29wdGlvbj4NCisJCQkJCQkJCTxvcHRpb24gaWQ9ImdudS5jcHAubGluay5vcHRpb24ubGlicy4xMDkzMTY0NTciIG5hbWU9IkxpYnJhcmllcyAoLWwpIiBzdXBlckNsYXNzPSJnbnUuY3BwLmxpbmsub3B0aW9uLmxpYnMiIHZhbHVlVHlwZT0ibGlicyI+DQorCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9ImNvbWN0bDMyIi8+DQorCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9Im9sZTMyIi8+DQorCQkJCQkJCQk8L29wdGlvbj4NCisJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5pbnB1dC4xODUxMTU2Mzg0IiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5saW5rZXIuaW5wdXQiPg0KKwkJCQkJCQkJCTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0ZGVwZW5kZW5jeSIgcGF0aHM9IiQoVVNFUl9PQkpTKSIvPg0KKwkJCQkJCQkJCTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0IiBwYXRocz0iJChMSUJTKSIvPg0KKwkJCQkJCQkJPC9pbnB1dFR5cGU+DQorCQkJCQkJCTwvdG9vbD4NCisJCQkJCQk8L3Rvb2xDaGFpbj4NCisJCQkJCTwvZm9sZGVySW5mbz4NCisJCQkJPC9jb25maWd1cmF0aW9uPg0KKwkJCTwvc3RvcmFnZU1vZHVsZT4NCisJCQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuZXh0ZXJuYWxTZXR0aW5ncyIvPg0KKwkJPC9jY29uZmlndXJhdGlvbj4NCisJCTxjY29uZmlndXJhdGlvbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NCI+DQorCQkJPHN0b3JhZ2VNb2R1bGUgYnVpbGRTeXN0ZW1JZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuY29uZmlndXJhdGlvbkRhdGFQcm92aWRlciIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQiIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5zZXR0aW5ncyIgbmFtZT0iUmVsZWFzZSI+DQorCQkJCTxleHRlcm5hbFNldHRpbmdzLz4NCisJCQkJPGV4dGVuc2lvbnM+DQorCQkJCQk8ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5QRSIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkJpbmFyeVBhcnNlciIvPg0KKwkJCQkJPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0FTRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KKwkJCQkJPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0xERXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KKwkJCQkJPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0NDRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KKwkJCQk8L2V4dGVuc2lvbnM+DQorCQkJPC9zdG9yYWdlTW9kdWxlPg0KKwkJCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJjZHRCdWlsZFN5c3RlbSIgdmVyc2lvbj0iNC4wLjAiPg0KKwkJCQk8Y29uZmlndXJhdGlvbiBhcnRpZmFjdE5hbWU9IiR7UHJvak5hbWV9IiBidWlsZEFydGVmYWN0VHlwZT0ib3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGUuZXhlIiBidWlsZFByb3BlcnRpZXM9Im9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlPW9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlLmV4ZSxvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlLnJlbGVhc2UiIGNsZWFuQ29tbWFuZD0icm0gLXJmIiBkZXNjcmlwdGlvbj0iIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NCIgbmFtZT0iUmVsZWFzZSIgcGFyZW50PSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UiIHBvc3RidWlsZFN0ZXA9Ii4uL1Rvb2xzL3VweCAtOSBIYXNoQ2hlY2suZXhlIiBwcmVidWlsZFN0ZXA9IndpbmRyZXMgLS1sYW5ndWFnZSAweDBDMDkgLi4vcmVzb3VyY2UucmMgLW8gcmVzb3VyY2UubyI+DQorCQkJCQk8Zm9sZGVySW5mbyBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NC4iIG5hbWU9Ii8iIHJlc291cmNlUGF0aD0iIj4NCisJCQkJCQk8dG9vbENoYWluIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUubWluZ3cuZXhlLnJlbGVhc2UuNzMwMjI2NjQ2IiBuYW1lPSJNaW5HVyBHQ0MiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5taW5ndy5leGUucmVsZWFzZSI+DQorCQkJCQkJCTx0YXJnZXRQbGF0Zm9ybSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LnBsYXRmb3JtLm1pbmd3LmV4ZS5yZWxlYXNlLjU1MDY4MDY0OCIgbmFtZT0iRGVidWcgUGxhdGZvcm0iIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5taW5ndy5leGUucmVsZWFzZSIvPg0KKwkJCQkJCQk8YnVpbGRlciBidWlsZFBhdGg9IiR7d29ya3NwYWNlX2xvYzovSGFzaENoZWNrfS9SZWxlYXNlIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5idWlsZGVyLm1pbmd3LmJhc2UuMTgyNDMzNDk4NiIga2VlcEVudmlyb25tZW50SW5CdWlsZGZpbGU9ImZhbHNlIiBtYW5hZ2VkQnVpbGRPbj0idHJ1ZSIgbmFtZT0iQ0RUIEludGVybmFsIEJ1aWxkZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYnVpbGRlci5taW5ndy5iYXNlIi8+DQorCQkJCQkJCTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5taW5ndy5leGUucmVsZWFzZS42OTAwOTM5OTQiIG5hbWU9IkdDQyBBc3NlbWJsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLm1pbmd3LmV4ZS5yZWxlYXNlIj4NCisJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0LjEzNTIxMjc2NjUiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0Ii8+DQorCQkJCQkJCTwvdG9vbD4NCisJCQkJCQkJPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXJjaGl2ZXIubWluZ3cuYmFzZS4xODU0MTczNDI2IiBuYW1lPSJHQ0MgQXJjaGl2ZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXJjaGl2ZXIubWluZ3cuYmFzZSIvPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIubWluZ3cuZXhlLnJlbGVhc2UuNDIwMzUwNjkzIiBuYW1lPSJHQ0MgQysrIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5taW5ndy5leGUucmVsZWFzZSI+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLm1pbmd3LmV4ZS5yZWxlYXNlLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuMTYzMTQ1MjI1NCIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuY3BwLmNvbXBpbGVyLm1pbmd3LmV4ZS5yZWxlYXNlLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwiIHVzZUJ5U2Nhbm5lckRpc2NvdmVyeT0iZmFsc2UiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGltaXphdGlvbi5sZXZlbC5tb3N0IiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCisJCQkJCQkJCTxvcHRpb24gaWQ9ImdudS5jcHAuY29tcGlsZXIubWluZ3cuZXhlLnJlbGVhc2Uub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC4xNDM5NjU2MDYxIiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5taW5ndy5leGUucmVsZWFzZS5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB1c2VCeVNjYW5uZXJEaXNjb3Zlcnk9ImZhbHNlIiB2YWx1ZT0iZ251LmNwcC5jb21waWxlci5kZWJ1Z2dpbmcubGV2ZWwubm9uZSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGlvbi5wcmVwcm9jZXNzb3IuZGVmLjQwNDcxOTc4NiIgbmFtZT0iRGVmaW5lZCBzeW1ib2xzICgtRCkiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIub3B0aW9uLnByZXByb2Nlc3Nvci5kZWYiIHVzZUJ5U2Nhbm5lckRpc2NvdmVyeT0iZmFsc2UiIHZhbHVlVHlwZT0iZGVmaW5lZFN5bWJvbHMiPg0KKwkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSJXSU5WRVI9MHgwNTAwIi8+DQorCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IlVOSUNPREUiLz4NCisJCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iX1VOSUNPREUiLz4NCisJCQkJCQkJCTwvb3B0aW9uPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5vcHRpb24uZGlhbGVjdC5zdGQuMTE3MzA2Nzk2MCIgbmFtZT0iTGFuZ3VhZ2Ugc3RhbmRhcmQiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIub3B0aW9uLmRpYWxlY3Quc3RkIiB1c2VCeVNjYW5uZXJEaXNjb3Zlcnk9InRydWUiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLmRpYWxlY3QuYysrMTEiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5vcHRpb24ub3RoZXIub3RoZXIuMTkwMjg2NjM5OCIgbmFtZT0iT3RoZXIgZmxhZ3MiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIub3B0aW9uLm90aGVyLm90aGVyIiB1c2VCeVNjYW5uZXJEaXNjb3Zlcnk9ImZhbHNlIiB2YWx1ZT0iLWMgLWZtZXNzYWdlLWxlbmd0aD0wIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KKwkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuaW5wdXQuMTI5MzY5NzkxMyIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuaW5wdXQiLz4NCisJCQkJCQkJPC90b29sPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLm1pbmd3LmV4ZS5yZWxlYXNlLjY4NTAxMDc2MSIgbmFtZT0iR0NDIEMgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5taW5ndy5leGUucmVsZWFzZSI+DQorCQkJCQkJCQk8b3B0aW9uIGRlZmF1bHRWYWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm1vc3QiIGlkPSJnbnUuYy5jb21waWxlci5taW5ndy5leGUucmVsZWFzZS5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjYxMzk1MTQ5IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm1pbmd3LmV4ZS5yZWxlYXNlLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwiIHVzZUJ5U2Nhbm5lckRpc2NvdmVyeT0iZmFsc2UiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIubWluZ3cuZXhlLnJlbGVhc2Uub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC45NTMzMzMwMDAiIG5hbWU9IkRlYnVnIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5taW5ndy5leGUucmVsZWFzZS5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB1c2VCeVNjYW5uZXJEaXNjb3Zlcnk9ImZhbHNlIiB2YWx1ZT0iZ251LmMuZGVidWdnaW5nLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KKwkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmlucHV0Ljk5ODg4NzM3MiIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmlucHV0Ii8+DQorCQkJCQkJCTwvdG9vbD4NCisJCQkJCQkJPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5saW5rZXIubWluZ3cuZXhlLnJlbGVhc2UuMjIxMzA4ODkzIiBuYW1lPSJNaW5HVyBDIExpbmtlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5taW5ndy5leGUucmVsZWFzZSIvPg0KKwkJCQkJCQk8dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAubGlua2VyLm1pbmd3LmV4ZS5yZWxlYXNlLjE2NzE0MjU2MzYiIG5hbWU9Ik1pbkdXIEMrKyBMaW5rZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5taW5ndy5leGUucmVsZWFzZSI+DQorCQkJCQkJCQk8b3B0aW9uIGlkPSJnbnUuY3BwLmxpbmsub3B0aW9uLmZsYWdzLjIwOTI3MTYzNzgiIG5hbWU9IkxpbmtlciBmbGFncyIgc3VwZXJDbGFzcz0iZ251LmNwcC5saW5rLm9wdGlvbi5mbGFncyIgdmFsdWU9Ii1zdGF0aWMgLW13aW5kb3dzIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iZ251LmNwcC5saW5rLm9wdGlvbi51c2Vyb2Jqcy4xMTE5MTAwMTA4IiBuYW1lPSJPdGhlciBvYmplY3RzIiBzdXBlckNsYXNzPSJnbnUuY3BwLmxpbmsub3B0aW9uLnVzZXJvYmpzIiB2YWx1ZVR5cGU9InVzZXJPYmpzIj4NCisJCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7UmVsZWFzZVxyZXNvdXJjZS5vJnF1b3Q7Ii8+DQorCQkJCQkJCQk8L29wdGlvbj4NCisJCQkJCQkJCTxvcHRpb24gaWQ9ImdudS5jcHAubGluay5vcHRpb24uc3RyaXAuMTkwMzE1NDIxOSIgbmFtZT0iT21pdCBhbGwgc3ltYm9sIGluZm9ybWF0aW9uICgtcykiIHN1cGVyQ2xhc3M9ImdudS5jcHAubGluay5vcHRpb24uc3RyaXAiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCisJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5pbnB1dC4yMDY5ODg0NjMiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5pbnB1dCI+DQorCQkJCQkJCQkJPGFkZGl0aW9uYWxJbnB1dCBraW5kPSJhZGRpdGlvbmFsaW5wdXRkZXBlbmRlbmN5IiBwYXRocz0iJChVU0VSX09CSlMpIi8+DQorCQkJCQkJCQkJPGFkZGl0aW9uYWxJbnB1dCBraW5kPSJhZGRpdGlvbmFsaW5wdXQiIHBhdGhzPSIkKExJQlMpIi8+DQorCQkJCQkJCQk8L2lucHV0VHlwZT4NCisJCQkJCQkJPC90b29sPg0KKwkJCQkJCTwvdG9vbENoYWluPg0KKwkJCQkJPC9mb2xkZXJJbmZvPg0KKwkJCQk8L2NvbmZpZ3VyYXRpb24+DQorCQkJPC9zdG9yYWdlTW9kdWxlPg0KKwkJCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5leHRlcm5hbFNldHRpbmdzIi8+DQorCQk8L2Njb25maWd1cmF0aW9uPg0KKwk8L3N0b3JhZ2VNb2R1bGU+DQorCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJjZHRCdWlsZFN5c3RlbSIgdmVyc2lvbj0iNC4wLjAiPg0KKwkJPHByb2plY3QgaWQ9Ikhhc2hDaGVjay5jZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUubWluZ3cuZXhlLjE4NTU4NzUyNDIiIG5hbWU9IkV4ZWN1dGFibGUiIHByb2plY3RUeXBlPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUubWluZ3cuZXhlIi8+DQorCTwvc3RvcmFnZU1vZHVsZT4NCisJPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9InNjYW5uZXJDb25maWd1cmF0aW9uIj4NCisJCTxhdXRvZGlzY292ZXJ5IGVuYWJsZWQ9InRydWUiIHByb2JsZW1SZXBvcnRpbmdFbmFibGVkPSJ0cnVlIiBzZWxlY3RlZFByb2ZpbGVJZD0iIi8+DQorCQk8c2Nhbm5lckNvbmZpZ0J1aWxkSW5mbyBpbnN0YW5jZUlkPSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzU7Y2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1LjtjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5taW5ndy5leGUuZGVidWcuNTc3NDkzNTc4O2NkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLmlucHV0Ljk5OTM1MTczNiI+DQorCQkJPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSIiLz4NCisJCTwvc2Nhbm5lckNvbmZpZ0J1aWxkSW5mbz4NCisJCTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUuZGVidWcuMTA5MTA3NDU3NTtjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUuO2NkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5taW5ndy5leGUuZGVidWcuMTkwMDg4ODY4O2NkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dC4yMTQ1NTc4NTY0Ij4NCisJCQk8YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9IiIvPg0KKwkJPC9zY2FubmVyQ29uZmlnQnVpbGRJbmZvPg0KKwkJPHNjYW5uZXJDb25maWdCdWlsZEluZm8gaW5zdGFuY2VJZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NDtjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UuMTA3ODg1Njc0LjtjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5taW5ndy5leGUucmVsZWFzZS40MjAzNTA2OTM7Y2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuaW5wdXQuMTI5MzY5NzkxMyI+DQorCQkJPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSIiLz4NCisJCTwvc2Nhbm5lckNvbmZpZ0J1aWxkSW5mbz4NCisJCTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQ7Y2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NC47Y2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLm1pbmd3LmV4ZS5yZWxlYXNlLjY4NTAxMDc2MTtjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQuOTk4ODg3MzcyIj4NCisJCQk8YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9IiIvPg0KKwkJPC9zY2FubmVyQ29uZmlnQnVpbGRJbmZvPg0KKwk8L3N0b3JhZ2VNb2R1bGU+DQorCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5MYW5ndWFnZVNldHRpbmdzUHJvdmlkZXJzIi8+DQorCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJyZWZyZXNoU2NvcGUiIHZlcnNpb25OdW1iZXI9IjIiPg0KKwkJPGNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbk5hbWU9IkRlYnVnIj4NCisJCQk8cmVzb3VyY2UgcmVzb3VyY2VUeXBlPSJQUk9KRUNUIiB3b3Jrc3BhY2VQYXRoPSIvSGFzaENoZWNrIi8+DQorCQk8L2NvbmZpZ3VyYXRpb24+DQorCQk8Y29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uTmFtZT0iUmVsZWFzZSI+DQorCQkJPHJlc291cmNlIHJlc291cmNlVHlwZT0iUFJPSkVDVCIgd29ya3NwYWNlUGF0aD0iL0hhc2hDaGVjayIvPg0KKwkJPC9jb25maWd1cmF0aW9uPg0KKwk8L3N0b3JhZ2VNb2R1bGU+DQorCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuaW50ZXJuYWwudWkudGV4dC5jb21tZW50T3duZXJQcm9qZWN0TWFwcGluZ3MiLz4NCis8L2Nwcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXRpZ25vcmUgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZWMwNWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMTAgQEAKKy9SZWxlYXNlLw0KKy9EZWJ1Zy8NCisvVGVzdC8NCisqLnVzZXINCisqLnN1bw0KKyouc2RmDQorKi5vcGVuc2RmDQorKi5hcHMNCitjaGVja3N1bS4qDQorc2NyYXRjaC50eHQNCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL0ZFVENIX0hFQUQgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL0ZFVENIX0hFQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFkOWE2YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvRkVUQ0hfSEVBRApAQCAtMCwwICsxIEBACis3N2U4MDM5ZmJhMzhlNTMyYmVhNWZiYTVmNGYzYmU5OTQwZWE1MjFiCQlicmFuY2ggJ21hc3Rlcicgb2YgaHR0cHM6Ly9naXRodWIuY29tL21hY290ZS9IYXNoQ2hlY2sKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvSEVBRCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvSEVBRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjA4OWNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9IRUFECkBAIC0wLDAgKzEgQEAKK3JlZjogcmVmcy9oZWFkcy9tYXN0ZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvY29uZmlnIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1NjVkMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvY29uZmlnCkBAIC0wLDAgKzEsOCBAQAorW2NvcmVdCisJcmVwb3NpdG9yeWZvcm1hdHZlcnNpb24gPSAwCisJZmlsZW1vZGUgPSBmYWxzZQorCWJhcmUgPSBmYWxzZQorCWxvZ2FsbHJlZnVwZGF0ZXMgPSB0cnVlCisJc3ltbGlua3MgPSBmYWxzZQorCWlnbm9yZWNhc2UgPSB0cnVlCisJaGlkZURvdEZpbGVzID0gZG90R2l0T25seQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvZGVzY3JpcHRpb24gYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2Rlc2NyaXB0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OGIyNjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2Rlc2NyaXB0aW9uCkBAIC0wLDAgKzEgQEAKK1VubmFtZWQgcmVwb3NpdG9yeTsgZWRpdCB0aGlzIGZpbGUgJ2Rlc2NyaXB0aW9uJyB0byBuYW1lIHRoZSByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9hcHBseXBhdGNoLW1zZy5zYW1wbGUgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL2FwcGx5cGF0Y2gtbXNnLnNhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjJhMmZlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9hcHBseXBhdGNoLW1zZy5zYW1wbGUKQEAgLTAsMCArMSwxNSBAQAorIyEvYmluL3NoCisjCisjIEFuIGV4YW1wbGUgaG9vayBzY3JpcHQgdG8gY2hlY2sgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZSB0YWtlbiBieQorIyBhcHBseXBhdGNoIGZyb20gYW4gZS1tYWlsIG1lc3NhZ2UuCisjCisjIFRoZSBob29rIHNob3VsZCBleGl0IHdpdGggbm9uLXplcm8gc3RhdHVzIGFmdGVyIGlzc3VpbmcgYW4KKyMgYXBwcm9wcmlhdGUgbWVzc2FnZSBpZiBpdCB3YW50cyB0byBzdG9wIHRoZSBjb21taXQuICBUaGUgaG9vayBpcworIyBhbGxvd2VkIHRvIGVkaXQgdGhlIGNvbW1pdCBtZXNzYWdlIGZpbGUuCisjCisjIFRvIGVuYWJsZSB0aGlzIGhvb2ssIHJlbmFtZSB0aGlzIGZpbGUgdG8gImFwcGx5cGF0Y2gtbXNnIi4KKworLiBnaXQtc2gtc2V0dXAKK3Rlc3QgLXggIiRHSVRfRElSL2hvb2tzL2NvbW1pdC1tc2ciICYmCisJZXhlYyAiJEdJVF9ESVIvaG9va3MvY29tbWl0LW1zZyIgJHsxKyIkQCJ9Cis6CmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL2NvbW1pdC1tc2cuc2FtcGxlIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9jb21taXQtbXNnLnNhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNThkMTE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9jb21taXQtbXNnLnNhbXBsZQpAQCAtMCwwICsxLDI0IEBACisjIS9iaW4vc2gKKyMKKyMgQW4gZXhhbXBsZSBob29rIHNjcmlwdCB0byBjaGVjayB0aGUgY29tbWl0IGxvZyBtZXNzYWdlLgorIyBDYWxsZWQgYnkgImdpdCBjb21taXQiIHdpdGggb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgZmlsZQorIyB0aGF0IGhhcyB0aGUgY29tbWl0IG1lc3NhZ2UuICBUaGUgaG9vayBzaG91bGQgZXhpdCB3aXRoIG5vbi16ZXJvCisjIHN0YXR1cyBhZnRlciBpc3N1aW5nIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2UgaWYgaXQgd2FudHMgdG8gc3RvcCB0aGUKKyMgY29tbWl0LiAgVGhlIGhvb2sgaXMgYWxsb3dlZCB0byBlZGl0IHRoZSBjb21taXQgbWVzc2FnZSBmaWxlLgorIworIyBUbyBlbmFibGUgdGhpcyBob29rLCByZW5hbWUgdGhpcyBmaWxlIHRvICJjb21taXQtbXNnIi4KKworIyBVbmNvbW1lbnQgdGhlIGJlbG93IHRvIGFkZCBhIFNpZ25lZC1vZmYtYnkgbGluZSB0byB0aGUgbWVzc2FnZS4KKyMgRG9pbmcgdGhpcyBpbiBhIGhvb2sgaXMgYSBiYWQgaWRlYSBpbiBnZW5lcmFsLCBidXQgdGhlIHByZXBhcmUtY29tbWl0LW1zZworIyBob29rIGlzIG1vcmUgc3VpdGVkIHRvIGl0LgorIworIyBTT0I9JChnaXQgdmFyIEdJVF9BVVRIT1JfSURFTlQgfCBzZWQgLW4gJ3MvXlwoLio+XCkuKiQvU2lnbmVkLW9mZi1ieTogXDEvcCcpCisjIGdyZXAgLXFzICJeJFNPQiIgIiQxIiB8fCBlY2hvICIkU09CIiA+PiAiJDEiCisKKyMgVGhpcyBleGFtcGxlIGNhdGNoZXMgZHVwbGljYXRlIFNpZ25lZC1vZmYtYnkgbGluZXMuCisKK3Rlc3QgIiIgPSAiJChncmVwICdeU2lnbmVkLW9mZi1ieTogJyAiJDEiIHwKKwkgc29ydCB8IHVuaXEgLWMgfCBzZWQgLWUgJy9eWyAJXSoxWyAJXS9kJykiIHx8IHsKKwllY2hvID4mMiBEdXBsaWNhdGUgU2lnbmVkLW9mZi1ieSBsaW5lcy4KKwlleGl0IDEKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9wb3N0LXVwZGF0ZS5zYW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMxN2VjMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoCisjCisjIEFuIGV4YW1wbGUgaG9vayBzY3JpcHQgdG8gcHJlcGFyZSBhIHBhY2tlZCByZXBvc2l0b3J5IGZvciB1c2Ugb3ZlcgorIyBkdW1iIHRyYW5zcG9ydHMuCisjCisjIFRvIGVuYWJsZSB0aGlzIGhvb2ssIHJlbmFtZSB0aGlzIGZpbGUgdG8gInBvc3QtdXBkYXRlIi4KKworZXhlYyBnaXQgdXBkYXRlLXNlcnZlci1pbmZvCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1hcHBseXBhdGNoLnNhbXBsZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlLWFwcGx5cGF0Y2guc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZjE4N2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1hcHBseXBhdGNoLnNhbXBsZQpAQCAtMCwwICsxLDE0IEBACisjIS9iaW4vc2gKKyMKKyMgQW4gZXhhbXBsZSBob29rIHNjcmlwdCB0byB2ZXJpZnkgd2hhdCBpcyBhYm91dCB0byBiZSBjb21taXR0ZWQKKyMgYnkgYXBwbHlwYXRjaCBmcm9tIGFuIGUtbWFpbCBtZXNzYWdlLgorIworIyBUaGUgaG9vayBzaG91bGQgZXhpdCB3aXRoIG5vbi16ZXJvIHN0YXR1cyBhZnRlciBpc3N1aW5nIGFuCisjIGFwcHJvcHJpYXRlIG1lc3NhZ2UgaWYgaXQgd2FudHMgdG8gc3RvcCB0aGUgY29tbWl0LgorIworIyBUbyBlbmFibGUgdGhpcyBob29rLCByZW5hbWUgdGhpcyBmaWxlIHRvICJwcmUtYXBwbHlwYXRjaCIuCisKKy4gZ2l0LXNoLXNldHVwCit0ZXN0IC14ICIkR0lUX0RJUi9ob29rcy9wcmUtY29tbWl0IiAmJgorCWV4ZWMgIiRHSVRfRElSL2hvb2tzL3ByZS1jb21taXQiICR7MSsiJEAifQorOgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9wcmUtY29tbWl0LnNhbXBsZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlLWNvbW1pdC5zYW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhkNjJkNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlLWNvbW1pdC5zYW1wbGUKQEAgLTAsMCArMSw0OSBAQAorIyEvYmluL3NoCisjCisjIEFuIGV4YW1wbGUgaG9vayBzY3JpcHQgdG8gdmVyaWZ5IHdoYXQgaXMgYWJvdXQgdG8gYmUgY29tbWl0dGVkLgorIyBDYWxsZWQgYnkgImdpdCBjb21taXQiIHdpdGggbm8gYXJndW1lbnRzLiAgVGhlIGhvb2sgc2hvdWxkCisjIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMgYWZ0ZXIgaXNzdWluZyBhbiBhcHByb3ByaWF0ZSBtZXNzYWdlIGlmCisjIGl0IHdhbnRzIHRvIHN0b3AgdGhlIGNvbW1pdC4KKyMKKyMgVG8gZW5hYmxlIHRoaXMgaG9vaywgcmVuYW1lIHRoaXMgZmlsZSB0byAicHJlLWNvbW1pdCIuCisKK2lmIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCA+L2Rldi9udWxsIDI+JjEKK3RoZW4KKwlhZ2FpbnN0PUhFQUQKK2Vsc2UKKwkjIEluaXRpYWwgY29tbWl0OiBkaWZmIGFnYWluc3QgYW4gZW1wdHkgdHJlZSBvYmplY3QKKwlhZ2FpbnN0PTRiODI1ZGM2NDJjYjZlYjlhMDYwZTU0YmY4ZDY5Mjg4ZmJlZTQ5MDQKK2ZpCisKKyMgSWYgeW91IHdhbnQgdG8gYWxsb3cgbm9uLUFTQ0lJIGZpbGVuYW1lcyBzZXQgdGhpcyB2YXJpYWJsZSB0byB0cnVlLgorYWxsb3dub25hc2NpaT0kKGdpdCBjb25maWcgLS1ib29sIGhvb2tzLmFsbG93bm9uYXNjaWkpCisKKyMgUmVkaXJlY3Qgb3V0cHV0IHRvIHN0ZGVyci4KK2V4ZWMgMT4mMgorCisjIENyb3NzIHBsYXRmb3JtIHByb2plY3RzIHRlbmQgdG8gYXZvaWQgbm9uLUFTQ0lJIGZpbGVuYW1lczsgcHJldmVudAorIyB0aGVtIGZyb20gYmVpbmcgYWRkZWQgdG8gdGhlIHJlcG9zaXRvcnkuIFdlIGV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUKKyMgcHJpbnRhYmxlIHJhbmdlIHN0YXJ0cyBhdCB0aGUgc3BhY2UgY2hhcmFjdGVyIGFuZCBlbmRzIHdpdGggdGlsZGUuCitpZiBbICIkYWxsb3dub25hc2NpaSIgIT0gInRydWUiIF0gJiYKKwkjIE5vdGUgdGhhdCB0aGUgdXNlIG9mIGJyYWNrZXRzIGFyb3VuZCBhIHRyIHJhbmdlIGlzIG9rIGhlcmUsIChpdCdzCisJIyBldmVuIHJlcXVpcmVkLCBmb3IgcG9ydGFiaWxpdHkgdG8gU29sYXJpcyAxMCdzIC91c3IvYmluL3RyKSwgc2luY2UKKwkjIHRoZSBzcXVhcmUgYnJhY2tldCBieXRlcyBoYXBwZW4gdG8gZmFsbCBpbiB0aGUgZGVzaWduYXRlZCByYW5nZS4KKwl0ZXN0ICQoZ2l0IGRpZmYgLS1jYWNoZWQgLS1uYW1lLW9ubHkgLS1kaWZmLWZpbHRlcj1BIC16ICRhZ2FpbnN0IHwKKwkgIExDX0FMTD1DIHRyIC1kICdbIC1+XVwwJyB8IHdjIC1jKSAhPSAwCit0aGVuCisJY2F0IDw8XEVPRgorRXJyb3I6IEF0dGVtcHQgdG8gYWRkIGEgbm9uLUFTQ0lJIGZpbGUgbmFtZS4KKworVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIHBlb3BsZSBvbiBvdGhlciBwbGF0Zm9ybXMuCisKK1RvIGJlIHBvcnRhYmxlIGl0IGlzIGFkdmlzYWJsZSB0byByZW5hbWUgdGhlIGZpbGUuCisKK0lmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyB5b3UgY2FuIGRpc2FibGUgdGhpcyBjaGVjayB1c2luZzoKKworICBnaXQgY29uZmlnIGhvb2tzLmFsbG93bm9uYXNjaWkgdHJ1ZQorRU9GCisJZXhpdCAxCitmaQorCisjIElmIHRoZXJlIGFyZSB3aGl0ZXNwYWNlIGVycm9ycywgcHJpbnQgdGhlIG9mZmVuZGluZyBmaWxlIG5hbWVzIGFuZCBmYWlsLgorZXhlYyBnaXQgZGlmZi1pbmRleCAtLWNoZWNrIC0tY2FjaGVkICRhZ2FpbnN0IC0tCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1wdXNoLnNhbXBsZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlLXB1c2guc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmM2JjZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1wdXNoLnNhbXBsZQpAQCAtMCwwICsxLDU0IEBACisjIS9iaW4vc2gKKworIyBBbiBleGFtcGxlIGhvb2sgc2NyaXB0IHRvIHZlcmlmeSB3aGF0IGlzIGFib3V0IHRvIGJlIHB1c2hlZC4gIENhbGxlZCBieSAiZ2l0CisjIHB1c2giIGFmdGVyIGl0IGhhcyBjaGVja2VkIHRoZSByZW1vdGUgc3RhdHVzLCBidXQgYmVmb3JlIGFueXRoaW5nIGhhcyBiZWVuCisjIHB1c2hlZC4gIElmIHRoaXMgc2NyaXB0IGV4aXRzIHdpdGggYSBub24temVybyBzdGF0dXMgbm90aGluZyB3aWxsIGJlIHB1c2hlZC4KKyMKKyMgVGhpcyBob29rIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKyMKKyMgJDEgLS0gTmFtZSBvZiB0aGUgcmVtb3RlIHRvIHdoaWNoIHRoZSBwdXNoIGlzIGJlaW5nIGRvbmUKKyMgJDIgLS0gVVJMIHRvIHdoaWNoIHRoZSBwdXNoIGlzIGJlaW5nIGRvbmUKKyMKKyMgSWYgcHVzaGluZyB3aXRob3V0IHVzaW5nIGEgbmFtZWQgcmVtb3RlIHRob3NlIGFyZ3VtZW50cyB3aWxsIGJlIGVxdWFsLgorIworIyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tbWl0cyB3aGljaCBhcmUgYmVpbmcgcHVzaGVkIGlzIHN1cHBsaWVkIGFzIGxpbmVzIHRvCisjIHRoZSBzdGFuZGFyZCBpbnB1dCBpbiB0aGUgZm9ybToKKyMKKyMgICA8bG9jYWwgcmVmPiA8bG9jYWwgc2hhMT4gPHJlbW90ZSByZWY+IDxyZW1vdGUgc2hhMT4KKyMKKyMgVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHByZXZlbnQgcHVzaCBvZiBjb21taXRzIHdoZXJlIHRoZSBsb2cgbWVzc2FnZSBzdGFydHMKKyMgd2l0aCAiV0lQIiAod29yayBpbiBwcm9ncmVzcykuCisKK3JlbW90ZT0iJDEiCit1cmw9IiQyIgorCit6NDA9MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorCitJRlM9JyAnCit3aGlsZSByZWFkIGxvY2FsX3JlZiBsb2NhbF9zaGEgcmVtb3RlX3JlZiByZW1vdGVfc2hhCitkbworCWlmIFsgIiRsb2NhbF9zaGEiID0gJHo0MCBdCisJdGhlbgorCQkjIEhhbmRsZSBkZWxldGUKKwkJOgorCWVsc2UKKwkJaWYgWyAiJHJlbW90ZV9zaGEiID0gJHo0MCBdCisJCXRoZW4KKwkJCSMgTmV3IGJyYW5jaCwgZXhhbWluZSBhbGwgY29tbWl0cworCQkJcmFuZ2U9IiRsb2NhbF9zaGEiCisJCWVsc2UKKwkJCSMgVXBkYXRlIHRvIGV4aXN0aW5nIGJyYW5jaCwgZXhhbWluZSBuZXcgY29tbWl0cworCQkJcmFuZ2U9IiRyZW1vdGVfc2hhLi4kbG9jYWxfc2hhIgorCQlmaQorCisJCSMgQ2hlY2sgZm9yIFdJUCBjb21taXQKKwkJY29tbWl0PWBnaXQgcmV2LWxpc3QgLW4gMSAtLWdyZXAgJ15XSVAnICIkcmFuZ2UiYAorCQlpZiBbIC1uICIkY29tbWl0IiBdCisJCXRoZW4KKwkJCWVjaG8gIkZvdW5kIFdJUCBjb21taXQgaW4gJGxvY2FsX3JlZiwgbm90IHB1c2hpbmciCisJCQlleGl0IDEKKwkJZmkKKwlmaQorZG9uZQorCitleGl0IDAKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlLXJlYmFzZS5zYW1wbGUgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1yZWJhc2Uuc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzNlZDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2hvb2tzL3ByZS1yZWJhc2Uuc2FtcGxlCkBAIC0wLDAgKzEsMTY5IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IEp1bmlvIEMgSGFtYW5vCisjCisjIFRoZSAicHJlLXJlYmFzZSIgaG9vayBpcyBydW4ganVzdCBiZWZvcmUgImdpdCByZWJhc2UiIHN0YXJ0cyBkb2luZworIyBpdHMgam9iLCBhbmQgY2FuIHByZXZlbnQgdGhlIGNvbW1hbmQgZnJvbSBydW5uaW5nIGJ5IGV4aXRpbmcgd2l0aAorIyBub24temVybyBzdGF0dXMuCisjCisjIFRoZSBob29rIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKyMKKyMgJDEgLS0gdGhlIHVwc3RyZWFtIHRoZSBzZXJpZXMgd2FzIGZvcmtlZCBmcm9tLgorIyAkMiAtLSB0aGUgYnJhbmNoIGJlaW5nIHJlYmFzZWQgKG9yIGVtcHR5IHdoZW4gcmViYXNpbmcgdGhlIGN1cnJlbnQgYnJhbmNoKS4KKyMKKyMgVGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHByZXZlbnQgdG9waWMgYnJhbmNoZXMgdGhhdCBhcmUgYWxyZWFkeQorIyBtZXJnZWQgdG8gJ25leHQnIGJyYW5jaCBmcm9tIGdldHRpbmcgcmViYXNlZCwgYmVjYXVzZSBhbGxvd2luZyBpdAorIyB3b3VsZCByZXN1bHQgaW4gcmViYXNpbmcgYWxyZWFkeSBwdWJsaXNoZWQgaGlzdG9yeS4KKworcHVibGlzaD1uZXh0CitiYXNlYnJhbmNoPSIkMSIKK2lmIHRlc3QgIiQjIiA9IDIKK3RoZW4KKwl0b3BpYz0icmVmcy9oZWFkcy8kMiIKK2Vsc2UKKwl0b3BpYz1gZ2l0IHN5bWJvbGljLXJlZiBIRUFEYCB8fAorCWV4aXQgMCA7IyB3ZSBkbyBub3QgaW50ZXJydXB0IHJlYmFzaW5nIGRldGFjaGVkIEhFQUQKK2ZpCisKK2Nhc2UgIiR0b3BpYyIgaW4KK3JlZnMvaGVhZHMvPz8vKikKKwk7OworKikKKwlleGl0IDAgOyMgd2UgZG8gbm90IGludGVycnVwdCBvdGhlcnMuCisJOzsKK2VzYWMKKworIyBOb3cgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHRvcGljIGJyYW5jaCBiZWluZyByZWJhc2VkCisjIG9uIHRvcCBvZiBtYXN0ZXIuICBJcyBpdCBPSyB0byByZWJhc2UgaXQ/CisKKyMgRG9lcyB0aGUgdG9waWMgcmVhbGx5IGV4aXN0PworZ2l0IHNob3ctcmVmIC1xICIkdG9waWMiIHx8IHsKKwllY2hvID4mMiAiTm8gc3VjaCBicmFuY2ggJHRvcGljIgorCWV4aXQgMQorfQorCisjIElzIHRvcGljIGZ1bGx5IG1lcmdlZCB0byBtYXN0ZXI/Citub3RfaW5fbWFzdGVyPWBnaXQgcmV2LWxpc3QgLS1wcmV0dHk9b25lbGluZSBebWFzdGVyICIkdG9waWMiYAoraWYgdGVzdCAteiAiJG5vdF9pbl9tYXN0ZXIiCit0aGVuCisJZWNobyA+JjIgIiR0b3BpYyBpcyBmdWxseSBtZXJnZWQgdG8gbWFzdGVyOyBiZXR0ZXIgcmVtb3ZlIGl0LiIKKwlleGl0IDEgOyMgd2UgY291bGQgYWxsb3cgaXQsIGJ1dCB0aGVyZSBpcyBubyBwb2ludC4KK2ZpCisKKyMgSXMgdG9waWMgZXZlciBtZXJnZWQgdG8gbmV4dD8gIElmIHNvIHlvdSBzaG91bGQgbm90IGJlIHJlYmFzaW5nIGl0Lgorb25seV9uZXh0XzE9YGdpdCByZXYtbGlzdCBebWFzdGVyICJeJHRvcGljIiAke3B1Ymxpc2h9IHwgc29ydGAKK29ubHlfbmV4dF8yPWBnaXQgcmV2LWxpc3QgXm1hc3RlciAgICAgICAgICAgJHtwdWJsaXNofSB8IHNvcnRgCitpZiB0ZXN0ICIkb25seV9uZXh0XzEiID0gIiRvbmx5X25leHRfMiIKK3RoZW4KKwlub3RfaW5fdG9waWM9YGdpdCByZXYtbGlzdCAiXiR0b3BpYyIgbWFzdGVyYAorCWlmIHRlc3QgLXogIiRub3RfaW5fdG9waWMiCisJdGhlbgorCQllY2hvID4mMiAiJHRvcGljIGlzIGFscmVhZHkgdXAtdG8tZGF0ZSB3aXRoIG1hc3RlciIKKwkJZXhpdCAxIDsjIHdlIGNvdWxkIGFsbG93IGl0LCBidXQgdGhlcmUgaXMgbm8gcG9pbnQuCisJZWxzZQorCQlleGl0IDAKKwlmaQorZWxzZQorCW5vdF9pbl9uZXh0PWBnaXQgcmV2LWxpc3QgLS1wcmV0dHk9b25lbGluZSBeJHtwdWJsaXNofSAiJHRvcGljImAKKwkvdXNyL2Jpbi9wZXJsIC1lICcKKwkJbXkgJHRvcGljID0gJEFSR1ZbMF07CisJCW15ICRtc2cgPSAiKiAkdG9waWMgaGFzIGNvbW1pdHMgYWxyZWFkeSBtZXJnZWQgdG8gcHVibGljIGJyYW5jaDpcbiI7CisJCW15ICglbm90X2luX25leHQpID0gbWFwIHsKKwkJCS9eKFswLTlhLWZdKykgLzsKKwkJCSgkMSA9PiAxKTsKKwkJfSBzcGxpdCgvXG4vLCAkQVJHVlsxXSk7CisJCWZvciBteSAkZWxlbSAobWFwIHsKKwkJCQkvXihbMC05YS1mXSspICguKikkLzsKKwkJCQlbJDEgPT4gJDJdOworCQkJfSBzcGxpdCgvXG4vLCAkQVJHVlsyXSkpIHsKKwkJCWlmICghZXhpc3RzICRub3RfaW5fbmV4dHskZWxlbS0+WzBdfSkgeworCQkJCWlmICgkbXNnKSB7CisJCQkJCXByaW50IFNUREVSUiAkbXNnOworCQkJCQl1bmRlZiAkbXNnOworCQkJCX0KKwkJCQlwcmludCBTVERFUlIgIiAkZWxlbS0+WzFdXG4iOworCQkJfQorCQl9CisJJyAiJHRvcGljIiAiJG5vdF9pbl9uZXh0IiAiJG5vdF9pbl9tYXN0ZXIiCisJZXhpdCAxCitmaQorCitleGl0IDAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitUaGlzIHNhbXBsZSBob29rIHNhZmVndWFyZHMgdG9waWMgYnJhbmNoZXMgdGhhdCBoYXZlIGJlZW4KK3B1Ymxpc2hlZCBmcm9tIGJlaW5nIHJld291bmQuCisKK1RoZSB3b3JrZmxvdyBhc3N1bWVkIGhlcmUgaXM6CisKKyAqIE9uY2UgYSB0b3BpYyBicmFuY2ggZm9ya3MgZnJvbSAibWFzdGVyIiwgIm1hc3RlciIgaXMgbmV2ZXIKKyAgIG1lcmdlZCBpbnRvIGl0IGFnYWluIChlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkuCisKKyAqIE9uY2UgYSB0b3BpYyBicmFuY2ggaXMgZnVsbHkgY29va2VkIGFuZCBtZXJnZWQgaW50byAibWFzdGVyIiwKKyAgIGl0IGlzIGRlbGV0ZWQuICBJZiB5b3UgbmVlZCB0byBidWlsZCBvbiB0b3Agb2YgaXQgdG8gY29ycmVjdAorICAgZWFybGllciBtaXN0YWtlcywgYSBuZXcgdG9waWMgYnJhbmNoIGlzIGNyZWF0ZWQgYnkgZm9ya2luZyBhdAorICAgdGhlIHRpcCBvZiB0aGUgIm1hc3RlciIuICBUaGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dAorICAgaXQgbWFrZXMgaXQgZWFzaWVyIHRvIGtlZXAgeW91ciBoaXN0b3J5IHNpbXBsZS4KKworICogV2hlbmV2ZXIgeW91IG5lZWQgdG8gdGVzdCBvciBwdWJsaXNoIHlvdXIgY2hhbmdlcyB0byB0b3BpYworICAgYnJhbmNoZXMsIG1lcmdlIHRoZW0gaW50byAibmV4dCIgYnJhbmNoLgorCitUaGUgc2NyaXB0LCBiZWluZyBhbiBleGFtcGxlLCBoYXJkY29kZXMgdGhlIHB1Ymxpc2ggYnJhbmNoIG5hbWUKK3RvIGJlICJuZXh0IiwgYnV0IGl0IGlzIHRyaXZpYWwgdG8gbWFrZSBpdCBjb25maWd1cmFibGUgdmlhCiskR0lUX0RJUi9jb25maWcgbWVjaGFuaXNtLgorCitXaXRoIHRoaXMgd29ya2Zsb3csIHlvdSB3b3VsZCB3YW50IHRvIGtub3c6CisKKygxKSAuLi4gaWYgYSB0b3BpYyBicmFuY2ggaGFzIGV2ZXIgYmVlbiBtZXJnZWQgdG8gIm5leHQiLiAgWW91bmcKKyAgICB0b3BpYyBicmFuY2hlcyBjYW4gaGF2ZSBzdHVwaWQgbWlzdGFrZXMgeW91IHdvdWxkIHJhdGhlcgorICAgIGNsZWFuIHVwIGJlZm9yZSBwdWJsaXNoaW5nLCBhbmQgdGhpbmdzIHRoYXQgaGF2ZSBub3QgYmVlbgorICAgIG1lcmdlZCBpbnRvIG90aGVyIGJyYW5jaGVzIGNhbiBiZSBlYXNpbHkgcmViYXNlZCB3aXRob3V0CisgICAgYWZmZWN0aW5nIG90aGVyIHBlb3BsZS4gIEJ1dCBvbmNlIGl0IGlzIHB1Ymxpc2hlZCwgeW91IHdvdWxkCisgICAgbm90IHdhbnQgdG8gcmV3aW5kIGl0LgorCisoMikgLi4uIGlmIGEgdG9waWMgYnJhbmNoIGhhcyBiZWVuIGZ1bGx5IG1lcmdlZCB0byAibWFzdGVyIi4KKyAgICBUaGVuIHlvdSBjYW4gZGVsZXRlIGl0LiAgTW9yZSBpbXBvcnRhbnRseSwgeW91IHNob3VsZCBub3QKKyAgICBidWlsZCBvbiB0b3Agb2YgaXQgLS0gb3RoZXIgcGVvcGxlIG1heSBhbHJlYWR5IHdhbnQgdG8KKyAgICBjaGFuZ2UgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIHRvcGljIGFzIHBhdGNoZXMgYWdhaW5zdCB5b3VyCisgICAgIm1hc3RlciIsIHNvIGlmIHlvdSBuZWVkIGZ1cnRoZXIgY2hhbmdlcywgaXQgaXMgYmV0dGVyIHRvCisgICAgZm9yayB0aGUgdG9waWMgKHBlcmhhcHMgd2l0aCB0aGUgc2FtZSBuYW1lKSBhZnJlc2ggZnJvbSB0aGUKKyAgICB0aXAgb2YgIm1hc3RlciIuCisKK0xldCdzIGxvb2sgYXQgdGhpcyBleGFtcGxlOgorCisJCSAgIG8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8gIm5leHQiCisJCSAgLyAgICAgICAvICAgICAgICAgICAvICAgICAgICAgICAvCisJCSAvICAgYS0tLWEtLS1iIEEgICAgIC8gICAgICAgICAgIC8KKwkJLyAgIC8gICAgICAgICAgICAgICAvICAgICAgICAgICAvCisJICAgICAgIC8gICAvICAgYy0tLWMtLS1jLS0tYyBCICAgICAgICAgLworCSAgICAgIC8gICAvICAgLyAgICAgICAgICAgICBcICAgICAgICAgLworCSAgICAgLyAgIC8gICAvICAgYi0tLWIgQyAgICAgXCAgICAgICAvCisJICAgIC8gICAvICAgLyAgIC8gICAgICAgICAgICAgXCAgICAgLworICAgIC0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vICJtYXN0ZXIiCisKKworQSwgQiBhbmQgQyBhcmUgdG9waWMgYnJhbmNoZXMuCisKKyAqIEEgaGFzIG9uZSBmaXggc2luY2UgaXQgd2FzIG1lcmdlZCB1cCB0byAibmV4dCIuCisKKyAqIEIgaGFzIGZpbmlzaGVkLiAgSXQgaGFzIGJlZW4gZnVsbHkgbWVyZ2VkIHVwIHRvICJtYXN0ZXIiIGFuZCAibmV4dCIsCisgICBhbmQgaXMgcmVhZHkgdG8gYmUgZGVsZXRlZC4KKworICogQyBoYXMgbm90IG1lcmdlZCB0byAibmV4dCIgYXQgYWxsLgorCitXZSB3b3VsZCB3YW50IHRvIGFsbG93IEMgdG8gYmUgcmViYXNlZCwgcmVmdXNlIEEsIGFuZCBlbmNvdXJhZ2UKK0IgdG8gYmUgZGVsZXRlZC4KKworVG8gY29tcHV0ZSAoMSk6CisKKwlnaXQgcmV2LWxpc3QgXm1hc3RlciBedG9waWMgbmV4dAorCWdpdCByZXYtbGlzdCBebWFzdGVyICAgICAgICBuZXh0CisKKwlpZiB0aGVzZSBtYXRjaCwgdG9waWMgaGFzIG5vdCBtZXJnZWQgaW4gbmV4dCBhdCBhbGwuCisKK1RvIGNvbXB1dGUgKDIpOgorCisJZ2l0IHJldi1saXN0IG1hc3Rlci4udG9waWMKKworCWlmIHRoaXMgaXMgZW1wdHksIGl0IGlzIGZ1bGx5IG1lcmdlZCB0byAibWFzdGVyIi4KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlcGFyZS1jb21taXQtbXNnLnNhbXBsZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvcHJlcGFyZS1jb21taXQtbXNnLnNhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDkzYTAyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy9wcmVwYXJlLWNvbW1pdC1tc2cuc2FtcGxlCkBAIC0wLDAgKzEsMzYgQEAKKyMhL2Jpbi9zaAorIworIyBBbiBleGFtcGxlIGhvb2sgc2NyaXB0IHRvIHByZXBhcmUgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZS4KKyMgQ2FsbGVkIGJ5ICJnaXQgY29tbWl0IiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaGFzIHRoZQorIyBjb21taXQgbWVzc2FnZSwgZm9sbG93ZWQgYnkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb21taXQKKyMgbWVzc2FnZSdzIHNvdXJjZS4gIFRoZSBob29rJ3MgcHVycG9zZSBpcyB0byBlZGl0IHRoZSBjb21taXQKKyMgbWVzc2FnZSBmaWxlLiAgSWYgdGhlIGhvb2sgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cywKKyMgdGhlIGNvbW1pdCBpcyBhYm9ydGVkLgorIworIyBUbyBlbmFibGUgdGhpcyBob29rLCByZW5hbWUgdGhpcyBmaWxlIHRvICJwcmVwYXJlLWNvbW1pdC1tc2ciLgorCisjIFRoaXMgaG9vayBpbmNsdWRlcyB0aHJlZSBleGFtcGxlcy4gIFRoZSBmaXJzdCBjb21tZW50cyBvdXQgdGhlCisjICJDb25mbGljdHM6IiBwYXJ0IG9mIGEgbWVyZ2UgY29tbWl0LgorIworIyBUaGUgc2Vjb25kIGluY2x1ZGVzIHRoZSBvdXRwdXQgb2YgImdpdCBkaWZmIC0tbmFtZS1zdGF0dXMgLXIiCisjIGludG8gdGhlIG1lc3NhZ2UsIGp1c3QgYmVmb3JlIHRoZSAiZ2l0IHN0YXR1cyIgb3V0cHV0LiAgSXQgaXMKKyMgY29tbWVudGVkIGJlY2F1c2UgaXQgZG9lc24ndCBjb3BlIHdpdGggLS1hbWVuZCBvciB3aXRoIHNxdWFzaGVkCisjIGNvbW1pdHMuCisjCisjIFRoZSB0aGlyZCBleGFtcGxlIGFkZHMgYSBTaWduZWQtb2ZmLWJ5IGxpbmUgdG8gdGhlIG1lc3NhZ2UsIHRoYXQgY2FuCisjIHN0aWxsIGJlIGVkaXRlZC4gIFRoaXMgaXMgcmFyZWx5IGEgZ29vZCBpZGVhLgorCitjYXNlICIkMiwkMyIgaW4KKyAgbWVyZ2UsKQorICAgIC91c3IvYmluL3BlcmwgLWkuYmFrIC1uZSAncy9eLyMgLywgcy9eIyAjLyMvIGlmIC9eQ29uZmxpY3RzLyAuLiAvIy87IHByaW50JyAiJDEiIDs7CisKKyMgLHx0ZW1wbGF0ZSwpCisjICAgL3Vzci9iaW4vcGVybCAtaS5iYWsgLXBlICcKKyMgICAgICBwcmludCAiXG4iIC4gYGdpdCBkaWZmIC0tY2FjaGVkIC0tbmFtZS1zdGF0dXMgLXJgCisjCSBpZiAvXiMvICYmICRmaXJzdCsrID09IDAnICIkMSIgOzsKKworICAqKSA7OworZXNhYworCisjIFNPQj0kKGdpdCB2YXIgR0lUX0FVVEhPUl9JREVOVCB8IHNlZCAtbiAncy9eXCguKj5cKS4qJC9TaWduZWQtb2ZmLWJ5OiBcMS9wJykKKyMgZ3JlcCAtcXMgIl4kU09CIiAiJDEiIHx8IGVjaG8gIiRTT0IiID4+ICIkMSIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvdXBkYXRlLnNhbXBsZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaG9va3MvdXBkYXRlLnNhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQ3NTgzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9ob29rcy91cGRhdGUuc2FtcGxlCkBAIC0wLDAgKzEsMTI4IEBACisjIS9iaW4vc2gKKyMKKyMgQW4gZXhhbXBsZSBob29rIHNjcmlwdCB0byBibG9ja3MgdW5hbm5vdGF0ZWQgdGFncyBmcm9tIGVudGVyaW5nLgorIyBDYWxsZWQgYnkgImdpdCByZWNlaXZlLXBhY2siIHdpdGggYXJndW1lbnRzOiByZWZuYW1lIHNoYTEtb2xkIHNoYTEtbmV3CisjCisjIFRvIGVuYWJsZSB0aGlzIGhvb2ssIHJlbmFtZSB0aGlzIGZpbGUgdG8gInVwZGF0ZSIuCisjCisjIENvbmZpZworIyAtLS0tLS0KKyMgaG9va3MuYWxsb3d1bmFubm90YXRlZAorIyAgIFRoaXMgYm9vbGVhbiBzZXRzIHdoZXRoZXIgdW5hbm5vdGF0ZWQgdGFncyB3aWxsIGJlIGFsbG93ZWQgaW50byB0aGUKKyMgICByZXBvc2l0b3J5LiAgQnkgZGVmYXVsdCB0aGV5IHdvbid0IGJlLgorIyBob29rcy5hbGxvd2RlbGV0ZXRhZworIyAgIFRoaXMgYm9vbGVhbiBzZXRzIHdoZXRoZXIgZGVsZXRpbmcgdGFncyB3aWxsIGJlIGFsbG93ZWQgaW4gdGhlCisjICAgcmVwb3NpdG9yeS4gIEJ5IGRlZmF1bHQgdGhleSB3b24ndCBiZS4KKyMgaG9va3MuYWxsb3dtb2RpZnl0YWcKKyMgICBUaGlzIGJvb2xlYW4gc2V0cyB3aGV0aGVyIGEgdGFnIG1heSBiZSBtb2RpZmllZCBhZnRlciBjcmVhdGlvbi4gQnkgZGVmYXVsdAorIyAgIGl0IHdvbid0IGJlLgorIyBob29rcy5hbGxvd2RlbGV0ZWJyYW5jaAorIyAgIFRoaXMgYm9vbGVhbiBzZXRzIHdoZXRoZXIgZGVsZXRpbmcgYnJhbmNoZXMgd2lsbCBiZSBhbGxvd2VkIGluIHRoZQorIyAgIHJlcG9zaXRvcnkuICBCeSBkZWZhdWx0IHRoZXkgd29uJ3QgYmUuCisjIGhvb2tzLmRlbnljcmVhdGVicmFuY2gKKyMgICBUaGlzIGJvb2xlYW4gc2V0cyB3aGV0aGVyIHJlbW90ZWx5IGNyZWF0aW5nIGJyYW5jaGVzIHdpbGwgYmUgZGVuaWVkCisjICAgaW4gdGhlIHJlcG9zaXRvcnkuICBCeSBkZWZhdWx0IHRoaXMgaXMgYWxsb3dlZC4KKyMKKworIyAtLS0gQ29tbWFuZCBsaW5lCityZWZuYW1lPSIkMSIKK29sZHJldj0iJDIiCituZXdyZXY9IiQzIgorCisjIC0tLSBTYWZldHkgY2hlY2sKK2lmIFsgLXogIiRHSVRfRElSIiBdOyB0aGVuCisJZWNobyAiRG9uJ3QgcnVuIHRoaXMgc2NyaXB0IGZyb20gdGhlIGNvbW1hbmQgbGluZS4iID4mMgorCWVjaG8gIiAoaWYgeW91IHdhbnQsIHlvdSBjb3VsZCBzdXBwbHkgR0lUX0RJUiB0aGVuIHJ1biIgPiYyCisJZWNobyAiICAkMCA8cmVmPiA8b2xkcmV2PiA8bmV3cmV2PikiID4mMgorCWV4aXQgMQorZmkKKworaWYgWyAteiAiJHJlZm5hbWUiIC1vIC16ICIkb2xkcmV2IiAtbyAteiAiJG5ld3JldiIgXTsgdGhlbgorCWVjaG8gInVzYWdlOiAkMCA8cmVmPiA8b2xkcmV2PiA8bmV3cmV2PiIgPiYyCisJZXhpdCAxCitmaQorCisjIC0tLSBDb25maWcKK2FsbG93dW5hbm5vdGF0ZWQ9JChnaXQgY29uZmlnIC0tYm9vbCBob29rcy5hbGxvd3VuYW5ub3RhdGVkKQorYWxsb3dkZWxldGVicmFuY2g9JChnaXQgY29uZmlnIC0tYm9vbCBob29rcy5hbGxvd2RlbGV0ZWJyYW5jaCkKK2RlbnljcmVhdGVicmFuY2g9JChnaXQgY29uZmlnIC0tYm9vbCBob29rcy5kZW55Y3JlYXRlYnJhbmNoKQorYWxsb3dkZWxldGV0YWc9JChnaXQgY29uZmlnIC0tYm9vbCBob29rcy5hbGxvd2RlbGV0ZXRhZykKK2FsbG93bW9kaWZ5dGFnPSQoZ2l0IGNvbmZpZyAtLWJvb2wgaG9va3MuYWxsb3dtb2RpZnl0YWcpCisKKyMgY2hlY2sgZm9yIG5vIGRlc2NyaXB0aW9uCitwcm9qZWN0ZGVzYz0kKHNlZCAtZSAnMXEnICIkR0lUX0RJUi9kZXNjcmlwdGlvbiIpCitjYXNlICIkcHJvamVjdGRlc2MiIGluCisiVW5uYW1lZCByZXBvc2l0b3J5IiogfCAiIikKKwllY2hvICIqKiogUHJvamVjdCBkZXNjcmlwdGlvbiBmaWxlIGhhc24ndCBiZWVuIHNldCIgPiYyCisJZXhpdCAxCisJOzsKK2VzYWMKKworIyAtLS0gQ2hlY2sgdHlwZXMKKyMgaWYgJG5ld3JldiBpcyAwMDAwLi4uMDAwMCwgaXQncyBhIGNvbW1pdCB0byBkZWxldGUgYSByZWYuCit6ZXJvPSIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgoraWYgWyAiJG5ld3JldiIgPSAiJHplcm8iIF07IHRoZW4KKwluZXdyZXZfdHlwZT1kZWxldGUKK2Vsc2UKKwluZXdyZXZfdHlwZT0kKGdpdCBjYXQtZmlsZSAtdCAkbmV3cmV2KQorZmkKKworY2FzZSAiJHJlZm5hbWUiLCIkbmV3cmV2X3R5cGUiIGluCisJcmVmcy90YWdzLyosY29tbWl0KQorCQkjIHVuLWFubm90YXRlZCB0YWcKKwkJc2hvcnRfcmVmbmFtZT0ke3JlZm5hbWUjI3JlZnMvdGFncy99CisJCWlmIFsgIiRhbGxvd3VuYW5ub3RhdGVkIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQkJZWNobyAiKioqIFRoZSB1bi1hbm5vdGF0ZWQgdGFnLCAkc2hvcnRfcmVmbmFtZSwgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyByZXBvc2l0b3J5IiA+JjIKKwkJCWVjaG8gIioqKiBVc2UgJ2dpdCB0YWcgWyAtYSB8IC1zIF0nIGZvciB0YWdzIHlvdSB3YW50IHRvIHByb3BhZ2F0ZS4iID4mMgorCQkJZXhpdCAxCisJCWZpCisJCTs7CisJcmVmcy90YWdzLyosZGVsZXRlKQorCQkjIGRlbGV0ZSB0YWcKKwkJaWYgWyAiJGFsbG93ZGVsZXRldGFnIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQkJZWNobyAiKioqIERlbGV0aW5nIGEgdGFnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgcmVwb3NpdG9yeSIgPiYyCisJCQlleGl0IDEKKwkJZmkKKwkJOzsKKwlyZWZzL3RhZ3MvKix0YWcpCisJCSMgYW5ub3RhdGVkIHRhZworCQlpZiBbICIkYWxsb3dtb2RpZnl0YWciICE9ICJ0cnVlIiBdICYmIGdpdCByZXYtcGFyc2UgJHJlZm5hbWUgPiAvZGV2L251bGwgMj4mMQorCQl0aGVuCisJCQllY2hvICIqKiogVGFnICckcmVmbmFtZScgYWxyZWFkeSBleGlzdHMuIiA+JjIKKwkJCWVjaG8gIioqKiBNb2RpZnlpbmcgYSB0YWcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyByZXBvc2l0b3J5LiIgPiYyCisJCQlleGl0IDEKKwkJZmkKKwkJOzsKKwlyZWZzL2hlYWRzLyosY29tbWl0KQorCQkjIGJyYW5jaAorCQlpZiBbICIkb2xkcmV2IiA9ICIkemVybyIgLWEgIiRkZW55Y3JlYXRlYnJhbmNoIiA9ICJ0cnVlIiBdOyB0aGVuCisJCQllY2hvICIqKiogQ3JlYXRpbmcgYSBicmFuY2ggaXMgbm90IGFsbG93ZWQgaW4gdGhpcyByZXBvc2l0b3J5IiA+JjIKKwkJCWV4aXQgMQorCQlmaQorCQk7OworCXJlZnMvaGVhZHMvKixkZWxldGUpCisJCSMgZGVsZXRlIGJyYW5jaAorCQlpZiBbICIkYWxsb3dkZWxldGVicmFuY2giICE9ICJ0cnVlIiBdOyB0aGVuCisJCQllY2hvICIqKiogRGVsZXRpbmcgYSBicmFuY2ggaXMgbm90IGFsbG93ZWQgaW4gdGhpcyByZXBvc2l0b3J5IiA+JjIKKwkJCWV4aXQgMQorCQlmaQorCQk7OworCXJlZnMvcmVtb3Rlcy8qLGNvbW1pdCkKKwkJIyB0cmFja2luZyBicmFuY2gKKwkJOzsKKwlyZWZzL3JlbW90ZXMvKixkZWxldGUpCisJCSMgZGVsZXRlIHRyYWNraW5nIGJyYW5jaAorCQlpZiBbICIkYWxsb3dkZWxldGVicmFuY2giICE9ICJ0cnVlIiBdOyB0aGVuCisJCQllY2hvICIqKiogRGVsZXRpbmcgYSB0cmFja2luZyBicmFuY2ggaXMgbm90IGFsbG93ZWQgaW4gdGhpcyByZXBvc2l0b3J5IiA+JjIKKwkJCWV4aXQgMQorCQlmaQorCQk7OworCSopCisJCSMgQW55dGhpbmcgZWxzZSAoaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8pCisJCWVjaG8gIioqKiBVcGRhdGUgaG9vazogdW5rbm93biB0eXBlIG9mIHVwZGF0ZSB0byByZWYgJHJlZm5hbWUgb2YgdHlwZSAkbmV3cmV2X3R5cGUiID4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworIyAtLS0gRmluaXNoZWQKK2V4aXQgMApkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9pbmRleCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaW5kZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2YTJkZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvaW5kZXgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9pbmZvL2V4Y2x1ZGUgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2luZm8vZXhjbHVkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTE5NmQxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9pbmZvL2V4Y2x1ZGUKQEAgLTAsMCArMSw2IEBACisjIGdpdCBscy1maWxlcyAtLW90aGVycyAtLWV4Y2x1ZGUtZnJvbT0uZ2l0L2luZm8vZXhjbHVkZQorIyBMaW5lcyB0aGF0IHN0YXJ0IHdpdGggJyMnIGFyZSBjb21tZW50cy4KKyMgRm9yIGEgcHJvamVjdCBtb3N0bHkgaW4gQywgdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBhIGdvb2Qgc2V0IG9mCisjIGV4Y2x1ZGUgcGF0dGVybnMgKHVuY29tbWVudCB0aGVtIGlmIHlvdSB3YW50IHRvIHVzZSB0aGVtKToKKyMgKi5bb2FdCisjICp+CmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2xvZ3MvSEVBRCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvbG9ncy9IRUFECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYTM2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2xvZ3MvSEVBRApAQCAtMCwwICsxIEBACiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDc3ZTgwMzlmYmEzOGU1MzJiZWE1ZmJhNWY0ZjNiZTk5NDBlYTUyMWIgQnJlbmRhbiBGb3JzdGVyIDxicmVuZGFuQGdpdGh1Yi5jb20+IDE0Mjc2MDY0MjEgKzAyMDAJY2xvbmU6IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hY290ZS9IYXNoQ2hlY2suZ2l0CmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2xvZ3MvcmVmcy9oZWFkcy9tYXN0ZXIgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2xvZ3MvcmVmcy9oZWFkcy9tYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhMzZjZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvbG9ncy9yZWZzL2hlYWRzL21hc3RlcgpAQCAtMCwwICsxIEBACiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDc3ZTgwMzlmYmEzOGU1MzJiZWE1ZmJhNWY0ZjNiZTk5NDBlYTUyMWIgQnJlbmRhbiBGb3JzdGVyIDxicmVuZGFuQGdpdGh1Yi5jb20+IDE0Mjc2MDY0MjEgKzAyMDAJY2xvbmU6IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hY290ZS9IYXNoQ2hlY2suZ2l0CmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL2xvZ3MvcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9sb2dzL3JlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWEzNmNmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9sb2dzL3JlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRApAQCAtMCwwICsxIEBACiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDc3ZTgwMzlmYmEzOGU1MzJiZWE1ZmJhNWY0ZjNiZTk5NDBlYTUyMWIgQnJlbmRhbiBGb3JzdGVyIDxicmVuZGFuQGdpdGh1Yi5jb20+IDE0Mjc2MDY0MjEgKzAyMDAJY2xvbmU6IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hY290ZS9IYXNoQ2hlY2suZ2l0CmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvMDcvOTk4YjIzMDRmZjMzYjIzNjgzYjYzMTM1ZGMzNmJhOWY2OGFjNTcgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvMDcvOTk4YjIzMDRmZjMzYjIzNjgzYjYzMTM1ZGMzNmJhOWY2OGFjNTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NTkyYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy8wNy85OThiMjMwNGZmMzNiMjM2ODNiNjMxMzVkYzM2YmE5ZjY4YWM1NwpAQCAtMCwwICsxLDIgQEAKK3gBnY7BjsIwDET33K/wHbHYSZPW1Qor7XLgP+LGAbRqg0L6/2SXP8C3eZoZz5yX5VbBDP6jFlUYbSLjnbgRKTCpRtKIFmeOiUSYWVQGcd09FF0rDIOOaDlJsKM6a0SDa8KlPllR5h4bMCRd2Oo1Fzi1VAwrnHN5VC3wJS/wfbnV6yafc16OQH3bQ2i9hx226xptK//87+W7n63m/UVXLaFqBAnz73aHV+0EaA+GDwbJAfrJ+An/H0+IT6IXVqYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvM2EvZWE2NTk1NGE0YTEzMzcwYTFmNDdkZjkyMGQyNGNkZWY3NGNiNDkgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvM2EvZWE2NTk1NGE0YTEzMzcwYTFmNDdkZjkyMGQyNGNkZWY3NGNiNDkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxYWZjZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy8zYS9lYTY1OTU0YTRhMTMzNzBhMWY0N2RmOTIwZDI0Y2RlZjc0Y2I0OQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvNTYvMGUxZGIyMThkYjkwZGI1MzhiZTMxZjhkNTY4NDY1YWMzMzYyYzIgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvNTYvMGUxZGIyMThkYjkwZGI1MzhiZTMxZjhkNTY4NDY1YWMzMzYyYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjYzBkMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy81Ni8wZTFkYjIxOGRiOTBkYjUzOGJlMzFmOGQ1Njg0NjVhYzMzNjJjMgpAQCAtMCwwICsxLDIgQEAKK3gBnY5BbsMwDAR79it4L9KQkmlLRhG0OeQfokUlQWArUOT/V4V/EJ6WA+5y57ws9worZhw+alEFZxOZgYUdUvCkGkkjWpx9TCTivReVUbh7hqJrhXFUh9YnCdYpWyMauC2c+mRFve+xAUPSha3ecoFzc8WwwiWXV9UC37KDn+u93jb5mvNyAupbHxqQGT6xTddoa/l//56/+91qPlx11RKqRpAwP7Yn7LEToD0afzRIDOgmxGl/3NQfotZWpgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy83Ni83ZGVhODdlYzgzMDcxNGQwMTk5ZDg0ZGVjYTMzYWVlMzA0NzM1ZSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy83Ni83ZGVhODdlYzgzMDcxNGQwMTk5ZDg0ZGVjYTMzYWVlMzA0NzM1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWEzOGZhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9vYmplY3RzLzc2LzdkZWE4N2VjODMwNzE0ZDAxOTlkODRkZWNhMzNhZWUzMDQ3MzVlCkBAIC0wLDAgKzEgQEAKK3gBnY7BTsQwDEQ59yt8R7B2Ujd1hRBw4D/ixtldoTarkP4/We0f4Ns8zYxnLdt2beDC9NSqGcw+k5tYeUaKQmaJLKHHVVImVRFR06A83GK1vUEINqOXrNHPxt6pRe6C85i9msiIHTjSIR7tUip89VSKO3yX+tuswps+wMf52i6Hvq5lewca+x5inhCesd/QaV959/8vP3werbycbbcamyXQuP4cN3jULoD+5OTkkBgwLOyWke6PF8Q/owFWpwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy84My9mMTI2NWI1ODAxYTkxZWVkMWVkMDMwYzlkZjFiYjk5OWJlYjdiNSBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy84My9mMTI2NWI1ODAxYTkxZWVkMWVkMDMwYzlkZjFiYjk5OWJlYjdiNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODZiMmNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9vYmplY3RzLzgzL2YxMjY1YjU4MDFhOTFlZWQxZWQwMzBjOWRmMWJiOTk5YmViN2I1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9hYi8wMjdiOTk2OGQwMzYzZGY1MmU3YjI2YWM2OGIzY2Q2OWVmNDM0MiBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9hYi8wMjdiOTk2OGQwMzYzZGY1MmU3YjI2YWM2OGIzY2Q2OWVmNDM0MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzk2NzlmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9vYmplY3RzL2FiLzAyN2I5OTY4ZDAzNjNkZjUyZTdiMjZhYzY4YjNjZDY5ZWY0MzQyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9kOC85MTQyNWI3MjA3YzY2ODVmZGQ5N2NlMjZmZmNiM2M2NDU3N2Q4MiBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9kOC85MTQyNWI3MjA3YzY2ODVmZGQ5N2NlMjZmZmNiM2M2NDU3N2Q4MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDRmNTRlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9vYmplY3RzL2Q4LzkxNDI1YjcyMDdjNjY4NWZkZDk3Y2UyNmZmY2IzYzY0NTc3ZDgyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9wYWNrL3BhY2stMDA3MTY0MjU0NTZhM2M5ZjYzMWVhZTQ3MDAxM2I2OGU5NDFkNjIxMi5pZHggYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvcGFjay9wYWNrLTAwNzE2NDI1NDU2YTNjOWY2MzFlYWU0NzAwMTNiNjhlOTQxZDYyMTIuaWR4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OTRmOTYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL29iamVjdHMvcGFjay9wYWNrLTAwNzE2NDI1NDU2YTNjOWY2MzFlYWU0NzAwMTNiNjhlOTQxZDYyMTIuaWR4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9wYWNrL3BhY2stMDA3MTY0MjU0NTZhM2M5ZjYzMWVhZTQ3MDAxM2I2OGU5NDFkNjIxMi5wYWNrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9vYmplY3RzL3BhY2svcGFjay0wMDcxNjQyNTQ1NmEzYzlmNjMxZWFlNDcwMDEzYjY4ZTk0MWQ2MjEyLnBhY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTViMTc2NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvb2JqZWN0cy9wYWNrL3BhY2stMDA3MTY0MjU0NTZhM2M5ZjYzMWVhZTQ3MDAxM2I2OGU5NDFkNjIxMi5wYWNrCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvcGFja2VkLXJlZnMgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL3BhY2tlZC1yZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYTNkOTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL3BhY2tlZC1yZWZzCkBAIC0wLDAgKzEsMiBAQAorIyBwYWNrLXJlZnMgd2l0aDogcGVlbGVkIGZ1bGx5LXBlZWxlZCAKKzc3ZTgwMzlmYmEzOGU1MzJiZWE1ZmJhNWY0ZjNiZTk5NDBlYTUyMWIgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvcmVmcy9oZWFkcy9tYXN0ZXIgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL3JlZnMvaGVhZHMvbWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzUwMjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uZ2l0dGVkL3JlZnMvaGVhZHMvbWFzdGVyCkBAIC0wLDAgKzEgQEAKKzc3ZTgwMzlmYmEzOGU1MzJiZWE1ZmJhNWY0ZjNiZTk5NDBlYTUyMWIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLmdpdHRlZC9yZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVmZTI4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5naXR0ZWQvcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFECkBAIC0wLDAgKzEgQEAKK3JlZjogcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5wcm9qZWN0IGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2NjhjYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5wcm9qZWN0CkBAIC0wLDAgKzEsNzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3REZXNjcmlwdGlvbj4NCisJPG5hbWU+SGFzaENoZWNrPC9uYW1lPg0KKwk8Y29tbWVudD48L2NvbW1lbnQ+DQorCTxwcm9qZWN0cz4NCisJPC9wcm9qZWN0cz4NCisJPGJ1aWxkU3BlYz4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuZ2VubWFrZWJ1aWxkZXI8L25hbWU+DQorCQkJPHRyaWdnZXJzPmNsZWFuLGZ1bGwsaW5jcmVtZW50YWwsPC90cmlnZ2Vycz4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdCdWlsZGVyPC9uYW1lPg0KKwkJCTx0cmlnZ2Vycz5mdWxsLGluY3JlbWVudGFsLDwvdHJpZ2dlcnM+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwk8L2J1aWxkU3BlYz4NCisJPG5hdHVyZXM+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5jb3JlLmNuYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0LmNvcmUuY2NuYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUubWFuYWdlZEJ1aWxkTmF0dXJlPC9uYXR1cmU+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdOYXR1cmU8L25hdHVyZT4NCisJPC9uYXR1cmVzPg0KKwk8ZmlsdGVyZWRSZXNvdXJjZXM+DQorCQk8ZmlsdGVyPg0KKwkJCTxpZD4xNDE3NTY5OTE0MzI1PC9pZD4NCisJCQk8bmFtZT48L25hbWU+DQorCQkJPHR5cGU+NjwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS0qLnNsbjwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCisJCQk8aWQ+MTQxNzU2OTkxNDMyODwvaWQ+DQorCQkJPG5hbWU+PC9uYW1lPg0KKwkJCTx0eXBlPjY8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtKi52Y3hwcm9qKjwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCisJCQk8aWQ+MTQxNzU2OTkxNDMzMDwvaWQ+DQorCQkJPG5hbWU+PC9uYW1lPg0KKwkJCTx0eXBlPjY8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtKi4qc2RmPC9hcmd1bWVudHM+DQorCQkJPC9tYXRjaGVyPg0KKwkJPC9maWx0ZXI+DQorCQk8ZmlsdGVyPg0KKwkJCTxpZD4xNDE3NTY5OTE0MzMzPC9pZD4NCisJCQk8bmFtZT48L25hbWU+DQorCQkJPHR5cGU+NjwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS0qLnN1bzwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCisJCQk8aWQ+MTQxNzU2OTkxNDMzODwvaWQ+DQorCQkJPG5hbWU+PC9uYW1lPg0KKwkJCTx0eXBlPjY8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtY2hlY2tzdW0uKjwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwk8L2ZpbHRlcmVkUmVzb3VyY2VzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5zZXR0aW5ncy9sYW5ndWFnZS5zZXR0aW5ncy54bWwgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uc2V0dGluZ3MvbGFuZ3VhZ2Uuc2V0dGluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNDc4NmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC8uc2V0dGluZ3MvbGFuZ3VhZ2Uuc2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/Pg0KKzxwcm9qZWN0Pg0KKwk8Y29uZmlndXJhdGlvbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1IiBuYW1lPSJEZWJ1ZyI+DQorCQk8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5MYW5ndWFnZVNldHRpbmdzUHJvdmlkZXIiPg0KKwkJCTxwcm92aWRlciBjb3B5LW9mPSJleHRlbnNpb24iIGlkPSJvcmcuZWNsaXBzZS5jZHQudWkuVXNlckxhbmd1YWdlU2V0dGluZ3NQcm92aWRlciIvPg0KKwkJCTxwcm92aWRlci1yZWZlcmVuY2UgaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLlJlZmVyZW5jZWRQcm9qZWN0c0xhbmd1YWdlU2V0dGluZ3NQcm92aWRlciIgcmVmPSJzaGFyZWQtcHJvdmlkZXIiLz4NCisJCQk8cHJvdmlkZXItcmVmZXJlbmNlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5NQlNMYW5ndWFnZVNldHRpbmdzUHJvdmlkZXIiIHJlZj0ic2hhcmVkLXByb3ZpZGVyIi8+DQorCQkJPHByb3ZpZGVyIGNsYXNzPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuaW50ZXJuYWwubGFuZ3VhZ2Uuc2V0dGluZ3MucHJvdmlkZXJzLkdDQ0J1aWx0aW5TcGVjc0RldGVjdG9yTWluR1ciIGNvbnNvbGU9ImZhbHNlIiBlbnYtaGFzaD0iLTY4Mjk0NzU4MjkxMjYyMzk1MSIgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ0J1aWx0aW5TcGVjc0RldGVjdG9yTWluR1ciIGtlZXAtcmVsYXRpdmUtcGF0aHM9ImZhbHNlIiBuYW1lPSJDRFQgR0NDIEJ1aWx0LWluIENvbXBpbGVyIFNldHRpbmdzIE1pbkdXIiBwYXJhbWV0ZXI9IiR7Q09NTUFORH0gJHtGTEFHU30gLUUgLVAgLXYgLWREIC1zdGQ9YysrMTEgJnF1b3Q7JHtJTlBVVFN9JnF1b3Q7Ij4NCisJCQkJPGxhbmd1YWdlLXNjb3BlIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5nY2MiLz4NCisJCQkJPGxhbmd1YWdlLXNjb3BlIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5nKysiLz4NCisJCQk8L3Byb3ZpZGVyPg0KKwkJPC9leHRlbnNpb24+DQorCTwvY29uZmlndXJhdGlvbj4NCisJPGNvbmZpZ3VyYXRpb24gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQiIG5hbWU9IlJlbGVhc2UiPg0KKwkJPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuTGFuZ3VhZ2VTZXR0aW5nc1Byb3ZpZGVyIj4NCisJCQk8cHJvdmlkZXIgY29weS1vZj0iZXh0ZW5zaW9uIiBpZD0ib3JnLmVjbGlwc2UuY2R0LnVpLlVzZXJMYW5ndWFnZVNldHRpbmdzUHJvdmlkZXIiLz4NCisJCQk8cHJvdmlkZXItcmVmZXJlbmNlIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5SZWZlcmVuY2VkUHJvamVjdHNMYW5ndWFnZVNldHRpbmdzUHJvdmlkZXIiIHJlZj0ic2hhcmVkLXByb3ZpZGVyIi8+DQorCQkJPHByb3ZpZGVyLXJlZmVyZW5jZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuTUJTTGFuZ3VhZ2VTZXR0aW5nc1Byb3ZpZGVyIiByZWY9InNoYXJlZC1wcm92aWRlciIvPg0KKwkJCTxwcm92aWRlciBjbGFzcz0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmludGVybmFsLmxhbmd1YWdlLnNldHRpbmdzLnByb3ZpZGVycy5HQ0NCdWlsdGluU3BlY3NEZXRlY3Rvck1pbkdXIiBjb25zb2xlPSJmYWxzZSIgZW52LWhhc2g9Ii02ODI5NDc1ODI5MTI2MjM5NTEiIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NCdWlsdGluU3BlY3NEZXRlY3Rvck1pbkdXIiBrZWVwLXJlbGF0aXZlLXBhdGhzPSJmYWxzZSIgbmFtZT0iQ0RUIEdDQyBCdWlsdC1pbiBDb21waWxlciBTZXR0aW5ncyBNaW5HVyIgcGFyYW1ldGVyPSIke0NPTU1BTkR9ICR7RkxBR1N9IC1FIC1QIC12IC1kRCAtc3RkPWMrKzExICZxdW90OyR7SU5QVVRTfSZxdW90OyI+DQorCQkJCTxsYW5ndWFnZS1zY29wZSBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuZ2NjIi8+DQorCQkJCTxsYW5ndWFnZS1zY29wZSBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuZysrIi8+DQorCQkJPC9wcm92aWRlcj4NCisJCTwvZXh0ZW5zaW9uPg0KKwk8L2NvbmZpZ3VyYXRpb24+DQorPC9wcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5wcmVmcyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWU0NmJjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMjUgQEAKK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1L0NQQVRIL2RlbGltaXRlcj07DQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1L0NQQVRIL29wZXJhdGlvbj1yZW1vdmUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvQ1BMVVNfSU5DTFVERV9QQVRIL2RlbGltaXRlcj07DQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1L0NQTFVTX0lOQ0xVREVfUEFUSC9vcGVyYXRpb249cmVtb3ZlDQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1L0NfSU5DTFVERV9QQVRIL2RlbGltaXRlcj07DQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5kZWJ1Zy4xMDkxMDc0NTc1L0NfSU5DTFVERV9QQVRIL29wZXJhdGlvbj1yZW1vdmUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvYXBwZW5kPXRydWUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvYXBwZW5kQ29udHJpYnV0ZWQ9dHJ1ZQ0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRJbmNsdWRlL2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQvQ1BBVEgvZGVsaW1pdGVyPTsNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UuMTA3ODg1Njc0L0NQQVRIL29wZXJhdGlvbj1yZW1vdmUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UuMTA3ODg1Njc0L0NQTFVTX0lOQ0xVREVfUEFUSC9kZWxpbWl0ZXI9Ow0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRJbmNsdWRlL2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQvQ1BMVVNfSU5DTFVERV9QQVRIL29wZXJhdGlvbj1yZW1vdmUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50SW5jbHVkZS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UuMTA3ODg1Njc0L0NfSU5DTFVERV9QQVRIL2RlbGltaXRlcj07DQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NC9DX0lOQ0xVREVfUEFUSC9vcGVyYXRpb249cmVtb3ZlDQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudEluY2x1ZGUvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NC9hcHBlbmQ9dHJ1ZQ0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRJbmNsdWRlL2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQvYXBwZW5kQ29udHJpYnV0ZWQ9dHJ1ZQ0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRMaWJyYXJ5L2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUuZGVidWcuMTA5MTA3NDU3NS9MSUJSQVJZX1BBVEgvZGVsaW1pdGVyPTsNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50TGlicmFyeS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvTElCUkFSWV9QQVRIL29wZXJhdGlvbj1yZW1vdmUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50TGlicmFyeS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvYXBwZW5kPXRydWUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50TGlicmFyeS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLmRlYnVnLjEwOTEwNzQ1NzUvYXBwZW5kQ29udHJpYnV0ZWQ9dHJ1ZQ0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRMaWJyYXJ5L2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQvTElCUkFSWV9QQVRIL2RlbGltaXRlcj07DQorZW52aXJvbm1lbnQvYnVpbGRFbnZpcm9ubWVudExpYnJhcnkvY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251Lm1pbmd3LmV4ZS5yZWxlYXNlLjEwNzg4NTY3NC9MSUJSQVJZX1BBVEgvb3BlcmF0aW9uPXJlbW92ZQ0KK2Vudmlyb25tZW50L2J1aWxkRW52aXJvbm1lbnRMaWJyYXJ5L2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5taW5ndy5leGUucmVsZWFzZS4xMDc4ODU2NzQvYXBwZW5kPXRydWUNCitlbnZpcm9ubWVudC9idWlsZEVudmlyb25tZW50TGlicmFyeS9jZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUubWluZ3cuZXhlLnJlbGVhc2UuMTA3ODg1Njc0L2FwcGVuZENvbnRyaWJ1dGVkPXRydWUNCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9DUkMzMkZpbGVIYXNoLmNwcCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0NSQzMyRmlsZUhhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNGEyNzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9DUkMzMkZpbGVIYXNoLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaW5jbHVkZSAiQ1JDMzJGaWxlSGFzaC5oIg0KKw0KK2NvbnN0IFVJTlQzMiBDUkMzMkZpbGVIYXNoOjprQ1JDMzJUYWJsZVtdID0gew0KKwkweDAwMDAwMDAwMEwsIDB4MDc3MDczMDk2TCwgMHgwRUUwRTYxMkNMLCAweDA5OTA5NTFCQUwsDQorCTB4MDA3NkRDNDE5TCwgMHgwNzA2QUY0OEZMLCAweDBFOTYzQTUzNUwsIDB4MDlFNjQ5NUEzTCwNCisJMHgwMEVEQjg4MzJMLCAweDA3OURDQjhBNEwsIDB4MEUwRDVFOTFFTCwgMHgwOTdEMkQ5ODhMLA0KKwkweDAwOUI2NEMyQkwsIDB4MDdFQjE3Q0JETCwgMHgwRTdCODJEMDdMLCAweDA5MEJGMUQ5MUwsDQorCTB4MDFEQjcxMDY0TCwgMHgwNkFCMDIwRjJMLCAweDBGM0I5NzE0OEwsIDB4MDg0QkU0MURFTCwNCisJMHgwMUFEQUQ0N0RMLCAweDA2RERERTRFQkwsIDB4MEY0RDRCNTUxTCwgMHgwODNEMzg1QzdMLA0KKwkweDAxMzZDOTg1NkwsIDB4MDY0NkJBOEMwTCwgMHgwRkQ2MkY5N0FMLCAweDA4QTY1QzlFQ0wsDQorCTB4MDE0MDE1QzRGTCwgMHgwNjMwNjZDRDlMLCAweDBGQTBGM0Q2M0wsIDB4MDhEMDgwREY1TCwNCisJMHgwM0I2RTIwQzhMLCAweDA0QzY5MTA1RUwsIDB4MEQ1NjA0MUU0TCwgMHgwQTI2NzcxNzJMLA0KKwkweDAzQzAzRTREMUwsIDB4MDRCMDRENDQ3TCwgMHgwRDIwRDg1RkRMLCAweDBBNTBBQjU2QkwsDQorCTB4MDM1QjVBOEZBTCwgMHgwNDJCMjk4NkNMLCAweDBEQkJCQzlENkwsIDB4MEFDQkNGOTQwTCwNCisJMHgwMzJEODZDRTNMLCAweDA0NURGNUM3NUwsIDB4MERDRDYwRENGTCwgMHgwQUJEMTNENTlMLA0KKwkweDAyNkQ5MzBBQ0wsIDB4MDUxREUwMDNBTCwgMHgwQzhENzUxODBMLCAweDBCRkQwNjExNkwsDQorCTB4MDIxQjRGNEI1TCwgMHgwNTZCM0M0MjNMLCAweDBDRkJBOTU5OUwsIDB4MEI4QkRBNTBGTCwNCisJMHgwMjgwMkI4OUVMLCAweDA1RjA1ODgwOEwsIDB4MEM2MENEOUIyTCwgMHgwQjEwQkU5MjRMLA0KKwkweDAyRjZGN0M4N0wsIDB4MDU4Njg0QzExTCwgMHgwQzE2MTFEQUJMLCAweDBCNjY2MkQzREwsDQorCTB4MDc2REM0MTkwTCwgMHgwMDFEQjcxMDZMLCAweDA5OEQyMjBCQ0wsIDB4MEVGRDUxMDJBTCwNCisJMHgwNzFCMTg1ODlMLCAweDAwNkI2QjUxRkwsIDB4MDlGQkZFNEE1TCwgMHgwRThCOEQ0MzNMLA0KKwkweDA3ODA3QzlBMkwsIDB4MDBGMDBGOTM0TCwgMHgwOTYwOUE4OEVMLCAweDBFMTBFOTgxOEwsDQorCTB4MDdGNkEwREJCTCwgMHgwMDg2RDNEMkRMLCAweDA5MTY0NkM5N0wsIDB4MEU2NjM1QzAxTCwNCisJMHgwNkI2QjUxRjRMLCAweDAxQzZDNjE2MkwsIDB4MDg1NjUzMEQ4TCwgMHgwRjI2MjAwNEVMLA0KKwkweDA2QzA2OTVFREwsIDB4MDFCMDFBNTdCTCwgMHgwODIwOEY0QzFMLCAweDBGNTBGQzQ1N0wsDQorCTB4MDY1QjBEOUM2TCwgMHgwMTJCN0U5NTBMLCAweDA4QkJFQjhFQUwsIDB4MEZDQjk4ODdDTCwNCisJMHgwNjJERDFEREZMLCAweDAxNURBMkQ0OUwsIDB4MDhDRDM3Q0YzTCwgMHgwRkJENDRDNjVMLA0KKwkweDA0REIyNjE1OEwsIDB4MDNBQjU1MUNFTCwgMHgwQTNCQzAwNzRMLCAweDBENEJCMzBFMkwsDQorCTB4MDRBREZBNTQxTCwgMHgwM0REODk1RDdMLCAweDBBNEQxQzQ2REwsIDB4MEQzRDZGNEZCTCwNCisJMHgwNDM2OUU5NkFMLCAweDAzNDZFRDlGQ0wsIDB4MEFENjc4ODQ2TCwgMHgwREE2MEI4RDBMLA0KKwkweDA0NDA0MkQ3M0wsIDB4MDMzMDMxREU1TCwgMHgwQUEwQTRDNUZMLCAweDBERDBEN0NDOUwsDQorCTB4MDUwMDU3MTNDTCwgMHgwMjcwMjQxQUFMLCAweDBCRTBCMTAxMEwsIDB4MEM5MEMyMDg2TCwNCisJMHgwNTc2OEI1MjVMLCAweDAyMDZGODVCM0wsIDB4MEI5NjZENDA5TCwgMHgwQ0U2MUU0OUZMLA0KKwkweDA1RURFRjkwRUwsIDB4MDI5RDlDOTk4TCwgMHgwQjBEMDk4MjJMLCAweDBDN0Q3QThCNEwsDQorCTB4MDU5QjMzRDE3TCwgMHgwMkVCNDBEODFMLCAweDBCN0JENUMzQkwsIDB4MEMwQkE2Q0FETCwNCisJMHgwRURCODgzMjBMLCAweDA5QUJGQjNCNkwsIDB4MDAzQjZFMjBDTCwgMHgwNzRCMUQyOUFMLA0KKwkweDBFQUQ1NDczOUwsIDB4MDlERDI3N0FGTCwgMHgwMDREQjI2MTVMLCAweDA3M0RDMTY4M0wsDQorCTB4MEUzNjMwQjEyTCwgMHgwOTQ2NDNCODRMLCAweDAwRDZENkEzRUwsIDB4MDdBNkE1QUE4TCwNCisJMHgwRTQwRUNGMEJMLCAweDA5MzA5RkY5REwsIDB4MDBBMDBBRTI3TCwgMHgwN0QwNzlFQjFMLA0KKwkweDBGMDBGOTM0NEwsIDB4MDg3MDhBM0QyTCwgMHgwMUUwMUYyNjhMLCAweDA2OTA2QzJGRUwsDQorCTB4MEY3NjI1NzVETCwgMHgwODA2NTY3Q0JMLCAweDAxOTZDMzY3MUwsIDB4MDZFNkIwNkU3TCwNCisJMHgwRkVENDFCNzZMLCAweDA4OUQzMkJFMEwsIDB4MDEwREE3QTVBTCwgMHgwNjdERDRBQ0NMLA0KKwkweDBGOUI5REY2RkwsIDB4MDhFQkVFRkY5TCwgMHgwMTdCN0JFNDNMLCAweDA2MEIwOEVENUwsDQorCTB4MEQ2RDZBM0U4TCwgMHgwQTFEMTkzN0VMLCAweDAzOEQ4QzJDNEwsIDB4MDRGREZGMjUyTCwNCisJMHgwRDFCQjY3RjFMLCAweDBBNkJDNTc2N0wsIDB4MDNGQjUwNkRETCwgMHgwNDhCMjM2NEJMLA0KKwkweDBEODBEMkJEQUwsIDB4MEFGMEExQjRDTCwgMHgwMzYwMzRBRjZMLCAweDA0MTA0N0E2MEwsDQorCTB4MERGNjBFRkMzTCwgMHgwQTg2N0RGNTVMLCAweDAzMTZFOEVFRkwsIDB4MDQ2NjlCRTc5TCwNCisJMHgwQ0I2MUIzOENMLCAweDBCQzY2ODMxQUwsIDB4MDI1NkZEMkEwTCwgMHgwNTI2OEUyMzZMLA0KKwkweDBDQzBDNzc5NUwsIDB4MEJCMEI0NzAzTCwgMHgwMjIwMjE2QjlMLCAweDA1NTA1MjYyRkwsDQorCTB4MEM1QkEzQkJFTCwgMHgwQjJCRDBCMjhMLCAweDAyQkI0NUE5MkwsIDB4MDVDQjM2QTA0TCwNCisJMHgwQzJEN0ZGQTdMLCAweDBCNUQwQ0YzMUwsIDB4MDJDRDk5RThCTCwgMHgwNUJERUFFMURMLA0KKwkweDA5QjY0QzJCMEwsIDB4MEVDNjNGMjI2TCwgMHgwNzU2QUEzOUNMLCAweDAwMjZEOTMwQUwsDQorCTB4MDlDMDkwNkE5TCwgMHgwRUIwRTM2M0ZMLCAweDA3MjA3Njc4NUwsIDB4MDA1MDA1NzEzTCwNCisJMHgwOTVCRjRBODJMLCAweDBFMkI4N0ExNEwsIDB4MDdCQjEyQkFFTCwgMHgwMENCNjFCMzhMLA0KKwkweDA5MkQyOEU5QkwsIDB4MEU1RDVCRTBETCwgMHgwN0NEQ0VGQjdMLCAweDAwQkRCREYyMUwsDQorCTB4MDg2RDNEMkQ0TCwgMHgwRjFENEUyNDJMLCAweDA2OEREQjNGOEwsIDB4MDFGREE4MzZFTCwNCisJMHgwODFCRTE2Q0RMLCAweDBGNkI5MjY1QkwsIDB4MDZGQjA3N0UxTCwgMHgwMThCNzQ3NzdMLA0KKwkweDA4ODA4NUFFNkwsIDB4MEZGMEY2QTcwTCwgMHgwNjYwNjNCQ0FMLCAweDAxMTAxMEI1Q0wsDQorCTB4MDhGNjU5RUZGTCwgMHgwRjg2MkFFNjlMLCAweDA2MTZCRkZEM0wsIDB4MDE2NkNDRjQ1TCwNCisJMHgwQTAwQUUyNzhMLCAweDBENzBERDJFRUwsIDB4MDRFMDQ4MzU0TCwgMHgwMzkwM0IzQzJMLA0KKwkweDBBNzY3MjY2MUwsIDB4MEQwNjAxNkY3TCwgMHgwNDk2OTQ3NERMLCAweDAzRTZFNzdEQkwsDQorCTB4MEFFRDE2QTRBTCwgMHgwRDlENjVBRENMLCAweDA0MERGMEI2NkwsIDB4MDM3RDgzQkYwTCwNCisJMHgwQTlCQ0FFNTNMLCAweDBERUJCOUVDNUwsIDB4MDQ3QjJDRjdGTCwgMHgwMzBCNUZGRTlMLA0KKwkweDBCREJERjIxQ0wsIDB4MENBQkFDMjhBTCwgMHgwNTNCMzkzMzBMLCAweDAyNEI0QTNBNkwsDQorCTB4MEJBRDAzNjA1TCwgMHgwQ0RENzA2OTNMLCAweDA1NERFNTcyOUwsIDB4MDIzRDk2N0JGTCwNCisJMHgwQjM2NjdBMkVMLCAweDBDNDYxNEFCOEwsIDB4MDVENjgxQjAyTCwgMHgwMkE2RjJCOTRMLA0KKwkweDBCNDBCQkUzN0wsIDB4MEMzMEM4RUExTCwgMHgwNUEwNURGMUJMLCAweDAyRDAyRUY4REwNCit9Ow0KKw0KK3ZvaWQgQ1JDMzJGaWxlSGFzaDo6SW5pdGlhbGl6ZSgpDQorew0KKwloYXNoXyA9IDA7DQorCWhhc2hfID0gfmhhc2hfOw0KK30NCisNCit2b2lkIENSQzMyRmlsZUhhc2g6OlVwZGF0ZShjb25zdCBVSU5UMzIgYnl0ZWNvdW50KQ0KK3sNCisJUEJZVEUgYnVmZmVyID0gYnVmZmVyXzsNCisJVUlOVDMyIGJ5dGVzbGVmdCA9IGJ5dGVjb3VudDsNCisJd2hpbGUgKGJ5dGVzbGVmdCA+IDApDQorCXsNCisJCWhhc2hfID0ga0NSQzMyVGFibGVbKGhhc2hfIF4gKmJ1ZmZlcikgJiAweEZGXSBeIChoYXNoXyA+PiA4KTsNCisJCSsrYnVmZmVyOw0KKwkJLS1ieXRlc2xlZnQ7DQorCX0NCit9DQorDQordm9pZCBDUkMzMkZpbGVIYXNoOjpGaW5hbGl6ZSgpDQorew0KKwloYXNoXyA9IH5oYXNoXzsNCit9DQorDQordm9pZCBDUkMzMkZpbGVIYXNoOjpDb252ZXJ0SGFzaFRvRGlnZXN0U3RyaW5nKCkNCit7DQorCXN0ZDo6d3N0cmluZ3N0cmVhbSB3c3M7DQorCXdzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnNldHcoOCkgPDwgc3RkOjpzZXRmaWxsKEwnMCcpIDw8IHN0ZDo6dXBwZXJjYXNlIDw8IGhhc2hfOw0KKwlkaWdlc3RfLmFwcGVuZCh3c3Muc3RyKCkpOw0KK30NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9DUkMzMkZpbGVIYXNoLmggYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9DUkMzMkZpbGVIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdmZTEyYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0NSQzMyRmlsZUhhc2guaApAQCAtMCwwICsxLDMwIEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgQ1JDMzJGSUxFSEFTSF9IXw0KKyNkZWZpbmUgQ1JDMzJGSUxFSEFTSF9IXw0KKw0KKyNpbmNsdWRlICJGaWxlSGFzaC5oIg0KKyNpbmNsdWRlIDxpb21hbmlwPg0KKyNpbmNsdWRlIDxzc3RyZWFtPg0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPFdpbmRvd3MuaD4NCisNCitjbGFzcyBDUkMzMkZpbGVIYXNoIDogcHVibGljIEZpbGVIYXNoDQorew0KK3B1YmxpYzoNCisjaWYgX01TQ19WRVIgPCAxOTAwDQorCUNSQzMyRmlsZUhhc2goY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCwgY29uc3QgRFdPUkQgYnVmZmVyc2l6ZSkgOiBGaWxlSGFzaChmaWxlcGF0aCwgYnVmZmVyc2l6ZSkgeyB9Ow0KKwlDUkMzMkZpbGVIYXNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIDogRmlsZUhhc2goZmlsZXBhdGgpIHsgfTsNCisjZWxzZQ0KKwl1c2luZyBGaWxlSGFzaDo6RmlsZUhhc2g7DQorI2VuZGlmDQorcHJpdmF0ZToNCisJdm9pZCBJbml0aWFsaXplKCk7DQorCXZvaWQgVXBkYXRlKGNvbnN0IFVJTlQzMiBieXRlY291bnQpOw0KKwl2b2lkIEZpbmFsaXplKCk7DQorCXZvaWQgQ29udmVydEhhc2hUb0RpZ2VzdFN0cmluZygpOw0KKwljb25zdCBzdGF0aWMgVUlOVDMyIGtDUkMzMlRhYmxlW107DQorCVVJTlQzMiBoYXNoXzsNCit9Ow0KKw0KKyNlbmRpZiAvKiBDUkMzMkZJTEVIQVNIX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZUhhc2guY3BwIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZUhhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNmQ3MGMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlSGFzaC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaW5jbHVkZSAiRmlsZUhhc2guaCINCisNCit2b2lkIEZpbGVIYXNoOjpBbGxvY2F0ZUJ1ZmZlcigpDQorew0KKwlidWZmZXJfID0gKFBCWVRFKVZpcnR1YWxBbGxvYyhOVUxMLCBidWZmZXJzaXplXywgTUVNX0NPTU1JVCB8IE1FTV9SRVNFUlZFLCBQQUdFX1JFQURXUklURSk7DQorfQ0KKw0KK3ZvaWQgRmlsZUhhc2g6OkZyZWVCdWZmZXIoKQ0KK3sNCisJaWYgKGJ1ZmZlcl8gIT0gTlVMTCkNCisJew0KKwkJVmlydHVhbEZyZWUoYnVmZmVyXywgMCwgTUVNX1JFTEVBU0UpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgRmlsZUhhc2g6OkNvbXB1dGUoKQ0KK3sNCisJSW5pdGlhbGl6ZSgpOw0KKwlEV09SRCBieXRlc3JlYWQgPSAwOw0KKwlGaWxlSGFzaEJ5dGVzUHJvY2Vzc2VkRXZlbnRBcmdzIGZoYnBlYTsNCisJZmhicGVhLmJ5dGVzcHJvY2Vzc2VkLlF1YWRQYXJ0ID0gMDsNCisJRFdPUkQgcnVubmluZ25vdGlmaWNhdGlvbmJsb2Nrc2l6ZSA9IDA7DQorCWRvDQorCXsNCisJCWJ5dGVzcmVhZCA9IGZpbGVzdHJlYW1fLlJlYWQoYnVmZmVyXywgYnVmZmVyc2l6ZV8pOw0KKwkJaWYgKGJ5dGVzcmVhZCA+IDApDQorCQl7DQorCQkJVXBkYXRlKGJ5dGVzcmVhZCk7DQorCQl9DQorCQlpZiAoYnl0ZXNwcm9jZXNzZWRldmVudF8gIT0gbnVsbHB0cikNCisJCXsNCisJCQlmaGJwZWEuYnl0ZXNwcm9jZXNzZWQuUXVhZFBhcnQgKz0gYnl0ZXNyZWFkOw0KKwkJCXJ1bm5pbmdub3RpZmljYXRpb25ibG9ja3NpemUgKz0gYnl0ZXNyZWFkOw0KKwkJCWlmIChydW5uaW5nbm90aWZpY2F0aW9uYmxvY2tzaXplID49IGJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplXyB8fCBieXRlc3JlYWQgPT0gMCkNCisJCQl7DQorCQkJCWlmIChieXRlc3JlYWQgPiAwKQ0KKwkJCQl7DQorCQkJCQlydW5uaW5nbm90aWZpY2F0aW9uYmxvY2tzaXplIC09IGJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplXzsNCisJCQkJfQ0KKwkJCQlieXRlc3Byb2Nlc3NlZGV2ZW50XyhmaGJwZWEpOw0KKwkJCX0NCisJCX0NCisJfQ0KKwl3aGlsZSAoYnl0ZXNyZWFkID4gMCk7DQorCUZpbmFsaXplKCk7DQorCUNvbnZlcnRIYXNoVG9EaWdlc3RTdHJpbmcoKTsNCit9DQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZUhhc2guaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2N2RkOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVIYXNoLmgKQEAgLTAsMCArMSw2MSBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaWZuZGVmIEZJTEVIQVNIX0hfDQorI2RlZmluZSBGSUxFSEFTSF9IXw0KKw0KKyNpbmNsdWRlICJGaWxlU3RyZWFtLmgiDQorI2luY2x1ZGUgPHN0cmluZz4NCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4NCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKw0KK3N0cnVjdCBGaWxlSGFzaEJ5dGVzUHJvY2Vzc2VkRXZlbnRBcmdzDQorew0KKwlMQVJHRV9JTlRFR0VSIGJ5dGVzcHJvY2Vzc2VkOw0KK307DQorDQorY2xhc3MgRmlsZUhhc2gNCit7DQorcHVibGljOg0KKwlzdGF0aWMgY29uc3QgRFdPUkQga0RlZmF1bHRCdWZmZXJTaXplID0gMzI3Njg7DQorCXN0YXRpYyBjb25zdCBEV09SRCBrRGVmYXVsdEJ5dGVzUHJvY2Vzc2VkTm90aWZpY2F0aW9uQmxvY2tTaXplID0gMTA0ODU3NjsNCitwdWJsaWM6DQorCUZpbGVIYXNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIDogRmlsZUhhc2goZmlsZXBhdGgsIGtEZWZhdWx0QnVmZmVyU2l6ZSkgeyB9Ow0KKwlGaWxlSGFzaChjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoLCBjb25zdCBEV09SRCBidWZmZXJzaXplKSANCisJCTogYnVmZmVyc2l6ZV8oYnVmZmVyc2l6ZSksIGZpbGVzdHJlYW1fKEZpbGVTdHJlYW0oZmlsZXBhdGgsIEZpbGVTdHJlYW06Ok1vZGU6Ok9wZW5Ob0J1ZmZlcmluZywgYnVmZmVyc2l6ZSkpDQorCXsNCisJCWJ5dGVzcHJvY2Vzc2VkZXZlbnRfID0gbnVsbHB0cjsNCisJCUFsbG9jYXRlQnVmZmVyKCk7DQorCX0NCisJdmlydHVhbCB+RmlsZUhhc2goKQ0KKwl7DQorCQlGcmVlQnVmZmVyKCk7DQorCX07DQorCXZvaWQgQ29tcHV0ZSgpOw0KKwlzdGQ6OndzdHJpbmcgZGlnZXN0KCkgY29uc3QgeyByZXR1cm4gZGlnZXN0XzsgfQ0KKwl2b2lkIFNldEJ5dGVzUHJvY2Vzc2VkRXZlbnRIYW5kbGVyKHN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlSGFzaEJ5dGVzUHJvY2Vzc2VkRXZlbnRBcmdzKT4gaGFuZGxlcikNCisJew0KKwkJU2V0Qnl0ZXNQcm9jZXNzZWRFdmVudEhhbmRsZXIoaGFuZGxlciwga0RlZmF1bHRCeXRlc1Byb2Nlc3NlZE5vdGlmaWNhdGlvbkJsb2NrU2l6ZSk7DQorCX0NCisJdm9pZCBTZXRCeXRlc1Byb2Nlc3NlZEV2ZW50SGFuZGxlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoRmlsZUhhc2hCeXRlc1Byb2Nlc3NlZEV2ZW50QXJncyk+IGhhbmRsZXIsIA0KKwkJY29uc3QgRFdPUkQgYnl0ZXNwcm9jZXNzZWRub3RpZmljYXRpb25ibG9ja3NpemUpDQorCXsNCisJCWJ5dGVzcHJvY2Vzc2VkZXZlbnRfID0gaGFuZGxlcjsNCisJCWJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplXyA9IGJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplOw0KKwl9DQorcHJvdGVjdGVkOg0KKwl2aXJ0dWFsIHZvaWQgSW5pdGlhbGl6ZSgpID0gMDsNCisJdmlydHVhbCB2b2lkIFVwZGF0ZShjb25zdCBVSU5UMzIgYnl0ZXMpID0gMDsNCisJdmlydHVhbCB2b2lkIEZpbmFsaXplKCkgPSAwOw0KKwl2aXJ0dWFsIHZvaWQgQ29udmVydEhhc2hUb0RpZ2VzdFN0cmluZygpID0gMDsNCisJUEJZVEUgYnVmZmVyXyA9IE5VTEw7DQorCXN0ZDo6d3N0cmluZyBkaWdlc3RfOw0KK3ByaXZhdGU6DQorCXZvaWQgQWxsb2NhdGVCdWZmZXIoKTsNCisJdm9pZCBGcmVlQnVmZmVyKCk7DQorCURXT1JEIGJ1ZmZlcnNpemVfOw0KKwlGaWxlU3RyZWFtIGZpbGVzdHJlYW1fOw0KKwlEV09SRCBieXRlc3Byb2Nlc3NlZG5vdGlmaWNhdGlvbmJsb2Nrc2l6ZV87DQorCXN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlSGFzaEJ5dGVzUHJvY2Vzc2VkRXZlbnRBcmdzKT4gYnl0ZXNwcm9jZXNzZWRldmVudF87DQorfTsNCisNCisjZW5kaWYgLyogRklMRUhBU0hfSF8gKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlSGFzaEZhY3RvcnkuaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVIYXNoRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYmQyN2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlSGFzaEZhY3RvcnkuaApAQCAtMCwwICsxLDQyIEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgRklMRUhBU0hGQUNUT1JZX0hfDQorI2RlZmluZSBGSUxFSEFTSEZBQ1RPUllfSF8NCisNCisjaW5jbHVkZSAiRmlsZUhhc2guaCINCisjaW5jbHVkZSAiSGFzaFR5cGUuaCINCisjaW5jbHVkZSAiQ1JDMzJGaWxlSGFzaC5oIg0KKyNpbmNsdWRlICJNRDVGaWxlSGFzaC5oIg0KKyNpbmNsdWRlICJTSEExRmlsZUhhc2guaCINCisjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDxtZW1vcnk+DQorI2luY2x1ZGUgPFdpbmRvd3MuaD4NCisNCitjbGFzcyBGaWxlSGFzaEZhY3RvcnkNCit7DQorcHVibGljOg0KKwlzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbGVIYXNoPiBDcmVhdGUoSGFzaFR5cGUgaGFzaHR5cGUsIGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpDQorCXsgDQorCQlpZiAoaGFzaHR5cGUgPT0gSGFzaFR5cGU6OlNIQTEpDQorCQl7DQorCQkJLy9yZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTSEExRmlsZUhhc2g+KGZpbGVwYXRoKTsNCisJCQlyZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNIQTFGaWxlSGFzaD4obmV3IFNIQTFGaWxlSGFzaChmaWxlcGF0aCkpOw0KKwkJfQ0KKwkJZWxzZSBpZiAoaGFzaHR5cGUgPT0gSGFzaFR5cGU6Ok1ENSkNCisJCXsNCisJCQkvL3JldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1ENUZpbGVIYXNoPihmaWxlcGF0aCk7DQorCQkJcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNRDVGaWxlSGFzaD4obmV3IE1ENUZpbGVIYXNoKGZpbGVwYXRoKSk7DQorCQl9DQorCQllbHNlIGlmIChoYXNodHlwZSA9PSBIYXNoVHlwZTo6Q1JDMzIpDQorCQl7DQorCQkJLy9yZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDUkMzMkZpbGVIYXNoPihmaWxlcGF0aCk7DQorCQkJcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDUkMzMkZpbGVIYXNoPihuZXcgQ1JDMzJGaWxlSGFzaChmaWxlcGF0aCkpOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiRmlsZUhhc2hGYWN0b3J5LkNyZWF0ZSgpOiBzZWxlY3RlZCBoYXNoIHR5cGUgaXMgbm90IHN1cHBvcnRlZC4iKTsNCisJCX0NCisJfTsNCit9Ow0KKw0KKyNlbmRpZiAvKiBGSUxFSEFTSEZBQ1RPUllfSF8gKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlU3RyZWFtLmNwcCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MmUwOWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisvKiBQb3J0aW9ucyBvZiB0aGlzIGNvZGUgd2FzIGluc3BpcmVkIGJ5IGRvdG5ldC9jb3JlZngncyBXaW4zMkZpbGVTdHJlYW0uY3MgKi8NCisvKg0KKw0KK1RoZSBNSVQgTGljZW5zZSAoTUlUKQ0KKw0KK0NvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQorDQorUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKw0KK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KK2NvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorDQorVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQ0KK1NPRlRXQVJFLg0KKw0KKyovDQorDQorI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCINCisNCit2b2lkIEZpbGVTdHJlYW06OkFsbG9jYXRlQnVmZmVyKCkNCit7DQorCWJ1ZmZlcl8gPSAoUEJZVEUpVmlydHVhbEFsbG9jKE5VTEwsIGJ1ZmZlcnNpemVfLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKTsNCit9DQorDQordm9pZCBGaWxlU3RyZWFtOjpGcmVlQnVmZmVyKCkNCit7DQorCWlmIChidWZmZXJfICE9IE5VTEwpDQorCXsNCisJCVZpcnR1YWxGcmVlKGJ1ZmZlcl8sIDAsIE1FTV9SRUxFQVNFKTsNCisJfQ0KK30NCisNCit2b2lkIEZpbGVTdHJlYW06Ok9wZW5GaWxlKCkNCit7DQorCURXT1JEIGRlc2lyZWRhY2Nlc3MgPSAobW9kZV8gPj0gTW9kZTo6Q3JlYXRlKSA/IEdFTkVSSUNfV1JJVEUgOiBHRU5FUklDX1JFQUQ7DQorCURXT1JEIGNyZWF0ZWRpc3Bvc2l0aW9uOw0KKwlzd2l0Y2ggKG1vZGVfKQ0KKwl7DQorCWNhc2UgRmlsZVN0cmVhbTo6TW9kZTo6Q3JlYXRlOg0KKwkJY3JlYXRlZGlzcG9zaXRpb24gPSBDUkVBVEVfTkVXOw0KKwkJYnJlYWs7DQorCWNhc2UgRmlsZVN0cmVhbTo6TW9kZTo6VHJ1bmNhdGU6DQorCQljcmVhdGVkaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWNyZWF0ZWRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsNCisJCWJyZWFrOw0KKwl9DQorCURXT1JEIGZsYWdzYW5kYXR0cmlidXRlcyA9IEZJTEVfQVRUUklCVVRFX05PUk1BTDsNCisJaWYgKG1vZGVfID09IE1vZGU6Ok9wZW5Ob0J1ZmZlcmluZykNCisJew0KKwkJZmxhZ3NhbmRhdHRyaWJ1dGVzIHw9IEZJTEVfRkxBR19OT19CVUZGRVJJTkc7DQorCX0NCisJZmlsZWhhbmRsZV8gPSBDcmVhdGVGaWxlVyhmaWxlcGF0aF8uY19zdHIoKSwgZGVzaXJlZGFjY2VzcywgRklMRV9TSEFSRV9SRUFELA0KKwkJTlVMTCwgY3JlYXRlZGlzcG9zaXRpb24sIGZsYWdzYW5kYXR0cmlidXRlcywgTlVMTCk7DQorCWlmIChmaWxlaGFuZGxlXyA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCisJew0KKwkJc3RkOjpzdHJpbmdzdHJlYW0gc3M7DQorCQlzcyA8PCAiRmlsZVN0cmVhbS5PcGVuKENyZWF0ZUZpbGVXKCkpIGZhaWxlZCB3aXRoIGVycm9yICI7DQorCQlzcyA8PCAiMHgiIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6c2V0dyg4KSA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnVwcGVyY2FzZTsNCisJCXNzIDw8IEdldExhc3RFcnJvcigpOw0KKwkJdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKHNzLnN0cigpKTsNCisJfQ0KK30NCisNCitEV09SRCBGaWxlU3RyZWFtOjpSZWFkKFBCWVRFIGJ1ZmZlciwgRFdPUkQgb2Zmc2V0LCBEV09SRCBjb3VudCkNCit7DQorCURXT1JEIGJ5dGVzcmVhZCA9IDA7DQorCVJlYWRGaWxlKGZpbGVoYW5kbGVfLCBidWZmZXIgKyBvZmZzZXQsIGNvdW50LCAmYnl0ZXNyZWFkLCBOVUxMKTsNCisJcmV0dXJuIGJ5dGVzcmVhZDsNCit9DQorDQorRFdPUkQgRmlsZVN0cmVhbTo6V3JpdGUoUEJZVEUgYnVmZmVyLCBEV09SRCBvZmZzZXQsIERXT1JEIGNvdW50KQ0KK3sNCisJRFdPUkQgYnl0ZXN3cml0dGVuID0gMDsNCisJV3JpdGVGaWxlKGZpbGVoYW5kbGVfLCBidWZmZXIgKyBvZmZzZXQsIGNvdW50LCAmYnl0ZXN3cml0dGVuLCBOVUxMKTsNCisJcmV0dXJuIGJ5dGVzd3JpdHRlbjsNCit9DQorDQordm9pZCBGaWxlU3RyZWFtOjpGbHVzaFdyaXRlKCkNCit7DQorCVdyaXRlKGJ1ZmZlcl8sIDAsIHdyaXRlaW5kZXhfKTsNCisJd3JpdGVpbmRleF8gPSAwOw0KK30NCisNCit2b2lkIEZpbGVTdHJlYW06OkNsb3NlRmlsZSgpDQorew0KKwlpZiAoZmlsZWhhbmRsZV8gIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQorCXsNCisJCUNsb3NlSGFuZGxlKGZpbGVoYW5kbGVfKTsNCisJCWZpbGVoYW5kbGVfID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7DQorCX0NCit9DQorDQorRFdPUkQgRmlsZVN0cmVhbTo6UmVhZChQQllURSBidWZmZXIsIERXT1JEIGNvdW50KQ0KK3sNCisJRFdPUkQgYnVmZmVyYnl0ZXMgPSByZWFkbGVuZ3RoXyAtIHJlYWRpbmRleF87DQorCUJPT0wgZW9mID0gRkFMU0U7DQorCWlmIChidWZmZXJieXRlcyA9PSAwKQ0KKwl7DQorCQlEV09SRCBieXRlc3JlYWQ7DQorCQlpZiAoY291bnQgPj0gYnVmZmVyc2l6ZV8pDQorCQl7DQorCQkJYnl0ZXNyZWFkID0gUmVhZChidWZmZXIsIDAsIGNvdW50KTsNCisJCQlyZWFkaW5kZXhfID0gcmVhZGxlbmd0aF8gPSAwOw0KKwkJCXJldHVybiBieXRlc3JlYWQ7DQorCQl9DQorCQlieXRlc3JlYWQgPSBSZWFkKGJ1ZmZlcl8sIDAsIGJ1ZmZlcnNpemVfKTsNCisJCWlmIChieXRlc3JlYWQgPT0gMCkgcmV0dXJuIDA7DQorCQlyZWFkaW5kZXhfID0gMDsNCisJCXJlYWRsZW5ndGhfID0gYnVmZmVyYnl0ZXMgPSBieXRlc3JlYWQ7DQorCQllb2YgPSBieXRlc3JlYWQgPCBidWZmZXJzaXplXzsNCisJfQ0KKwlpZiAoYnVmZmVyYnl0ZXMgPiBjb3VudCkNCisJew0KKwkJYnVmZmVyYnl0ZXMgPSBjb3VudDsNCisJfQ0KKwlDb3B5TWVtb3J5KGJ1ZmZlciwgYnVmZmVyXyArIHJlYWRpbmRleF8sIGJ1ZmZlcmJ5dGVzKTsNCisJcmVhZGluZGV4XyArPSBidWZmZXJieXRlczsNCisJaWYgKGJ1ZmZlcmJ5dGVzIDwgY291bnQgJiYgIWVvZikNCisJew0KKwkJRFdPUkQgYnl0ZXNyZWFkID0gUmVhZChidWZmZXIsIGJ1ZmZlcmJ5dGVzLCBjb3VudCAtIGJ1ZmZlcmJ5dGVzKTsNCisJCWJ1ZmZlcmJ5dGVzICs9IGJ5dGVzcmVhZDsNCisJCXJlYWRpbmRleF8gPSByZWFkbGVuZ3RoXyA9IDA7DQorCX0NCisJcmV0dXJuIGJ1ZmZlcmJ5dGVzOw0KK30NCisNCit2b2lkIEZpbGVTdHJlYW06OldyaXRlKFBCWVRFIGJ1ZmZlciwgRFdPUkQgY291bnQpDQorew0KKwlEV09SRCBidWZmZXJpbmRleCA9IDA7DQorCWlmICh3cml0ZWluZGV4XyA+IDApDQorCXsNCisJCURXT1JEIGJ1ZmZlcmJ5dGVzID0gYnVmZmVyc2l6ZV8gLSB3cml0ZWluZGV4XzsNCisJCWlmIChidWZmZXJieXRlcyA+IDApDQorCQl7DQorCQkJaWYgKGJ1ZmZlcmJ5dGVzID4gY291bnQpDQorCQkJew0KKwkJCQlidWZmZXJieXRlcyA9IGNvdW50Ow0KKwkJCX0NCisJCQlDb3B5TWVtb3J5KGJ1ZmZlcl8gKyB3cml0ZWluZGV4XywgYnVmZmVyLCBidWZmZXJieXRlcyk7DQorCQkJd3JpdGVpbmRleF8gKz0gYnVmZmVyYnl0ZXM7DQorCQkJaWYgKGJ1ZmZlcmJ5dGVzID09IGNvdW50KSByZXR1cm47DQorCQkJYnVmZmVyaW5kZXggPSBidWZmZXJieXRlczsNCisJCQljb3VudCAtPSBidWZmZXJieXRlczsNCisJCX0NCisJCVdyaXRlKGJ1ZmZlcl8sIDAsIHdyaXRlaW5kZXhfKTsNCisJCXdyaXRlaW5kZXhfID0gMDsNCisJfQ0KKwlpZiAoY291bnQgPj0gYnVmZmVyc2l6ZV8pDQorCXsNCisJCVdyaXRlKGJ1ZmZlciwgMCwgY291bnQpOw0KKwl9DQorCWVsc2UgaWYgKGNvdW50ID4gMCkNCisJew0KKwkJQ29weU1lbW9yeShidWZmZXJfICsgd3JpdGVpbmRleF8sIGJ1ZmZlciArIGJ1ZmZlcmluZGV4LCBjb3VudCk7DQorCQl3cml0ZWluZGV4XyA9IGNvdW50Ow0KKwl9DQorfQ0KKw0KK3ZvaWQgRmlsZVN0cmVhbTo6Rmx1c2goKQ0KK3sNCisJaWYgKHdyaXRlaW5kZXhfID4gMCkNCisJew0KKwkJRmx1c2hXcml0ZSgpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgRmlsZVN0cmVhbTo6Q2xvc2UoKQ0KK3sNCisJRmx1c2goKTsNCisJQ2xvc2VGaWxlKCk7DQorfQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVTdHJlYW0uaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0ZpbGVTdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY4YzI5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZVN0cmVhbS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBGSUxFU1RSRUFNX0hfDQorI2RlZmluZSBGSUxFU1RSRUFNX0hfDQorDQorI2luY2x1ZGUgPGlvbWFuaXA+DQorI2luY2x1ZGUgPHNzdHJlYW0+DQorI2luY2x1ZGUgPHN0ZGV4Y2VwdD4NCisjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDxXaW5kb3dzLmg+DQorDQorY2xhc3MgRmlsZVN0cmVhbQ0KK3sNCitwdWJsaWM6DQorCXN0YXRpYyBjb25zdCBEV09SRCBrRGVmYXVsdEJ1ZmZlclNpemUgPSAzMjc2ODsNCitwdWJsaWM6DQorCWVudW0gY2xhc3MgTW9kZQ0KKwl7DQorCQlPcGVuLA0KKwkJT3Blbk5vQnVmZmVyaW5nLA0KKwkJQ3JlYXRlLA0KKwkJVHJ1bmNhdGUsDQorCQlBcHBlbmQNCisJfTsNCisJRmlsZVN0cmVhbShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoLCBNb2RlIG1vZGUpIDogRmlsZVN0cmVhbShmaWxlcGF0aCwgbW9kZSwga0RlZmF1bHRCdWZmZXJTaXplKSB7IH07DQorCUZpbGVTdHJlYW0oY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCwgTW9kZSBtb2RlLCBjb25zdCBEV09SRCBidWZmZXJzaXplKSA6IGZpbGVwYXRoXyhmaWxlcGF0aCksIG1vZGVfKG1vZGUpLCBidWZmZXJzaXplXyhidWZmZXJzaXplKQ0KKwl7DQorCQlBbGxvY2F0ZUJ1ZmZlcigpOw0KKwkJT3BlbkZpbGUoKTsNCisJfTsNCisJdmlydHVhbCB+RmlsZVN0cmVhbSgpDQorCXsNCisJCUZsdXNoKCk7DQorCQlDbG9zZUZpbGUoKTsNCisJCUZyZWVCdWZmZXIoKTsNCisJfTsNCisJRFdPUkQgUmVhZChQQllURSBidWZmZXIsIERXT1JEIGNvdW50KTsNCisJdm9pZCBXcml0ZShQQllURSBidWZmZXIsIERXT1JEIGNvdW50KTsNCisJdm9pZCBGbHVzaCgpOw0KKwl2b2lkIENsb3NlKCk7DQorCURXT1JEIGxhc3RlcnJvcigpIGNvbnN0IHsgcmV0dXJuIGxhc3RlcnJvcl87IH0NCitwcml2YXRlOg0KKwl2b2lkIEFsbG9jYXRlQnVmZmVyKCk7DQorCXZvaWQgT3BlbkZpbGUoKTsNCisJRFdPUkQgUmVhZChQQllURSBidWZmZXIsIERXT1JEIG9mZnNldCwgRFdPUkQgY291bnQpOw0KKwlEV09SRCBXcml0ZShQQllURSBidWZmZXIsIERXT1JEIG9mZnNldCwgRFdPUkQgY291bnQpOw0KKwl2b2lkIEZsdXNoV3JpdGUoKTsNCisJdm9pZCBDbG9zZUZpbGUoKTsNCisJdm9pZCBGcmVlQnVmZmVyKCk7DQorCURXT1JEIHJlYWRpbmRleF8gPSAwOw0KKwlEV09SRCByZWFkbGVuZ3RoXyA9IDA7DQorCURXT1JEIHdyaXRlaW5kZXhfID0gMDsNCisJUEJZVEUgYnVmZmVyXyA9IE5VTEw7DQorCWNvbnN0IHN0ZDo6d3N0cmluZyBmaWxlcGF0aF87DQorCU1vZGUgbW9kZV87DQorCWNvbnN0IERXT1JEIGJ1ZmZlcnNpemVfOw0KKwlIQU5ETEUgZmlsZWhhbmRsZV8gPSBOVUxMOw0KKwlEV09SRCBsYXN0ZXJyb3JfID0gMDsNCit9Ow0KKw0KKyNlbmRpZiAvKiBGSUxFU1RSRUFNX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZVRyZWUuY3BwIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZVRyZWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTUwMjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlVHJlZS5jcHAKQEAgLTAsMCArMSwzMSBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaW5jbHVkZSAiRmlsZVRyZWUuaCINCisNCit2b2lkIEZpbGVUcmVlOjpQcm9jZXNzVHJlZShjb25zdCBzdGQ6OndzdHJpbmcmIHBhdGgpIGNvbnN0IA0KK3sNCisJV0lOMzJfRklORF9EQVRBVyBmaW5kZmlsZWRhdGE7DQorCUhBTkRMRSBoRmluZDsNCisJc3RkOjp3c3RyaW5nIHBhdHRlcm4gPSBwYXRoICsgTCIqIjsNCisJaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhwYXR0ZXJuLmNfc3RyKCksICZmaW5kZmlsZWRhdGEpOw0KKwlpZiAoaEZpbmQgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQorCXsNCisJCWRvIA0KKwkJew0KKwkJCWlmIChmaW5kZmlsZWRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgDQorCQkJew0KKwkJCQlpZiAobHN0cmNtcFcoZmluZGZpbGVkYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJiBsc3RyY21wVyhmaW5kZmlsZWRhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgDQorCQkJCXsNCisJCQkJCXN0ZDo6d3N0cmluZyBjdXJyZW50cGF0aChwYXRoICsgZmluZGZpbGVkYXRhLmNGaWxlTmFtZSArIEwiXFwiKTsNCisJCQkJCVByb2Nlc3NUcmVlKGN1cnJlbnRwYXRoKTsNCisJCQkJfQ0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQlzdGQ6OndzdHJpbmcgY3VycmVudGZpbGUocGF0aCArIGZpbmRmaWxlZGF0YS5jRmlsZU5hbWUpOw0KKwkJCQlmaWxlYWN0aW9uXy5Qcm9jZXNzRmlsZShjdXJyZW50ZmlsZSk7DQorCQkJfQ0KKwkJfSB3aGlsZSAoRmluZE5leHRGaWxlVyhoRmluZCwgJmZpbmRmaWxlZGF0YSkpOw0KKwkJRmluZENsb3NlKGhGaW5kKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9GaWxlVHJlZS5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZVRyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGI3NzgxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvRmlsZVRyZWUuaApAQCAtMCwwICsxLDMwIEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgRklMRVRSRUVfSF8NCisjZGVmaW5lIEZJTEVUUkVFX0hfDQorDQorI2luY2x1ZGUgPHN0cmluZz4NCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKw0KK2NsYXNzIElGaWxlVHJlZUFjdGlvbg0KK3sNCitwdWJsaWM6DQorCXZpcnR1YWwgfklGaWxlVHJlZUFjdGlvbigpIHsgfQ0KKwl2aXJ0dWFsIHZvaWQgUHJvY2Vzc0ZpbGUoY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCkgPSAwOw0KK307DQorDQorY2xhc3MgRmlsZVRyZWUNCit7DQorcHVibGljOg0KKwlGaWxlVHJlZShjb25zdCBzdGQ6OndzdHJpbmcgYmFzZXBhdGgsIElGaWxlVHJlZUFjdGlvbiYgZmlsZWFjdGlvbikgOiBiYXNlcGF0aF8oYmFzZXBhdGgpLCBmaWxlYWN0aW9uXyhmaWxlYWN0aW9uKSB7IH07DQorCXZvaWQgUHJvY2VzcygpIGNvbnN0IA0KKwl7DQorCQlQcm9jZXNzVHJlZShiYXNlcGF0aF8pOw0KKwl9DQorcHJpdmF0ZToNCisJdm9pZCBQcm9jZXNzVHJlZShjb25zdCBzdGQ6OndzdHJpbmcmIHBhdGgpIGNvbnN0Ow0KKwljb25zdCBzdGQ6OndzdHJpbmcgYmFzZXBhdGhfOw0KKwlJRmlsZVRyZWVBY3Rpb24mIGZpbGVhY3Rpb25fOw0KK307DQorDQorI2VuZGlmIC8qIEZJTEVUUkVFX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvSGFzaENoZWNrLmNwcCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkYzAyOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVjay5jcHAKQEAgLTAsMCArMSwyNTkgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2luY2x1ZGUgIkhhc2hDaGVjay5oIg0KKw0KK0xQQ1dTVFIgSGFzaENoZWNrOjprSGFzaEZpbGVCYXNlTmFtZSA9IEwiY2hlY2tzdW0iOw0KKw0KK3ZvaWQgSGFzaENoZWNrOjpJbml0aWFsaXplKCkNCit7DQorCXNpbGVudF8gPSBjaGVja2luZ18gPSB1cGRhdGluZ18gPSBza2lwY2hlY2tfID0gRkFMU0U7DQorCWhhc2h0eXBlXyA9IEhhc2hUeXBlOjpVbmRlZmluZWQ7DQorCWFwcGZpbGVuYW1lXyA9IEdldEFwcEZpbGVOYW1lKGFyZ3NfWzBdLmNfc3RyKCkpOw0KKw0KKwlhcmdzXy5lcmFzZShhcmdzXy5iZWdpbigpKTsNCisJaWYgKGFyZ3NfLnNpemUoKSA+IDApDQorCXsNCisJCXN0ZDo6dmVjdG9yPHN0ZDo6d3N0cmluZz46Oml0ZXJhdG9yIGl0Ow0KKwkJaXQgPSBzdGQ6OmZpbmQoYXJnc18uYmVnaW4oKSwgYXJnc18uZW5kKCksIEwiLXUiKTsNCisJCWlmIChpdCAhPSBhcmdzXy5lbmQoKSkNCisJCXsNCisJCQl1cGRhdGluZ18gPSBUUlVFOw0KKwkJCWFyZ3NfLmVyYXNlKGl0KTsNCisJCX0NCisJCWl0ID0gc3RkOjpmaW5kKGFyZ3NfLmJlZ2luKCksIGFyZ3NfLmVuZCgpLCBMIi1zbSIpOw0KKwkJaWYgKGl0ICE9IGFyZ3NfLmVuZCgpKQ0KKwkJew0KKwkJCXNraXBjaGVja18gPSBUUlVFOw0KKwkJCWFyZ3NfLmVyYXNlKGl0KTsNCisJCX0NCisJCWl0ID0gc3RkOjpmaW5kKGFyZ3NfLmJlZ2luKCksIGFyZ3NfLmVuZCgpLCBMIi1zaGExIik7DQorCQlpZiAoaXQgIT0gYXJnc18uZW5kKCkpDQorCQl7DQorCQkJaGFzaHR5cGVfID0gSGFzaFR5cGU6OlNIQTE7DQorCQkJYXJnc18uZXJhc2UoaXQpOw0KKwkJfQ0KKwkJaXQgPSBzdGQ6OmZpbmQoYXJnc18uYmVnaW4oKSwgYXJnc18uZW5kKCksIEwiLW1kNSIpOw0KKwkJaWYgKGl0ICE9IGFyZ3NfLmVuZCgpKQ0KKwkJew0KKwkJCWhhc2h0eXBlXyA9IEhhc2hUeXBlOjpNRDU7DQorCQkJYXJnc18uZXJhc2UoaXQpOw0KKwkJfQ0KKwkJaXQgPSBzdGQ6OmZpbmQoYXJnc18uYmVnaW4oKSwgYXJnc18uZW5kKCksIEwiLWNyYzMyIik7DQorCQlpZiAoaXQgIT0gYXJnc18uZW5kKCkpDQorCQl7DQorCQkJaGFzaHR5cGVfID0gSGFzaFR5cGU6OkNSQzMyOw0KKwkJCWFyZ3NfLmVyYXNlKGl0KTsNCisJCX0NCisJfQ0KKw0KKwlXSU4zMl9GSU5EX0RBVEFXIGZpbmRmaWxlZGF0YTsNCisJSEFORExFIGhGaW5kOw0KKw0KKwlpZiAoYXJnc18uc2l6ZSgpID4gMCkNCisJew0KKwkJc3RkOjp3c3RyaW5nIHRtcChhcmdzX1swXSk7DQorCQlpZiAoKih0bXAuZW5kKCkgLSAxKSAhPSBMJ1xcJykNCisJCXsNCisJCQl0bXAgKz0gTCdcXCc7DQorCQl9DQorCQl0bXAgKz0gTCIqIjsNCisJCWhGaW5kID0gRmluZEZpcnN0RmlsZVcodG1wLmNfc3RyKCksICZmaW5kZmlsZWRhdGEpOw0KKwkJaWYgKGhGaW5kICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7DQorCQkJRmluZENsb3NlKGhGaW5kKTsNCisJCQliYXNlcGF0aF8gPSBhcmdzX1swXSArIEwnXFwnOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXNpbGVudF8gPSBUUlVFOw0KKwkJfQ0KKwl9DQorDQorCXN0ZDo6d3N0cmluZyBiYXNlRmlsZW5hbWUgPSBrSGFzaEZpbGVCYXNlTmFtZTsNCisJaWYgKGhhc2h0eXBlXyA9PSBIYXNoVHlwZTo6U0hBMSkNCisJCWhhc2hmaWxlbmFtZV8gPSBiYXNlRmlsZW5hbWUgKyBMIi5zaGExIjsNCisJZWxzZSBpZiAoaGFzaHR5cGVfID09IEhhc2hUeXBlOjpNRDUpDQorCQloYXNoZmlsZW5hbWVfID0gYmFzZUZpbGVuYW1lICsgTCIubWQ1IjsNCisJZWxzZSBpZiAoaGFzaHR5cGVfID09IEhhc2hUeXBlOjpDUkMzMikNCisJCWhhc2hmaWxlbmFtZV8gPSBiYXNlRmlsZW5hbWUgKyBMIi5jcmMzMiI7DQorCWVsc2UNCisJew0KKwkJaGFzaGZpbGVuYW1lXyA9IGJhc2VGaWxlbmFtZSArIEwiLnNoYTEiOw0KKwkJaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhoYXNoZmlsZW5hbWVfLmNfc3RyKCksICZmaW5kZmlsZWRhdGEpOw0KKwkJaWYgKGhGaW5kICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KKwkJew0KKwkJCUZpbmRDbG9zZShoRmluZCk7DQorCQkJaGFzaHR5cGVfID0gSGFzaFR5cGU6OlNIQTE7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaGFzaGZpbGVuYW1lXyA9IGJhc2VGaWxlbmFtZSArIEwiLm1kNSI7DQorCQkJaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhoYXNoZmlsZW5hbWVfLmNfc3RyKCksICZmaW5kZmlsZWRhdGEpOw0KKwkJCWlmIChoRmluZCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCisJCQl7DQorCQkJCUZpbmRDbG9zZShoRmluZCk7DQorCQkJCWhhc2h0eXBlXyA9IEhhc2hUeXBlOjpNRDU7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCWhhc2hmaWxlbmFtZV8gPSBiYXNlRmlsZW5hbWUgKyBMIi5jcmMzMiI7DQorCQkJCWhGaW5kID0gRmluZEZpcnN0RmlsZVcoaGFzaGZpbGVuYW1lXy5jX3N0cigpLCAmZmluZGZpbGVkYXRhKTsNCisJCQkJaWYgKGhGaW5kICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KKwkJCQl7DQorCQkJCQlGaW5kQ2xvc2UoaEZpbmQpOw0KKwkJCQkJaGFzaHR5cGVfID0gSGFzaFR5cGU6OkNSQzMyOw0KKwkJCQl9DQorCQkJCWVsc2UNCisJCQkJew0KKwkJCQkJaGFzaGZpbGVuYW1lXyA9IGJhc2VGaWxlbmFtZSArIEwiLnNoYTEiOw0KKwkJCQkJaGFzaHR5cGVfID0gSGFzaFR5cGU6OlNIQTE7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisNCisJaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhoYXNoZmlsZW5hbWVfLmNfc3RyKCksICZmaW5kZmlsZWRhdGEpOw0KKwlpZiAoaEZpbmQgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQorCXsNCisJCUZpbmRDbG9zZShoRmluZCk7DQorCQlpZiAoIShmaW5kZmlsZWRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpDQorCQl7DQorCQkJY2hlY2tpbmdfID0gIXVwZGF0aW5nXzsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlpZiAoIXNpbGVudF8pDQorCQkJew0KKwkJCQlzdGQ6OndzdHJpbmcgbXNnID0gTCJFcnJvcjogQ2FuJ3QgY3JlYXRlIGhhc2ggZmlsZS4gRGVsZXRlICciICsgaGFzaGZpbGVuYW1lXyArIEwiJyBmb2xkZXIuIjsNCisJCQkJTWVzc2FnZUJveFcoTlVMTCwgbXNnLmNfc3RyKCksIEwiSGFzaENoZWNrIiwgTUJfSUNPTkVSUk9SIHwgTUJfU1lTVEVNTU9EQUwpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQkvLyAuLi4NCisJCQl9DQorCQkJRXhpdFByb2Nlc3MoMCk7DQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQl1cGRhdGluZ18gPSBGQUxTRTsNCisJfQ0KKw0KK30NCisNCitpbnQgSGFzaENoZWNrOjpQcm9jZXNzKCkgY29uc3QNCit7DQorCWF1dG8gbW9kZSA9IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpDcmVhdGU7DQorCWlmIChjaGVja2luZ18pDQorCXsNCisJCW1vZGUgPSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VmVyaWZ5Ow0KKwl9DQorCWVsc2UgaWYgKHVwZGF0aW5nXykNCisJew0KKwkJbW9kZSA9IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpVcGRhdGU7DQorCX0NCisNCisJYXV0byBoYXNodHlwZSA9IEhhc2hUeXBlOjpVbmRlZmluZWQ7DQorCXN3aXRjaCAoaGFzaHR5cGVfKQ0KKwl7DQorCWNhc2UgSGFzaFR5cGU6OkNSQzMyOg0KKwkJaGFzaHR5cGUgPSBIYXNoVHlwZTo6Q1JDMzI7DQorCQlicmVhazsNCisJY2FzZSBIYXNoVHlwZTo6TUQ1Og0KKwkJaGFzaHR5cGUgPSBIYXNoVHlwZTo6TUQ1Ow0KKwkJYnJlYWs7DQorCWNhc2UgSGFzaFR5cGU6OlNIQTE6DQorCQloYXNodHlwZSA9IEhhc2hUeXBlOjpTSEExOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlIYXNoRmlsZVByb2Nlc3NvciBoYXNoZmlsZXByb2Nlc3Nvcihtb2RlLCBoYXNodHlwZSwgaGFzaGZpbGVuYW1lXywgYXBwZmlsZW5hbWVfLCBiYXNlcGF0aF8pOw0KKyAJYXV0byByZXN1bHQgPSBoYXNoZmlsZXByb2Nlc3Nvci5Qcm9jZXNzVHJlZSgpOw0KKwlCT09MIHZpZXdyZXBvcnQgPSBGQUxTRTsNCisJaW50IGV4aXRjb2RlID0gMDsNCisJc3dpdGNoIChyZXN1bHQpDQorCXsNCisJY2FzZSBIYXNoRmlsZVByb2Nlc3Nvcjo6UHJvY2Vzc1Jlc3VsdDo6RmlsZXNBcmVNaXNzaW5nOg0KKwkJaWYgKHVwZGF0aW5nXykNCisJCXsNCisJCQlNZXNzYWdlQm94VyhOVUxMLCBMIkVycm9yOiBDYW4ndCB1cGRhdGUgYmVjYXVzZSBmaWxlcyBhcmUgbWlzc2luZy4iLCBMIkhhc2hDaGVjayIsIE1CX0lDT05FUlJPUiB8IE1CX1NZU1RFTU1PREFMKTsNCisJCX0NCisJCXZpZXdyZXBvcnQgPSBUUlVFOw0KKwkJZXhpdGNvZGUgPSAtMTsNCisJCWJyZWFrOw0KKwljYXNlIEhhc2hGaWxlUHJvY2Vzc29yOjpQcm9jZXNzUmVzdWx0OjpFcnJvcnNPY2N1cnJlZFdoaWxlUHJvY2Vzc2luZzoNCisJCXZpZXdyZXBvcnQgPSBUUlVFOw0KKwkJZXhpdGNvZGUgPSAtMjsNCisJCWJyZWFrOw0KKwljYXNlIEhhc2hGaWxlUHJvY2Vzc29yOjpQcm9jZXNzUmVzdWx0OjpDb3VsZE5vdE9wZW5IYXNoRmlsZToNCisJCU1lc3NhZ2VCb3hXKE5VTEwsIEwiRXJyb3I6IENvdWxkIG5vdCBvcGVuIGhhc2ggZmlsZS4iLCBMIkhhc2hDaGVjayIsIE1CX0lDT05FUlJPUiB8IE1CX1NZU1RFTU1PREFMKTsNCisJCWV4aXRjb2RlID0gLTM7DQorCQlicmVhazsNCisJY2FzZSBIYXNoRmlsZVByb2Nlc3Nvcjo6UHJvY2Vzc1Jlc3VsdDo6Tm9GaWxlVG9Qcm9jZXNzOg0KKwkJTWVzc2FnZUJveFcoTlVMTCwgTCJFcnJvcjogTm8gZmlsZSB0byBwcm9jZXNzLiIsIEwiSGFzaENoZWNrIiwgTUJfSUNPTkVSUk9SIHwgTUJfU1lTVEVNTU9EQUwpOw0KKwkJZXhpdGNvZGUgPSAtNDsNCisJCWJyZWFrOw0KKwljYXNlIEhhc2hGaWxlUHJvY2Vzc29yOjpQcm9jZXNzUmVzdWx0OjpOb3RoaW5nVG9VcGRhdGU6DQorCQlNZXNzYWdlQm94VyhOVUxMLCBMIkVycm9yOiBOb3RoaW5nIHRvIHVwZGF0ZS4iLCBMIkhhc2hDaGVjayIsIE1CX0lDT05FUlJPUiB8IE1CX1NZU1RFTU1PREFMKTsNCisJCWV4aXRjb2RlID0gLTU7DQorCQlicmVhazsNCisJY2FzZSBIYXNoRmlsZVByb2Nlc3Nvcjo6UHJvY2Vzc1Jlc3VsdDo6U3VjY2VzczoNCisJCWlmIChjaGVja2luZ18pDQorCQl7DQorCQkJTWVzc2FnZUJveFcoTlVMTCwgTCJBbGwgZmlsZXMgT0suIiwgTCJIYXNoQ2hlY2siLCBNQl9JQ09OSU5GT1JNQVRJT04gfCBNQl9TWVNURU1NT0RBTCk7DQorCQl9DQorCQllbHNlIGlmICh1cGRhdGluZ18pDQorCQl7DQorCQkJTWVzc2FnZUJveFcoTlVMTCwgTCJIYXNoIGZpbGUgd2FzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LiIsIEwiSGFzaENoZWNrIiwgTUJfSUNPTklORk9STUFUSU9OIHwgTUJfU1lTVEVNTU9EQUwpOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCU1lc3NhZ2VCb3hXKE5VTEwsIEwiSGFzaCBmaWxlIHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4iLCBMIkhhc2hDaGVjayIsIE1CX0lDT05JTkZPUk1BVElPTiB8IE1CX1NZU1RFTU1PREFMKTsNCisJCX0NCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJaWYgKHZpZXdyZXBvcnQpDQorCXsNCisJCVdDSEFSIHRlbXBmaWxlW01BWF9QQVRIXTsNCisJCVdDSEFSIHRlbXBmb2xkZXJbTUFYX1BBVEhdOw0KKwkJR2V0VGVtcFBhdGhXKE1BWF9QQVRILCB0ZW1wZm9sZGVyKTsNCisJCUdldFRlbXBGaWxlTmFtZVcodGVtcGZvbGRlciwgTCJIYXNoQ2hlY2siLCAwLCB0ZW1wZmlsZSk7DQorCQloYXNoZmlsZXByb2Nlc3Nvci5TYXZlUmVwb3J0KHRlbXBmaWxlKTsNCisJCVZpZXdSZXBvcnQodGVtcGZpbGUpOw0KKwl9DQorDQorCXJldHVybiBleGl0Y29kZTsNCit9DQorDQorc3RkOjp3c3RyaW5nIEhhc2hDaGVjazo6R2V0QXBwRmlsZU5hbWUoTFBDV1NUUiBhcHB0aXRsZSkgY29uc3QNCit7DQorCXN0ZDo6d3N0cmluZyB0ZW1wID0gYXBwdGl0bGU7DQorCWF1dG8gcG9zMSA9IHRlbXAucmZpbmQoTCJcXCIpICsgMTsNCisJYXV0byBwb3MyID0gdGVtcC5yZmluZChMIi4iKSArIDQgLSBwb3MxOw0KKwlyZXR1cm4gdGVtcC5zdWJzdHIocG9zMSwgcG9zMik7DQorfQ0KKw0KK0JPT0wgSGFzaENoZWNrOjpWaWV3UmVwb3J0KExQQ1dTVFIgZmlsZXBhdGgpIGNvbnN0DQorew0KKwlXQ0hBUiBjbWRsaW5lWzI1NV07DQorCWxzdHJjcHlXKGNtZGxpbmUsIEwibm90ZXBhZC5leGUgIik7DQorCWxzdHJjYXRXKGNtZGxpbmUsIGZpbGVwYXRoKTsNCisJU1RBUlRVUElORk9XIHNpOw0KKwlaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7DQorCXNpLmNiID0gc2l6ZW9mKHNpKTsNCisJUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsNCisJWmVyb01lbW9yeSgmcGksIHNpemVvZihwaSkpOw0KKwlpZiAoQ3JlYXRlUHJvY2Vzc1coTlVMTCwgY21kbGluZSwgTlVMTCwgTlVMTCwgRkFMU0UsIDAsIE5VTEwsIE5VTEwsICZzaSwgJnBpKSkNCisJew0KKwkJV2FpdEZvclNpbmdsZU9iamVjdChwaS5oUHJvY2VzcywgSU5GSU5JVEUpOw0KKwkJQ2xvc2VIYW5kbGUocGkuaFByb2Nlc3MpOw0KKwkJQ2xvc2VIYW5kbGUocGkuaFRocmVhZCk7DQorCQlyZXR1cm4gVFJVRTsNCisJfQ0KKwlyZXR1cm4gRkFMU0U7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVjay5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvSGFzaENoZWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFkNzg2OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVjay5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBIQVNIQ0hFQ0tfSF8NCisjZGVmaW5lIEhBU0hDSEVDS19IXw0KKw0KKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MNCisNCisjaW5jbHVkZSAiSGFzaFR5cGUuaCINCisjaW5jbHVkZSAiSGFzaEZpbGVQcm9jZXNzb3IuaCINCisjaW5jbHVkZSA8dmVjdG9yPg0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPGFsZ29yaXRobT4NCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKw0KK2NsYXNzIEhhc2hDaGVjaw0KK3sNCitwcml2YXRlOg0KKwlzdGF0aWMgTFBDV1NUUiBrSGFzaEZpbGVCYXNlTmFtZTsNCitwdWJsaWM6DQorCUhhc2hDaGVjayhzdGQ6OnZlY3RvcjxzdGQ6OndzdHJpbmc+IGFyZ3MpIDogYXJnc18oYXJncykNCisJew0KKwkJSW5pdGlhbGl6ZSgpOw0KKwl9Ow0KKwlpbnQgUHJvY2VzcygpIGNvbnN0Ow0KK3ByaXZhdGU6DQorCXZvaWQgSW5pdGlhbGl6ZSgpOw0KKwlzdGQ6OndzdHJpbmcgR2V0QXBwRmlsZU5hbWUoTFBDV1NUUiBhcHB0aXRsZSkgY29uc3Q7DQorCUJPT0wgVmlld1JlcG9ydChMUENXU1RSIGZpbGVwYXRoKSBjb25zdDsNCitwcml2YXRlOg0KKwlzdGQ6OnZlY3RvcjxzdGQ6OndzdHJpbmc+IGFyZ3NfOw0KKwlzdGQ6OndzdHJpbmcgaGFzaGZpbGVuYW1lXzsNCisJc3RkOjp3c3RyaW5nIGJhc2VwYXRoXzsNCisJc3RkOjp3c3RyaW5nIGFwcGZpbGVuYW1lXzsNCisJSGFzaFR5cGUgaGFzaHR5cGVfOw0KKwlCT09MIHNpbGVudF87DQorCUJPT0wgY2hlY2tpbmdfOw0KKwlCT09MIHVwZGF0aW5nXzsNCisJQk9PTCBza2lwY2hlY2tfOw0KK307DQorDQorI2VuZGlmIC8qIEhBU0hDSEVDS19IXyAqLw0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVjay5pY28gYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoQ2hlY2suaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NmNjODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoQ2hlY2suaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVja1dpbmRvdy5jcHAgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoQ2hlY2tXaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZGJhYTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoQ2hlY2tXaW5kb3cuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2luY2x1ZGUgIkhhc2hDaGVja1dpbmRvdy5oIg0KKw0KK0xSRVNVTFQgSGFzaENoZWNrV2luZG93OjpPbkNyZWF0ZSgpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorTFJFU1VMVCBIYXNoQ2hlY2tXaW5kb3c6OkhhbmRsZU1lc3NhZ2UoVUlOVCB1TXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQ0KK3sNCisJc3dpdGNoICh1TXNnKQ0KKwl7DQorCWNhc2UgV01fQ1JFQVRFOg0KKwkJcmV0dXJuIE9uQ3JlYXRlKCk7DQorCWNhc2UgV01fTkNERVNUUk9ZOg0KKwkJLy8gRGVhdGggb2YgdGhlIHJvb3Qgd2luZG93IGVuZHMgdGhlIHRocmVhZA0KKwkJUG9zdFF1aXRNZXNzYWdlKDApOw0KKwkJYnJlYWs7DQorCWNhc2UgV01fU0laRToNCisJCWlmIChod25kQ2hpbGRfKQ0KKwkJew0KKwkJCVNldFdpbmRvd1Bvcyhod25kQ2hpbGRfLCBOVUxMLCAwLCAwLCBHRVRfWF9MUEFSQU0obFBhcmFtKSwgDQorCQkJCUdFVF9ZX0xQQVJBTShsUGFyYW0pLCBTV1BfTk9aT1JERVIgfCBTV1BfTk9BQ1RJVkFURSk7DQorCQl9DQorCQlyZXR1cm4gMDsNCisJY2FzZSBXTV9TRVRGT0NVUzoNCisJCWlmIChod25kQ2hpbGRfKQ0KKwkJew0KKwkJCVNldEZvY3VzKGh3bmRDaGlsZF8pOw0KKwkJfQ0KKwkJcmV0dXJuIDA7DQorCX0NCisJcmV0dXJuIFdpbmRvdzo6SGFuZGxlTWVzc2FnZSh1TXNnLCB3UGFyYW0sIGxQYXJhbSk7DQorfQ0KKw0KK0hhc2hDaGVja1dpbmRvdyogSGFzaENoZWNrV2luZG93OjpDcmVhdGUoSElOU1RBTkNFIGhJbnN0KQ0KK3sNCisJYXV0byBzZWxmID0gbmV3IEhhc2hDaGVja1dpbmRvdyhoSW5zdCk7DQorCWlmIChzZWxmICE9IE5VTEwpDQorCXsNCisJCWlmIChzZWxmLT5XaW5DcmVhdGVXaW5kb3coMCwgTCJIYXNoQ2hlY2tXaW5kb3ciLCBXU19PVkVSTEFQUEVEV0lORE9XLA0KKwkJCUNXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIENXX1VTRURFRkFVTFQsIE5VTEwsIE5VTEwpKQ0KKwkJew0KKwkJCXJldHVybiBzZWxmOw0KKwkJfQ0KKwkJZGVsZXRlIHNlbGY7DQorCX0NCisJcmV0dXJuIE5VTEw7DQorfQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVja1dpbmRvdy5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvSGFzaENoZWNrV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlYTNkNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hDaGVja1dpbmRvdy5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBIQVNIQ0hFQ0tXSU5ET1dfSF8NCisjZGVmaW5lIEhBU0hDSEVDS1dJTkRPV19IXw0KKw0KKyNpbmNsdWRlICJXaW5kb3cuaCINCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKyNpbmNsdWRlIDx3aW5kb3dzeC5oPg0KKw0KK2NsYXNzIEhhc2hDaGVja1dpbmRvdyA6IHB1YmxpYyBXaW5kb3cNCit7DQorcHVibGljOg0KKyNpZiBfTVNDX1ZFUiA8IDE5MDANCisJSGFzaENoZWNrV2luZG93KEhJTlNUQU5DRSBoaW5zdCkgOiBXaW5kb3coaGluc3QpIHsgfTsNCisjZWxzZQ0KKwl1c2luZyBXaW5kb3c6OldpbmRvdzsNCisjZW5kaWYJDQorCXZpcnR1YWwgTFBDV1NUUiBDbGFzc05hbWUoKSB7IHJldHVybiBMIkhhc2hDaGVja1dpbmRvdyI7IH0NCisJc3RhdGljIEhhc2hDaGVja1dpbmRvdyAqQ3JlYXRlKEhJTlNUQU5DRSBoSW5zdCk7DQorcHJvdGVjdGVkOg0KKwlMUkVTVUxUIEhhbmRsZU1lc3NhZ2UoVUlOVCB1TXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsNCisJTFJFU1VMVCBPbkNyZWF0ZSgpOw0KK3ByaXZhdGU6DQorCUhXTkQgaHduZENoaWxkXzsNCit9Ow0KKw0KKyNlbmRpZiAvKiBIQVNIQ0hFQ0tXSU5ET1dfSF8gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZS5jcHAgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBmMmFlZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hGaWxlLmNwcApAQCAtMCwwICsxLDExMCBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaW5jbHVkZSAiSGFzaEZpbGUuaCINCisNCitjb25zdCBGaWxlRW50cnkgSGFzaEZpbGU6OmtGaWxlRW50cnlOdWxsID0gRmlsZUVudHJ5KEwiIiwgTEFSR0VfSU5URUdFUigpLCBMIiIpOw0KKw0KK3ZvaWQgSGFzaEZpbGU6OkxvYWQoY29uc3Qgc3RkOjp3c3RyaW5nJiBoYXNoZmlsZXBhdGgpDQorew0KKwlGaWxlU3RyZWFtIGhhc2hmaWxlKGhhc2hmaWxlcGF0aC5jX3N0cigpLCBGaWxlU3RyZWFtOjpNb2RlOjpPcGVuKTsNCisJU3RyZWFtTGluZVJlYWRlciBoYXNoZmlsZXJlYWRlcihoYXNoZmlsZSk7DQorCVdDSEFSIGJ1ZmZlclsyMDQ4XTsNCisJc3RkOjp3c3RyaW5nIGxpbmUsIGtleSwgc2l6ZXRlbXAsIGZpbGVwYXRoLCBkaWdlc3Q7DQorCXN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHBvczEsIHBvczI7DQorCUxBUkdFX0lOVEVHRVIgc2l6ZTsNCisJLy8gaGFzaCBsaW5lIGZvcm1hdDogPGZpbGVwYXRoPnw8c2l6ZT58PGRpZ2VzdD4gDQorCWRvIA0KKwl7DQorCQlsaW5lID0gaGFzaGZpbGVyZWFkZXIuUmVhZExpbmUoKTsNCisJCWlmIChJc1ZhbGlkSGFzaExpbmUobGluZSkpDQorCQl7DQorCQkJcG9zMSA9IGxpbmUuZmluZCgnfCcsIDApOw0KKwkJCWZpbGVwYXRoID0gbGluZS5zdWJzdHIoMCwgcG9zMSk7DQorCQkJbHN0cmNweVcoYnVmZmVyLCBmaWxlcGF0aC5jX3N0cigpKTsNCisJCQlrZXkgPSBDaGFyVXBwZXJXKGJ1ZmZlcik7DQorCQkJcG9zMiA9IGxpbmUuZmluZCgnfCcsIHBvczEgKyAxKTsNCisJCQlzaXpldGVtcCA9IGxpbmUuc3Vic3RyKHBvczEgKyAxLCBwb3MyIC0gKHBvczEgKyAxKSk7DQorCQkJc3RkOjp3c3RyaW5nc3RyZWFtIHdzcyhzaXpldGVtcCk7DQorCQkJd3NzID4+IHNpemUuUXVhZFBhcnQ7DQorCQkJZGlnZXN0ID0gbGluZS5zdWJzdHIocG9zMiArIDEsIGxpbmUuc2l6ZSgpIC0gcG9zMik7DQorCQkJZmlsZXNfLmluc2VydChzdGQ6OnBhaXI8c3RkOjp3c3RyaW5nLCBGaWxlRW50cnk+KGtleSwgRmlsZUVudHJ5KGZpbGVwYXRoLCBzaXplLCBkaWdlc3QpKSk7DQorCQl9DQorCX0gd2hpbGUgKCFoYXNoZmlsZXJlYWRlci5FbmRPZlN0cmVhbSgpKTsNCit9DQorDQordm9pZCBIYXNoRmlsZTo6U2F2ZShjb25zdCBzdGQ6OndzdHJpbmcmIGhhc2hmaWxlcGF0aCkgY29uc3QNCit7DQorCUZpbGVTdHJlYW0gaGFzaGZpbGUoaGFzaGZpbGVwYXRoLCBGaWxlU3RyZWFtOjpNb2RlOjpDcmVhdGUpOw0KKwlTdHJlYW1MaW5lV3JpdGVyIGhhc2hmaWxld3JpdGVyKGhhc2hmaWxlKTsNCisJZm9yIChhdXRvJiBpdGVtIDogZmlsZXNfKSANCisJew0KKwkJYXV0byBmaWxlZW50cnkgPSBpdGVtLnNlY29uZDsNCisJCWhhc2hmaWxld3JpdGVyLldyaXRlTGluZShmaWxlZW50cnkuZmlsZXBhdGgoKSArIEwifCIgKyBMYXJnZUludFRvU3RyaW5nKGZpbGVlbnRyeS5zaXplKCkpICsgTCJ8IiArIGZpbGVlbnRyeS5kaWdlc3QoKSk7DQorCX0NCit9DQorDQordm9pZCBIYXNoRmlsZTo6QWRkRmlsZUVudHJ5KGNvbnN0IHN0ZDo6d3N0cmluZyBmaWxlcGF0aCwgY29uc3QgTEFSR0VfSU5URUdFUiBzaXplLCBjb25zdCBzdGQ6OndzdHJpbmcgZGlnZXN0KQ0KK3sNCisJZmlsZXNfLmluc2VydChzdGQ6OnBhaXI8c3RkOjp3c3RyaW5nLCBGaWxlRW50cnk+KGZpbGVwYXRoLCBGaWxlRW50cnkoZmlsZXBhdGgsIHNpemUsIGRpZ2VzdCkpKTsNCit9DQorDQorc3RkOjptYXA8c3RkOjp3c3RyaW5nLCBGaWxlRW50cnksIHN0ZDo6bGVzczxzdGQ6OndzdHJpbmc+Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaEZpbGU6OkZpbmRFbnRyeShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoKSBjb25zdA0KK3sNCisJV0NIQVIga2V5WzIwNDhdOw0KKwlsc3RyY3B5VyhrZXksIGZpbGVwYXRoLmNfc3RyKCkpOw0KKwlDaGFyVXBwZXJXKGtleSk7DQorCXJldHVybiBmaWxlc18uZmluZChrZXkpOw0KK30NCisNCit2b2lkIEhhc2hGaWxlOjpSZW1vdmVGaWxlRW50cnkoY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCkNCit7DQorCWF1dG8gaSA9IEZpbmRFbnRyeShmaWxlcGF0aCk7DQorCWlmIChpICE9IGZpbGVzXy5lbmQoKSkNCisJew0KKwkJZmlsZXNfLmVyYXNlKGkpOw0KKwl9DQorfQ0KKw0KK0JPT0wgSGFzaEZpbGU6OkNvbnRhaW5zRmlsZUVudHJ5KGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIGNvbnN0DQorew0KKwlhdXRvIGkgPSBGaW5kRW50cnkoZmlsZXBhdGgpOw0KKwlyZXR1cm4gaSAhPSBmaWxlc18uZW5kKCk7DQorfQ0KKw0KK2NvbnN0IEZpbGVFbnRyeSYgSGFzaEZpbGU6OkdldEZpbGVFbnRyeShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoKSBjb25zdA0KK3sNCisJYXV0byBpID0gRmluZEVudHJ5KGZpbGVwYXRoKTsNCisJaWYgKGkgIT0gZmlsZXNfLmVuZCgpKQ0KKwl7DQorCQlyZXR1cm4gKCppKS5zZWNvbmQ7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlyZXR1cm4ga0ZpbGVFbnRyeU51bGw7DQorCX0NCit9DQorDQorc3RkOjpsaXN0PHN0ZDo6d3N0cmluZz4gSGFzaEZpbGU6OkdldEZpbGVQYXRocygpIGNvbnN0DQorew0KKwlzdGQ6Omxpc3Q8c3RkOjp3c3RyaW5nPiBmaWxlcGF0aHM7DQorCWZvciAoYXV0byYgaXRlbSA6IGZpbGVzXykNCisJew0KKwkJZmlsZXBhdGhzLnB1c2hfYmFjayhpdGVtLnNlY29uZC5maWxlcGF0aCgpKTsNCisJfQ0KKwlyZXR1cm4gZmlsZXBhdGhzOw0KK30NCisNCitCT09MIEhhc2hGaWxlOjpJc1ZhbGlkSGFzaExpbmUoY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlZW50cnlsaW5lKSBjb25zdA0KK3sNCisJaWYgKGZpbGVlbnRyeWxpbmUuc2l6ZSgpID09IDApIHJldHVybiBGQUxTRTsNCisJaWYgKGZpbGVlbnRyeWxpbmUuc2l6ZSgpID4gMjE3NikgcmV0dXJuIEZBTFNFOw0KKwkvLyBUT0RPOiBpbXBsZW1lbnQgcHJvcGVyIGhhc2ggbGluZSB2YWxpZGF0aW9uDQorCXJldHVybiBUUlVFOw0KK30NCisNCitzdGQ6OndzdHJpbmcgSGFzaEZpbGU6OkxhcmdlSW50VG9TdHJpbmcoY29uc3QgTEFSR0VfSU5URUdFUiYgbGkpIGNvbnN0DQorew0KKwlzdGQ6OndzdHJpbmdzdHJlYW0gd3NzOw0KKwl3c3MgPDwgbGkuUXVhZFBhcnQ7DQorCXJldHVybiB3c3Muc3RyKCk7DQorfQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hGaWxlLmggYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YmI2YjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBIQVNIRklMRV9IXw0KKyNkZWZpbmUgSEFTSEZJTEVfSF8NCisNCisjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIg0KKyNpbmNsdWRlICJTdHJlYW1MaW5lUmVhZGVyLmgiDQorI2luY2x1ZGUgIlN0cmVhbUxpbmVXcml0ZXIuaCINCisjaW5jbHVkZSA8c3N0cmVhbT4NCisjaW5jbHVkZSA8bGlzdD4NCisjaW5jbHVkZSA8bWFwPg0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPFdpbmRvd3MuaD4NCisNCitjbGFzcyBGaWxlRW50cnkNCit7DQorcHVibGljOg0KKwlGaWxlRW50cnkoY29uc3Qgc3RkOjp3c3RyaW5nIGZpbGVwYXRoLCBjb25zdCBMQVJHRV9JTlRFR0VSIHNpemUsIGNvbnN0IHN0ZDo6d3N0cmluZyBkaWdlc3QpIA0KKwkJOiBmaWxlcGF0aF8oZmlsZXBhdGgpLCBzaXplXyhzaXplKSwgZGlnZXN0XyhkaWdlc3QpIHsgfTsNCisJc3RkOjp3c3RyaW5nIGZpbGVwYXRoKCkgY29uc3QgeyByZXR1cm4gZmlsZXBhdGhfOyB9DQorCUxBUkdFX0lOVEVHRVIgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVfOyB9DQorCXN0ZDo6d3N0cmluZyBkaWdlc3QoKSBjb25zdCB7IHJldHVybiBkaWdlc3RfOyB9DQorcHJpdmF0ZToNCisJY29uc3Qgc3RkOjp3c3RyaW5nIGZpbGVwYXRoXzsNCisJY29uc3QgTEFSR0VfSU5URUdFUiBzaXplXzsNCisJY29uc3Qgc3RkOjp3c3RyaW5nIGRpZ2VzdF87DQorfTsNCisNCitjbGFzcyBIYXNoRmlsZQ0KK3sNCitwdWJsaWM6DQorCXN0YXRpYyBjb25zdCBGaWxlRW50cnkga0ZpbGVFbnRyeU51bGw7DQorcHVibGljOg0KKwlIYXNoRmlsZSgpIHsgfTsNCisJfkhhc2hGaWxlKCkNCisJew0KKwkJZmlsZXNfLmNsZWFyKCk7DQorCX0NCisJdm9pZCBTYXZlKGNvbnN0IHN0ZDo6d3N0cmluZyYgaGFzaGZpbGVwYXRoKSBjb25zdDsNCisJdm9pZCBMb2FkKGNvbnN0IHN0ZDo6d3N0cmluZyYgaGFzaGZpbGVwYXRoKTsNCisJdm9pZCBBZGRGaWxlRW50cnkoY29uc3Qgc3RkOjp3c3RyaW5nIGZpbGVwYXRoLCBjb25zdCBMQVJHRV9JTlRFR0VSIGxpLCBjb25zdCBzdGQ6OndzdHJpbmcgZGlnZXN0KTsNCisJdm9pZCBSZW1vdmVGaWxlRW50cnkoY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCk7DQorCUJPT0wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVzXy5zaXplKCkgPT0gMDsgfQ0KKwlCT09MIENvbnRhaW5zRmlsZUVudHJ5KGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIGNvbnN0Ow0KKwljb25zdCBGaWxlRW50cnkmIEdldEZpbGVFbnRyeShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoKSBjb25zdDsNCisJc3RkOjpsaXN0PHN0ZDo6d3N0cmluZz4gR2V0RmlsZVBhdGhzKCkgY29uc3Q7DQorcHJpdmF0ZToNCisJc3RkOjptYXA8c3RkOjp3c3RyaW5nLCBGaWxlRW50cnksIHN0ZDo6bGVzczxzdGQ6OndzdHJpbmc+Pjo6Y29uc3RfaXRlcmF0b3IgRmluZEVudHJ5KGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIGNvbnN0Ow0KKwlCT09MIElzVmFsaWRIYXNoTGluZShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVlbnRyeWxpbmUpIGNvbnN0Ow0KKwlzdGQ6OndzdHJpbmcgTGFyZ2VJbnRUb1N0cmluZyhjb25zdCBMQVJHRV9JTlRFR0VSJiBsaSkgY29uc3Q7DQorcHJpdmF0ZToNCisJc3RkOjptYXA8c3RkOjp3c3RyaW5nLCBGaWxlRW50cnksIHN0ZDo6bGVzczxzdGQ6OndzdHJpbmc+PiBmaWxlc187DQorfTsNCisNCisjZW5kaWYgLyogSEFTSEZJTEVfSF8gKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZVByb2Nlc3Nvci5jcHAgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZVByb2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyZjFhOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hGaWxlUHJvY2Vzc29yLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaW5jbHVkZSAiSGFzaEZpbGVQcm9jZXNzb3IuaCINCisNCitIYXNoRmlsZVByb2Nlc3Nvcjo6UHJvY2Vzc1Jlc3VsdCBIYXNoRmlsZVByb2Nlc3Nvcjo6UHJvY2Vzc1RyZWUoKQ0KK3sNCisJYXV0byByZXN1bHQgPSBQcm9jZXNzUmVzdWx0OjpTdWNjZXNzOw0KKwluZXdmaWxlc3VwZGF0ZWRfID0gRkFMU0U7DQorCWlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VmVyaWZ5IHx8IG1vZGVfID09IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpVcGRhdGUpDQorCXsNCisJCXRyeQ0KKwkJew0KKwkJCWhhc2hmaWxlXy5Mb2FkKGhhc2hmaWxlbmFtZV8pOw0KKwkJfQ0KKwkJY2F0Y2ggKC4uLikNCisJCXsNCisJCQlyZXN1bHQgPSBQcm9jZXNzUmVzdWx0OjpDb3VsZE5vdE9wZW5IYXNoRmlsZTsNCisJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJfQ0KKwl9DQorCUZpbGVUcmVlIGZpbGV0cmVlKGJhc2VwYXRoXywgKnRoaXMpOw0KKwlmaWxldHJlZS5Qcm9jZXNzKCk7DQorCWlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6Q3JlYXRlKQ0KKwl7DQorCQlpZiAoaGFzaGZpbGVfLklzRW1wdHkoKSkNCisJCXsNCisJCQlyZXN1bHQgPSBQcm9jZXNzUmVzdWx0OjpOb0ZpbGVUb1Byb2Nlc3M7DQorCQl9DQorCQllbHNlIGlmICghcmVwb3J0Xy5Jc0VtcHR5KCkpDQorCQl7DQorCQkJcmVzdWx0ID0gUHJvY2Vzc1Jlc3VsdDo6RXJyb3JzT2NjdXJyZWRXaGlsZVByb2Nlc3Npbmc7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaGFzaGZpbGVfLlNhdmUoaGFzaGZpbGVuYW1lXyk7DQorCQl9DQorCX0NCisJZWxzZSBpZiAobW9kZV8gPT0gSGFzaEZpbGVQcm9jZXNzb3I6Ok1vZGU6OlZlcmlmeSB8fCBtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VXBkYXRlKQ0KKwl7DQorCQlpZiAoIWhhc2hmaWxlXy5Jc0VtcHR5KCkpDQorCQl7DQorCQkJZm9yIChhdXRvJiByZWxhdGl2ZWZpbGVwYXRoIDogaGFzaGZpbGVfLkdldEZpbGVQYXRocygpKQ0KKwkJCXsNCisJCQkJLy8gVE9ETzogcmVwbGFjZSBoYXJkY29kZWQgdGV4dA0KKwkJCQlyZXBvcnRfLkFkZExpbmUoTCJNaXNzaW5nICAgICAgICAgICAgIDogIiArIHJlbGF0aXZlZmlsZXBhdGgpOw0KKwkJCX0NCisJCQlyZXN1bHQgPSBQcm9jZXNzUmVzdWx0OjpGaWxlc0FyZU1pc3Npbmc7DQorCQl9DQorCQllbHNlIGlmICghcmVwb3J0Xy5Jc0VtcHR5KCkpDQorCQl7DQorCQkJcmVzdWx0ID0gUHJvY2Vzc1Jlc3VsdDo6RXJyb3JzT2NjdXJyZWRXaGlsZVByb2Nlc3Npbmc7DQorCQl9DQorCQllbHNlIGlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VXBkYXRlKQ0KKwkJew0KKwkJCWlmICghbmV3ZmlsZXN1cGRhdGVkXykNCisJCQl7DQorCQkJCXJlc3VsdCA9IFByb2Nlc3NSZXN1bHQ6Ok5vdGhpbmdUb1VwZGF0ZTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJLy8gcmVwbGFjZSBvbGQgaGFzaCBmaWxlDQorCQkJCURlbGV0ZUZpbGVXKGhhc2hmaWxlbmFtZV8uY19zdHIoKSk7DQorCQkJCW5ld2hhc2hmaWxlXy5TYXZlKGhhc2hmaWxlbmFtZV8pOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlyZXR1cm4gcmVzdWx0Ow0KK30NCisNCit2b2lkIEhhc2hGaWxlUHJvY2Vzc29yOjpQcm9jZXNzRmlsZShjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoKQ0KK3sNCisJaWYgKGxzdHJjbXBpVyhhcHBmaWxlcGF0aF8uY19zdHIoKSwgZmlsZXBhdGguY19zdHIoKSkgPT0gMCB8fCBsc3RyY21waVcoaGFzaGZpbGVuYW1lXy5jX3N0cigpLCBmaWxlcGF0aC5jX3N0cigpKSA9PSAwKQ0KKwl7DQorCQkvLyBza2lwIHNlbGYgYW5kIGN1cnJlbnQgaGFzaCBmaWxlDQorCQlyZXR1cm47DQorCX0NCisJYXV0byByZWxhdGl2ZWZpbGVwYXRoID0gZmlsZXBhdGguc3Vic3RyKGJhc2VwYXRoXy5sZW5ndGgoKSwgZmlsZXBhdGgubGVuZ3RoKCkpOw0KKwljb25zdCBGaWxlRW50cnkmIGZpbGVlbnRyeSA9IGhhc2hmaWxlXy5HZXRGaWxlRW50cnkocmVsYXRpdmVmaWxlcGF0aCk7DQorCWlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VmVyaWZ5KQ0KKwl7DQorCQlpZiAoJmZpbGVlbnRyeSA9PSAmSGFzaEZpbGU6OmtGaWxlRW50cnlOdWxsKQ0KKwkJew0KKwkJCXJlcG9ydF8uQWRkTGluZShMIlVua25vd24gICAgICAgICAgICAgOiAiICsgcmVsYXRpdmVmaWxlcGF0aCk7DQorCQkJcmV0dXJuOw0KKwkJfQ0KKwl9DQorCWVsc2UgaWYgKG1vZGVfID09IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpVcGRhdGUpDQorCXsNCisJCWlmICgmZmlsZWVudHJ5ID09ICZIYXNoRmlsZTo6a0ZpbGVFbnRyeU51bGwpDQorCQl7DQorCQkJbmV3aGFzaGZpbGVfLkFkZEZpbGVFbnRyeShmaWxlZW50cnkuZmlsZXBhdGgoKSwgZmlsZWVudHJ5LnNpemUoKSwgZmlsZWVudHJ5LmRpZ2VzdCgpKTsNCisJCQloYXNoZmlsZV8uUmVtb3ZlRmlsZUVudHJ5KHJlbGF0aXZlZmlsZXBhdGgpOw0KKwkJCXJldHVybjsNCisJCX0NCisJfQ0KKwlMQVJHRV9JTlRFR0VSIHNpemU7DQorCXNpemUuUXVhZFBhcnQgPSAwOw0KKwlhdXRvIGZpbGUgPSBDcmVhdGVGaWxlVyhmaWxlcGF0aC5jX3N0cigpLCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwgTlVMTCwNCisJCU9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgTlVMTCk7DQorCWlmIChmaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KKwl7DQorCQlHZXRGaWxlU2l6ZUV4KGZpbGUsICZzaXplKTsNCisJCUNsb3NlSGFuZGxlKGZpbGUpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcmVwb3J0Xy5BZGRMaW5lKEwiRXJyb3Igb3BlbmluZyBmaWxlICA6ICIgKyByZWxhdGl2ZWZpbGVwYXRoKTsNCisJCWlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VmVyaWZ5KQ0KKwkJew0KKwkJCWhhc2hmaWxlXy5SZW1vdmVGaWxlRW50cnkocmVsYXRpdmVmaWxlcGF0aCk7DQorCQl9DQorCQlyZXR1cm47DQorCX0NCisJaWYgKG1vZGVfID09IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpWZXJpZnkpDQorCXsNCisJCWlmIChzaXplLlF1YWRQYXJ0ICE9IGZpbGVlbnRyeS5zaXplKCkuUXVhZFBhcnQpDQorCQl7DQorCQkJcmVwb3J0Xy5BZGRMaW5lKEwiSW5jb3JyZWN0IGZpbGUgc2l6ZSA6ICIgKyByZWxhdGl2ZWZpbGVwYXRoKTsNCisJCQloYXNoZmlsZV8uUmVtb3ZlRmlsZUVudHJ5KHJlbGF0aXZlZmlsZXBhdGgpOw0KKwkJCXJldHVybjsNCisJCX0NCisJfQ0KKwlhdXRvIGZpbGVoYXNoID0gRmlsZUhhc2hGYWN0b3J5OjpDcmVhdGUoaGFzaHR5cGVfLCBmaWxlcGF0aCk7DQorCWlmIChwcm9ncmVzc2V2ZW50XyAhPSBudWxscHRyKQ0KKwl7DQorCQloZnBwZWFfLmJ5dGVzcHJvY2Vzc2VkLlF1YWRQYXJ0ID0gMDsNCisJCWhmcHBlYV8ucmVsYXRpdmVmaWxlcGF0aCA9IHJlbGF0aXZlZmlsZXBhdGg7DQorCQlwcm9ncmVzc2V2ZW50XyhoZnBwZWFfKTsNCisJCWZpbGVoYXNoLT5TZXRCeXRlc1Byb2Nlc3NlZEV2ZW50SGFuZGxlcihbdGhpc10oRmlsZUhhc2hCeXRlc1Byb2Nlc3NlZEV2ZW50QXJncyBmaGJlYSkgew0KKwkJCXRoaXMtPmhmcHBlYV8uYnl0ZXNwcm9jZXNzZWQgPSBmaGJlYS5ieXRlc3Byb2Nlc3NlZDsNCisJCQl0aGlzLT5wcm9ncmVzc2V2ZW50XyhoZnBwZWFfKTsNCisJCX0sIGJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplXyk7DQorCX0NCisJZmlsZWhhc2gtPkNvbXB1dGUoKTsNCisJc3RkOjp3c3RyaW5nIGRpZ2VzdCA9IGZpbGVoYXNoLT5kaWdlc3QoKTsNCisJaWYgKG1vZGVfID09IEhhc2hGaWxlUHJvY2Vzc29yOjpNb2RlOjpDcmVhdGUpDQorCXsNCisJCWhhc2hmaWxlXy5BZGRGaWxlRW50cnkocmVsYXRpdmVmaWxlcGF0aCwgc2l6ZSwgZGlnZXN0KTsNCisJfQ0KKwllbHNlIGlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VXBkYXRlKQ0KKwl7DQorCQluZXdoYXNoZmlsZV8uQWRkRmlsZUVudHJ5KHJlbGF0aXZlZmlsZXBhdGgsIHNpemUsIGRpZ2VzdCk7DQorCQluZXdmaWxlc3VwZGF0ZWRfID0gVFJVRTsNCisJfQ0KKwllbHNlIGlmIChtb2RlXyA9PSBIYXNoRmlsZVByb2Nlc3Nvcjo6TW9kZTo6VmVyaWZ5KQ0KKwl7DQorCQlpZiAoc2l6ZS5RdWFkUGFydCAhPSBmaWxlZW50cnkuc2l6ZSgpLlF1YWRQYXJ0KQ0KKwkJew0KKwkJCXJlcG9ydF8uQWRkTGluZShMIkluY29ycmVjdCBmaWxlIHNpemUgOiAiICsgcmVsYXRpdmVmaWxlcGF0aCk7DQorCQl9DQorCQllbHNlIGlmIChkaWdlc3QgIT0gZmlsZWVudHJ5LmRpZ2VzdCgpKQ0KKwkJew0KKwkJCXJlcG9ydF8uQWRkTGluZShMIkluY29ycmVjdCBoYXNoICAgICAgOiAiICsgcmVsYXRpdmVmaWxlcGF0aCk7DQorCQl9DQorCQloYXNoZmlsZV8uUmVtb3ZlRmlsZUVudHJ5KHJlbGF0aXZlZmlsZXBhdGgpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hGaWxlUHJvY2Vzc29yLmggYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZVByb2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Yzk5NjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9IYXNoRmlsZVByb2Nlc3Nvci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2luY2x1ZGUgIkhhc2hGaWxlLmgiDQorI2luY2x1ZGUgIkZpbGVUcmVlLmgiDQorI2luY2x1ZGUgIkhhc2hUeXBlLmgiDQorI2luY2x1ZGUgIkZpbGVIYXNoRmFjdG9yeS5oIg0KKyNpbmNsdWRlICJSZXBvcnQuaCINCisNCitzdHJ1Y3QgSGFzaEZpbGVQcm9jZXNzb3JQcm9ncmVzc0V2ZW50QXJncw0KK3sNCisJc3RkOjp3c3RyaW5nIHJlbGF0aXZlZmlsZXBhdGg7DQorCUxBUkdFX0lOVEVHRVIgYnl0ZXNwcm9jZXNzZWQ7DQorfTsNCisNCitjbGFzcyBIYXNoRmlsZVByb2Nlc3NvciA6IHB1YmxpYyBJRmlsZVRyZWVBY3Rpb24NCit7DQorcHVibGljOg0KKwlzdGF0aWMgY29uc3QgRFdPUkQga0RlZmF1bHRCeXRlc1Byb2Nlc3NlZE5vdGlmaWNhdGlvbkJsb2NrU2l6ZSA9IDEwNDg1NzY7DQorcHVibGljOg0KKwllbnVtIGNsYXNzIE1vZGUNCisJew0KKwkJQ3JlYXRlLA0KKwkJVXBkYXRlLA0KKwkJVmVyaWZ5LA0KKwkJVW5kZWZpbmVkDQorCX07DQorCWVudW0gY2xhc3MgUHJvY2Vzc1Jlc3VsdA0KKwl7DQorCQlGaWxlc0FyZU1pc3NpbmcsDQorCQlOb3RoaW5nVG9VcGRhdGUsDQorCQlDb3VsZE5vdE9wZW5IYXNoRmlsZSwNCisJCUVycm9yc09jY3VycmVkV2hpbGVQcm9jZXNzaW5nLA0KKwkJTm9GaWxlVG9Qcm9jZXNzLA0KKwkJU3VjY2Vzcw0KKwl9Ow0KKwlIYXNoRmlsZVByb2Nlc3NvcihNb2RlIG1vZGUsIEhhc2hUeXBlIGhhc2h0eXBlLCBzdGQ6OndzdHJpbmcgaGFzaGZpbGVuYW1lLCBzdGQ6OndzdHJpbmcgYXBwZmlsZXBhdGgsIHN0ZDo6d3N0cmluZyBiYXNlcGF0aCkNCisJCTogbW9kZV8obW9kZSksIGhhc2h0eXBlXyhoYXNodHlwZSksIGhhc2hmaWxlbmFtZV8oaGFzaGZpbGVuYW1lKSwgYXBwZmlsZXBhdGhfKGFwcGZpbGVwYXRoKSwgYmFzZXBhdGhfKGJhc2VwYXRoKQ0KKwl7IA0KKwkJcHJvZ3Jlc3NldmVudF8gPSBudWxscHRyOw0KKwl9Ow0KKwlQcm9jZXNzUmVzdWx0IFByb2Nlc3NUcmVlKCk7DQorCXZvaWQgUHJvY2Vzc0ZpbGUoY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCk7DQorCXZvaWQgU2F2ZVJlcG9ydChjb25zdCBzdGQ6OndzdHJpbmcmIHJlcG9ydHBhdGgpIGNvbnN0IHsgcmVwb3J0Xy5TYXZlKHJlcG9ydHBhdGgpOyB9DQorCXZvaWQgU2V0UHJvZ3Jlc3NFdmVudEhhbmRsZXIoc3RkOjpmdW5jdGlvbjx2b2lkKEhhc2hGaWxlUHJvY2Vzc29yUHJvZ3Jlc3NFdmVudEFyZ3MpPiBoYW5kbGVyKQ0KKwl7DQorCQlTZXRQcm9ncmVzc0V2ZW50SGFuZGxlcihoYW5kbGVyLCBrRGVmYXVsdEJ5dGVzUHJvY2Vzc2VkTm90aWZpY2F0aW9uQmxvY2tTaXplKTsNCisJfQ0KKwl2b2lkIFNldFByb2dyZXNzRXZlbnRIYW5kbGVyKHN0ZDo6ZnVuY3Rpb248dm9pZChIYXNoRmlsZVByb2Nlc3NvclByb2dyZXNzRXZlbnRBcmdzKT4gaGFuZGxlciwNCisJCWNvbnN0IERXT1JEIGJ5dGVzcHJvY2Vzc2Vkbm90aWZpY2F0aW9uYmxvY2tzaXplKQ0KKwl7DQorCQlwcm9ncmVzc2V2ZW50XyA9IGhhbmRsZXI7DQorCQlieXRlc3Byb2Nlc3NlZG5vdGlmaWNhdGlvbmJsb2Nrc2l6ZV8gPSBieXRlc3Byb2Nlc3NlZG5vdGlmaWNhdGlvbmJsb2Nrc2l6ZTsNCisJfQ0KK3ByaXZhdGU6DQorCU1vZGUgbW9kZV87DQorCUhhc2hUeXBlIGhhc2h0eXBlXzsNCisJSGFzaEZpbGUgaGFzaGZpbGVfOw0KKwlIYXNoRmlsZSBuZXdoYXNoZmlsZV87DQorCXN0ZDo6d3N0cmluZyBoYXNoZmlsZW5hbWVfOw0KKwlzdGQ6OndzdHJpbmcgYXBwZmlsZXBhdGhfOw0KKwlzdGQ6OndzdHJpbmcgYmFzZXBhdGhfOw0KKwlCT09MIG5ld2ZpbGVzdXBkYXRlZF8gPSBGQUxTRTsNCisJUmVwb3J0IHJlcG9ydF87DQorCUhhc2hGaWxlUHJvY2Vzc29yUHJvZ3Jlc3NFdmVudEFyZ3MgaGZwcGVhXzsNCisJRFdPUkQgYnl0ZXNwcm9jZXNzZWRub3RpZmljYXRpb25ibG9ja3NpemVfOw0KKwlzdGQ6OmZ1bmN0aW9uPHZvaWQoSGFzaEZpbGVQcm9jZXNzb3JQcm9ncmVzc0V2ZW50QXJncyk+IHByb2dyZXNzZXZlbnRfOw0KK307DQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvSGFzaFR5cGUuaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVlOWM1MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL0hhc2hUeXBlLmgKQEAgLTAsMCArMSwxNCBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaWZuZGVmIEhBU0hUWVBFX0hfDQorI2RlZmluZSBIQVNIVFlQRV9IXw0KKw0KK2VudW0gY2xhc3MgSGFzaFR5cGUNCit7DQorCUNSQzMyLA0KKwlNRDUsDQorCVNIQTEsDQorCVVuZGVmaW5lZA0KK307DQorDQorI2VuZGlmIC8qIEhBU0hUWVBFX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvTUQ1RmlsZUhhc2guY3BwIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvTUQ1RmlsZUhhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZWE2NTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9NRDVGaWxlSGFzaC5jcHAKQEAgLTAsMCArMSwxNzcgQEAKKw0KKw0KK3ZvaWQgTUQ1RmlsZUhhc2g6OlVwZGF0ZShjb25zdCBVSU5UMzIgYnl0ZWNvdW50KQ0KK3sNCisJVUlOVDMyIGluZGV4ID0gY29udGV4dF8uY291bnRbMF07CS8vIHVwZGF0ZSBiaXRjb3VudA0KKwljb250ZXh0Xy5jb3VudFswXSA9IGluZGV4ICsgKGJ5dGVjb3VudCA8PCAzKTsNCisJaWYgKGNvbnRleHRfLmNvdW50WzBdIDwgaW5kZXgpDQorCXsNCisJCWNvbnRleHRfLmNvdW50WzFdKys7CS8vIGNhcnJ5IGZyb20gbG93IHRvIGhpZ2gNCisJfQ0KKwljb250ZXh0Xy5jb3VudFsxXSArPSBieXRlY291bnQgPj4gMjk7DQorCWluZGV4ID0gKGluZGV4ID4+IDMpICYgNjM7CS8vIGJ5dGVzIGFscmVhZHkgaW4gc2hzSW5mby0+ZGF0YQ0KKwlVSU5UMzIgYnl0ZXNsZWZ0ID0gYnl0ZWNvdW50Ow0KKwlpZiAoaW5kZXggPiAwKQ0KKwl7DQorCQkvLyBoYW5kbGUgYW55IGxlYWRpbmcgb2RkLXNpemVkIGNodW5rcw0KKwkJUEJZVEUgY3R4YnVmZmVyID0gKFBCWVRFKWNvbnRleHRfLmJ1ZmZlciArIGluZGV4Ow0KKwkJaW5kZXggPSA2NCAtIGluZGV4Ow0KKwkJaWYgKGJ5dGVjb3VudCA8IGluZGV4KQ0KKwkJew0KKwkJCUNvcHlNZW1vcnkoY3R4YnVmZmVyLCBidWZmZXJfLCBieXRlY291bnQpOw0KKwkJCXJldHVybjsNCisJCX0NCisJCUNvcHlNZW1vcnkoY3R4YnVmZmVyLCBidWZmZXJfLCBpbmRleCk7DQorCQlUcmFuc2Zvcm0oY29udGV4dF8uc3RhdGUsIChQVUlOVDMyKWNvbnRleHRfLmJ1ZmZlcik7DQorCQljdHhidWZmZXIgKz0gaW5kZXg7DQorCQlieXRlc2xlZnQgLT0gaW5kZXg7DQorCX0NCisJLy8gcHJvY2VzcyBkYXRhIGluIDY0LWJ5dGUgY2h1bmtzDQorCVBCWVRFIGJ1ZmZlciA9IGJ1ZmZlcl87DQorCXdoaWxlIChieXRlc2xlZnQgPj0gNjQpDQorCXsNCisJCUNvcHlNZW1vcnkoY29udGV4dF8uYnVmZmVyLCBidWZmZXIsIHNpemVvZihjb250ZXh0Xy5idWZmZXIpKTsNCisJCVRyYW5zZm9ybShjb250ZXh0Xy5zdGF0ZSwgKFBVSU5UMzIpY29udGV4dF8uYnVmZmVyKTsNCisJCWJ1ZmZlciArPSA2NDsNCisJCWJ5dGVzbGVmdCAtPSA2NDsNCisJfQ0KKwkvLyBoYW5kbGUgYW55IHJlbWFpbmluZyBieXRlcyBvZiBkYXRhLg0KKwlDb3B5TWVtb3J5KGNvbnRleHRfLmJ1ZmZlciwgYnVmZmVyLCBieXRlc2xlZnQpOw0KK30NCisNCit2b2lkIE1ENUZpbGVIYXNoOjpGaW5hbGl6ZSgpDQorew0KKwlVSU5UMzIgaW5kZXggPSAoY29udGV4dF8uY291bnRbMF0gPj4gMykgJiA2MzsJLy8gY29tcHV0ZSBudW1iZXIgb2YgYnl0ZXMgbW9kIDY0DQorCS8vIHNldCB0aGUgZmlyc3QgY2hhciBvZiBwYWRkaW5nIHRvIDB4ODAuICB0aGlzIGlzIHNhZmUgc2luY2UgdGhlcmUgaXMNCisJLy8gYWx3YXlzIGF0IGxlYXN0IG9uZSBieXRlIGZyZWUNCisJUEJZVEUgY3R4YnVmZmVyID0gY29udGV4dF8uYnVmZmVyICsgaW5kZXg7DQorCSpjdHhidWZmZXIrKyA9IDB4ODA7DQorCWluZGV4ID0gNjQgLSAxIC0gaW5kZXg7CS8vIGJ5dGVzIG9mIHBhZGRpbmcgbmVlZGVkIHRvIG1ha2UgNjQgYnl0ZXMNCisJLy8gcGFkIG91dCB0byA1NiBtb2QgNjQNCisJaWYgKGluZGV4IDwgOCkNCisJew0KKwkJLy8gdHdvIGxvdHMgb2YgcGFkZGluZzogIHBhZCB0aGUgZmlyc3QgYmxvY2sgdG8gNjQgYnl0ZXMNCisJCVplcm9NZW1vcnkoY3R4YnVmZmVyLCBpbmRleCk7DQorCQlUcmFuc2Zvcm0oY29udGV4dF8uc3RhdGUsIChQVUlOVDMyKWNvbnRleHRfLmJ1ZmZlcik7DQorCQkvLyBub3cgZmlsbCB0aGUgbmV4dCBibG9jayB3aXRoIDU2IGJ5dGVzDQorCQlaZXJvTWVtb3J5KGNvbnRleHRfLmJ1ZmZlciwgNTYpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJWmVyb01lbW9yeShjdHhidWZmZXIsIGluZGV4IC0gOCk7CS8vIHBhZCBibG9jayB0byA1NiBieXRlcw0KKwl9DQorCS8vIGFwcGVuZCBsZW5ndGggaW4gYml0cyBhbmQgdHJhbnNmb3JtDQorCXR5cGVkZWYgdW5pb24NCisJew0KKwkJQllURSBjWzY0XTsNCisJCVVJTlQzMiBsWzE2XTsNCisJfSBDSEFSNjRMT05HMTYsICpQQ0hBUjY0TE9ORzE2Ow0KKwlQQ0hBUjY0TE9ORzE2IGJ1ZmZlcmxvbmcgPSAoUENIQVI2NExPTkcxNiljb250ZXh0Xy5idWZmZXI7DQorCWJ1ZmZlcmxvbmctPmxbMTRdID0gY29udGV4dF8uY291bnRbMF07DQorCWJ1ZmZlcmxvbmctPmxbMTVdID0gY29udGV4dF8uY291bnRbMV07DQorCVRyYW5zZm9ybShjb250ZXh0Xy5zdGF0ZSwgKFBVSU5UMzIpY29udGV4dF8uYnVmZmVyKTsNCisJQ29weU1lbW9yeShoYXNoXywgY29udGV4dF8uc3RhdGUsIHNpemVvZihoYXNoXykpOw0KK30NCisNCit2b2lkIE1ENUZpbGVIYXNoOjpDb252ZXJ0SGFzaFRvRGlnZXN0U3RyaW5nKCkNCit7DQorCXN0ZDo6d3N0cmluZ3N0cmVhbSB3c3M7DQorCXdzcyA8PCBzdGQ6OmhleCA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpzZXRmaWxsKEwnMCcpIDw8IHN0ZDo6dXBwZXJjYXNlOw0KKwlmb3IgKFVJTlQgaSA9IDA7IGkgPCBzaXplb2YoaGFzaF8pOyBpKyspDQorCXsNCisJCXdzcyA8PCBoYXNoX1tpXTsNCisJfQ0KKwlkaWdlc3RfLmFwcGVuZCh3c3Muc3RyKCkpOw0KK30NCisNCit2b2lkIE1ENUZpbGVIYXNoOjpUcmFuc2Zvcm0oVUlOVDMyIHN0YXRlWzRdLCBQVUlOVDMyIGJ1ZmZlcikNCit7DQorCXJlZ2lzdGVyIFVJTlQzMiBhLCBiLCBjLCBkOw0KKw0KKwlhID0gc3RhdGVbMF07DQorCWIgPSBzdGF0ZVsxXTsNCisJYyA9IHN0YXRlWzJdOw0KKwlkID0gc3RhdGVbM107DQorDQorI2RlZmluZSBGMSh4LCB5LCB6KSAoeiBeICh4ICYgKHkgXiB6KSkpDQorI2RlZmluZSBGMih4LCB5LCB6KSBGMSh6LCB4LCB5KQ0KKyNkZWZpbmUgRjMoeCwgeSwgeikgKHggXiB5IF4geikNCisjZGVmaW5lIEY0KHgsIHksIHopICh5IF4gKHggfCB+eikpDQorDQorI2RlZmluZSBNRDVTVEVQKGYsIHcsIHgsIHksIHosIGRhdGEsIHMpICh3ICs9IGYoeCwgeSwgeikgKyBkYXRhLCB3ID0gdyA8PCBzIHwgdyA+PiAoMzIgLSBzKSwgdyArPSB4KQ0KKw0KKwlNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBidWZmZXJbMF0gICsgMHhENzZBQTQ3OEwsIDcpOw0KKwlNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBidWZmZXJbMV0gICsgMHhFOEM3Qjc1NkwsIDEyKTsNCisJTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgYnVmZmVyWzJdICArIDB4MjQyMDcwREJMLCAxNyk7DQorCU1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGJ1ZmZlclszXSAgKyAweEMxQkRDRUVFTCwgMjIpOw0KKwlNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBidWZmZXJbNF0gICsgMHhGNTdDMEZBRkwsIDcpOw0KKwlNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBidWZmZXJbNV0gICsgMHg0Nzg3QzYyQUwsIDEyKTsNCisJTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgYnVmZmVyWzZdICArIDB4QTgzMDQ2MTNMLCAxNyk7DQorCU1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGJ1ZmZlcls3XSAgKyAweEZENDY5NTAxTCwgMjIpOw0KKwlNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBidWZmZXJbOF0gICsgMHg2OTgwOThEOEwsIDcpOw0KKwlNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBidWZmZXJbOV0gICsgMHg4QjQ0RjdBRkwsIDEyKTsNCisJTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgYnVmZmVyWzEwXSArIDB4RkZGRjVCQjFMLCAxNyk7DQorCU1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0gKyAweDg5NUNEN0JFTCwgMjIpOw0KKwlNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBidWZmZXJbMTJdICsgMHg2QjkwMTEyMkwsIDcpOw0KKwlNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBidWZmZXJbMTNdICsgMHhGRDk4NzE5M0wsIDEyKTsNCisJTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgYnVmZmVyWzE0XSArIDB4QTY3OTQzOEVMLCAxNyk7DQorCU1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0gKyAweDQ5QjQwODIxTCwgMjIpOw0KKw0KKwlNRDVTVEVQKEYyLCBhLCBiLCBjLCBkLCBidWZmZXJbMV0gICsgMHhGNjFFMjU2MkwsIDUpOw0KKwlNRDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBidWZmZXJbNl0gICsgMHhDMDQwQjM0MEwsIDkpOw0KKwlNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBidWZmZXJbMTFdICsgMHgyNjVFNUE1MUwsIDE0KTsNCisJTUQ1U1RFUChGMiwgYiwgYywgZCwgYSwgYnVmZmVyWzBdICArIDB4RTlCNkM3QUFMLCAyMCk7DQorCU1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSAgKyAweEQ2MkYxMDVETCwgNSk7DQorCU1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0gKyAweDAyNDQxNDUzTCwgOSk7DQorCU1ENVNURVAoRjIsIGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0gKyAweEQ4QTFFNjgxTCwgMTQpOw0KKwlNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBidWZmZXJbNF0gICsgMHhFN0QzRkJDOEwsIDIwKTsNCisJTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgYnVmZmVyWzldICArIDB4MjFFMUNERTZMLCA1KTsNCisJTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgYnVmZmVyWzE0XSArIDB4QzMzNzA3RDZMLCA5KTsNCisJTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgYnVmZmVyWzNdICArIDB4RjRENTBEODdMLCAxNCk7DQorCU1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGJ1ZmZlcls4XSAgKyAweDQ1NUExNEVETCwgMjApOw0KKwlNRDVTVEVQKEYyLCBhLCBiLCBjLCBkLCBidWZmZXJbMTNdICsgMHhBOUUzRTkwNUwsIDUpOw0KKwlNRDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBidWZmZXJbMl0gICsgMHhGQ0VGQTNGOEwsIDkpOw0KKwlNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBidWZmZXJbN10gICsgMHg2NzZGMDJEOUwsIDE0KTsNCisJTUQ1U1RFUChGMiwgYiwgYywgZCwgYSwgYnVmZmVyWzEyXSArIDB4OEQyQTRDOEFMLCAyMCk7DQorDQorCU1ENVNURVAoRjMsIGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSAgKyAweEZGRkEzOTQyTCwgNCk7DQorCU1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGJ1ZmZlcls4XSAgKyAweDg3NzFGNjgxTCwgMTEpOw0KKwlNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBidWZmZXJbMTFdICsgMHg2RDlENjEyMkwsIDE2KTsNCisJTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgYnVmZmVyWzE0XSArIDB4RkRFNTM4MENMLCAyMyk7DQorCU1ENVNURVAoRjMsIGEsIGIsIGMsIGQsIGJ1ZmZlclsxXSAgKyAweEE0QkVFQTQ0TCwgNCk7DQorCU1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGJ1ZmZlcls0XSAgKyAweDRCREVDRkE5TCwgMTEpOw0KKwlNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBidWZmZXJbN10gICsgMHhGNkJCNEI2MEwsIDE2KTsNCisJTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgYnVmZmVyWzEwXSArIDB4QkVCRkJDNzBMLCAyMyk7DQorCU1ENVNURVAoRjMsIGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10gKyAweDI4OUI3RUM2TCwgNCk7DQorCU1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGJ1ZmZlclswXSAgKyAweEVBQTEyN0ZBTCwgMTEpOw0KKwlNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBidWZmZXJbM10gICsgMHhENEVGMzA4NUwsIDE2KTsNCisJTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgYnVmZmVyWzZdICArIDB4MDQ4ODFEMDVMLCAyMyk7DQorCU1ENVNURVAoRjMsIGEsIGIsIGMsIGQsIGJ1ZmZlcls5XSAgKyAweEQ5RDREMDM5TCwgNCk7DQorCU1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0gKyAweEU2REI5OUU1TCwgMTEpOw0KKwlNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBidWZmZXJbMTVdICsgMHgxRkEyN0NGOEwsIDE2KTsNCisJTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgYnVmZmVyWzJdICArIDB4QzRBQzU2NjVMLCAyMyk7DQorDQorCU1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGJ1ZmZlclswXSAgKyAweEY0MjkyMjQ0TCwgNik7DQorCU1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGJ1ZmZlcls3XSAgKyAweDQzMkFGRjk3TCwgMTApOw0KKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBidWZmZXJbMTRdICsgMHhBQjk0MjNBN0wsIDE1KTsNCisJTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwgYnVmZmVyWzVdICArIDB4RkM5M0EwMzlMLCAyMSk7DQorCU1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0gKyAweDY1NUI1OUMzTCwgNik7DQorCU1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGJ1ZmZlclszXSAgKyAweDhGMENDQzkyTCwgMTApOw0KKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBidWZmZXJbMTBdICsgMHhGRkVGRjQ3REwsIDE1KTsNCisJTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwgYnVmZmVyWzFdICArIDB4ODU4NDVERDFMLCAyMSk7DQorCU1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGJ1ZmZlcls4XSAgKyAweDZGQTg3RTRGTCwgNik7DQorCU1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0gKyAweEZFMkNFNkUwTCwgMTApOw0KKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBidWZmZXJbNl0gICsgMHhBMzAxNDMxNEwsIDE1KTsNCisJTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwgYnVmZmVyWzEzXSArIDB4NEUwODExQTFMLCAyMSk7DQorCU1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGJ1ZmZlcls0XSAgKyAweEY3NTM3RTgyTCwgNik7DQorCU1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0gKyAweEJEM0FGMjM1TCwgMTApOw0KKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBidWZmZXJbMl0gICsgMHgyQUQ3RDJCQkwsIDE1KTsNCisJTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwgYnVmZmVyWzldICArIDB4RUI4NkQzOTFMLCAyMSk7DQorDQorCXN0YXRlWzBdICs9IGE7DQorCXN0YXRlWzFdICs9IGI7DQorCXN0YXRlWzJdICs9IGM7DQorCXN0YXRlWzNdICs9IGQ7DQorDQorCWEgPSBiID0gYyA9IGQgPSAwOw0KK30NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9NRDVGaWxlSGFzaC5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvTUQ1RmlsZUhhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDA4MDcwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvTUQ1RmlsZUhhc2guaApAQCAtMCwwICsxLDM4IEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgTUQ1RklMRUhBU0hfSF8NCisjZGVmaW5lIE1ENUZJTEVIQVNIX0hfDQorDQorI2luY2x1ZGUgIkZpbGVIYXNoLmgiDQorI2luY2x1ZGUgPGlvbWFuaXA+DQorI2luY2x1ZGUgPHNzdHJlYW0+DQorI2luY2x1ZGUgPHN0cmluZz4NCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKw0KK3N0cnVjdCBNRDVDb250ZXh0DQorew0KKwlVSU5UMzIgc3RhdGVbNF07CS8vIHN0YXRlIChBQkNEKQ0KKwlVSU5UMzIgY291bnRbMl07CS8vIG51bWJlciBvZiBiaXRzLCBtb2R1bG8gMl42NCAobHNiIGZpcnN0KQ0KKwlCWVRFIGJ1ZmZlcls2NF07CS8vIGlucHV0IGJ1ZmZlcg0KK307DQorDQorY2xhc3MgTUQ1RmlsZUhhc2ggOiBwdWJsaWMgRmlsZUhhc2gNCit7DQorcHVibGljOg0KKyNpZiBfTVNDX1ZFUiA8IDE5MDANCisJTUQ1RmlsZUhhc2goY29uc3Qgc3RkOjp3c3RyaW5nJiBmaWxlcGF0aCwgY29uc3QgRFdPUkQgYnVmZmVyc2l6ZSkgOiBGaWxlSGFzaChmaWxlcGF0aCwgYnVmZmVyc2l6ZSkgeyB9Ow0KKwlNRDVGaWxlSGFzaChjb25zdCBzdGQ6OndzdHJpbmcmIGZpbGVwYXRoKSA6IEZpbGVIYXNoKGZpbGVwYXRoKSB7IH07DQorI2Vsc2UNCisJdXNpbmcgRmlsZUhhc2g6OkZpbGVIYXNoOw0KKyNlbmRpZg0KK3ByaXZhdGU6DQorCXZvaWQgSW5pdGlhbGl6ZSgpOw0KKwl2b2lkIFVwZGF0ZShjb25zdCBVSU5UMzIgYnl0ZWNvdW50KTsNCisJdm9pZCBGaW5hbGl6ZSgpOw0KKwl2b2lkIFRyYW5zZm9ybShVSU5UMzIgc3RhdGVbNF0sIFBVSU5UMzIgYnVmZmVyKTsNCisJdm9pZCBDb252ZXJ0SGFzaFRvRGlnZXN0U3RyaW5nKCk7DQorCUJZVEUgaGFzaF9bMTZdOw0KKwlNRDVDb250ZXh0IGNvbnRleHRfOw0KK307DQorDQorI2VuZGlmIC8qIE1ENUZJTEVIQVNIX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvUHJvZ3JhbS5jcHAgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9Qcm9ncmFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzY1ZTBjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvUHJvZ3JhbS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaWZuZGVmIFVOSUNPREUNCisjZGVmaW5lIFVOSUNPREUNCisjZW5kaWYNCisjaWZuZGVmIF9VTklDT0RFDQorI2RlZmluZSBfVU5JQ09ERQ0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTg0KKw0KKyNpbmNsdWRlICJIYXNoQ2hlY2suaCINCisjaW5jbHVkZSAiSGFzaENoZWNrV2luZG93LmgiDQorI2luY2x1ZGUgPHN0cmluZz4NCisjaW5jbHVkZSA8dmVjdG9yPg0KKyNpbmNsdWRlIDxXaW5kb3dzLmg+DQorI2luY2x1ZGUgPE9sZTIuaD4NCisjaW5jbHVkZSA8Q29tbUN0cmwuaD4NCisjaW5jbHVkZSA8c2hlbGxhcGkuaD4NCisNCitpbnQgV0lOQVBJIFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsIExQU1RSIGxwQ21kTGluZSwgaW50IG5DbWRTaG93KQ0KK3sNCisJaW50IGFyZ3Njb3VudDsNCisJYXV0byBhcmdzID0gQ29tbWFuZExpbmVUb0FyZ3ZXKEdldENvbW1hbmRMaW5lVygpLCAmYXJnc2NvdW50KTsNCisJc3RkOjp2ZWN0b3I8c3RkOjp3c3RyaW5nPiBhcmdzdmVjdG9yOw0KKwlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3Njb3VudDsgKytpKQ0KKwl7DQorCQlhcmdzdmVjdG9yLnB1c2hfYmFjayhhcmdzW2ldKTsNCisJfQ0KKwlMb2NhbEZyZWUoYXJncyk7DQorDQorCS8vaWYgKFNVQ0NFRURFRChDb0luaXRpYWxpemUoTlVMTCkpKQ0KKwkvL3sNCisJLy8JSW5pdENvbW1vbkNvbnRyb2xzKCk7DQorCS8vCUhhc2hDaGVja1dpbmRvdyAqaGN3ID0gSGFzaENoZWNrV2luZG93OjpDcmVhdGUoaEluc3RhbmNlKTsNCisJLy8JaWYgKGhjdykNCisJLy8Jew0KKwkvLwkJU2hvd1dpbmRvdyhoY3ctPkdldEhXTkQoKSwgbkNtZFNob3cpOw0KKwkvLwkJTVNHIG1zZzsNCisJLy8JCXdoaWxlIChHZXRNZXNzYWdlKCZtc2csIE5VTEwsIDAsIDApKQ0KKwkvLwkJew0KKwkvLwkJCVRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7DQorCS8vCQkJRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOw0KKwkvLwkJfQ0KKwkvLwl9DQorCS8vCUNvVW5pbml0aWFsaXplKCk7DQorCS8vfQ0KKw0KKwlIYXNoQ2hlY2sgaGMoYXJnc3ZlY3Rvcik7DQorCWF1dG8gcmVzdWx0ID0gaGMuUHJvY2VzcygpOw0KKw0KKwlyZXR1cm4gcmVzdWx0Ow0KK30NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9SRUFETUUubWQgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlMzUyMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1JFQURNRS5tZApAQCAtMCwwICsxLDQ4IEBACitIYXNoQ2hlY2sgZm9yIFdpbmRvd3MNCis9PT09PT09PT09PT09PT09PT09PT0NCisNCitIYXNoQ2hlY2sgaXMgYSBXaW5kb3dzIGFwcGxpY2F0aW9uIHRoYXQgY3JlYXRlcyBhbmQgdmVyaWZpZXMgZmlsZSBjaGVja3N1bXMuDQorDQorDQorSG93IHRvIGJ1aWxkDQorLS0tLS0tLS0tLS0tDQorDQorVGhpcyBwcm9qZWN0IGlzIGNvbXBhdGlibGUgd2l0aDoNCistIFZpc3VhbCBTdHVkaW8gMjAxMw0KKy0gRWNsaXBzZSBMdW5hIENEVCB3aXRoIE1pbkdXIChHQ0MgNC44LjEpDQorDQorDQorVXNhZ2UNCistLS0tLQ0KKw0KK0xhdW5jaCB0aGUgZXhlY3V0YWJsZSB0byBjcmVhdGUgYSBjaGVja3N1bSBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RzLg0KKw0KK0xhdW5jaCB0aGUgZXhlY3V0YWJsZSB0byB2ZXJpZnkgZmlsZSBpbnRlZ3JpdHkgYWdhaW5zdCBhIGNoZWNrc3VtIGZpbGUgaWYgaXQgZXhpc3RzLg0KKyANCisNCitMaWNlbnNlDQorLS0tLS0tLQ0KKw0KK0hhc2hpbmcgY29kZSBmb3VuZCBvbiB0aGUgSW50ZXJuZXQgaXMgaW4gdGhlIHB1YmxpYyBkb21haW46DQorDQorTUQ1OiBDb2xpbiBQbHVtYiAoMTk5MykgLyBKb2huIFdhbGtlciAoMjAwMykNCisNCitTSEExOiBTdGV2ZSBSZWlkICgxOTk/KSAvIC4uLiAvIFJhbHBoIEdpbGVzICgyMDAyKQ0KKw0KK0ZpbGVTdHJlYW0gY29kZSBpbnNwaXJlZCBieSBkb3RuZXQvY29yZWZ4J3MgV2luMzJGaWxlU3RyZWFtLmNzLiAgU2VlIEZpbGVTdHJlYW0uY3BwIGZvciBsaWNlbnNpbmcgaW5mb3JtYXRpb24uDQorDQorDQorRkFRDQorLS0tDQorDQorIyMjIFdoeSBNaW5HVz8NCisNCitJIHdhbnRlZCB0byBoYXZlIGFuIGV4ZWN1dGFibGUgaGF2aW5nIHRoZSBsZWFzdCBydW50aW1lIGRlcGVuZGVuY2llcyBwb3NzaWJsZS4NCisNCisjIyMgV2h5IEZpbGVTdHJlYW0/DQorDQorTWluR1cncyBmc3RyZWFtIGNhbid0IG9wZW4gV0NIQVIgZmlsZW5hbWVzIGFuZCBJIHdhcyBub3QgaW50ZXJlc3RlZCBpbiBjaGFuZ2luZyBmc3RyZWFtJ3MgaW1wbGVtZW50YXRpb24uDQorDQorIyMjIFdoYXQncyB0aGUgY29kaW5nIHN0eWxlPw0KKw0KK1RoZSBjb2Rpbmcgc3R5bGUgaXMgaW5zcGlyZWQgZnJvbSBHb29nbGUgQysrIFtjb2Rpbmcgc3R5bGUgZ3VpZGVdKGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUuaHRtbCAiR29vZ2xlIEMrKyBTdHlsZSBHdWlkZSIpLg0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1JlcG9ydC5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvUmVwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiMGIwZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1JlcG9ydC5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBSRVBPUlRfSF8NCisjZGVmaW5lIFJFUE9SVF9IXw0KKw0KKyNpbmNsdWRlICJGaWxlU3RyZWFtLmgiDQorI2luY2x1ZGUgIlN0cmVhbUxpbmVXcml0ZXIuaCINCisjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDxsaXN0Pg0KKyNpbmNsdWRlIDxXaW5kb3dzLmg+DQorDQorY2xhc3MgUmVwb3J0DQorew0KK3B1YmxpYzoNCisJdm9pZCBBZGRMaW5lKGNvbnN0IHN0ZDo6d3N0cmluZyBsaW5lKSB7IHJlcG9ydF8ucHVzaF9iYWNrKGxpbmUpOyB9Ow0KKwl2b2lkIFNhdmUoY29uc3Qgc3RkOjp3c3RyaW5nJiByZXBvcnRwYXRoKSBjb25zdA0KKwl7DQorCQlGaWxlU3RyZWFtIHJlcG9ydGZpbGUocmVwb3J0cGF0aCwgRmlsZVN0cmVhbTo6TW9kZTo6VHJ1bmNhdGUpOw0KKwkJU3RyZWFtTGluZVdyaXRlciByZXBvcnRmaWxld3JpdGVyKHJlcG9ydGZpbGUpOw0KKwkJZm9yIChhdXRvJiBpdGVtIDogcmVwb3J0XykNCisJCXsNCisJCQlyZXBvcnRmaWxld3JpdGVyLldyaXRlTGluZShpdGVtKTsNCisJCX0NCisJfTsNCisJQk9PTCBJc0VtcHR5KCkgeyByZXR1cm4gcmVwb3J0Xy5zaXplKCkgPT0gMDsgfQ0KK3ByaXZhdGU6DQorCXN0ZDo6bGlzdDxzdGQ6OndzdHJpbmc+IHJlcG9ydF87DQorfTsNCisNCisjZW5kaWYgLyogUkVQT1JUX0hfICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvU0hBMUZpbGVIYXNoLmNwcCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1NIQTFGaWxlSGFzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxZTI3YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1NIQTFGaWxlSGFzaC5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2luY2x1ZGUgIlNIQTFGaWxlSGFzaC5oIg0KKw0KK3ZvaWQgU0hBMUZpbGVIYXNoOjpJbml0aWFsaXplKCkNCit7DQorCWNvbnRleHRfLnN0YXRlWzBdID0gMHg2NzQ1MjMwMTsNCisJY29udGV4dF8uc3RhdGVbMV0gPSAweEVGQ0RBQjg5Ow0KKwljb250ZXh0Xy5zdGF0ZVsyXSA9IDB4OThCQURDRkU7DQorCWNvbnRleHRfLnN0YXRlWzNdID0gMHgxMDMyNTQ3NjsNCisJY29udGV4dF8uc3RhdGVbNF0gPSAweEMzRDJFMUYwOw0KKwljb250ZXh0Xy5jb3VudFswXSA9IGNvbnRleHRfLmNvdW50WzFdID0gMDsNCit9DQorDQordm9pZCBTSEExRmlsZUhhc2g6OlVwZGF0ZShjb25zdCBVSU5UMzIgYnl0ZWNvdW50KQ0KK3sNCisJVUlOVDMyIGksIGluZGV4ID0gKGNvbnRleHRfLmNvdW50WzBdID4+IDMpICYgNjM7DQorCWlmICgoY29udGV4dF8uY291bnRbMF0gKz0gYnl0ZWNvdW50IDw8IDMpIDwgKGJ5dGVjb3VudCA8PCAzKSkNCisJew0KKwkJY29udGV4dF8uY291bnRbMV0rKzsNCisJfQ0KKwljb250ZXh0Xy5jb3VudFsxXSArPSAoYnl0ZWNvdW50ID4+IDI5KTsNCisJaWYgKChpbmRleCArIGJ5dGVjb3VudCkgPiA2MykNCisJew0KKwkJaSA9IDY0IC0gaW5kZXg7DQorCQlDb3B5TWVtb3J5KCZjb250ZXh0Xy5idWZmZXJbaW5kZXhdLCBidWZmZXJfLCBpKTsNCisJCVRyYW5zZm9ybShjb250ZXh0Xy5zdGF0ZSwgKFBVSU5UMzIpY29udGV4dF8uYnVmZmVyKTsNCisJCWZvciAoOyBpICsgNjMgPCBieXRlY291bnQ7IGkgKz0gNjQpDQorCQl7DQorCQkJVHJhbnNmb3JtKGNvbnRleHRfLnN0YXRlLCAoUFVJTlQzMikoYnVmZmVyXyArIGkpKTsNCisJCX0NCisJCWluZGV4ID0gMDsNCisJfQ0KKwllbHNlDQorCXsNCisJCWkgPSAwOw0KKwl9DQorCUNvcHlNZW1vcnkoJmNvbnRleHRfLmJ1ZmZlcltpbmRleF0sIGJ1ZmZlcl8gKyBpLCBieXRlY291bnQgLSBpKTsNCit9DQorDQordm9pZCBTSEExRmlsZUhhc2g6OkZpbmFsaXplKCkNCit7DQorCUJZVEUgZmluYWxjb3VudFs4XTsNCisJZm9yIChVSU5UIGkgPSAwOyBpIDwgODsgaSsrKQ0KKwl7DQorCQlmaW5hbGNvdW50W2ldID0gKEJZVEUpKChjb250ZXh0Xy5jb3VudFsoaSA+PSA0ID8gMCA6IDEpXSA+PiAoKDMgLSAoaSAmIDMpKSAqIDgpKSAmIDI1NSk7DQorCX0NCisJQ29weU1lbW9yeShidWZmZXJfLCAiXDIwMCIsIDEpOw0KKwlVcGRhdGUoMSk7DQorCUNvcHlNZW1vcnkoYnVmZmVyXywgIlwwIiwgMSk7DQorCXdoaWxlICgoY29udGV4dF8uY291bnRbMF0gJiA1MDQpICE9IDQ0OCkNCisJew0KKwkJVXBkYXRlKDEpOw0KKwl9DQorCUNvcHlNZW1vcnkoYnVmZmVyXywgZmluYWxjb3VudCwgc2l6ZW9mKGZpbmFsY291bnQpKTsNCisJVXBkYXRlKDgpOw0KKwlmb3IgKFVJTlQgaSA9IDA7IGkgPCBzaXplb2YoaGFzaF8pOyBpKyspDQorCXsNCisJCWhhc2hfW2ldID0gKEJZVEUpKChjb250ZXh0Xy5zdGF0ZVtpID4+IDJdID4+ICgoMyAtIChpICYgMykpICogOCkpICYgMjU1KTsNCisJfQ0KK30NCisNCit2b2lkIFNIQTFGaWxlSGFzaDo6Q29udmVydEhhc2hUb0RpZ2VzdFN0cmluZygpDQorew0KKwlzdGQ6OndzdHJpbmdzdHJlYW0gd3NzOw0KKwl3c3MgPDwgc3RkOjpoZXggPDwgc3RkOjpzZXR3KDIpIDw8IHN0ZDo6c2V0ZmlsbChMJzAnKSA8PCBzdGQ6OnVwcGVyY2FzZTsNCisJZm9yIChVSU5UIGkgPSAwOyBpIDwgc2l6ZW9mKGhhc2hfKTsgaSsrKQ0KKwl7DQorCQl3c3MgPDwgaGFzaF9baV07DQorCX0NCisJZGlnZXN0Xy5hcHBlbmQod3NzLnN0cigpKTsNCit9DQorDQordm9pZCBTSEExRmlsZUhhc2g6OlRyYW5zZm9ybShVSU5UMzIgc3RhdGVbNV0sIFBVSU5UMzIgYnVmZmVyKQ0KK3sNCisJdHlwZWRlZiB1bmlvbiB7DQorCQlCWVRFIGNbNjRdOw0KKwkJVUlOVDMyIGxbMTZdOw0KKwl9IENIQVI2NExPTkcxNiwgKlBDSEFSNjRMT05HMTY7DQorCVBDSEFSNjRMT05HMTYgYmxvY2s7DQorCWJsb2NrID0gKFBDSEFSNjRMT05HMTYpYnVmZmVyOw0KKw0KKwlyZWdpc3RlciBVSU5UMzIgYSwgYiwgYywgZCwgZTsNCisJYSA9IHN0YXRlWzBdOw0KKwliID0gc3RhdGVbMV07DQorCWMgPSBzdGF0ZVsyXTsNCisJZCA9IHN0YXRlWzNdOw0KKwllID0gc3RhdGVbNF07DQorDQorI2RlZmluZSByb2wodmFsdWUsIGJpdHMpICgoKHZhbHVlKSA8PCAoYml0cykpIHwgKCh2YWx1ZSkgPj4gKDMyIC0gKGJpdHMpKSkpDQorI2RlZmluZSBibGswKGkpIChibG9jay0+bFtpXSA9IChyb2woYmxvY2stPmxbaV0sIDI0KSAmIDB4RkYwMEZGMDApIFwNCisJfCAocm9sKGJsb2NrLT5sW2ldLCA4KSAmIDB4MDBGRjAwRkYpKQ0KKyNkZWZpbmUgYmxrKGkpIChibG9jay0+bFtpICYgMTVdID0gcm9sKGJsb2NrLT5sWyhpICsgMTMpICYgMTVdIF4gYmxvY2stPmxbKGkgKyA4KSAmIDE1XSBcDQorCV4gYmxvY2stPmxbKGkgKyAyKSAmIDE1XSBeIGJsb2NrLT5sW2kgJiAxNV0sIDEpKQ0KKyNkZWZpbmUgUjAodiwgdywgeCwgeSwgeiwgaSkgeiArPSAoKHcgJiAoeCBeIHkpKSBeIHkpICsgYmxrMChpKSArIDB4NUE4Mjc5OTkgKyByb2wodiwgNSk7IHcgPSByb2wodywgMzApOw0KKyNkZWZpbmUgUjEodiwgdywgeCwgeSwgeiwgaSkgeiArPSAoKHcgJiAoeCBeIHkpKSBeIHkpICsgYmxrKGkpICsgMHg1QTgyNzk5OSArIHJvbCh2LCA1KTsgdyA9IHJvbCh3LCAzMCk7DQorI2RlZmluZSBSMih2LCB3LCB4LCB5LCB6LCBpKSB6ICs9ICh3IF4geCBeIHkpICsgYmxrKGkpICsgMHg2RUQ5RUJBMSArIHJvbCh2LCA1KTsgdyA9IHJvbCh3LCAzMCk7DQorI2RlZmluZSBSMyh2LCB3LCB4LCB5LCB6LCBpKSB6ICs9ICgoKHcgfCB4KSAmIHkpIHwgKHcgJiB4KSkgKyBibGsoaSkgKyAweDhGMUJCQ0RDICsgcm9sKHYsIDUpOyB3ID0gcm9sKHcsIDMwKTsNCisjZGVmaW5lIFI0KHYsIHcsIHgsIHksIHosIGkpIHogKz0gKHcgXiB4IF4geSkgKyBibGsoaSkgKyAweENBNjJDMUQ2ICsgcm9sKHYsIDUpOyB3ID0gcm9sKHcsIDMwKTsNCisNCisJUjAoYSwgYiwgYywgZCwgZSwgMCk7IFIwKGUsIGEsIGIsIGMsIGQsIDEpOyBSMChkLCBlLCBhLCBiLCBjLCAyKTsgUjAoYywgZCwgZSwgYSwgYiwgMyk7DQorCVIwKGIsIGMsIGQsIGUsIGEsIDQpOyBSMChhLCBiLCBjLCBkLCBlLCA1KTsgUjAoZSwgYSwgYiwgYywgZCwgNik7IFIwKGQsIGUsIGEsIGIsIGMsIDcpOw0KKwlSMChjLCBkLCBlLCBhLCBiLCA4KTsgUjAoYiwgYywgZCwgZSwgYSwgOSk7IFIwKGEsIGIsIGMsIGQsIGUsIDEwKTsgUjAoZSwgYSwgYiwgYywgZCwgMTEpOw0KKwlSMChkLCBlLCBhLCBiLCBjLCAxMik7IFIwKGMsIGQsIGUsIGEsIGIsIDEzKTsgUjAoYiwgYywgZCwgZSwgYSwgMTQpOyBSMChhLCBiLCBjLCBkLCBlLCAxNSk7DQorCVIxKGUsIGEsIGIsIGMsIGQsIDE2KTsgUjEoZCwgZSwgYSwgYiwgYywgMTcpOyBSMShjLCBkLCBlLCBhLCBiLCAxOCk7IFIxKGIsIGMsIGQsIGUsIGEsIDE5KTsNCisJUjIoYSwgYiwgYywgZCwgZSwgMjApOyBSMihlLCBhLCBiLCBjLCBkLCAyMSk7IFIyKGQsIGUsIGEsIGIsIGMsIDIyKTsgUjIoYywgZCwgZSwgYSwgYiwgMjMpOw0KKwlSMihiLCBjLCBkLCBlLCBhLCAyNCk7IFIyKGEsIGIsIGMsIGQsIGUsIDI1KTsgUjIoZSwgYSwgYiwgYywgZCwgMjYpOyBSMihkLCBlLCBhLCBiLCBjLCAyNyk7DQorCVIyKGMsIGQsIGUsIGEsIGIsIDI4KTsgUjIoYiwgYywgZCwgZSwgYSwgMjkpOyBSMihhLCBiLCBjLCBkLCBlLCAzMCk7IFIyKGUsIGEsIGIsIGMsIGQsIDMxKTsNCisJUjIoZCwgZSwgYSwgYiwgYywgMzIpOyBSMihjLCBkLCBlLCBhLCBiLCAzMyk7IFIyKGIsIGMsIGQsIGUsIGEsIDM0KTsgUjIoYSwgYiwgYywgZCwgZSwgMzUpOw0KKwlSMihlLCBhLCBiLCBjLCBkLCAzNik7IFIyKGQsIGUsIGEsIGIsIGMsIDM3KTsgUjIoYywgZCwgZSwgYSwgYiwgMzgpOyBSMihiLCBjLCBkLCBlLCBhLCAzOSk7DQorCVIzKGEsIGIsIGMsIGQsIGUsIDQwKTsgUjMoZSwgYSwgYiwgYywgZCwgNDEpOyBSMyhkLCBlLCBhLCBiLCBjLCA0Mik7IFIzKGMsIGQsIGUsIGEsIGIsIDQzKTsNCisJUjMoYiwgYywgZCwgZSwgYSwgNDQpOyBSMyhhLCBiLCBjLCBkLCBlLCA0NSk7IFIzKGUsIGEsIGIsIGMsIGQsIDQ2KTsgUjMoZCwgZSwgYSwgYiwgYywgNDcpOw0KKwlSMyhjLCBkLCBlLCBhLCBiLCA0OCk7IFIzKGIsIGMsIGQsIGUsIGEsIDQ5KTsgUjMoYSwgYiwgYywgZCwgZSwgNTApOyBSMyhlLCBhLCBiLCBjLCBkLCA1MSk7DQorCVIzKGQsIGUsIGEsIGIsIGMsIDUyKTsgUjMoYywgZCwgZSwgYSwgYiwgNTMpOyBSMyhiLCBjLCBkLCBlLCBhLCA1NCk7IFIzKGEsIGIsIGMsIGQsIGUsIDU1KTsNCisJUjMoZSwgYSwgYiwgYywgZCwgNTYpOyBSMyhkLCBlLCBhLCBiLCBjLCA1Nyk7IFIzKGMsIGQsIGUsIGEsIGIsIDU4KTsgUjMoYiwgYywgZCwgZSwgYSwgNTkpOw0KKwlSNChhLCBiLCBjLCBkLCBlLCA2MCk7IFI0KGUsIGEsIGIsIGMsIGQsIDYxKTsgUjQoZCwgZSwgYSwgYiwgYywgNjIpOyBSNChjLCBkLCBlLCBhLCBiLCA2Myk7DQorCVI0KGIsIGMsIGQsIGUsIGEsIDY0KTsgUjQoYSwgYiwgYywgZCwgZSwgNjUpOyBSNChlLCBhLCBiLCBjLCBkLCA2Nik7IFI0KGQsIGUsIGEsIGIsIGMsIDY3KTsNCisJUjQoYywgZCwgZSwgYSwgYiwgNjgpOyBSNChiLCBjLCBkLCBlLCBhLCA2OSk7IFI0KGEsIGIsIGMsIGQsIGUsIDcwKTsgUjQoZSwgYSwgYiwgYywgZCwgNzEpOw0KKwlSNChkLCBlLCBhLCBiLCBjLCA3Mik7IFI0KGMsIGQsIGUsIGEsIGIsIDczKTsgUjQoYiwgYywgZCwgZSwgYSwgNzQpOyBSNChhLCBiLCBjLCBkLCBlLCA3NSk7DQorCVI0KGUsIGEsIGIsIGMsIGQsIDc2KTsgUjQoZCwgZSwgYSwgYiwgYywgNzcpOyBSNChjLCBkLCBlLCBhLCBiLCA3OCk7IFI0KGIsIGMsIGQsIGUsIGEsIDc5KTsNCisNCisJc3RhdGVbMF0gKz0gYTsNCisJc3RhdGVbMV0gKz0gYjsNCisJc3RhdGVbMl0gKz0gYzsNCisJc3RhdGVbM10gKz0gZDsNCisJc3RhdGVbNF0gKz0gZTsNCisNCisJYSA9IGIgPSBjID0gZCA9IGUgPSAwOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9TSEExRmlsZUhhc2guaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1NIQTFGaWxlSGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMTQ3YWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9TSEExRmlsZUhhc2guaApAQCAtMCwwICsxLDM4IEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgU0hBMUZJTEVIQVNIX0hfDQorI2RlZmluZSBTSEExRklMRUhBU0hfSF8NCisNCisjaW5jbHVkZSAiRmlsZUhhc2guaCINCisjaW5jbHVkZSA8aW9tYW5pcD4NCisjaW5jbHVkZSA8c3N0cmVhbT4NCisjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDxXaW5kb3dzLmg+DQorDQorc3RydWN0IFNIQTFDb250ZXh0DQorew0KKwlVSU5UMzIgc3RhdGVbNV07CS8vIHN0YXRlIChBQkNERSkNCisJVUlOVDMyIGNvdW50WzJdOwkvLyBiaXRzDQorCUJZVEUgYnVmZmVyWzY0XTsJLy8gaW5wdXQgYnVmZmVyDQorfTsNCisNCitjbGFzcyBTSEExRmlsZUhhc2ggOiBwdWJsaWMgRmlsZUhhc2gNCit7DQorcHVibGljOg0KKyNpZiBfTVNDX1ZFUiA8IDE5MDANCisJU0hBMUZpbGVIYXNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgsIGNvbnN0IERXT1JEIGJ1ZmZlcnNpemUpIDogRmlsZUhhc2goZmlsZXBhdGgsIGJ1ZmZlcnNpemUpIHsgfTsNCisJU0hBMUZpbGVIYXNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgZmlsZXBhdGgpIDogRmlsZUhhc2goZmlsZXBhdGgpIHsgfTsNCisjZWxzZQ0KKwl1c2luZyBGaWxlSGFzaDo6RmlsZUhhc2g7DQorI2VuZGlmDQorcHJpdmF0ZToNCisJdm9pZCBJbml0aWFsaXplKCk7DQorCXZvaWQgVXBkYXRlKGNvbnN0IFVJTlQzMiBieXRlY291bnQpOw0KKwl2b2lkIEZpbmFsaXplKCk7DQorCXZvaWQgVHJhbnNmb3JtKFVJTlQzMiBzdGF0ZVs1XSwgUFVJTlQzMiBidWZmZXIpOw0KKwl2b2lkIENvbnZlcnRIYXNoVG9EaWdlc3RTdHJpbmcoKTsNCisJQllURSBoYXNoX1syMF07DQorCVNIQTFDb250ZXh0IGNvbnRleHRfOw0KK307DQorDQorI2VuZGlmIC8qIFNIQTFGSUxFSEFTSF9IXyAqLw0KZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1N0cmVhbUxpbmVSZWFkZXIuY3BwIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvU3RyZWFtTGluZVJlYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkY2FjNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1N0cmVhbUxpbmVSZWFkZXIuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2luY2x1ZGUgIlN0cmVhbUxpbmVSZWFkZXIuaCINCisNCit2b2lkIFN0cmVhbUxpbmVSZWFkZXI6OkFsbG9jYXRlQnVmZmVyKCkNCit7DQorCWJ1ZmZlcl8gPSAoUEJZVEUpVmlydHVhbEFsbG9jKE5VTEwsIGJ1ZmZlcnNpemVfLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKTsNCit9DQorDQordm9pZCBTdHJlYW1MaW5lUmVhZGVyOjpGcmVlQnVmZmVyKCkNCit7DQorCWlmIChidWZmZXJfICE9IE5VTEwpDQorCXsNCisJCVZpcnR1YWxGcmVlKGJ1ZmZlcl8sIDAsIE1FTV9SRUxFQVNFKTsNCisJfQ0KK30NCisNCitEV09SRCBTdHJlYW1MaW5lUmVhZGVyOjpSZWFkQnl0ZXMoKQ0KK3sNCisJaWYgKHJlYWRsZW5ndGhfIC0gcmVhZGluZGV4XyA9PSAwKQ0KKwl7DQorCQlyZWFkaW5kZXhfID0gMDsNCisJCXJlYWRsZW5ndGhfID0gZmlsZXN0cmVhbV8uUmVhZChidWZmZXJfLCBidWZmZXJzaXplXyk7DQorCX0NCisJcmV0dXJuIHJlYWRsZW5ndGhfOw0KK30NCisNCitzdGQ6OndzdHJpbmcgU3RyZWFtTGluZVJlYWRlcjo6UmVhZExpbmUoKQ0KK3sNCisJQk9PTCBlb2wgPSBGQUxTRTsNCisJc3RkOjpzdHJpbmcgcmF3Ow0KKwl3aGlsZSAoIWVvbCkNCisJew0KKwkJRFdPUkQgYnVmZmVyYnl0ZXMgPSByZWFkbGVuZ3RoXyAtIHJlYWRpbmRleF87DQorCQlpZiAoYnVmZmVyYnl0ZXMgPT0gMCkNCisJCXsNCisJCQlidWZmZXJieXRlcyA9IFJlYWRCeXRlcygpOw0KKwkJCWlmIChidWZmZXJieXRlcyA9PSAwKSBicmVhazsNCisJCX0NCisJCWNoYXIqIHAgPSAoY2hhciAqKWJ1ZmZlcl8gKyByZWFkaW5kZXhfOw0KKwkJd2hpbGUgKCpwICE9ICdccicgJiYgKnAgIT0gJ1xuJyAmJiBwIDw9IChjaGFyICopYnVmZmVyXyArIHJlYWRpbmRleF8pDQorCQl7DQorCQkJcmF3LmFwcGVuZChwLCAxKTsNCisJCQlyZWFkaW5kZXhfKys7DQorCQkJaWYgKHJlYWRsZW5ndGhfIC0gcmVhZGluZGV4XyA9PSAwKSBicmVhazsNCisJCQlwKys7DQorCQl9DQorCQlpZiAoKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXG4nKQ0KKwkJew0KKwkJCWVvbCA9IFRSVUU7DQorCQkJcmVhZGluZGV4XysrOw0KKwkJCWlmICgqcCA9PSAnXHInICYmIChyZWFkbGVuZ3RoXyAtIHJlYWRpbmRleF8gPiAwKSAmJiAqKHAgKyAxKSA9PSAnXG4nKQ0KKwkJCXsNCisJCQkJcmVhZGluZGV4XysrOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlpZiAocmF3LnNpemUoKSA+IDApDQorCXsNCisJCURXT1JEIGNjaFdpZGVDaGFyID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCByYXcuY19zdHIoKSwgLTEsIE5VTEwsIDApOw0KKwkJV0NIQVIqIHdpZGVDaGFycyA9IChXQ0hBUiAqKUhlYXBBbGxvYyhHZXRQcm9jZXNzSGVhcCgpLCAwLCBjY2hXaWRlQ2hhciAqIHNpemVvZihXQ0hBUikpOw0KKwkJY2NoV2lkZUNoYXIgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHJhdy5jX3N0cigpLCAtMSwgd2lkZUNoYXJzLCBjY2hXaWRlQ2hhcik7DQorCQlzdGQ6OndzdHJpbmcgbGluZSh3aWRlQ2hhcnMpOw0KKwkJSGVhcEZyZWUoR2V0UHJvY2Vzc0hlYXAoKSwgMCwgd2lkZUNoYXJzKTsNCisJCXJldHVybiBsaW5lOw0KKwl9DQorCXJldHVybiBMIiI7DQorfQ0KKw0KK0JPT0wgU3RyZWFtTGluZVJlYWRlcjo6RW5kT2ZTdHJlYW0oKQ0KK3sNCisJcmV0dXJuIFJlYWRCeXRlcygpID09IDA7DQorfQ0KKw0KK3ZvaWQgU3RyZWFtTGluZVJlYWRlcjo6Q2xvc2UoKQ0KK3sNCisJZmlsZXN0cmVhbV8uQ2xvc2UoKTsNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvU3RyZWFtTGluZVJlYWRlci5oIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvU3RyZWFtTGluZVJlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMTJiODQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9TdHJlYW1MaW5lUmVhZGVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyogQXV0aG9yOiBtYWNvdGUgKi8NCisNCisjaWZuZGVmIFNUUkVBTUxJTkVSRUFERVJfSF8NCisjZGVmaW5lIFNUUkVBTUxJTkVSRUFERVJfSF8NCisNCisjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIg0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPFdpbmRvd3MuaD4NCisNCitjbGFzcyBTdHJlYW1MaW5lUmVhZGVyDQorew0KK3ByaXZhdGU6DQorCXN0YXRpYyBjb25zdCBEV09SRCBrRGVmYXVsdEJ1ZmZlclNpemUgPSAzMjc2ODsNCitwdWJsaWM6DQorCWVudW0gY2xhc3MgRW5jb2RpbmcNCisJew0KKwkJVVRGOA0KKwl9Ow0KKwlTdHJlYW1MaW5lUmVhZGVyKEZpbGVTdHJlYW0mIGZpbGVzdHJlYW0sIEVuY29kaW5nIGVuY29kaW5nLCBjb25zdCBEV09SRCBidWZmZXJzaXplKSA6IGZpbGVzdHJlYW1fKGZpbGVzdHJlYW0pLCBlbmNvZGluZ18oZW5jb2RpbmcpLCBidWZmZXJzaXplXyhidWZmZXJzaXplKQ0KKwl7DQorCQlBbGxvY2F0ZUJ1ZmZlcigpOw0KKwl9DQorCVN0cmVhbUxpbmVSZWFkZXIoRmlsZVN0cmVhbSYgZmlsZXN0cmVhbSwgRW5jb2RpbmcgZW5jb2RpbmcpIDogU3RyZWFtTGluZVJlYWRlcihmaWxlc3RyZWFtLCBFbmNvZGluZzo6VVRGOCwga0RlZmF1bHRCdWZmZXJTaXplKSB7IH0NCisJU3RyZWFtTGluZVJlYWRlcihGaWxlU3RyZWFtJiBmaWxlc3RyZWFtKSA6IFN0cmVhbUxpbmVSZWFkZXIoZmlsZXN0cmVhbSwgRW5jb2Rpbmc6OlVURjgpIHsgfQ0KKwl+U3RyZWFtTGluZVJlYWRlcigpDQorCXsNCisJCUZyZWVCdWZmZXIoKTsNCisJfQ0KKwlzdGQ6OndzdHJpbmcgUmVhZExpbmUoKTsNCisJQk9PTCBFbmRPZlN0cmVhbSgpOw0KKwl2b2lkIENsb3NlKCk7DQorcHJpdmF0ZToNCisJdm9pZCBBbGxvY2F0ZUJ1ZmZlcigpOw0KKwl2b2lkIEZyZWVCdWZmZXIoKTsNCisJRFdPUkQgUmVhZEJ5dGVzKCk7DQorCUZpbGVTdHJlYW0mIGZpbGVzdHJlYW1fOw0KKwlFbmNvZGluZyBlbmNvZGluZ187DQorCVBCWVRFIGJ1ZmZlcl87DQorCURXT1JEIGJ1ZmZlcnNpemVfOw0KKwlEV09SRCByZWFkaW5kZXhfID0gMDsNCisJRFdPUkQgcmVhZGxlbmd0aF8gPSAwOw0KK307DQorDQorI2VuZGlmIC8qIFNUUkVBTUxJTkVSRUFERVJfSF8gKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9TdHJlYW1MaW5lV3JpdGVyLmNwcCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1N0cmVhbUxpbmVXcml0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZDFhMzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9TdHJlYW1MaW5lV3JpdGVyLmNwcApAQCAtMCwwICsxLDMxIEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpbmNsdWRlICJTdHJlYW1MaW5lV3JpdGVyLmgiDQorDQordm9pZCBTdHJlYW1MaW5lV3JpdGVyOjpXcml0ZShzdGQ6OndzdHJpbmcgbGluZSkNCit7DQorCWlmIChsaW5lLnNpemUoKSA+IDApDQorCXsNCisJCURXT1JEIGNiTXVsdGlCeXRlID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBsaW5lLmNfc3RyKCksIC0xLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsNCisJCUxQU1RSIGJ5dGVzID0gKExQU1RSKUhlYXBBbGxvYyhHZXRQcm9jZXNzSGVhcCgpLCAwLCBjYk11bHRpQnl0ZSk7DQorCQljYk11bHRpQnl0ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgbGluZS5jX3N0cigpLCAtMSwgYnl0ZXMsIGNiTXVsdGlCeXRlLCBOVUxMLCBOVUxMKTsNCisJCWZpbGVzdHJlYW1fLldyaXRlKChQQllURSlieXRlcywgY2JNdWx0aUJ5dGUgLSAxKTsNCisJCUhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksIDAsIGJ5dGVzKTsNCisJfQ0KK30NCisNCit2b2lkIFN0cmVhbUxpbmVXcml0ZXI6OldyaXRlTGluZShzdGQ6OndzdHJpbmcgbGluZSkNCit7DQorCVdyaXRlKGxpbmUpOw0KKwlXcml0ZUVPTCgpOw0KK30NCisNCit2b2lkIFN0cmVhbUxpbmVXcml0ZXI6OldyaXRlRU9MKCkNCit7DQorCWZpbGVzdHJlYW1fLldyaXRlKChQQllURSkiXHJcbiIsIDIpOw0KK30NCisNCit2b2lkIFN0cmVhbUxpbmVXcml0ZXI6OkNsb3NlKCkNCit7DQorCWZpbGVzdHJlYW1fLkNsb3NlKCk7DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1N0cmVhbUxpbmVXcml0ZXIuaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1N0cmVhbUxpbmVXcml0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTBkNGVjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvU3RyZWFtTGluZVdyaXRlci5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qIEF1dGhvcjogbWFjb3RlICovDQorDQorI2lmbmRlZiBTVFJFQU1MSU5FV1JJVEVSX0hfDQorI2RlZmluZSBTVFJFQU1MSU5FV1JJVEVSX0hfDQorDQorI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCINCisjaW5jbHVkZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDxXaW5kb3dzLmg+DQorDQorY2xhc3MgU3RyZWFtTGluZVdyaXRlcg0KK3sNCitwdWJsaWM6DQorCWVudW0gY2xhc3MgRW5jb2RpbmcNCisJew0KKwkJVVRGOA0KKwl9Ow0KKwlTdHJlYW1MaW5lV3JpdGVyKEZpbGVTdHJlYW0mIGZpbGVzdHJlYW0sIEVuY29kaW5nIGVuY29kaW5nKSA6IGZpbGVzdHJlYW1fKGZpbGVzdHJlYW0pLCBlbmNvZGluZ18oZW5jb2RpbmcpIHsgfQ0KKwlTdHJlYW1MaW5lV3JpdGVyKEZpbGVTdHJlYW0mIGZpbGVzdHJlYW0pIDogU3RyZWFtTGluZVdyaXRlcihmaWxlc3RyZWFtLCBFbmNvZGluZzo6VVRGOCkgeyB9DQorCX5TdHJlYW1MaW5lV3JpdGVyKCkNCisJew0KKwkJQ2xvc2UoKTsNCisJfQ0KKwl2b2lkIFdyaXRlKHN0ZDo6d3N0cmluZyBsaW5lKTsNCisJdm9pZCBXcml0ZUxpbmUoc3RkOjp3c3RyaW5nIGxpbmUpOw0KKwl2b2lkIENsb3NlKCk7DQorcHJpdmF0ZToNCisJdm9pZCBXcml0ZUVPTCgpOw0KKwlGaWxlU3RyZWFtJiBmaWxlc3RyZWFtXzsNCisJRW5jb2RpbmcgZW5jb2RpbmdfOw0KK307DQorDQorI2VuZGlmIC8qIFNUUkVBTUxJTkVXUklURVJfSF8gKi8NCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9XaW5kb3cuY3BwIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvV2luZG93LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWRhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvV2luZG93LmNwcApAQCAtMCwwICsxLDc5IEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpbmNsdWRlICJXaW5kb3cuaCINCisNCit2b2lkIFdpbmRvdzo6UmVnaXN0ZXIoKQ0KK3sNCisJV05EQ0xBU1Mgd2M7DQorCXdjLnN0eWxlID0gMDsNCisJd2MubHBmblduZFByb2MgPSBXaW5kb3c6OlduZFByb2M7DQorCXdjLmNiQ2xzRXh0cmEgPSAwOw0KKwl3Yy5jYlduZEV4dHJhID0gMDsNCisJd2MuaEluc3RhbmNlID0gaGluc3RfOw0KKwl3Yy5oSWNvbiA9IE5VTEw7DQorCXdjLmhDdXJzb3IgPSBMb2FkQ3Vyc29yVyhOVUxMLCBJRENfQVJST1cpOw0KKwl3Yy5oYnJCYWNrZ3JvdW5kID0gKEhCUlVTSCkoQ09MT1JfV0lORE9XICsgMSk7DQorCXdjLmxwc3pNZW51TmFtZSA9IE5VTEw7DQorCXdjLmxwc3pDbGFzc05hbWUgPSBDbGFzc05hbWUoKTsNCisJV2luUmVnaXN0ZXJDbGFzcygmd2MpOw0KK30NCisNCitMUkVTVUxUIENBTExCQUNLIFdpbmRvdzo6V25kUHJvYyhIV05EIGh3bmQsIFVJTlQgdU1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkNCit7DQorCVdpbmRvdyAqc2VsZjsNCisJaWYgKHVNc2cgPT0gV01fTkNDUkVBVEUpDQorCXsNCisJCWF1dG8gbHBjcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSk7DQorCQlzZWxmID0gcmVpbnRlcnByZXRfY2FzdDxXaW5kb3cgKj4obHBjcy0+bHBDcmVhdGVQYXJhbXMpOw0KKwkJc2VsZi0+aHduZF8gPSBod25kOw0KKwkJU2V0V2luZG93TG9uZ1B0clcoaHduZCwgR1dMUF9VU0VSREFUQSwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KHNlbGYpKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXNlbGYgPSByZWludGVycHJldF9jYXN0PFdpbmRvdyAqPihHZXRXaW5kb3dMb25nUHRyVyhod25kLCBHV0xQX1VTRVJEQVRBKSk7DQorCX0NCisJaWYgKHNlbGYpDQorCXsNCisJCXJldHVybiBzZWxmLT5IYW5kbGVNZXNzYWdlKHVNc2csIHdQYXJhbSwgbFBhcmFtKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXJldHVybiBEZWZXaW5kb3dQcm9jVyhod25kLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSk7DQorCX0NCit9DQorDQorTFJFU1VMVCBXaW5kb3c6OkhhbmRsZU1lc3NhZ2UoVUlOVCB1TXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQ0KK3sNCisJTFJFU1VMVCBscmVzOw0KKwlzd2l0Y2ggKHVNc2cpDQorCXsNCisJY2FzZSBXTV9OQ0RFU1RST1k6DQorCQlscmVzID0gRGVmV2luZG93UHJvY1coaHduZF8sIHVNc2csIHdQYXJhbSwgbFBhcmFtKTsNCisJCVNldFdpbmRvd0xvbmdQdHJXKGh3bmRfLCBHV0xQX1VTRVJEQVRBLCAwKTsNCisJCWRlbGV0ZSB0aGlzOw0KKwkJcmV0dXJuIGxyZXM7DQorCWNhc2UgV01fUEFJTlQ6DQorCQlPblBhaW50KCk7DQorCQlyZXR1cm4gMDsNCisJY2FzZSBXTV9QUklOVENMSUVOVDoNCisJCU9uUHJpbnRDbGllbnQocmVpbnRlcnByZXRfY2FzdDxIREM+KHdQYXJhbSkpOw0KKwkJcmV0dXJuIDA7DQorCX0NCisJcmV0dXJuIERlZldpbmRvd1Byb2NXKGh3bmRfLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSk7DQorfQ0KKw0KK3ZvaWQgV2luZG93OjpPblBhaW50KCkNCit7DQorCVBBSU5UU1RSVUNUIHBzOw0KKwlCZWdpblBhaW50KGh3bmRfLCAmcHMpOw0KKwlQYWludENvbnRlbnQoJnBzKTsNCisJRW5kUGFpbnQoaHduZF8sICZwcyk7DQorfQ0KKw0KK3ZvaWQgV2luZG93OjpPblByaW50Q2xpZW50KEhEQyBoZGMpDQorew0KKwlQQUlOVFNUUlVDVCBwczsNCisJcHMuaGRjID0gaGRjOw0KKwlHZXRDbGllbnRSZWN0KGh3bmRfLCAmcHMucmNQYWludCk7DQorCVBhaW50Q29udGVudCgmcHMpOw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9XaW5kb3cuaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL1dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NjI0NmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9XaW5kb3cuaApAQCAtMCwwICsxLDM4IEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgV0lORE9XX0hfDQorI2RlZmluZSBXSU5ET1dfSF8NCisNCisjaW5jbHVkZSA8V2luZG93cy5oPg0KKw0KK2NsYXNzIFdpbmRvdw0KK3sNCitwdWJsaWM6DQorCUhXTkQgR2V0SFdORCgpIGNvbnN0IHsgcmV0dXJuIGh3bmRfOyB9DQorCVdpbmRvdyhISU5TVEFOQ0UgaGluc3QpIDogaGluc3RfKGhpbnN0KSB7IH0NCitwcm90ZWN0ZWQ6DQorCXZpcnR1YWwgTFJFU1VMVCBIYW5kbGVNZXNzYWdlKFVJTlQgdU1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSk7DQorCXZpcnR1YWwgdm9pZCBQYWludENvbnRlbnQoUEFJTlRTVFJVQ1QgKnBwcykgeyB9DQorCXZpcnR1YWwgTFBDV1NUUiBDbGFzc05hbWUoKSA9IDA7DQorCXZpcnR1YWwgQk9PTCBXaW5SZWdpc3RlckNsYXNzKFdORENMQVNTICpwd2MpDQorCXsNCisJCXJldHVybiBSZWdpc3RlckNsYXNzVyhwd2MpOw0KKwl9DQorCXZpcnR1YWwgfldpbmRvdygpIHsgfQ0KKwlIV05EIFdpbkNyZWF0ZVdpbmRvdyhEV09SRCBkd0V4U3R5bGUsIExQQ1dTVFIgcHN6TmFtZSwgRFdPUkQgZHdTdHlsZSwgDQorCQlpbnQgeCwgaW50IHksIGludCBjeCwgaW50IGN5LCBIV05EIGh3bmRQYXJlbnQsIEhNRU5VIGhtZW51KQ0KKwl7DQorCQlSZWdpc3RlcigpOw0KKwkJcmV0dXJuIENyZWF0ZVdpbmRvd0V4Vyhkd0V4U3R5bGUsIENsYXNzTmFtZSgpLCBwc3pOYW1lLCBkd1N0eWxlLA0KKwkJCXgsIHksIGN4LCBjeSwgaHduZFBhcmVudCwgaG1lbnUsIGhpbnN0XywgdGhpcyk7DQorCX0NCisJSFdORCBod25kXzsNCisJSElOU1RBTkNFIGhpbnN0XzsNCitwcml2YXRlOg0KKwl2b2lkIFJlZ2lzdGVyKCk7DQorCXZvaWQgT25QYWludCgpOw0KKwl2b2lkIE9uUHJpbnRDbGllbnQoSERDIGhkYyk7DQorCXN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFduZFByb2MoSFdORCBod25kLCBVSU5UIHVNc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOw0KK307DQorDQorI2VuZGlmIC8qIFdJTkRPV19IXyAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL2FwcGxpY2F0aW9uLm1hbmlmZXN0IGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvYXBwbGljYXRpb24ubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y2MDdlYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL2FwcGxpY2F0aW9uLm1hbmlmZXN0CkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCis8YXNzZW1ibHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYxIiBtYW5pZmVzdFZlcnNpb249IjEuMCI+DQorICA8dHJ1c3RJbmZvIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MiI+DQorICAgIDxzZWN1cml0eT4NCisgICAgICA8cmVxdWVzdGVkUHJpdmlsZWdlcz4NCisgICAgICAgIDxyZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbCBsZXZlbD0iYXNJbnZva2VyIiB1aUFjY2Vzcz0iZmFsc2UiLz4NCisgICAgICA8L3JlcXVlc3RlZFByaXZpbGVnZXM+DQorICAgIDwvc2VjdXJpdHk+DQorICA8L3RydXN0SW5mbz4NCisgIDxkZXBlbmRlbmN5Pg0KKyAgICA8ZGVwZW5kZW50QXNzZW1ibHk+DQorICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0iV2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5XaW5kb3dzLkNvbW1vbi1Db250cm9scyIgdmVyc2lvbj0iNi4wLjAuMCINCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JBcmNoaXRlY3R1cmU9IioiIHB1YmxpY0tleVRva2VuPSI2NTk1YjY0MTQ0Y2NmMWRmIiBsYW5ndWFnZT0iKiIvPg0KKyAgICA8L2RlcGVuZGVudEFzc2VtYmx5Pg0KKyAgPC9kZXBlbmRlbmN5Pg0KKzwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvcmVzb3VyY2UuaCBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL3Jlc291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjMTgxOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Jlc291cmNlcy9pc3N1ZV8zMDIwL3Jlc291cmNlLmgKQEAgLTAsMCArMSw4IEBACisvKiBBdXRob3I6IG1hY290ZSAqLw0KKw0KKyNpZm5kZWYgUkVTT1VSQ0VfSF8NCisjZGVmaW5lIFJFU09VUkNFX0hfDQorDQorI2RlZmluZSBJRElfSUNPTjEgMTAxDQorDQorI2VuZGlmIC8qIFJFU09VUkNFX0hfICovDQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvcmVzb3VyY2UucmMgYi90ZXN0cy9yZXNvdXJjZXMvaXNzdWVfMzAyMC9yZXNvdXJjZS5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRmZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVzb3VyY2VzL2lzc3VlXzMwMjAvcmVzb3VyY2UucmMKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSAicmVzb3VyY2UuaCINCisNCitJRElfSUNPTjEgSUNPTiAiSGFzaENoZWNrLmljbyINCisNCitDUkVBVEVQUk9DRVNTX01BTklGRVNUX1JFU09VUkNFX0lEIFJUX01BTklGRVNUICJhcHBsaWNhdGlvbi5tYW5pZmVzdCINCisNCg==