ZGlmZiAtLWdpdCBhL05PVEVTIGIvTk9URVMKaW5kZXggMTNiMTliYS4uNzhkZTJjMSAxMDA2NDQKLS0tIGEvTk9URVMKKysrIGIvTk9URVMKQEAgLTEyLDEwICsxMiw4IEBACiAgICogZnVsbCBIVFRQIGxvZyB3aXRoIGRlc3RpbmF0aW9uIHNlcnZlciBJRCwgcmVxIGFuZCByZXNwIHRpbWUuCiAgICogc291cmNlIGFkZHJlc3Mgb2Ygb3V0Z29pbmcgY29ubmVjdGlvbnMKIDEuMS44IC0+IDEuMS45Ci0gIC0gaGFuZGxlIHBhcmFtZXRyYWJsZSBIVFRQIGhlYWx0aC1jaGVja3MgcmVwbGllcwotICAtIGRpZmZlcmVudGlhdGUgaHR0cCBoZWFkZXJzIGFuZCBodHRwIHVyaXMKLSAgLSBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBjb25maWcgZmlsZQotICAtIHN1cHBvcnQga2VlcC1hbGl2ZQogMS4xLjkgLT4gMS4xLjEwCi0gIC0gYXV0b21hdGljYWxseSByZW1vdmUgY2xpZW50IGNvb2tpZSBpbiBpbnNlcnQraW5kaXJlY3QgbW9kZQotCisgICogYXV0b21hdGljYWxseSByZW1vdmUgY2xpZW50IGNvb2tpZSBpbiBpbnNlcnQraW5kaXJlY3QgbW9kZQorMS4xLjEwIC0+IDEuMS4xMQorICAqIHN1cHBvcnQgbXVsdGktY29va2llIGFzIGRlc2NyaWJlZCBpbiBSRkMyMTA5CisgICogYWRkZWQgIm5vY2FjaGUiIG9wdGlvbiB0byBwcmV2ZW50IGNhY2hlcyBmcm9tIHN0b3JpbmcgY29va2llcy4KZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCmluZGV4IGQ2OTBlNzAuLjk3MjM2ODAgMTAwNjQ0Ci0tLSBhL1RPRE8KKysrIGIvVE9ETwpAQCAtMTgsNSArMTgsMTIgQEAKICAgLSBjb21wdGVyIGxlcyBtYXRjaGVzCiAgIC0gc2kgbWF0Y2gobikgJiAoW25dLmNwdCA+IFtuLTFdLmNwdCkgJiAoW25dLmFjdGlvbiA9PSBbbi0xXS5hY3Rpb24pLCBzd2FwKG4sbi0xKQogICAtIHLpZ3VsaehyZW1lbnQsIGRpdmlzZXIgdG91cyBsZXMgY29tcHRldXJzIChsb3JzIGQndW4gZOlwYXNzZW1lbnQgcGFyIGV4ZW1wbGUpCi0tIGZpbHRyYWdlIHN1ciBsJ2FkcmVzc2UgSVAgc291cmNlCistIGZpbHRyYWdlIHN1ciBsJ2FkcmVzc2UgSVAgc291cmNlLCBldCBzdG9ja2VyIGxlIHBvaW50ZXVyIHN1ciBsYSBkZXJuaehyZSByZWdleAorICBtYXRjaOllIGRhbnMgbGEgInNlc3Npb24iIHBvdXIgYWNj6WzpcmVyIGxlcyByZWdleC4KIC0gZ2VzdGlvbiBrZWVwLWFsaXZlCisKKy0gaGFuZGxlIHBhcmFtZXRyYWJsZSBIVFRQIGhlYWx0aC1jaGVja3MgcmVwbGllcworLSBkaWZmZXJlbnRpYXRlIGh0dHAgaGVhZGVycyBhbmQgaHR0cCB1cmlzCistIHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNvbmZpZyBmaWxlCistIHN1cHBvcnQga2VlcC1hbGl2ZQorCmRpZmYgLS1naXQgYS9kb2MvaGFwcm94eS50eHQgYi9kb2MvaGFwcm94eS50eHQKaW5kZXggMzZjM2M5OS4uMjNjMmEwZSAxMDA2NDQKLS0tIGEvZG9jL2hhcHJveHkudHh0CisrKyBiL2RvYy9oYXByb3h5LnR4dApAQCAtMSw5ICsxLDkgQEAKIAogICAgICAgICAgCQkgICAgIEggQSAtIFAgciBvIHggeQogICAgICAgICAgCQkgICAgIC0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgCQkgICAgICB2ZXJzaW9uIDEuMS4xMAorICAgICAgICAgCQkgICAgICB2ZXJzaW9uIDEuMS4xMQogCQkJICAgICAgd2lsbHkgdGFycmVhdQotCQkJICAgICAgIDIwMDIvMDUvMTAKKwkJCSAgICAgICAyMDAyLzA2LzExCiAKID09PT09PT09PT09PT09PT0KIHwgSW50cm9kdWN0aW9uIHwKQEAgLTQxNyw3ICs0MTcsMjkgQEAKICdiYWxhbmNlJy4KIAogCi0yLjgpIETpZmluaXRpb24gZHUgbm9tIGR1IGNvb2tpZQorMi44KSBBZHJlc3NlIGRlIHNvcnRpZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWwgZXN0IHBvc3NpYmxlIGRlIGZvcmNlciBsJ2FkcmVzc2UgdXRpbGlz6WUgcG91ciDpdGFibGlyIGxlcyBjb25uZXhpb25zCit2ZXJzIGxlcyBzZXJ2ZXVycyDgIGwnYWlkZSBkdSBwYXJhbeh0cmUgInNvdXJjZSIuIElsIGVzdCBt6m1lIHBvc3NpYmxlIGRlCitmb3JjZXIgbGUgcG9ydCwgYmllbiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgc2UgbGltaXRlIOAgZGVzIHVzYWdlcyB0cuhzCitzcOljaWZpcXVlcy4gQydlc3QgcGFydGljdWxp6HJlbWVudCB1dGlsZSBlbiBjYXMgZCdhZHJlc3NhZ2UgbXVsdGlwbGUsIGV0CitwbHVzIGfpbulyYWxlbWVudCBwb3VyIHBlcm1ldHRyZSBhdXggc2VydmV1cnMgZGUgdHJvdXZlciBsZSBjaGVtaW4gZGUKK3JldG91ciBkYW5zIGRlcyBjb250ZXh0ZXMgZGUgcm91dGFnZSBkaWZmaWNpbGVzLiBTaSBsJ2FkcmVzc2UgZXN0IDAuMC4wLjAsCitlbGxlIHNlcmEgY2hvaXNpZSBsaWJyZW1lbnQgcGFyIGxlIHN5c3RlbWUuIFNpIGxlIHBvcnQgZXN0IDAsIGlsCitzZXJhIGNob2lzaSBsaWJyZW1lbnQgcGFyIGxlIHN5c3TobWUuCisKK0V4ZW1wbGVzIDoKKy0tLS0tLS0tLS0KKyAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCisgICAJIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKKwlzb3VyY2UgMTkyLjE2OC4xLjIwMDowCisKKyAgICBsaXN0ZW4gcmxvZ2luX3Byb3h5IDAuMC4wLjA6NTEzCisgICAJIyB1dGlsaXNlciBsJ2FkcmVzc2UgMTkyLjE2OC4xLjIwMCBldCBsZSBwb3J0IHLpc2VydukgOTAwCisJc291cmNlIDE5Mi4xNjguMS4yMDA6OTAwCisKKworMi45KSBE6WZpbml0aW9uIGR1IG5vbSBkdSBjb29raWUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkZSByZWNoZXJjaGVyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwb3VyIHNhdm9pcgogdmVycyBxdWVsIHNlcnZldXIgYWlndWlsbGVyIGxhIHJlcXXqdGUgdXRpbGlzYXRldXIuIExlIG5vbSBkdSBjb29raWUgZXN0IGRvbm7pCkBAIC00MzMsNyArNDU1LDggQEAKIHZpcy3gLXZpcyBkZXMgYXBwbGljYXRpb25zIHJlbGF56WVzLiBJbCBlc3QgcG9zc2libGUsIG5vdGFtbWVudCBkZSBzdXBwcmltZXIgb3UKIHLp6WNyaXJlIHVuIGNvb2tpZSByZXRvdXJu6SBwYXIgdW4gc2VydmV1ciBhY2PpZOkgZW4gZGlyZWN0LCBldCBkJ2luc+lyZXIgdW4KIGNvb2tpZSBkYW5zIHVuZSBy6XBvbnNlIEhUVFAgYWRyZXNz6WUg4CB1biBzZXJ2ZXVyIHPpbGVjdGlvbm7pIGVuIHLpcGFydGl0aW9uCi1kZSBjaGFyZ2UuCitkZSBjaGFyZ2UsIGV0IG3qbWUgZGUgc2lnbmFsZXIgYXV4IHByb3hpZXMgYW1vbnQgZGUgbmUgcGFzIGNhY2hlciBsZSBjb29raWUKK2luc+ly6S4KIAogRXhlbXBsZXMgOgogLS0tLS0tLS0tLQpAQCAtNDU1LDYgKzQ3OCwxMiBAQAogCiAJY29va2llIFNFUlZFUklEIGluc2VydAogCitQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKK2Fqb3V0ZXIgbGUgbW90IGNs6SAnbm9jYWNoZScgYXBy6HMgJ2luc2VydCcgOgorCisJY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlCisKKwogUmVtYXJxdWVzIDoKIC0tLS0tLS0tLS0tCiAtIElsIGVzdCBwb3NzaWJsZSBkZSBjb21iaW5lciAnaW5zZXJ0JyBhdmVjICdpbmRpcmVjdCcgb3UgJ3Jld3JpdGUnIHBvdXIgcydhZGFwdGVyCkBAIC00NjMsOCArNDkyLDEzIEBACiAtIGRhbnMgbGUgY2FzIG/5ICdpbnNlcnQnIGV0ICdpbmRpcmVjdCcgc29udCBzcOljaWZp6XMsIGxlIGNvb2tpZSBuJ2VzdCBqYW1haXMKICAgdHJhbnNtaXMgYXUgc2VydmV1ciB2dSBxdSdpbCBuJ2VuIGEgcGFzIGNvbm5haXNzYW5jZSBldCBuZSBwb3VycmFpdCBwYXMgbGUKICAgY29tcHJlbmRyZS4KKy0gaWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyICdub2NhY2hlJyBlbiBtb2RlIGluc2VydGlvbiBzaQorICBkZXMgY2FjaGVzIHBldXZlbnQgc2UgdHJvdXZlciBlbnRyZSBsZXMgY2xpZW50cyBldCBsJ2luc3RhbmNlIGR1IHByb3h5LiBEYW5zCisgIGxlIGNhcyBjb250cmFpcmUsIHVuIGNhY2hlIEhUVFAgMS4wIHBvdXJyYWl0IGNhY2hlciBsYSBy6XBvbnNlLCBpbmNsdWFudCBsZQorICBjb29raWUgZGUgcGVyc2lzdGVuY2UgaW5z6XLpLCBkb25jIHByb3ZvcXVlciBkZXMgY2hhbmdlbWVudHMgZGUgc2VydmV1cnMgcG91cgorICBkZXMgY2xpZW50cyBwYXJ0YWdlYW50IGxlIG3qbWUgY2FjaGUuCiAKLTIuOSkgQXNzaWduYXRpb24gZCd1biBzZXJ2ZXVyIOAgdW5lIHZhbGV1ciBkZSBjb29raWUKKzIuMTApIEFzc2lnbmF0aW9uIGQndW4gc2VydmV1ciDgIHVuZSB2YWxldXIgZGUgY29va2llCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBFbiBtb2RlIEhUVFAsIGlsIGVzdCBwb3NzaWJsZSBkJ2Fzc29jaWVyIGRlcyBzZXJ2ZXVycyDgIGRlcyB2YWxldXJzIGRlCiBjb29raWUgcGFyIGxlIHBhcmFt6HRyZSAnc2VydmVyJy4gTGEgc3ludGF4ZSBlc3QgOgpAQCAtNTM2LDEwICs1NzAsMTEgQEAKIAlzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKIAogIyBJbnNlcnRpb24gYXV0b21hdGlxdWUgZGUgY29va2llIGRhbnMgbGEgculwb25zZSBkdSBzZXJ2ZXVyLCBldCBzdXBwcmVzc2lvbgotIyBhdXRvbWF0aXF1ZSBkYW5zIGxhIHJlcXXqdGUuCisjIGF1dG9tYXRpcXVlIGRhbnMgbGEgcmVxdep0ZSwgdG91dCBlbiBpbmRpcXVhbnQgYXV4IGNhY2hlcyBkZSBuZSBwYXMgZ2FyZGVyCisjIGNlIGNvb2tpZS4KICAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogCW1vZGUgaHR0cAotCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgaW5kaXJlY3QKKwljb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKIAliYWxhbmNlIHJvdW5kcm9iaW4KIAlzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKIAlzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKQEAgLTY2Nyw3ICs3MDIsNyBAQAogICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciB1bmUgcmVxdep0ZSBxdWkgdmFsaWRlIDxzZWFyY2g+CiAgICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICAgcmVxZGVueSAgIDxzZWFyY2g+ICAgICAgICAgICAgIGludGVyZGlyZSB1bmUgcmVxdep0ZSBxdWkgdmFsaWRlIDxzZWFyY2g+Ci0gICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcworICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKIAogICAgcnNwYWRkICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgICByc3ByZXAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKQEAgLTczMywxNCArNzY4LDE1IEBACiBwcmF0aXF1ZW1lbnQgdHJhbnNwYXJlbnRlIHBvdXIgbGVzIGFwcGxpY2F0aW9ucy4gTGUgcHJpbmNpcGUgZXN0IHNpbXBsZSA6CiAgIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gaW50ZXJuZQotICAtIGluc+lyZXIgdW4gY29va2llIGRhbnMgbGVzIHLpcG9uc2VzIGlzc3VlcyBkJ3VuZSBy6XBhcnRpdGlvbiB1bmlxdWVtZW50Ci0gIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24KKyAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKKyAgICBldCBmYWlyZSBlbiBzb3J0ZSBxdWUgZGVzIGNhY2hlcyBuZSBt6W1vcmlzZW50IHBhcyBjZSBjb29raWUuCisgIC0gY2FjaGVyIGNlIGNvb2tpZSDgIGwnYXBwbGljYXRpb24gbG9ycyBkZXMgcmVxdep0ZXMgdWx06XJpZXVyZXMuCiAKIEV4ZW1wbGUgOgogLS0tLS0tLQogICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAJbW9kZSBodHRwCi0JY29va2llIFNFUlZFUklEIGluc2VydCBpbmRpcmVjdAorCWNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogCWJhbGFuY2Ugcm91bmRyb2JpbgogCXNlcnZlciAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKIAlzZXJ2ZXIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCkBAIC03NzIsNyArODA4LDYgQEAKIGZpCiAKIGVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCi1lY2hvIDMyNzY4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX3F1ZXVlX21heGxlbgogZWNobyAzMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZmluX3RpbWVvdXQKIGVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCiBlY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3R3X2J1Y2tldHMKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2NmZyBiL2V4YW1wbGVzL2V4YW1wbGVzLmNmZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZXhhbXBsZXMvY2ZnCnJlbmFtZSB0byBleGFtcGxlcy9leGFtcGxlcy5jZmcKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2hhcHJveHkuY2ZnIGIvZXhhbXBsZXMvaGFwcm94eS5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmZDhkNwotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL2hhcHJveHkuY2ZnCkBAIC0wLDAgKzEsNjMgQEAKK2dsb2JhbAorCWxvZyAxMjcuMC4wLjEJbG9jYWwwCisJbWF4Y29ubiA0MDk2CisJY2hyb290IC90bXAKKwl1aWQgMTEKKwlnaWQgMgorCWRhZW1vbgorCSNkZWJ1ZworCSNxdWlldAorCitsaXN0ZW4JYXBwbGkxLXJld3JpdGUgMC4wLjAuMDoxMDAwMQorCWxvZwlnbG9iYWwKKwltb2RlCWh0dHAKKwlvcHRpb24JaHR0cGxvZworCW9wdGlvbglkb250bG9nbnVsbAorCWNvb2tpZQlTRVJWRVJJRCByZXdyaXRlCisJYmFsYW5jZQlyb3VuZHJvYmluCisJc2VydmVyCWFwcDFfMSAxOTIuMTY4LjM0LjIzOjgwODAgY29va2llIGFwcDFpbnN0MSBjaGVjayBpbnRlciAyMDAwIHJpc2UgMiBmYWxsIDUKKwlzZXJ2ZXIJYXBwMV8yIDE5Mi4xNjguMzQuMzI6ODA4MCBjb29raWUgYXBwMWluc3QyIGNoZWNrIGludGVyIDIwMDAgcmlzZSAyIGZhbGwgNQorCXNlcnZlcglhcHAxXzMgMTkyLjE2OC4zNC4yNzo4MDgwIGNvb2tpZSBhcHAxaW5zdDMgY2hlY2sgaW50ZXIgMjAwMCByaXNlIDIgZmFsbCA1CisJc2VydmVyCWFwcDFfNCAxOTIuMTY4LjM0LjQyOjgwODAgY29va2llIGFwcDFpbnN0NCBjaGVjayBpbnRlciAyMDAwIHJpc2UgMiBmYWxsIDUKKwlyZXRyaWVzCTMKKwlyZWRpc3BhdGNoCisJbWF4Y29ubgkyMDAwCisJY29udGltZW91dAk1MDAwCisJY2xpdGltZW91dAk1MDAwMAorCXNydnRpbWVvdXQJNTAwMDAKKwkKK2xpc3RlbglhcHBsaTItaW5zZXJ0IDAuMC4wLjA6MTAwMDIKKwlsb2cJZ2xvYmFsCisJbW9kZQlodHRwCisJb3B0aW9uCWh0dHBsb2cKKwlvcHRpb24JZG9udGxvZ251bGwKKwliYWxhbmNlCXJvdW5kcm9iaW4KKwljb29raWUJU0VSVkVSSUQgaW5zZXJ0IGluZGlyZWN0IG5vY2FjaGUKKwlzZXJ2ZXIJaW5zdDEgMTkyLjE2OC4xMTQuNTY6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrIGludGVyIDIwMDAgZmFsbCAzCisJc2VydmVyCWluc3QyIDE5Mi4xNjguMTE0LjU2OjgxIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciAyMDAwIGZhbGwgMworCXJldHJpZXMJMworCXJlZGlzcGF0Y2gKKwltYXhjb25uCTIwMDAKKwljb250aW1lb3V0CTUwMDAKKwljbGl0aW1lb3V0CTUwMDAwCisJc3J2dGltZW91dAk1MDAwMAorCisJcmVxaWRlbCBeQ29ubmVjdGlvbjoJCSMgZGVzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlCisJcmVxYWRkICBDb25uZWN0aW9uOlwgY2xvc2UKKwlyc3BpZGVsIF5Db25uZWN0aW9uOgorCXJzcGFkZCAgQ29ubmVjdGlvbjpcIGNsb3NlCisJcnNwaWRlbCBeU2V0LWNvb2tpZTpcIElQPQkjIG5lIHBhcyBsYWlzc2VyIHNvcnRpciB1bmUgYWRyZXNzZSBwcml2ZWUKKwkKK2xpc3RlbglhcHBsaTMtcmVsYWlzIDAuMC4wLjA6MTAwMDMKKwlsb2cJZ2xvYmFsCisgICAgICAgCW1vZGUJaHR0cAorCW9wdGlvbglodHRwbG9nCisJb3B0aW9uCWRvbnRsb2dudWxsCisJZGlzcGF0Y2ggMTkyLjE2OC4xMzUuMTc6ODAKKwlyZXRyaWVzCTMKKwlyZWRpc3BhdGNoCisJbWF4Y29ubgkyMDAwCisJY29udGltZW91dAk1MDAwCisJY2xpdGltZW91dAk1MDAwMAorCXNydnRpbWVvdXQJNTAwMDAKKwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcmMuaGlnaHNvY2sgYi9leGFtcGxlcy9yYy5oaWdoc29jawppbmRleCA5MzI1ZWUwLi5kODU5MzVhIDEwMDY0NAotLS0gYS9leGFtcGxlcy9yYy5oaWdoc29jaworKysgYi9leGFtcGxlcy9yYy5oaWdoc29jawpAQCAtMTcsNyArMTcsNyBAQAogZmkKIAogZWNobyAxMDI0IDYwOTk5ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2xvY2FsX3BvcnRfcmFuZ2UKLWVjaG8gMzI3NjggPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfcXVldWVfbWF4bGVuCisjZWNobyAzMjc2OCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9xdWV1ZV9tYXhsZW4KIGVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CiBlY2hvIDQwOTYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF9zeW5fYmFja2xvZwogZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF90d19idWNrZXRzCmRpZmYgLS1naXQgYS9oYXByb3h5LmMgYi9oYXByb3h5LmMKaW5kZXggOWFiMzdiMS4uZTY3MjFkNyAxMDA2NDQKLS0tIGEvaGFwcm94eS5jCisrKyBiL2hhcHJveHkuYwpAQCAtMTcsNiArMTcsMTQgQEAKICAqCiAgKiBDaGFuZ2VMb2cgOgogICoKKyAqIDIwMDIvMDYvMDQgOiAxLjEuMTEKKyAqICAgLSBmaXhlZCBtdWx0aS1jb29raWUgaGFuZGxpbmcgaW4gY2xpZW50IHJlcXVlc3QgdG8gYWxsb3cgY2xlYW4gZGVsZXRpb24KKyAqICAgICBpbiBpbnNlcnQraW5kaXJlY3QgbW9kZS4gTm93LCBvbmx5IHRoZSBzZXJ2ZXIgY29va2llIGlzIGRlbGV0ZWQgYW5kIG5vdAorICogICAgIGFsbCB0aGUgaGVhZGVyLiBTaG91bGQgbm93IGJlIGNvbXBsaWFudCB0byBSRkMyMTA5LgorICogICAtIGFkZGVkIGEgIm5vY2FjaGUiIG9wdGlvbiB0byAiY29va2llIiB0byBzcGVjaWZ5IHRoYXQgd2UgZXhwbGljaXRseSB3YW50CisgKiAgICAgdG8gYWRkIGEgImNhY2hlLWNvbnRyb2wiIGhlYWRlciB3aGVuIHdlIGFkZCBhIGNvb2tpZS4KKyAqICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGFkZCBhbiAiRXhwaXJlczogPG9sZC1kYXRlPiIgdG8ga2VlcCBjb21wYXRpYmlsaXR5CisgKiAgICAgd2l0aCBvbGQvYnJva2VuIGNhY2hlcy4KICAqIDIwMDIvMDUvMTAgOiAxLjEuMTAKICAqICAgLSBpZiBhIGNvb2tpZSBpcyB1c2VkIGluIGluc2VydCtpbmRpcmVjdCBtb2RlLCBpdCdzIGRlc2lyYWJsZSB0aGF0IHRoZQogICogICAgIHRoZSBzZXJ2ZXJzIGRvbid0IHNlZSBpdC4gSXQgd2FzIG5vdCBwb3NzaWJsZSB0byByZW1vdmUgaXQgY29ycmVjdGx5CkBAIC0xNDUsOCArMTUzLDggQEAKICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgogI2VuZGlmCiAKLSNkZWZpbmUgSEFQUk9YWV9WRVJTSU9OICIxLjEuOSIKLSNkZWZpbmUgSEFQUk9YWV9EQVRFCSIyMDAyLzA0LzE5IgorI2RlZmluZSBIQVBST1hZX1ZFUlNJT04gIjEuMS4xMSIKKyNkZWZpbmUgSEFQUk9YWV9EQVRFCSIyMDAyLzA2LzA0IgogCiAvKiB0aGlzIGlzIGZvciBsaWJjNSBmb3IgZXhhbXBsZSAqLwogI2lmbmRlZiBUQ1BfTk9ERUxBWQpAQCAtMzEzLDYgKzMyMSw3IEBACiAjZGVmaW5lCVBSX09fRldERk9SCTEyOAkvKiBpbnNlcnQgeC1mb3J3YXJkZWQtZm9yIHdpdGggY2xpZW50IGFkZHJlc3MgKi8KICNkZWZpbmUJUFJfT19CSU5EX1NSQwkyNTYJLyogYmluZCB0byBhIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIHdoZW4gY29ubmVjdCgpaW5nICovCiAjZGVmaW5lIFBSX09fTlVMTE5PTE9HCTUxMgkvKiBhIGNvbm5lY3Qgd2l0aG91dCByZXF1ZXN0IHdpbGwgbm90IGJlIGxvZ2dlZCAqLworI2RlZmluZSBQUl9PX0NPT0tfTk9DCTEwMjQJLyogYWRkIGEgJ0NhY2hlLWNvbnRyb2wnIGhlYWRlciB3aXRoIHRoZSBjb29raWUgKi8KIAogCiAvKiB2YXJpb3VzIHNlc3Npb24gZmxhZ3MgKi8KQEAgLTIwMjEsNyArMjAzMCw5IEBACiAgICAgcmV0dXJuIGRlbHRhOwogfQogCi0vKiBzYW1lIGV4Y2VwdCB0aGF0IHRoZSBzdHJpbmcgbGVuIGlzIGdpdmVuICovCisvKiBzYW1lIGV4Y2VwdCB0aGF0IHRoZSBzdHJpbmcgbGVuIGlzIGdpdmVuLCB3aGljaCBhbGxvd3Mgc3RyIHRvIGJlIE5VTEwgaWYKKyAqIGxlbiBpcyAwLgorICovCiBpbnQgYnVmZmVyX3JlcGxhY2UyKHN0cnVjdCBidWZmZXIgKmIsIGNoYXIgKnBvcywgY2hhciAqZW5kLCBjaGFyICpzdHIsIGludCBsZW4pIHsKICAgICBpbnQgZGVsdGE7CiAKQEAgLTIwMzQsNyArMjA0NSw4IEBACiAgICAgbWVtbW92ZShlbmQgKyBkZWx0YSwgZW5kLCBiLT5kYXRhICsgYi0+bCAtIGVuZCk7CiAKICAgICAvKiBub3csIGNvcHkgc3RyIG92ZXIgcG9zICovCi0gICAgbWVtY3B5KHBvcywgc3RyLGxlbik7CisgICAgaWYgKGxlbikKKwltZW1jcHkocG9zLCBzdHIsIGxlbik7CiAKICAgICAvKiB3ZSBvbmx5IG1vdmUgZGF0YSBhZnRlciB0aGUgZGlzcGxhY2VkIHpvbmUgKi8KICAgICBpZiAoYi0+ciAgPiBwb3MpIGItPnIgICs9IGRlbHRhOwpAQCAtMjI0Nyw0MyArMjI1OSw1OSBAQAogCQkqcHRyID0gdGVybTsgLyogcmVzdG9yZSB0aGUgc3RyaW5nIHRlcm1pbmF0b3IgKi8KIAkgICAgfQogCSAgICAKLQkgICAgLyogbm93IGxvb2sgZm9yIGNvb2tpZXMgKi8KLQkgICAgaWYgKCFkZWxldGVfaGVhZGVyICYmIChyZXEtPnIgPj0gcmVxLT5oICsgOCkgJiYgKHQtPnByb3h5LT5jb29raWVfbmFtZSAhPSBOVUxMKQorCSAgICAvKiBOb3cgbG9vayBmb3IgY29va2llcy4gQ29uZm9ybWluZyB0byBSRkMyMTA5LCB3ZSBoYXZlIHRvIHN1cHBvcnQKKwkgICAgICogYXR0cmlidXRlcyB3aG9zZSBuYW1lIGJlZ2luIHdpdGggYSAnJCcsIGFuZCBhc3NvY2lhdGUgdGhlbSB3aXRoCisJICAgICAqIHRoZSByaWdodCBjb29raWUsIGlmIHdlIHdhbnQgdG8gZGVsZXRlIHRoaXMgY29va2llLgorCSAgICAgKiBTbyB0aGVyZSBhcmUgMyBjYXNlcyBmb3IgZWFjaCBjb29raWUgcmVhZCA6CisJICAgICAqIDEpIGl0J3MgYSBzcGVjaWFsIGF0dHJpYnV0ZSwgYmVnaW5uaW5nIHdpdGggYSAnJCcgOiBpZ25vcmUgaXQuCisJICAgICAqIDIpIGl0J3MgYSBzZXJ2ZXIgaWQgY29va2llIHRoYXQgd2UgKk1BWSogd2FudCB0byBkZWxldGUgOiBzYXZlCisJICAgICAqICAgIHNvbWUgcG9pbnRlcnMgb24gaXQgKGxhc3Qgc2VtaS1jb2xvbiwgYmVnaW5uaW5nIG9mIGNvb2tpZS4uLikKKwkgICAgICogMykgaXQncyBhbiBhcHBsaWNhdGlvbiBjb29raWUgOiB3ZSAqTUFZKiBoYXZlIHRvIGRlbGV0ZSBhIHByZXZpb3VzCisJICAgICAqICAgICJzcGVjaWFsIiBjb29raWUuCisJICAgICAqIEF0IHRoZSBlbmQgb2YgbG9vcCwgaWYgYSAic3BlY2lhbCIgY29va2llIHJlbWFpbnMsIHdlIG1heSBoYXZlIHRvCisJICAgICAqIHJlbW92ZSBpdC4gSWYgbm8gYXBwbGljYXRpb24gY29va2llIHBlcnNpc3RzIGluIHRoZSBoZWFkZXIsIHdlCisJICAgICAqICpNVVNUKiBkZWxldGUgaXQKKwkgICAgICovCisJICAgIGlmICghZGVsZXRlX2hlYWRlciAmJiAodC0+cHJveHktPmNvb2tpZV9uYW1lICE9IE5VTEwpCisJCSYmICEodC0+ZmxhZ3MgJiBTTl9DTERFTlkpICYmIChwdHIgPj0gcmVxLT5oICsgOCkKIAkJJiYgKHN0cm5jbXAocmVxLT5oLCAiQ29va2llOiAiLCA4KSA9PSAwKSkgewogCQljaGFyICpwMSwgKnAyLCAqcDMsICpwNDsKLQkJCisJCWNoYXIgKmRlbF9jb2xvbiwgKmRlbF9jb29raWUsICpjb2xvbjsKKwkJaW50IGFwcF9jb29raWVzOworCiAJCXAxID0gcmVxLT5oICsgODsgLyogZmlyc3QgY2hhciBhZnRlciAnQ29va2llOiAnICovCisJCWNvbG9uID0gcDE7CisJCS8qIGRlbF9jb29raWUgPT0gTlVMTCA9PiBub3RoaW5nIHRvIGJlIGRlbGV0ZWQgKi8KKwkJZGVsX2NvbG9uID0gZGVsX2Nvb2tpZSA9IE5VTEw7CisJCWFwcF9jb29raWVzID0gMDsKIAkJCiAJCXdoaWxlIChwMSA8IHB0cikgewotCQkgICAgd2hpbGUgKHAxIDwgcHRyICYmIChpc3NwYWNlKChpbnQpKnAxKSB8fCAqcDEgPT0gJzsnKSkKKwkJICAgIC8qIHNraXAgc3BhY2VzIGFuZCBjb2xvbnMsIGJ1dCBrZWVwIGFuIGV5ZSBvbiB0aGVzZSBvbmVzICovCisJCSAgICB3aGlsZSAocDEgPCBwdHIpIHsKKwkJCWlmICgqcDEgPT0gJzsnIHx8ICpwMSA9PSAnLCcpCisJCQkgICAgY29sb24gPSBwMTsKKwkJCWVsc2UgaWYgKCFpc3NwYWNlKChpbnQpKnAxKSkKKwkJCSAgICBicmVhazsKIAkJCXAxKys7CisJCSAgICB9CiAJCSAgICAKIAkJICAgIGlmIChwMSA9PSBwdHIpCiAJCQlicmVhazsKLQkJICAgIGVsc2UgaWYgKCpwMSA9PSAnOycpIHsgLyogbmV4dCBjb29raWUgKi8KLQkJCSsrcDE7Ci0JCQljb250aW51ZTsKLQkJICAgIH0KIAkJICAgIAogCQkgICAgLyogcDEgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY29va2llIG5hbWUgKi8KIAkJICAgIHAyID0gcDE7Ci0JCSAgICAKLQkJICAgIHdoaWxlIChwMiA8IHB0ciAmJiAqcDIgIT0gJz0nICYmICpwMiAhPSAnOycpCisJCSAgICB3aGlsZSAocDIgPCBwdHIgJiYgKnAyICE9ICc9JykKIAkJCXAyKys7CiAJCSAgICAKIAkJICAgIGlmIChwMiA9PSBwdHIpCiAJCQlicmVhazsKLQkJICAgIGVsc2UgaWYgKCpwMiA9PSAnOycpIHsgLyogbmV4dCBjb29raWUgKi8KLQkJCXAxPSsrcDI7Ci0JCQljb250aW51ZTsKLQkJICAgIH0KIAogCQkgICAgcDMgPSBwMiArIDE7IC8qIHNraXBzIHRoZSAnPScgc2lnbiAqLwogCQkgICAgaWYgKHAzID09IHB0cikKIAkJCWJyZWFrOwogCQkgICAgCi0JCSAgICBwND1wMzsKLQkJICAgIHdoaWxlIChwNCA8IHB0ciAmJiAhaXNzcGFjZSgoaW50KSpwNCkgJiYgKnA0ICE9ICc7JykKKwkJICAgIHA0ID0gcDM7CisJCSAgICB3aGlsZSAocDQgPCBwdHIgJiYgIWlzc3BhY2UoKGludCkqcDQpICYmICpwNCAhPSAnOycgJiYgKnA0ICE9ICcsJykKIAkJCXA0Kys7CiAJCSAgICAKIAkJICAgIC8qIGhlcmUsIHdlIGhhdmUgdGhlIGNvb2tpZSBuYW1lIGJldHdlZW4gcDEgYW5kIHAyLApAQCAtMjI5MSw4ICsyMzE5LDExIEBACiAJCSAgICAgKiB3ZSBjYW4gcHJvY2VzcyBpdC4KIAkJICAgICAqLwogCQkgICAgCi0JCSAgICBpZiAoKHAyIC0gcDEgPT0gc3RybGVuKHQtPnByb3h5LT5jb29raWVfbmFtZSkpICYmCi0JCQkoc3RybmNtcChwMSwgdC0+cHJveHktPmNvb2tpZV9uYW1lLCBwMiAtIHAxKSA9PSAwKSkgeworCQkgICAgaWYgKCpwMSA9PSAnJCcpIHsKKwkJCS8qIHNraXAgdGhpcyBvbmUgKi8KKwkJICAgIH0KKwkJICAgIGVsc2UgaWYgKChwMiAtIHAxID09IHN0cmxlbih0LT5wcm94eS0+Y29va2llX25hbWUpKSAmJgorCQkJKG1lbWNtcChwMSwgdC0+cHJveHktPmNvb2tpZV9uYW1lLCBwMiAtIHAxKSA9PSAwKSkgewogCQkJLyogQ29vbC4uLiBpdCdzIHRoZSByaWdodCBvbmUgKi8KIAkJCXN0cnVjdCBzZXJ2ZXIgKnNydiA9IHQtPnByb3h5LT5zcnY7CiAKQEAgLTIzMDQsMzEgKzIzMzUsNjQgQEAKIAkJCWlmIChzcnYpIHsgLyogd2UgZm91bmQgdGhlIHNlcnZlciAqLwogCQkJICAgIHQtPmZsYWdzIHw9IFNOX0RJUkVDVDsKIAkJCSAgICB0LT5zcnYgPSBzcnY7Ci0JCQkgICAgLyogaWYgdGhpcyBjb29raWUgd2FzIHNldCBpbiBpbnNlcnQraW5kaXJlY3QgbW9kZSwgdGhlbiBpdCdzIGJldHRlciB0aGF0IHRoZQotCQkJICAgICAqIHNlcnZlciBuZXZlciBzZWVzIGl0LgotCQkJICAgICAqLwotCQkJICAgIGlmICgodC0+cHJveHktPm9wdGlvbnMgJiAoUFJfT19DT09LX0lOUyB8IFBSX09fQ09PS19JTkQpKSA9PSAoUFJfT19DT09LX0lOUyB8IFBSX09fQ09PS19JTkQpKQotCQkJCWRlbGV0ZV9oZWFkZXIgPSAxOwogCQkJfQotCi0JCQlicmVhazsKKwkJCS8qIGlmIHRoaXMgY29va2llIHdhcyBzZXQgaW4gaW5zZXJ0K2luZGlyZWN0IG1vZGUsIHRoZW4gaXQncyBiZXR0ZXIgdGhhdCB0aGUKKwkJCSAqIHNlcnZlciBuZXZlciBzZWVzIGl0LgorCQkJICovCisJCQlpZiAoZGVsX2Nvb2tpZSA9PSBOVUxMICYmCisJCQkgICAgKHQtPnByb3h5LT5vcHRpb25zICYgKFBSX09fQ09PS19JTlMgfCBQUl9PX0NPT0tfSU5EKSkgPT0gKFBSX09fQ09PS19JTlMgfCBQUl9PX0NPT0tfSU5EKSkgeworCQkJCWRlbF9jb29raWUgPSBwMTsKKwkJCQlkZWxfY29sb24gPSBjb2xvbjsKKwkJCX0KIAkJICAgIH0KIAkJICAgIGVsc2UgewotCQkJLy8gZnByaW50ZihzdGRlcnIsIklnbm9yaW5nIHVua25vd24gY29va2llIDogIik7Ci0JCQkvLyB3cml0ZSgyLCBwMSwgcDItcDEpOwotCQkJLy8gZnByaW50ZihzdGRlcnIsIiA9ICIpOwotCQkJLy8gd3JpdGUoMiwgcDMsIHA0LXAzKTsKLQkJCS8vIGZwcmludGYoc3RkZXJyLCJcbiIpOworCQkJLyogbm93IHdlIGtub3cgdGhhdCB3ZSBtdXN0IGtlZXAgdGhpcyBjb29raWUgc2luY2UgaXQncworCQkJICogbm90IG91cnMuIEJ1dCBpZiB3ZSB3YW50ZWQgdG8gZGVsZXRlIG91ciBjb29raWUKKwkJCSAqIGVhcmxpZXIsIHdlIGNhbm5vdCByZW1vdmUgdGhlIGNvbXBsZXRlIGhlYWRlciwgYnV0IHdlCisJCQkgKiBjYW4gcmVtb3ZlIHRoZSBwcmV2aW91cyBibG9jayBpdHNlbGYuCisJCQkgKi8KKwkJCWFwcF9jb29raWVzKys7CisKKwkJCWlmIChkZWxfY29va2llICE9IE5VTEwpIHsKKwkJCSAgICBidWZmZXJfcmVwbGFjZTIocmVxLCBkZWxfY29va2llLCBwMSwgTlVMTCwgMCk7CisJCQkgICAgcDQgIC09IChwMSAtIGRlbF9jb29raWUpOworCQkJICAgIHB0ciAtPSAocDEgLSBkZWxfY29va2llKTsKKwkJCSAgICBkZWxfY29va2llID0gZGVsX2NvbG9uID0gTlVMTDsKKwkJCX0KIAkJICAgIH0KKwogCQkgICAgLyogd2UnbGwgaGF2ZSB0byBsb29rIGZvciBhbm90aGVyIGNvb2tpZSAuLi4gKi8KIAkJICAgIHAxID0gcDQ7CiAJCX0gLyogd2hpbGUgKHAxIDwgcHRyKSAqLwotCSAgICB9IC8qIGVuZCBvZiBjb29raWUgcHJvY2Vzc2luZyAqLworCisJCS8qIFRoZXJlJ3Mgbm8gbW9yZSBjb29raWUgb24gdGhpcyBsaW5lLgorCQkgKiBXZSBtYXkgaGF2ZSBtYXJrZWQgdGhlIGxhc3Qgb25lKHMpIGZvciBkZWxldGlvbi4KKwkJICogV2UgbXVzdCBkbyB0aGlzIG5vdyBpbiB0d28gd2F5cyA6CisJCSAqICAtIGlmIHRoZXJlIGlzIG5vIGFwcCBjb29raWUsIHdlIHNpbXBseSBkZWxldGUgdGhlIGhlYWRlciA7CisJCSAqICAtIGlmIHRoZXJlIGFyZSBhcHAgY29va2llcywgd2UgbXVzdCBkZWxldGUgdGhlIGVuZCBvZiB0aGUKKwkJICogICAgc3RyaW5nIHByb3Blcmx5LCBpbmNsdWRpbmcgdGhlIGNvbG9uL3NlbWktY29sb24gYmVmb3JlCisJCSAqICAgIHRoZSBjb29raWUgbmFtZS4KKwkJICovCisJCWlmIChkZWxfY29va2llICE9IE5VTEwpIHsKKwkJICAgIGlmIChhcHBfY29va2llcykgeworCQkJYnVmZmVyX3JlcGxhY2UyKHJlcSwgZGVsX2NvbG9uLCBwdHIsIE5VTEwsIDApOworCQkJLyogV0FSTklORyEgPHB0cj4gYmVjb21lcyBpbnZhbGlkIGZvciBub3cuIElmIHNvbWUgY29kZQorCQkJICogYmVsb3cgbmVlZHMgdG8gcmVseSBvbiBpdCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZ2xvYmFsCisJCQkgKiBoZWFkZXIgbG9vcCwgd2UgbmVlZCB0byBjb3JyZWN0IGl0IHdpdGggdGhpcyBjb2RlIDoKKwkJCSAqIHB0ciA9IGRlbF9jb2xvbjsKKwkJCSAqLworCQkgICAgfQorCQkgICAgZWxzZQorCQkJZGVsZXRlX2hlYWRlciA9IDE7CisJCX0KKwkgICAgfSAvKiBlbmQgb2YgY29va2llIHByb2Nlc3Npbmcgb24gdGhpcyBoZWFkZXIgKi8KIAogCSAgICAvKiBsZXQncyBsb29rIGlmIHdlIGhhdmUgdG8gZGVsZXRlIHRoaXMgaGVhZGVyICovCiAJICAgIGlmIChkZWxldGVfaGVhZGVyICYmICEodC0+ZmxhZ3MgJiBTTl9DTERFTlkpKSB7Ci0JCWJ1ZmZlcl9yZXBsYWNlMihyZXEsIHJlcS0+aCwgcmVxLT5sciwgIiIsIDApOworCQlidWZmZXJfcmVwbGFjZTIocmVxLCByZXEtPmgsIHJlcS0+bHIsIE5VTEwsIDApOwogCSAgICB9CisJICAgIC8qIFdBUk5JTkc6IHB0ciBpcyBub3QgdmFsaWQgYW55bW9yZSwgc2luY2UgdGhlIGhlYWRlciBtYXkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgdHJ1bmNhdGVkICEgKi8KKwogCSAgICByZXEtPmggPSByZXEtPmxyOwogCX0gLyogd2hpbGUgKHJlcS0+bHIgPCByZXEtPnIpICovCiAKQEAgLTI2MzQsNiArMjY5OCw5IEBACiAJCSAgICAgKi8KIAkJICAgIGxlbiA9IHNwcmludGYobmV3aGRyLCAiU2V0LUNvb2tpZTogJXM9JXM7IHBhdGg9L1xyXG4iLAogCQkJCSAgdC0+cHJveHktPmNvb2tpZV9uYW1lLCB0LT5zcnYtPmNvb2tpZSk7CisJCSAgICBpZiAodC0+cHJveHktPm9wdGlvbnMgJiBQUl9PX0NPT0tfTk9DKQorCQkJbGVuICs9IHNwcmludGYobmV3aGRyICsgbGVuLCAiQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9XCJzZXQtY29va2llXCJcclxuIik7CisKIAkJICAgIGJ1ZmZlcl9yZXBsYWNlMihyZXAsIHJlcC0+aCwgcmVwLT5oLCBuZXdoZHIsIGxlbik7CiAJCX0KIApAQCAtMjczMSw4ICsyNzk4LDkgQEAKIAkgICAgfQogCSAgICAKIAkgICAgLyogY2hlY2sgZm9yIHNlcnZlciBjb29raWVzICovCi0JICAgIGlmICghZGVsZXRlX2hlYWRlciAmJiAodC0+cHJveHktPm9wdGlvbnMgJiBQUl9PX0NPT0tfQU5ZKSAmJiAocmVwLT5yID49IHJlcC0+aCArIDEyKSAmJgotCQkodC0+cHJveHktPmNvb2tpZV9uYW1lICE9IE5VTEwpCSYmIChzdHJuY21wKHJlcC0+aCwgIlNldC1Db29raWU6ICIsIDEyKSA9PSAwKSkgeworCSAgICBpZiAoIWRlbGV0ZV9oZWFkZXIgJiYgKHQtPnByb3h5LT5vcHRpb25zICYgUFJfT19DT09LX0FOWSkKKwkJJiYgKHQtPnByb3h5LT5jb29raWVfbmFtZSAhPSBOVUxMKSAmJiAocHRyID49IHJlcC0+aCArIDEyKQorCQkmJiAoc3RybmNtcChyZXAtPmgsICJTZXQtQ29va2llOiAiLCAxMikgPT0gMCkpIHsKIAkJY2hhciAqcDEsICpwMiwgKnAzLCAqcDQ7CiAJCQogCQlwMSA9IHJlcC0+aCArIDEyOyAvKiBmaXJzdCBjaGFyIGFmdGVyICdTZXQtQ29va2llOiAnICovCkBAIC0zNzA5LDYgKzM3NzcsOSBAQAogCSAgICBlbHNlIGlmICghc3RyY21wKGFyZ3NbY3VyX2FyZ10sICJpbnNlcnQiKSkgewogCQljdXJwcm94eS0+b3B0aW9ucyB8PSBQUl9PX0NPT0tfSU5TOwogCSAgICB9CisJICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJnc1tjdXJfYXJnXSwgIm5vY2FjaGUiKSkgeworCQljdXJwcm94eS0+b3B0aW9ucyB8PSBQUl9PX0NPT0tfTk9DOworCSAgICB9CiAJICAgIGVsc2UgewogCQlBbGVydCgicGFyc2luZyBbJXM6JWRdIDogPGNvb2tpZT4gc3VwcG9ydHMgJ3Jld3JpdGUnLCAnaW5zZXJ0JyBhbmQgJ2luZGlyZWN0JyBvcHRpb25zLlxuIiwKIAkJICAgICAgZmlsZSwgbGluZW51bSk7Cg==