From: Nirbhay Choubey Date: January 10 2012 10:53am Subject: bzr push into mysql-trunk branch (nirbhay.choubey:3717 to 3718) Bug#11760384 List-Archive: http://lists.mysql.com/commits/142352 X-Bug: 11760384 Message-Id: <201201101053.q0AArZgS002043@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM3MTggTmlyYmhheSBDaG91YmV5CTIwMTItMDEtMTAgW21lcmdlXQogICAgICBNZXJnZSBvZiBm aXggZm9yIGJ1ZyMxMTc2MDM4NCBmcm9tIG15c3FsLTUuNS4KCiAgICBtb2RpZmllZDoKICAgICAg Y2xpZW50L215c3FsZHVtcC5jCiAgICAgIG15c3FsLXRlc3Qvci9teXNxbGR1bXAucmVzdWx0CiAg ICAgIG15c3FsLXRlc3QvdC9teXNxbGR1bXAudGVzdAogMzcxNyBDaGFpdGhyYSBHb3BhbGFyZWRk eQkyMDEyLTAxLTEwCiAgICAgIEJ1ZyMxMjkxMTQ4MDogR1JPVVAgQlkgTUFLRSBTRVQgV0lUSCBF TVBUWSBTRVQgVkFMVUVTIENSQVNIIElOIE1ZX0hBU0hfU09SVF9TSU1QTEUKICAgICAgCiAgICAg IFByb2JsZW0gRGVzY3JpcHRpb246CiAgICAgIFdoaWxlIGV4ZWN1dGluZyBhIG1ha2Vfc2V0IGZ1 bnRpb24gaW4gYSBncm91cCBieSBjbGF1c2Ugd2l0aCBudWxsIG91dHB1dCwKICAgICAgIHdlIHNl ZSBwcm9ibGVtcyBsaWtlLCBhY2Nlc3NpbmcgdW5pbml0aWFsaXplZCBhcmVhLgogICAgICAKICAg ICAgUHJvYmxlbSBBbmFseXNpczoKICAgICAgV2hpbGUgZGVkdWNpbmcgdGhlIG51bGxhYmlsaXR5 IG9mIG1ha2Vfc2V0IGZ1bmN0aW9uIAogICAgICAoaW4gSXRlbV9mdW5jX21ha2Vfc2V0OjpmaXhf ZmllbGRzKSwgd2UgZG8gbm90IHRha2UgaW50byBjb25zaWRlcmF0aW9uIHRoYXQgdGhlIAogICAg ICBmaXJzdCBhcmd1bWVudCBjYW4gYmUgbnVsbCBhbmQgYXMgYSByZXN1bHQgdGhlIG92ZXJhbGwg ZnVuY3Rpb24gcmVzdWx0IGNvdWxkIGJlIAogICAgICBudWxsLiAKICAgICAgCiAgICAgIEluIHRo ZSBzY2VuYXJpbyBwcmVzZW50ZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBudWxsLiBTbyB0aGUg cmVzdWx0IG9mIAogICAgICBtYWtlX3NldCB3aWxsIGJlIG51bGwgYW5kIHRoZXJlZm9yIHdoaWxl IGFjY2Vzc2luZyB0aGUga2V5cyBpbiAiaHBfaGFzaG5yIiAKICAgICAgZnVuY3Rpb24sIGl0IHRy aWVzIHRvIGFjY2VzcyBhbiB1bmluaXRpYWxpemVkIGFyZWEgKGFzIG51bGwgYml0IGlzIG5vdCBz ZXQpIAogICAgICBhbmQgaGVuY2UgdGhlIHZhbGdyaW5kIGVycm9yLiAKICAgICAgCiAgICAgIFdo aWxlIHdlIGRvIGNvbnNpZGVyIHRoYXQgdGhlIHJlc3VsdCBzZXQgY2FuIGJlIG51bGwgd2hlbiBv bmUgb2YgdGhlIGFyZ3VtZW50cyAKICAgICAgKHN0YXJ0aW5nIGZyb20gdGhlIHNlY29uZCkgY2Fu IGJlIG51bGwgaW4gYSBtYWtlX3NldCBmdW5jdGlvbi4gCiAgICAgIAogICAgICBJbiB0aGUgY3Vy cmVudCBzY2VuYXJpbywgd2hpY2ggaXMgInNlbGVjdCBjb3VudCgqKSBmcm9tIHQxIGdyb3VwIGJ5 IG1ha2Vfc2V0KGEsYikiLCAKICAgICAgd2UgZG8gbm90IGNvbnNpZGVyIGZpZWxkICJhInMgbnVs bGFiaWxpdHkuIFdlIG9ubHkgY29uc2lkZXIgdGhlIHJlc3Qgb2YgdGhlIAogICAgICBhcmd1bWVu dCBsaXN0IHdoaWNoIGlzICJiIiBoZXJlLiAgQXMgImIiIGlzIGRlZmluZWQgYXMgbm90IG51bGwg d2hpbGUgY3JlYXRpbmcgdGhlIAogICAgICB0YWJsZSwgd2UgYXJlIHNlZWluZyB0aGUgcHJvYmxl bS4gCiAgICAgIAogICAgICBTb2x1dGlvbjoKICAgICAgSW4gSXRlbV9mdW5jX21ha2Vfc2V0Ojpm aXhfZmllbGRzKCksIHdlIHRha2UgaW50byBjb25zaWRlcmF0aW9uIGV2ZW4gdGhlIGZpcnN0IAog ICAgICBhcmd1bWVudCdzIG51bGxhYmlsaXR5LgogICAgIEAgbXlzcWwtdGVzdC9yL2Z1bmNfc2V0 LnJlc3VsdAogICAgICAgIEFkZCB0ZXN0IGZvciBCdWcjMTI5MTE0ODAKICAgICBAIG15c3FsLXRl c3QvdC9mdW5jX3NldC50ZXN0CiAgICAgICAgQWRkIHRlc3QgZm9yIEJ1ZyMxMjkxMTQ4MAogICAg IEAgc3FsL2l0ZW1fc3RyZnVuYy5oCiAgICAgICAgQ2hhbmdlZCBJdGVtX2Z1bmNfbWFrZV9zZXQ6 OmZpeF9maWVsZHMoICkgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIG1heWJlX251bGwgdmFyaWFibGUu CgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX3NldC5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC90L2Z1bmNfc2V0LnRlc3QKICAgICAgc3FsL2l0ZW1fc3RyZnVuYy5oCj09PSBt b2RpZmllZCBmaWxlICdjbGllbnQvbXlzcWxkdW1wLmMnCi0tLSBhL2NsaWVudC9teXNxbGR1bXAu YwkyMDExLTEyLTI0IDA5OjQzOjU2ICswMDAwCisrKyBiL2NsaWVudC9teXNxbGR1bXAuYwkyMDEy LTAxLTEwIDEwOjUwOjIyICswMDAwCkBAIC03Nyw2ICs3Nyw5IEBACiAvKiBTaXplIG9mIGJ1ZmZl ciBmb3IgZHVtcCdzIHNlbGVjdCBxdWVyeSAqLwogI2RlZmluZSBRVUVSWV9MRU5HVEggMTUzNgog CisvKiBTaXplIG9mIGNvbW1lbnQgYnVmZmVyLiAqLworI2RlZmluZSBDT01NRU5UX0xFTkdUSCAy MDQ4CisKIC8qIGlnbm9yZSB0YWJsZSBmbGFncyAqLwogI2RlZmluZSBJR05PUkVfTk9ORSAweDAw IC8qIG5vIGlnbm9yZSAqLwogI2RlZmluZSBJR05PUkVfREFUQSAweDAxIC8qIGRvbid0IGR1bXAg ZGF0YSBmb3IgdGhpcyB0YWJsZSAqLwpAQCAtMTA1LDcgKzEwOCw3IEBAIHN0YXRpYyBteV9ib29s ICB2ZXJib3NlPSAwLCBvcHRfbm9fY3JlYXQKICAgICAgICAgICAgICAgICBvcHRfZHVtcF90cmln Z2Vycz0gMCwgb3B0X3JvdXRpbmVzPTAsIG9wdF90el91dGM9MSwKICAgICAgICAgICAgICAgICBv cHRfc2xhdmVfYXBwbHk9IDAsIAogICAgICAgICAgICAgICAgIG9wdF9pbmNsdWRlX21hc3Rlcl9o b3N0X3BvcnQ9IDAsCi0gICAgICAgICAgICAgICAgb3B0X2V2ZW50cz0gMCwKKyAgICAgICAgICAg ICAgICBvcHRfZXZlbnRzPSAwLCBvcHRfY29tbWVudHNfdXNlZD0gMCwKICAgICAgICAgICAgICAg ICBvcHRfYWxsdHNwY3M9MCwgb3B0X25vdHNwY3M9IDAsIG9wdF9kcm9wX3RyaWdnZXI9IDA7CiBz dGF0aWMgbXlfYm9vbCBpbnNlcnRfcGF0X2luaXRlZD0gMCwgZGVidWdfaW5mb19mbGFnPSAwLCBk ZWJ1Z19jaGVja19mbGFnPSAwOwogc3RhdGljIHVsb25nIG9wdF9tYXhfYWxsb3dlZF9wYWNrZXQs IG9wdF9uZXRfYnVmZmVyX2xlbmd0aDsKQEAgLTU0Niw2ICs1NDksOCBAQCBzdGF0aWMgaW50IGR1 bXBfYWxsX3RhYmxlc3BhY2VzKCk7CiBzdGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXNfZm9yX3Rh YmxlcyhjaGFyICpkYiwgY2hhciAqKnRhYmxlX25hbWVzLCBpbnQgdGFibGVzKTsKIHN0YXRpYyBp bnQgZHVtcF90YWJsZXNwYWNlc19mb3JfZGF0YWJhc2VzKGNoYXIqKiBkYXRhYmFzZXMpOwogc3Rh dGljIGludCBkdW1wX3RhYmxlc3BhY2VzKGNoYXIqIHRzX3doZXJlKTsKK3N0YXRpYyB2b2lkIHBy aW50X2NvbW1lbnQoRklMRSAqc3FsX2ZpbGUsIG15X2Jvb2wgaXNfZXJyb3IsIGNvbnN0IGNoYXIg KmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKIAogCiAvKgpAQCAtNjQw LDE5ICs2NDUsMTkgQEAgc3RhdGljIHZvaWQgd3JpdGVfaGVhZGVyKEZJTEUgKnNxbF9maWxlLAog ICB9CiAgIGVsc2UgaWYgKCFvcHRfY29tcGFjdCkKICAgewotICAgIGlmIChvcHRfY29tbWVudHMp Ci0gICAgewotICAgICAgZnByaW50ZihzcWxfZmlsZSwKLSAgICAgICAgICAgICAgIi0tIE15U1FM IGR1bXAgJXMgIERpc3RyaWIgJXMsIGZvciAlcyAoJXMpXG4tLVxuIiwKLSAgICAgICAgICAgICAg RFVNUF9WRVJTSU9OLCBNWVNRTF9TRVJWRVJfVkVSU0lPTiwgU1lTVEVNX1RZUEUsIE1BQ0hJTkVf VFlQRSk7Ci0gICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLS0gSG9zdDogJXMgICAgRGF0YWJhc2U6 ICVzXG4iLAotICAgICAgICAgICAgICBjdXJyZW50X2hvc3QgPyBjdXJyZW50X2hvc3QgOiAibG9j YWxob3N0IiwgZGJfbmFtZSA/IGRiX25hbWUgOgotICAgICAgICAgICAgICAiIik7Ci0gICAgICBm cHV0cygiLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tXG4iLAotICAgICAgICAgICAgc3FsX2ZpbGUpOwotICAgICAgZnByaW50ZihzcWxfZmls ZSwgIi0tIFNlcnZlciB2ZXJzaW9uXHQlc1xuIiwKLSAgICAgICAgICAgICAgbXlzcWxfZ2V0X3Nl cnZlcl9pbmZvKCZteXNxbF9jb25uZWN0aW9uKSk7Ci0gICAgfQorICAgIHByaW50X2NvbW1lbnQo c3FsX2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAiLS0gTXlTUUwgZHVtcCAlcyAgRGlzdHJp YiAlcywgZm9yICVzICglcylcbi0tXG4iLAorICAgICAgICAgICAgICAgICAgRFVNUF9WRVJTSU9O LCBNWVNRTF9TRVJWRVJfVkVSU0lPTiwgU1lTVEVNX1RZUEUsCisgICAgICAgICAgICAgICAgICBN QUNISU5FX1RZUEUpOworICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsICItLSBIb3N0OiAl cyAgICBEYXRhYmFzZTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBjdXJyZW50X2hvc3QgPyBj dXJyZW50X2hvc3QgOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgIGRiX25hbWUgPyBk Yl9uYW1lIDogIiIpOworICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsCisgICAgICAgICAg ICAgICAgICAiLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tXG4iCisgICAgICAgICAgICAgICAgICk7CisgICAgcHJpbnRfY29tbWVudChzcWxf ZmlsZSwgMCwgIi0tIFNlcnZlciB2ZXJzaW9uXHQlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG15 c3FsX2dldF9zZXJ2ZXJfaW5mbygmbXlzcWxfY29ubmVjdGlvbikpOworCiAgICAgaWYgKG9wdF9z ZXRfY2hhcnNldCkKICAgICAgIGZwcmludGYoc3FsX2ZpbGUsCiAiXG4vKiE0MDEwMSBTRVQgQE9M RF9DSEFSQUNURVJfU0VUX0NMSUVOVD1AQENIQVJBQ1RFUl9TRVRfQ0xJRU5UICovOyIKQEAgLTcx MCwxOCArNzE1LDE2IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2Zvb3RlcihGSUxFICpzcWxfZmlsZSkK ICAgICBmcHJpbnRmKHNxbF9maWxlLAogICAgICAgICAgICAgIi8qITQwMTExIFNFVCBTUUxfTk9U RVM9QE9MRF9TUUxfTk9URVMgKi87XG4iKTsKICAgICBmcHV0cygiXG4iLCBzcWxfZmlsZSk7Ci0g ICAgaWYgKG9wdF9jb21tZW50cykKKworICAgIGlmIChvcHRfZHVtcF9kYXRlKQogICAgIHsKLSAg ICAgIGlmIChvcHRfZHVtcF9kYXRlKQotICAgICAgewotICAgICAgICBjaGFyIHRpbWVfc3RyWzIw XTsKLSAgICAgICAgZ2V0X2RhdGUodGltZV9zdHIsIEdFVERBVEVfREFURV9USU1FLCAwKTsKLSAg ICAgICAgZnByaW50ZihzcWxfZmlsZSwgIi0tIER1bXAgY29tcGxldGVkIG9uICVzXG4iLAotICAg ICAgICAgICAgICAgIHRpbWVfc3RyKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgZnBy aW50ZihzcWxfZmlsZSwgIi0tIER1bXAgY29tcGxldGVkXG4iKTsKKyAgICAgIGNoYXIgdGltZV9z dHJbMjBdOworICAgICAgZ2V0X2RhdGUodGltZV9zdHIsIEdFVERBVEVfREFURV9USU1FLCAwKTsK KyAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDAsICItLSBEdW1wIGNvbXBsZXRlZCBvbiAl c1xuIiwgdGltZV9zdHIpOwogICAgIH0KKyAgICBlbHNlCisgICAgICBwcmludF9jb21tZW50KHNx bF9maWxlLCAwLCAiLS0gRHVtcCBjb21wbGV0ZWRcbiIpOworCiAgICAgY2hlY2tfaW8oc3FsX2Zp bGUpOwogICB9CiB9IC8qIHdyaXRlX2Zvb3RlciAqLwpAQCAtNzk1LDYgKzc5OCw5IEBAIGdldF9v bmVfb3B0aW9uKGludCBvcHRpZCwgY29uc3Qgc3RydWN0IG0KICAgICBleHRlbmRlZF9pbnNlcnQ9 IG9wdF9kcm9wPSBvcHRfbG9jaz0KICAgICAgIG9wdF9kaXNhYmxlX2tleXM9IG9wdF9hdXRvY29t bWl0PSBvcHRfY3JlYXRlX2RiPSAwOwogICAgIGJyZWFrOworICBjYXNlICdpJzoKKyAgICBvcHRf Y29tbWVudHNfdXNlZD0gMTsKKyAgICBicmVhazsKICAgY2FzZSAnSSc6CiAgIGNhc2UgJz8nOgog ICAgIHVzYWdlKCk7CkBAIC04MTYsMTEgKzgyMiwxMiBAQCBnZXRfb25lX29wdGlvbihpbnQgb3B0 aWQsIGNvbnN0IHN0cnVjdCBtCiAgICAgICBvcHRfZGlzYWJsZV9rZXlzPSBsb2NrX3RhYmxlcz0g b3B0X3NldF9jaGFyc2V0PSAwOwogICAgIGJyZWFrOwogICBjYXNlIChpbnQpIE9QVF9DT01QQUNU OgotICBpZiAob3B0X2NvbXBhY3QpCi0gIHsKLSAgICBvcHRfY29tbWVudHM9IG9wdF9kcm9wPSBv cHRfZGlzYWJsZV9rZXlzPSBvcHRfbG9jaz0gMDsKLSAgICBvcHRfc2V0X2NoYXJzZXQ9IDA7Ci0g IH0KKyAgICBpZiAob3B0X2NvbXBhY3QpCisgICAgeworICAgICAgIG9wdF9jb21tZW50cz0gb3B0 X2Ryb3A9IG9wdF9kaXNhYmxlX2tleXM9IG9wdF9sb2NrPSAwOworICAgICAgIG9wdF9zZXRfY2hh cnNldD0gMDsKKyAgICB9CisgICAgYnJlYWs7CiAgIGNhc2UgKGludCkgT1BUX1RBQkxFUzoKICAg ICBvcHRfZGF0YWJhc2VzPTA7CiAgICAgYnJlYWs7CkBAIC0xNjUwLDIwICsxNjU3LDIwIEBAIHN0 YXRpYyBjaGFyICpxdW90ZV9mb3JfbGlrZShjb25zdCBjaGFyICoKIH0KIAogCi0vKgorLyoqCiAg IFF1b3RlIGFuZCBwcmludCBhIHN0cmluZy4KIAotICBTWU5PUFNJUwotICAgIHByaW50X3F1b3Rl ZF94bWwoKQotICAgIHhtbF9maWxlICAgIC0gb3V0cHV0IGZpbGUKLSAgICBzdHIgICAgICAgICAt IHN0cmluZyB0byBwcmludAotICAgIGxlbiAgICAgICAgIC0gaXRzIGxlbmd0aAorICBAcGFyYW0g eG1sX2ZpbGUgICAgICAgICAgLSBPdXRwdXQgZmlsZS4KKyAgQHBhcmFtIHN0ciAgICAgICAgICAg ICAgIC0gU3RyaW5nIHRvIHByaW50LgorICBAcGFyYW0gbGVuICAgICAgICAgICAgICAgLSBJdHMg bGVuZ3RoLgorICBAcGFyYW0gaXNfYXR0cmlidXRlX25hbWUgLSBBIGNoZWNrIGZvciBhdHRyaWJ1 dGUgbmFtZSBvciB2YWx1ZS4KIAotICBERVNDUklQVElPTgorICBAZGVzY3JpcHRpb24KICAgICBR dW90ZSAnPCcgJz4nICcmJyAnXCInIGNoYXJzIGFuZCBwcmludCBhIHN0cmluZyB0byB0aGUgeG1s X2ZpbGUuCiAqLwogCi1zdGF0aWMgdm9pZCBwcmludF9xdW90ZWRfeG1sKEZJTEUgKnhtbF9maWxl LCBjb25zdCBjaGFyICpzdHIsIHVsb25nIGxlbikKK3N0YXRpYyB2b2lkIHByaW50X3F1b3RlZF94 bWwoRklMRSAqeG1sX2ZpbGUsIGNvbnN0IGNoYXIgKnN0ciwgdWxvbmcgbGVuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBteV9ib29sIGlzX2F0dHJpYnV0ZV9uYW1lKQogewogICBjb25z dCBjaGFyICplbmQ7CiAKQEAgLTE2ODIsNiArMTY4OSwxNCBAQCBzdGF0aWMgdm9pZCBwcmludF9x dW90ZWRfeG1sKEZJTEUgKnhtbF9mCiAgICAgY2FzZSAnXCInOgogICAgICAgZnB1dHMoIiZxdW90 OyIsIHhtbF9maWxlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgJyAnOgorICAgICAgLyogQXR0 cmlidXRlIG5hbWVzIGNhbm5vdCBjb250YWluIHNwYWNlcy4gKi8KKyAgICAgIGlmIChpc19hdHRy aWJ1dGVfbmFtZSkKKyAgICAgIHsKKyAgICAgICAgZnB1dHMoIl8iLCB4bWxfZmlsZSk7CisgICAg ICAgIGJyZWFrOworICAgICAgfQorICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgZGVmYXVs dDoKICAgICAgIGZwdXRjKCpzdHIsIHhtbF9maWxlKTsKICAgICAgIGJyZWFrOwpAQCAtMTc0Miw3 ICsxNzU3LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfeG1sX3RhZyhGSUxFICogeG1sX2ZpbAogICAg IGZwdXRzKGF0dHJpYnV0ZV9uYW1lLCB4bWxfZmlsZSk7ICAgIAogICAgIGZwdXRjKCdcIicsIHht bF9maWxlKTsKICAgICAKLSAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCBhdHRyaWJ1dGVf dmFsdWUsIHN0cmxlbihhdHRyaWJ1dGVfdmFsdWUpKTsKKyAgICBwcmludF9xdW90ZWRfeG1sKHht bF9maWxlLCBhdHRyaWJ1dGVfdmFsdWUsIHN0cmxlbihhdHRyaWJ1dGVfdmFsdWUpLCAwKTsKICAg ICBmcHV0YygnXCInLCB4bWxfZmlsZSk7CiAKICAgICBhdHRyaWJ1dGVfbmFtZT0gdmFfYXJnKGFy Z19saXN0LCBjaGFyICopOwpAQCAtMTc4MiwxMyArMTc5Nyw1MiBAQCBzdGF0aWMgdm9pZCBwcmlu dF94bWxfbnVsbF90YWcoRklMRSAqIHhtCiAgIGZwdXRzKCI8IiwgeG1sX2ZpbGUpOwogICBmcHV0 cyhzdGFnX2F0ciwgeG1sX2ZpbGUpOwogICBmcHV0cygiXCIiLCB4bWxfZmlsZSk7Ci0gIHByaW50 X3F1b3RlZF94bWwoeG1sX2ZpbGUsIHN2YWwsIHN0cmxlbihzdmFsKSk7CisgIHByaW50X3F1b3Rl ZF94bWwoeG1sX2ZpbGUsIHN2YWwsIHN0cmxlbihzdmFsKSwgMCk7CiAgIGZwdXRzKCJcIiB4c2k6 bmlsPVwidHJ1ZVwiIC8+IiwgeG1sX2ZpbGUpOwogICBmcHV0cyhsaW5lX2VuZCwgeG1sX2ZpbGUp OwogICBjaGVja19pbyh4bWxfZmlsZSk7CiB9CiAKIAorLyoqCisgIFByaW50IHhtbCBDREFUQSBz ZWN0aW9uLgorCisgIEBwYXJhbSB4bWxfZmlsZSAgICAtIG91dHB1dCBmaWxlCisgIEBwYXJhbSBz dHIgICAgICAgICAtIHN0cmluZyB0byBwcmludAorICBAcGFyYW0gbGVuICAgICAgICAgLSBsZW5n dGggb2YgdGhlIHN0cmluZworCisgIEBub3RlCisgICAgVGhpcyBmdW5jdGlvbiBhbHNvIHRha2Vz IGNhcmUgb2YgdGhlIHByZXNlbmNlIG9mICdbWz4nCisgICAgc3RyaW5nIGluIHRoZSBzdHIuIElm IGZvdW5kLCB0aGUgQ0RBVEEgc2VjdGlvbiBpcyBicm9rZW4KKyAgICBpbnRvIHR3byBDREFUQSBz ZWN0aW9ucywgPCFbQ0RBVEFbXV1dXT4gYW5kIDwhW0NEQVRBWz5dXS4KKyovCisKK3N0YXRpYyB2 b2lkIHByaW50X3htbF9jZGF0YShGSUxFICp4bWxfZmlsZSwgY29uc3QgY2hhciAqc3RyLCB1bG9u ZyBsZW4pCit7CisgIGNvbnN0IGNoYXIgKmVuZDsKKworICBmcHV0cygiPCFbQ0RBVEFbXG4iLCB4 bWxfZmlsZSk7CisgIGZvciAoZW5kPSBzdHIgKyBsZW47IHN0ciAhPSBlbmQ7IHN0cisrKQorICB7 CisgICAgc3dpdGNoKCpzdHIpIHsKKyAgICBjYXNlICddJzoKKyAgICAgIGlmICgoKihzdHIgKyAx KSA9PSAnXScpICYmICgqKHN0ciArIDIpID09Jz4nKSkKKyAgICAgIHsKKyAgICAgICAgZnB1dHMo Il1dXV0+PCFbQ0RBVEFbPiIsIHhtbF9maWxlKTsKKyAgICAgICAgc3RyICs9IDI7CisgICAgICAg IGNvbnRpbnVlOworICAgICAgfQorICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgZGVmYXVs dDoKKyAgICAgIGZwdXRjKCpzdHIsIHhtbF9maWxlKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAg fQorICBmcHV0cygiXG5dXT5cbiIsIHhtbF9maWxlKTsKKyAgY2hlY2tfaW8oeG1sX2ZpbGUpOwor fQorCisKIC8qCiAgIFByaW50IHhtbCB0YWcgd2l0aCBtYW55IGF0dHJpYnV0ZXMuCiAKQEAgLTE3 OTgsNiArMTg1Miw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3htbF9udWxsX3RhZyhGSUxFICogeG0K ICAgICByb3dfbmFtZSAgICAtIHhtbCB0YWcgbmFtZQogICAgIHRhYmxlUmVzICAgIC0gcXVlcnkg cmVzdWx0CiAgICAgcm93ICAgICAgICAgLSByZXN1bHQgcm93CisgICAgc3RyX2NyZWF0ZSAgLSBj cmVhdGUgc3RhdGVtZW50IGhlYWRlciBzdHJpbmcKIAogICBERVNDUklQVElPTgogICAgIFByaW50 IHRhZyB3aXRoIG1hbnkgYXR0cmlidXRlIHRvIHRoZSB4bWxfZmlsZS4gRm9ybWF0IGlzOgpAQCAt MTgwNyw5ICsxODYyLDEzIEBAIHN0YXRpYyB2b2lkIHByaW50X3htbF9udWxsX3RhZyhGSUxFICog eG0KICovCiAKIHN0YXRpYyB2b2lkIHByaW50X3htbF9yb3coRklMRSAqeG1sX2ZpbGUsIGNvbnN0 IGNoYXIgKnJvd19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBNWVNRTF9SRVMgKnRh YmxlUmVzLCBNWVNRTF9ST1cgKnJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxf UkVTICp0YWJsZVJlcywgTVlTUUxfUk9XICpyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKnN0cl9jcmVhdGUpCiB7CiAgIHVpbnQgaTsKKyAgbXlfYm9vbCBib2R5X2Zv dW5kPSAwOworICBjaGFyICpjcmVhdGVfc3RtdF9wdHI7CisgIHVsb25nIGNyZWF0ZV9zdG10X2xl bj0gMDsKICAgTVlTUUxfRklFTEQgKmZpZWxkOwogICB1bG9uZyAqbGVuZ3Rocz0gbXlzcWxfZmV0 Y2hfbGVuZ3Rocyh0YWJsZVJlcyk7CiAKQEAgLTE4MjAsMTkgKzE4NzksMTA5IEBAIHN0YXRpYyB2 b2lkIHByaW50X3htbF9yb3coRklMRSAqeG1sX2ZpbGUKICAgewogICAgIGlmICgoKnJvdylbaV0p CiAgICAgewotICAgICAgZnB1dGMoJyAnLCB4bWxfZmlsZSk7Ci0gICAgICBwcmludF9xdW90ZWRf eG1sKHhtbF9maWxlLCBmaWVsZC0+bmFtZSwgZmllbGQtPm5hbWVfbGVuZ3RoKTsKLSAgICAgIGZw dXRzKCI9XCIiLCB4bWxfZmlsZSk7Ci0gICAgICBwcmludF9xdW90ZWRfeG1sKHhtbF9maWxlLCAo KnJvdylbaV0sIGxlbmd0aHNbaV0pOwotICAgICAgZnB1dGMoJyInLCB4bWxfZmlsZSk7Ci0gICAg ICBjaGVja19pbyh4bWxfZmlsZSk7CisgICAgICAvKiBGb3IgJ2NyZWF0ZScgc3RhdGVtZW50cywg ZHVtcCB1c2luZyBDREFUQS4gKi8KKyAgICAgIGlmICgoc3RyX2NyZWF0ZSkgJiYgKHN0cmNtcChz dHJfY3JlYXRlLCBmaWVsZC0+bmFtZSkgPT0gMCkpCisgICAgICB7CisgICAgICAgIGNyZWF0ZV9z dG10X3B0cj0gKCpyb3cpW2ldOworICAgICAgICBjcmVhdGVfc3RtdF9sZW49IGxlbmd0aHNbaV07 CisgICAgICAgIGJvZHlfZm91bmQ9IDE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7Cisg ICAgICAgIGZwdXRjKCcgJywgeG1sX2ZpbGUpOworICAgICAgICBwcmludF9xdW90ZWRfeG1sKHht bF9maWxlLCBmaWVsZC0+bmFtZSwgZmllbGQtPm5hbWVfbGVuZ3RoLCAxKTsKKyAgICAgICAgZnB1 dHMoIj1cIiIsIHhtbF9maWxlKTsKKyAgICAgICAgcHJpbnRfcXVvdGVkX3htbCh4bWxfZmlsZSwg KCpyb3cpW2ldLCBsZW5ndGhzW2ldLCAwKTsKKyAgICAgICAgZnB1dGMoJyInLCB4bWxfZmlsZSk7 CisgICAgICAgIGNoZWNrX2lvKHhtbF9maWxlKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBp ZiAoY3JlYXRlX3N0bXRfbGVuKQorICB7CisgICAgREJVR19BU1NFUlQoYm9keV9mb3VuZCk7Cisg ICAgZnB1dHMoIj5cbiIsIHhtbF9maWxlKTsKKyAgICBwcmludF94bWxfY2RhdGEoeG1sX2ZpbGUs IGNyZWF0ZV9zdG10X3B0ciwgY3JlYXRlX3N0bXRfbGVuKTsKKyAgICBmcHJpbnRmKHhtbF9maWxl LCAiXHRcdDwvJXM+XG4iLCByb3dfbmFtZSk7CisgIH0KKyAgZWxzZQorICAgIGZwdXRzKCIgLz5c biIsIHhtbF9maWxlKTsKKworICBjaGVja19pbyh4bWxfZmlsZSk7Cit9CisKKworLyoqCisgIFBy aW50IHhtbCBjb21tZW50cy4KKworICBAcGFyYW0geG1sX2ZpbGUgICAgICAgLSBvdXRwdXQgZmls ZQorICBAcGFyYW0gbGVuICAgICAgICAgICAgLSBsZW5ndGggb2YgY29tbWVudCBtZXNzYWdlCisg IEBwYXJhbSBjb21tZW50X3N0cmluZyAtIGNvbW1lbnQgbWVzc2FnZQorCisgIEBkZXNjcmlwdGlv bgorICAgIFByaW50IHRoZSBjb21tZW50IG1lc3NhZ2UgaW4gdGhlIGZvcm1hdDoKKyAgICAgICI8 IS0tIFxuIGNvbW1lbnQgc3RyaW5nICBcbiAtLT5cbiIKKworICBAbm90ZQorICAgIEFueSBvY2N1 cnJlbmNlIG9mIGNvbnRpbnVvdXMgaHlwaGVucyB3aWxsIGJlCisgICAgc3F1ZWV6ZWQgdG8gYSBz aW5nbGUgaHlwaGVuLgorKi8KKworc3RhdGljIHZvaWQgcHJpbnRfeG1sX2NvbW1lbnQoRklMRSAq eG1sX2ZpbGUsIHVsb25nIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmNvbW1lbnRfc3RyaW5nKQoreworICBjb25zdCBjaGFyKiBlbmQ7CisKKyAgZnB1dHMo IjwhLS0gIiwgeG1sX2ZpbGUpOworCisgIGZvciAoZW5kPSBjb21tZW50X3N0cmluZyArIGxlbjsg Y29tbWVudF9zdHJpbmcgIT0gZW5kOyBjb21tZW50X3N0cmluZysrKQorICB7CisgICAgLyoKKyAg ICAgIFRoZSBzdHJpbmcgIi0tIiAoZG91YmxlLWh5cGhlbikgTVVTVCBOT1Qgb2NjdXIgd2l0aGlu IHhtbCBjb21tZW50cy4KKyAgICAqLworICAgIHN3aXRjaCAoKmNvbW1lbnRfc3RyaW5nKSB7Cisg ICAgY2FzZSAnLSc6CisgICAgICBpZiAoKihjb21tZW50X3N0cmluZyArIDEpID09ICctJykgICAg ICAgICAvKiBPbmx5IG9uZSBoeXBoZW4gYWxsb3dlZC4gKi8KKyAgICAgICAgYnJlYWs7CisgICAg ZGVmYXVsdDoKKyAgICAgIGZwdXRjKCpjb21tZW50X3N0cmluZywgeG1sX2ZpbGUpOworICAgICAg YnJlYWs7CiAgICAgfQogICB9Ci0gIGZwdXRzKCIgLz5cbiIsIHhtbF9maWxlKTsKKyAgZnB1dHMo IiAtLT5cbiIsIHhtbF9maWxlKTsKICAgY2hlY2tfaW8oeG1sX2ZpbGUpOwogfQogCiAKKworLyog QSBjb21tb24gcHJpbnRpbmcgZnVuY3Rpb24gZm9yIHhtbCBhbmQgbm9uLXhtbCBtb2Rlcy4gKi8K Kworc3RhdGljIHZvaWQgcHJpbnRfY29tbWVudChGSUxFICpzcWxfZmlsZSwgbXlfYm9vbCBpc19l cnJvciwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4p Cit7CisgIHN0YXRpYyBjaGFyIGNvbW1lbnRfYnVmZltDT01NRU5UX0xFTkdUSF07CisgIHZhX2xp c3QgYXJnczsKKworICAvKiBJZiBpdHMgYW4gZXJyb3IgbWVzc2FnZSwgcHJpbnQgaXQgaWdub3Jp bmcgb3B0X2NvbW1lbnRzLiAqLworICBpZiAoIWlzX2Vycm9yICYmICFvcHRfY29tbWVudHMpCisg ICAgcmV0dXJuOworCisgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisgIG15X3ZzbnByaW50Zihj b21tZW50X2J1ZmYsIENPTU1FTlRfTEVOR1RILCBmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQoYXJn cyk7CisKKyAgaWYgKCFvcHRfeG1sKQorICB7CisgICAgZnB1dHMoY29tbWVudF9idWZmLCBzcWxf ZmlsZSk7CisgICAgY2hlY2tfaW8oc3FsX2ZpbGUpOworICAgIHJldHVybjsKKyAgfQorCisgIHBy aW50X3htbF9jb21tZW50KHNxbF9maWxlLCBzdHJsZW4oY29tbWVudF9idWZmKSwgY29tbWVudF9i dWZmKTsKK30KKworCiAvKgogIGNyZWF0ZV9kZWxpbWl0ZXIKICBHZW5lcmF0ZSBhIG5ldyAobnVs bC10ZXJtaW5hdGVkKSBzdHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiAgcXVlcnkgCkBAIC0x ODk5LDggKzIwNDgsOCBAQCBzdGF0aWMgdWludCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIp CiAgIG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZyhteXNxbCwgZGJfbmFtZV9idWZmLCBkYiwgc3Ry bGVuKGRiKSk7CiAKICAgLyogbmljZSBjb21tZW50cyAqLwotICBpZiAob3B0X2NvbW1lbnRzKQot ICAgIGZwcmludGYoc3FsX2ZpbGUsICJcbi0tXG4tLSBEdW1waW5nIGV2ZW50cyBmb3IgZGF0YWJh c2UgJyVzJ1xuLS1cbiIsIGRiKTsKKyAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAg ICAgICAgICAgICAiXG4tLVxuLS0gRHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICclcydcbi0t XG4iLCBkYik7CiAKICAgLyoKICAgICBub3QgdXNpbmcgIm15c3FsX3F1ZXJ5X3dpdGhfZXJyb3Jf cmVwb3J0IiBiZWNhdXNlIHdlIG1heSBoYXZlIG5vdApAQCAtMTkxNSwxMiArMjA2NCwxNyBAQCBz dGF0aWMgdWludCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIpCiAgIHN0cmNweShkZWxpbWl0 ZXIsICI7Iik7CiAgIGlmIChteXNxbF9udW1fcm93cyhldmVudF9saXN0X3JlcykgPiAwKQogICB7 Ci0gICAgZnByaW50ZihzcWxfZmlsZSwgIi8qITUwMTA2IFNFVCBAc2F2ZV90aW1lX3pvbmU9IEBA VElNRV9aT05FICovIDtcbiIpOworICAgIGlmIChvcHRfeG1sKQorICAgICAgZnB1dHMoIlx0PGV2 ZW50cz5cbiIsIHNxbF9maWxlKTsKKyAgICBlbHNlCisgICAgeworICAgICAgZnByaW50ZihzcWxf ZmlsZSwgIi8qITUwMTA2IFNFVCBAc2F2ZV90aW1lX3pvbmU9IEBAVElNRV9aT05FICovIDtcbiIp OwogCi0gICAgLyogR2V0IGRhdGFiYXNlIGNvbGxhdGlvbi4gKi8KKyAgICAgIC8qIEdldCBkYXRh YmFzZSBjb2xsYXRpb24uICovCiAKLSAgICBpZiAoZmV0Y2hfZGJfY29sbGF0aW9uKGRiX25hbWVf YnVmZiwgZGJfY2xfbmFtZSwgc2l6ZW9mIChkYl9jbF9uYW1lKSkpCi0gICAgICBEQlVHX1JFVFVS TigxKTsKKyAgICAgIGlmIChmZXRjaF9kYl9jb2xsYXRpb24oZGJfbmFtZV9idWZmLCBkYl9jbF9u YW1lLCBzaXplb2YgKGRiX2NsX25hbWUpKSkKKyAgICAgICAgREJVR19SRVRVUk4oMSk7CisgICAg fQogCiAgICAgaWYgKHN3aXRjaF9jaGFyYWN0ZXJfc2V0X3Jlc3VsdHMobXlzcWwsICJiaW5hcnki KSkKICAgICAgIERCVUdfUkVUVVJOKDEpOwpAQCAtMTkzNyw2ICsyMDkxLDEzIEBAIHN0YXRpYyB1 aW50IGR1bXBfZXZlbnRzX2Zvcl9kYihjaGFyICpkYikKIAogICAgICAgd2hpbGUgKChyb3c9IG15 c3FsX2ZldGNoX3JvdyhldmVudF9yZXMpKSAhPSBOVUxMKQogICAgICAgeworICAgICAgICBpZiAo b3B0X3htbCkKKyAgICAgICAgeworICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJl dmVudCIsIGV2ZW50X3JlcywgJnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGUg RXZlbnQiKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qCiAg ICAgICAgICAgaWYgdGhlIHVzZXIgaGFzIEVYRUNVVEUgcHJpdmlsZWdlIGhlIGNhbiBzZWUgZXZl bnQgbmFtZXMsIGJ1dCBub3QgdGhlCiAgICAgICAgICAgZXZlbnQgYm9keSEKQEAgLTIwMjIsOCAr MjE4MywxNiBAQCBzdGF0aWMgdWludCBkdW1wX2V2ZW50c19mb3JfZGIoY2hhciAqZGIpCiAgICAg ICBteXNxbF9mcmVlX3Jlc3VsdChldmVudF9yZXMpOwogCiAgICAgfSAvKiBlbmQgb2YgbGlzdCBv ZiBldmVudHMgKi8KLSAgICBmcHJpbnRmKHNxbF9maWxlLCAiREVMSU1JVEVSIDtcbiIpOwotICAg IGZwcmludGYoc3FsX2ZpbGUsICIvKiE1MDEwNiBTRVQgVElNRV9aT05FPSBAc2F2ZV90aW1lX3pv bmUgKi8gO1xuIik7CisgICAgaWYgKG9wdF94bWwpCisgICAgeworICAgICAgZnB1dHMoIlx0PC9l dmVudHM+XG4iLCBzcWxfZmlsZSk7CisgICAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgICAgfQor ICAgIGVsc2UKKyAgICB7CisgICAgICBmcHJpbnRmKHNxbF9maWxlLCAiREVMSU1JVEVSIDtcbiIp OworICAgICAgZnByaW50ZihzcWxfZmlsZSwgIi8qITUwMTA2IFNFVCBUSU1FX1pPTkU9IEBzYXZl X3RpbWVfem9uZSAqLyA7XG4iKTsKKyAgICB9CiAKICAgICBpZiAoc3dpdGNoX2NoYXJhY3Rlcl9z ZXRfcmVzdWx0cyhteXNxbCwgZGVmYXVsdF9jaGFyc2V0KSkKICAgICAgIERCVUdfUkVUVVJOKDEp OwpAQCAtMjA3Nyw2ICsyMjQ2LDcgQEAgc3RhdGljIHVpbnQgZHVtcF9yb3V0aW5lc19mb3JfZGIo Y2hhciAqZAogICBjb25zdCBjaGFyICpyb3V0aW5lX3R5cGVbXT0geyJGVU5DVElPTiIsICJQUk9D RURVUkUifTsKICAgY2hhciAgICAgICBkYl9uYW1lX2J1ZmZbTkFNRV9MRU4qMiszXSwgbmFtZV9i dWZmW05BTUVfTEVOKjIrM107CiAgIGNoYXIgICAgICAgKnJvdXRpbmVfbmFtZTsKKyAgY2hhciAg ICAgICAqcXVlcnlfc3RyOwogICBpbnQgICAgICAgIGk7CiAgIEZJTEUgICAgICAgKnNxbF9maWxl PSBtZF9yZXN1bHRfZmlsZTsKICAgTVlTUUxfUkVTICAqcm91dGluZV9yZXMsICpyb3V0aW5lX2xp c3RfcmVzOwpAQCAtMjA5MSw4ICsyMjYxLDggQEAgc3RhdGljIHVpbnQgZHVtcF9yb3V0aW5lc19m b3JfZGIoY2hhciAqZAogICBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcobXlzcWwsIGRiX25hbWVf YnVmZiwgZGIsIHN0cmxlbihkYikpOwogCiAgIC8qIG5pY2UgY29tbWVudHMgKi8KLSAgaWYgKG9w dF9jb21tZW50cykKLSAgICBmcHJpbnRmKHNxbF9maWxlLCAiXG4tLVxuLS0gRHVtcGluZyByb3V0 aW5lcyBmb3IgZGF0YWJhc2UgJyVzJ1xuLS1cbiIsIGRiKTsKKyAgcHJpbnRfY29tbWVudChzcWxf ZmlsZSwgMCwKKyAgICAgICAgICAgICAgICAiXG4tLVxuLS0gRHVtcGluZyByb3V0aW5lcyBmb3Ig ZGF0YWJhc2UgJyVzJ1xuLS1cbiIsIGRiKTsKIAogICAvKgogICAgIG5vdCB1c2luZyAibXlzcWxf cXVlcnlfd2l0aF9lcnJvcl9yZXBvcnQiIGJlY2F1c2Ugd2UgbWF5IGhhdmUgbm90CkBAIC0yMTA5 LDYgKzIyNzksOSBAQCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9kYihjaGFyICpkCiAg IGlmIChzd2l0Y2hfY2hhcmFjdGVyX3NldF9yZXN1bHRzKG15c3FsLCAiYmluYXJ5IikpCiAgICAg REJVR19SRVRVUk4oMSk7CiAKKyAgaWYgKG9wdF94bWwpCisgICAgZnB1dHMoIlx0PHJvdXRpbmVz PlxuIiwgc3FsX2ZpbGUpOworCiAgIC8qIDAsIHJldHJpZXZlIGFuZCBkdW1wIGZ1bmN0aW9ucywg MSwgcHJvY2VkdXJlcyAqLwogICBmb3IgKGk9IDA7IGkgPD0gMTsgaSsrKQogICB7CkBAIC0yMTQ0 LDEzICsyMzE3LDI1IEBAIHN0YXRpYyB1aW50IGR1bXBfcm91dGluZXNfZm9yX2RiKGNoYXIgKmQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93WzJdID8gKGludCkgc3RybGVuKHJvd1sy XSkgOiAwKSk7CiAgICAgICAgICAgaWYgKHJvd1syXSA9PSBOVUxMKQogICAgICAgICAgIHsKLSAg ICAgICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICJcbi0tIGluc3VmZmljaWVudCBwcml2aWxlZ2Vz IHRvICVzXG4iLCBxdWVyeV9idWZmKTsKLSAgICAgICAgICAgIGZwcmludGYoc3FsX2ZpbGUsICIt LSBkb2VzICVzIGhhdmUgcGVybWlzc2lvbnMgb24gbXlzcWwucHJvYz9cblxuIiwgY3VycmVudF91 c2VyKTsKKyAgICAgICAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDEsICJcbi0tIGluc3Vm ZmljaWVudCBwcml2aWxlZ2VzIHRvICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBx dWVyeV9idWZmKTsKKyAgICAgICAgICAgIHByaW50X2NvbW1lbnQoc3FsX2ZpbGUsIDEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICItLSBkb2VzICVzIGhhdmUgcGVybWlzc2lvbnMgb24gbXlz cWwucHJvYz9cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF91c2VyKTsK ICAgICAgICAgICAgIG1heWJlX2RpZShFWF9NWVNRTEVSUiwiJXMgaGFzIGluc3VmZmljZW50IHBy aXZpbGVnZXMgdG8gJXMhIiwgY3VycmVudF91c2VyLCBxdWVyeV9idWZmKTsKICAgICAgICAgICB9 CiAgICAgICAgICAgZWxzZSBpZiAoc3RybGVuKHJvd1syXSkpCiAgICAgICAgICAgewotICAgICAg ICAgICAgY2hhciAqcXVlcnlfc3RyOworICAgICAgICAgICAgaWYgKG9wdF94bWwpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGlmIChpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBQcm9jZWR1cmVzLgorICAgICAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJy b3V0aW5lIiwgcm91dGluZV9yZXMsICZyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ3JlYXRlIFByb2NlZHVyZSIpOworICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gRnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIHByaW50X3htbF9y b3coc3FsX2ZpbGUsICJyb3V0aW5lIiwgcm91dGluZV9yZXMsICZyb3csCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ3JlYXRlIEZ1bmN0aW9uIik7CisgICAgICAgICAgICAgIGNvbnRp bnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wdF9kcm9wKQogICAgICAgICAg ICAgICBmcHJpbnRmKHNxbF9maWxlLCAiLyohNTAwMDMgRFJPUCAlcyBJRiBFWElTVFMgJXMgKi87 XG4iLAogICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmVfdHlwZVtpXSwgcm91dGluZV9uYW1l KTsKQEAgLTIyMzAsNiArMjQxNSwxMiBAQCBzdGF0aWMgdWludCBkdW1wX3JvdXRpbmVzX2Zvcl9k YihjaGFyICpkCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQocm91dGluZV9saXN0X3Jlcyk7CiAgIH0g LyogZW5kIG9mIGZvciBpICgwIC4uIDEpICAqLwogCisgIGlmIChvcHRfeG1sKQorICB7CisgICAg ZnB1dHMoIlx0PC9yb3V0aW5lcz5cbiIsIHNxbF9maWxlKTsKKyAgICBjaGVja19pbyhzcWxfZmls ZSk7CisgIH0KKwogICBpZiAoc3dpdGNoX2NoYXJhY3Rlcl9zZXRfcmVzdWx0cyhteXNxbCwgZGVm YXVsdF9jaGFyc2V0KSkKICAgICBEQlVHX1JFVFVSTigxKTsKIApAQCAtMjM0MiwxNiArMjUzMywx NiBAQCBzdGF0aWMgdWludCBnZXRfdGFibGVfc3RydWN0dXJlKGNoYXIgKnRhCiAKICAgICAgICAg d3JpdGVfaGVhZGVyKHNxbF9maWxlLCBkYik7CiAgICAgICB9Ci0gICAgICBpZiAoIW9wdF94bWwg JiYgb3B0X2NvbW1lbnRzKQotICAgICAgeworCiAgICAgICBpZiAoc3RyY21wICh0YWJsZV90eXBl LCAiVklFVyIpID09IDApICAgICAgICAgLyogdmlldyAqLwotICAgICAgICBmcHJpbnRmKHNxbF9m aWxlLCAiXG4tLVxuLS0gVGVtcG9yYXJ5IHRhYmxlIHN0cnVjdHVyZSBmb3IgdmlldyAlc1xuLS1c blxuIiwKLSAgICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOworICAgICAgICBwcmludF9jb21t ZW50KHNxbF9maWxlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICJcbi0tXG4tLSBUZW1wb3Jh cnkgdGFibGUgc3RydWN0dXJlIGZvciB2aWV3ICVzXG4tLVxuXG4iLAorICAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdF90YWJsZSk7CiAgICAgICBlbHNlCi0gICAgICAgIGZwcmludGYoc3FsX2Zp bGUsICJcbi0tXG4tLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlICVzXG4tLVxuXG4iLAotICAg ICAgICAgICAgICAgIHJlc3VsdF90YWJsZSk7Ci0gICAgICAgIGNoZWNrX2lvKHNxbF9maWxlKTsK LSAgICAgIH0KKyAgICAgICAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAgICAg ICAgICAgICAgICAiXG4tLVxuLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSAlc1xuLS1cblxu IiwKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOworCiAgICAgICBpZiAob3B0 X2Ryb3ApCiAgICAgICB7CiAgICAgICAvKgpAQCAtMjU1Miw5ICsyNzQzLDEwIEBAIHN0YXRpYyB1 aW50IGdldF90YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKICAgICAgICAgICBEQlVHX1JFVFVSTigw KTsKICAgICAgICAgd3JpdGVfaGVhZGVyKHNxbF9maWxlLCBkYik7CiAgICAgICB9Ci0gICAgICBp ZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICAgICAgICBmcHJpbnRmKHNxbF9maWxlLCAi XG4tLVxuLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSAlc1xuLS1cblxuIiwKLSAgICAgICAg ICAgICAgICByZXN1bHRfdGFibGUpOworCisgICAgICBwcmludF9jb21tZW50KHNxbF9maWxlLCAw LAorICAgICAgICAgICAgICAgICAgICAiXG4tLVxuLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJs ZSAlc1xuLS1cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKICAgICAg IGlmIChvcHRfZHJvcCkKICAgICAgICAgZnByaW50ZihzcWxfZmlsZSwgIkRST1AgVEFCTEUgSUYg RVhJU1RTICVzO1xuIiwgcmVzdWx0X3RhYmxlKTsKICAgICAgIGlmICghb3B0X3htbCkKQEAgLTI2 MDUsNyArMjc5Nyw3IEBAIHN0YXRpYyB1aW50IGdldF90YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEK ICAgICAgIHsKICAgICAgICAgaWYgKG9wdF94bWwpCiAgICAgICAgIHsKLSAgICAgICAgICBwcmlu dF94bWxfcm93KHNxbF9maWxlLCAiZmllbGQiLCByZXN1bHQsICZyb3cpOworICAgICAgICAgIHBy aW50X3htbF9yb3coc3FsX2ZpbGUsICJmaWVsZCIsIHJlc3VsdCwgJnJvdywgTnVsbFMpOwogICAg ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTI2NzcsNyArMjg2OSw3IEBAIHN0YXRp YyB1aW50IGdldF90YWJsZV9zdHJ1Y3R1cmUoY2hhciAqdGEKICAgICAgIHsKICAgICAgICAgaWYg KG9wdF94bWwpCiAgICAgICAgIHsKLSAgICAgICAgICBwcmludF94bWxfcm93KHNxbF9maWxlLCAi a2V5IiwgcmVzdWx0LCAmcm93KTsKKyAgICAgICAgICBwcmludF94bWxfcm93KHNxbF9maWxlLCAi a2V5IiwgcmVzdWx0LCAmcm93LCBOdWxsUyk7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICAg IH0KIApAQCAtMjczNiw3ICsyOTI4LDcgQEAgc3RhdGljIHVpbnQgZ2V0X3RhYmxlX3N0cnVjdHVy ZShjaGFyICp0YQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICBpZiAob3B0X3ht bCkKLSAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJvcHRpb25zIiwgcmVzdWx0 LCAmcm93KTsKKyAgICAgICAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJvcHRpb25zIiwg cmVzdWx0LCAmcm93LCBOdWxsUyk7CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKICAgICAg ICAgICAgIGZwdXRzKCIvKiEiLHNxbF9maWxlKTsKQEAgLTI3ODAsOSArMjk3MiwxOSBAQCBzdGF0 aWMgdm9pZCBkdW1wX3RyaWdnZXJfb2xkKEZJTEUgKnNxbF9mCiAgIGNoYXIgKnF1b3RlZF90YWJs ZV9uYW1lPSBxdW90ZV9uYW1lKHRhYmxlX25hbWUsIHF1b3RlZF90YWJsZV9uYW1lX2J1ZiwgMSk7 CiAKICAgY2hhciBuYW1lX2J1ZmZbTkFNRV9MRU4gKiA0ICsgM107CisgIGNvbnN0IGNoYXIgKnht bF9tc2c9ICJcbldhcm5pbmchIG15c3FsZHVtcCBiZWluZyBydW4gYWdhaW5zdCBvbGQgc2VydmVy ICIKKyAgICAgICAgICAgICAgICAgICAgICAgInRoYXQgZG9lcyBub3RcbnN1cHBvcnQgJ1NIT1cg Q1JFQVRFIFRSSUdHRVJTJyAiCisgICAgICAgICAgICAgICAgICAgICAgICJzdGF0ZW1lbnQuIFNr aXBwaW5nLi5cbiI7CiAKICAgREJVR19FTlRFUigiZHVtcF90cmlnZ2VyX29sZCIpOwogCisgIGlm IChvcHRfeG1sKQorICB7CisgICAgcHJpbnRfeG1sX2NvbW1lbnQoc3FsX2ZpbGUsIHN0cmxlbih4 bWxfbXNnKSwgeG1sX21zZyk7CisgICAgY2hlY2tfaW8oc3FsX2ZpbGUpOworICAgIERCVUdfVk9J RF9SRVRVUk47CisgIH0KKwogICBmcHJpbnRmKHNxbF9maWxlLAogICAgICAgICAgICItLVxuIgog ICAgICAgICAgICItLSBXQVJOSU5HOiBvbGQgc2VydmVyIHZlcnNpb24uICIKQEAgLTI4NDksMTcg KzMwNTEsMjUgQEAgc3RhdGljIGludCBkdW1wX3RyaWdnZXIoRklMRSAqc3FsX2ZpbGUsIAogICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGJfY2xfbmFtZSkKIHsKICAgTVlTUUxf Uk9XIHJvdzsKKyAgY2hhciAqcXVlcnlfc3RyOwogICBpbnQgZGJfY2xfYWx0ZXJlZD0gRkFMU0U7 CiAKICAgREJVR19FTlRFUigiZHVtcF90cmlnZ2VyIik7CiAKICAgd2hpbGUgKChyb3c9IG15c3Fs X2ZldGNoX3JvdyhzaG93X2NyZWF0ZV90cmlnZ2VyX3JzKSkpCiAgIHsKLSAgICBjaGFyICpxdWVy eV9zdHI9IGNvdmVyX2RlZmluZXJfY2xhdXNlKHJvd1syXSwgc3RybGVuKHJvd1syXSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDX1NUUklOR19XSVRIX0xFTigi NTAwMTciKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfU1RS SU5HX1dJVEhfTEVOKCI1MDAwMyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ19TVFJJTkdfV0lUSF9MRU4oIiBUUklHR0VSIikpOworICAgIGlmIChvcHRfeG1s KQorICAgIHsKKyAgICAgIHByaW50X3htbF9yb3coc3FsX2ZpbGUsICJ0cmlnZ2VyIiwgc2hvd19j cmVhdGVfdHJpZ2dlcl9ycywgJnJvdywKKyAgICAgICAgICAgICAgICAgICAgIlNRTCBPcmlnaW5h bCBTdGF0ZW1lbnQiKTsKKyAgICAgIGNoZWNrX2lvKHNxbF9maWxlKTsKKyAgICAgIGNvbnRpbnVl OworICAgIH0KIAorICAgIHF1ZXJ5X3N0cj0gY292ZXJfZGVmaW5lcl9jbGF1c2Uocm93WzJdLCBz dHJsZW4ocm93WzJdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENfU1RS SU5HX1dJVEhfTEVOKCI1MDAxNyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ19TVFJJTkdfV0lUSF9MRU4oIjUwMDAzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDX1NUUklOR19XSVRIX0xFTigiIFRSSUdHRVIiKSk7CiAgICAgaWYgKHN3aXRj aF9kYl9jb2xsYXRpb24oc3FsX2ZpbGUsIGRiX25hbWUsICI7IiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYl9jbF9uYW1lLCByb3dbNV0sICZkYl9jbF9hbHRlcmVkKSkKICAgICAgIERC VUdfUkVUVVJOKFRSVUUpOwpAQCAtMjk1MCw2ICszMTYwLDEzIEBAIHN0YXRpYyBpbnQgZHVtcF90 cmlnZ2Vyc19mb3JfdGFibGUoY2hhciAKIAogICAvKiBEdW1wIHRyaWdnZXJzLiAqLwogCisgIGlm ICghIG15c3FsX251bV9yb3dzKHNob3dfdHJpZ2dlcnNfcnMpKQorICAgIGdvdG8gc2tpcDsKKwor ICBpZiAob3B0X3htbCkKKyAgICBwcmludF94bWxfdGFnKHNxbF9maWxlLCAiXHQiLCAiXG4iLCAi dHJpZ2dlcnMiLCAibmFtZT0iLAorICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZSwgTnVsbFMp OworCiAgIHdoaWxlICgocm93PSBteXNxbF9mZXRjaF9yb3coc2hvd190cmlnZ2Vyc19ycykpKQog ICB7CiAKQEAgLTI5ODIsNiArMzE5OSwxMyBAQCBzdGF0aWMgaW50IGR1bXBfdHJpZ2dlcnNfZm9y X3RhYmxlKGNoYXIgCiAKICAgfQogCisgIGlmIChvcHRfeG1sKQorICB7CisgICAgZnB1dHMoIlx0 PC90cmlnZ2Vycz5cbiIsIHNxbF9maWxlKTsKKyAgICBjaGVja19pbyhzcWxfZmlsZSk7CisgIH0K Kworc2tpcDoKICAgbXlzcWxfZnJlZV9yZXN1bHQoc2hvd190cmlnZ2Vyc19ycyk7CiAKICAgaWYg KHN3aXRjaF9jaGFyYWN0ZXJfc2V0X3Jlc3VsdHMobXlzcWwsIGRlZmF1bHRfY2hhcnNldCkpCkBA IC0zMjMwLDM0ICszNDU0LDI0IEBAIHN0YXRpYyB2b2lkIGR1bXBfdGFibGUoY2hhciAqdGFibGUs IGNoYXIKICAgfQogICBlbHNlCiAgIHsKLSAgICBpZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRz KQotICAgIHsKLSAgICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsIlxuLS1cbi0tIER1bXBpbmcg ZGF0YSBmb3IgdGFibGUgJXNcbi0tXG4iLAotICAgICAgICAgICAgICByZXN1bHRfdGFibGUpOwot ICAgICAgY2hlY2tfaW8obWRfcmVzdWx0X2ZpbGUpOwotICAgIH0KKyAgICBwcmludF9jb21tZW50 KG1kX3Jlc3VsdF9maWxlLCAwLAorICAgICAgICAgICAgICAgICAgIlxuLS1cbi0tIER1bXBpbmcg ZGF0YSBmb3IgdGFibGUgJXNcbi0tXG4iLAorICAgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxl KTsKICAgICAKICAgICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgIlNFTEVD VCAvKiE0MDAwMSBTUUxfTk9fQ0FDSEUgKi8gKiBGUk9NICIpOwogICAgIGR5bnN0cl9hcHBlbmRf Y2hlY2tlZCgmcXVlcnlfc3RyaW5nLCByZXN1bHRfdGFibGUpOwogCiAgICAgaWYgKHdoZXJlKQog ICAgIHsKLSAgICAgIGlmICghb3B0X3htbCAmJiBvcHRfY29tbWVudHMpCi0gICAgICB7Ci0gICAg ICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsICItLSBXSEVSRTogICVzXG4iLCB3aGVyZSk7Ci0g ICAgICAgIGNoZWNrX2lvKG1kX3Jlc3VsdF9maWxlKTsKLSAgICAgIH0KLSAgICAgIAorICAgICAg cHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwgIi0tIFdIRVJFOiAgJXNcbiIsIHdoZXJl KTsKKwogICAgICAgZHluc3RyX2FwcGVuZF9jaGVja2VkKCZxdWVyeV9zdHJpbmcsICIgV0hFUkUg Iik7CiAgICAgICBkeW5zdHJfYXBwZW5kX2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgd2hlcmUpOwog ICAgIH0KICAgICBpZiAob3JkZXJfYnkpCiAgICAgewotICAgICAgaWYgKCFvcHRfeG1sICYmIG9w dF9jb21tZW50cykKLSAgICAgIHsKLSAgICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwgIi0t IE9SREVSIEJZOiAgJXNcbiIsIG9yZGVyX2J5KTsKLSAgICAgICAgY2hlY2tfaW8obWRfcmVzdWx0 X2ZpbGUpOwotICAgICAgfQorICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwg Ii0tIE9SREVSIEJZOiAgJXNcbiIsIG9yZGVyX2J5KTsKKwogICAgICAgZHluc3RyX2FwcGVuZF9j aGVja2VkKCZxdWVyeV9zdHJpbmcsICIgT1JERVIgQlkgIik7CiAgICAgICBkeW5zdHJfYXBwZW5k X2NoZWNrZWQoJnF1ZXJ5X3N0cmluZywgb3JkZXJfYnkpOwogICAgIH0KQEAgLTM0NTMsNyArMzY2 Nyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfdGFibGUoY2hhciAqdGFibGUsIGNoYXIKICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBwcmludF94bWxfdGFnKG1kX3Jlc3VsdF9maWxl LCAiXHRcdCIsICIiLCAiZmllbGQiLCAibmFtZT0iLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmllbGQtPm5hbWUsIE51bGxTKTsKLSAgICAgICAgICAgICAgICAgIHByaW50X3F1 b3RlZF94bWwobWRfcmVzdWx0X2ZpbGUsIHJvd1tpXSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAg ICAgIHByaW50X3F1b3RlZF94bWwobWRfcmVzdWx0X2ZpbGUsIHJvd1tpXSwgbGVuZ3RoLCAwKTsK ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnB1dHMoIjwvZmllbGQ+XG4iLCBt ZF9yZXN1bHRfZmlsZSk7CiAgICAgICAgICAgICAgIH0KQEAgLTM3NTcsMTEgKzM5NzEsOSBAQCBz dGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXMoY2hhciogdHNfd2hlCiAgICAgICBmaXJzdD0gMTsK ICAgICBpZiAoZmlyc3QpCiAgICAgewotICAgICAgaWYgKCFvcHRfeG1sICYmIG9wdF9jb21tZW50 cykKLSAgICAgIHsKLQlmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCJcbi0tXG4tLSBMb2dmaWxlIGdy b3VwOiAlc1xuLS1cbiIsIHJvd1swXSk7Ci0JY2hlY2tfaW8obWRfcmVzdWx0X2ZpbGUpOwotICAg ICAgfQorICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwgMCwgIlxuLS1cbi0tIExv Z2ZpbGUgZ3JvdXA6ICVzXG4tLVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcm93WzBdKTsKKwog ICAgICAgZnByaW50ZihtZF9yZXN1bHRfZmlsZSwgIlxuQ1JFQVRFIik7CiAgICAgfQogICAgIGVs c2UKQEAgLTM4MjksMTEgKzQwNDEsNyBAQCBzdGF0aWMgaW50IGR1bXBfdGFibGVzcGFjZXMoY2hh ciogdHNfd2hlCiAgICAgICBmaXJzdD0gMTsKICAgICBpZiAoZmlyc3QpCiAgICAgewotICAgICAg aWYgKCFvcHRfeG1sICYmIG9wdF9jb21tZW50cykKLSAgICAgIHsKLQlmcHJpbnRmKG1kX3Jlc3Vs dF9maWxlLCJcbi0tXG4tLSBUYWJsZXNwYWNlOiAlc1xuLS1cbiIsIHJvd1swXSk7Ci0JY2hlY2tf aW8obWRfcmVzdWx0X2ZpbGUpOwotICAgICAgfQorICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1 bHRfZmlsZSwgMCwgIlxuLS1cbi0tIFRhYmxlc3BhY2U6ICVzXG4tLVxuIiwgcm93WzBdKTsKICAg ICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsICJcbkNSRUFURSIpOwogICAgIH0KICAgICBlbHNl CkBAIC00MDMxLDExICs0MjM5LDkgQEAgc3RhdGljIGludCBpbml0X2R1bXBpbmcoY2hhciAqZGF0 YWJhc2UsIAogICAgICAgKi8KICAgICAgIGNoYXIgcXVvdGVkX2RhdGFiYXNlX2J1ZltOQU1FX0xF TioyKzNdOwogICAgICAgY2hhciAqcWRhdGFiYXNlPSBxdW90ZV9uYW1lKGRhdGFiYXNlLHF1b3Rl ZF9kYXRhYmFzZV9idWYsb3B0X3F1b3RlZCk7Ci0gICAgICBpZiAob3B0X2NvbW1lbnRzKQotICAg ICAgewotICAgICAgICBmcHJpbnRmKG1kX3Jlc3VsdF9maWxlLCJcbi0tXG4tLSBDdXJyZW50IERh dGFiYXNlOiAlc1xuLS1cbiIsIHFkYXRhYmFzZSk7Ci0gICAgICAgIGNoZWNrX2lvKG1kX3Jlc3Vs dF9maWxlKTsKLSAgICAgIH0KKworICAgICAgcHJpbnRfY29tbWVudChtZF9yZXN1bHRfZmlsZSwg MCwKKyAgICAgICAgICAgICAgICAgICAgIlxuLS1cbi0tIEN1cnJlbnQgRGF0YWJhc2U6ICVzXG4t LVxuIiwgcWRhdGFiYXNlKTsKIAogICAgICAgLyogQ2FsbCB0aGUgdmlldyBvciB0YWJsZSBzcGVj aWZpYyBmdW5jdGlvbiAqLwogICAgICAgaW5pdF9mdW5jKHFkYXRhYmFzZSk7CkBAIC00MTExLDgg KzQzMTcsNyBAQCBzdGF0aWMgaW50IGR1bXBfYWxsX3RhYmxlc19pbl9kYihjaGFyICpkCiAgICAg ICBkdW1wX3RhYmxlKHRhYmxlLGRhdGFiYXNlKTsKICAgICAgIG15X2ZyZWUob3JkZXJfYnkpOwog ICAgICAgb3JkZXJfYnk9IDA7Ci0gICAgICBpZiAob3B0X2R1bXBfdHJpZ2dlcnMgJiYgISBvcHRf eG1sICYmCi0gICAgICAgICAgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKG15c3FsKSA+PSA1MDAw OSkKKyAgICAgIGlmIChvcHRfZHVtcF90cmlnZ2VycyAmJiBteXNxbF9nZXRfc2VydmVyX3ZlcnNp b24obXlzcWwpID49IDUwMDA5KQogICAgICAgewogICAgICAgICBpZiAoZHVtcF90cmlnZ2Vyc19m b3JfdGFibGUodGFibGUsIGRhdGFiYXNlKSkKICAgICAgICAgewpAQCAtNDEyMywxNCArNDMyOCwx MiBAQCBzdGF0aWMgaW50IGR1bXBfYWxsX3RhYmxlc19pbl9kYihjaGFyICpkCiAgICAgICB9CiAg ICAgfQogICB9Ci0gIGlmIChvcHRfZXZlbnRzICYmICFvcHRfeG1sICYmCi0gICAgICBteXNxbF9n ZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQorICBpZiAob3B0X2V2ZW50cyAmJiBt eXNxbF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQogICB7CiAgICAgREJVR19Q UklOVCgiaW5mbyIsICgiRHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICVzIiwgZGF0YWJhc2Up KTsKICAgICBkdW1wX2V2ZW50c19mb3JfZGIoZGF0YWJhc2UpOwogICB9Ci0gIGlmIChvcHRfcm91 dGluZXMgJiYgIW9wdF94bWwgJiYKLSAgICAgIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNx bCkgPj0gNTAwMDkpCisgIGlmIChvcHRfcm91dGluZXMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJz aW9uKG15c3FsKSA+PSA1MDAwOSkKICAgewogICAgIERCVUdfUFJJTlQoImluZm8iLCAoIkR1bXBp bmcgcm91dGluZXMgZm9yIGRhdGFiYXNlICVzIiwgZGF0YWJhc2UpKTsKICAgICBkdW1wX3JvdXRp bmVzX2Zvcl9kYihkYXRhYmFzZSk7CkBAIC00MzcxLDE1ICs0NTc0LDEzIEBAIHN0YXRpYyBpbnQg ZHVtcF9zZWxlY3RlZF90YWJsZXMoY2hhciAqZGIKICAgICBmb3IgKHBvcz0gZHVtcF90YWJsZXM7 IHBvcyA8IGVuZDsgcG9zKyspCiAgICAgICBnZXRfdmlld19zdHJ1Y3R1cmUoKnBvcywgZGIpOwog ICB9Ci0gIGlmIChvcHRfZXZlbnRzICYmICFvcHRfeG1sICYmCi0gICAgICBteXNxbF9nZXRfc2Vy dmVyX3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQorICBpZiAob3B0X2V2ZW50cyAmJiBteXNxbF9n ZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMTA2KQogICB7CiAgICAgREJVR19QUklOVCgi aW5mbyIsICgiRHVtcGluZyBldmVudHMgZm9yIGRhdGFiYXNlICVzIiwgZGIpKTsKICAgICBkdW1w X2V2ZW50c19mb3JfZGIoZGIpOwogICB9CiAgIC8qIG9idGFpbiBkdW1wIG9mIHJvdXRpbmVzIChw cm9jcy9mdW5jdGlvbnMpICovCi0gIGlmIChvcHRfcm91dGluZXMgICYmICFvcHRfeG1sICYmCi0g ICAgICBteXNxbF9nZXRfc2VydmVyX3ZlcnNpb24obXlzcWwpID49IDUwMDA5KQorICBpZiAob3B0 X3JvdXRpbmVzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihteXNxbCkgPj0gNTAwMDkpCiAg IHsKICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJEdW1waW5nIHJvdXRpbmVzIGZvciBkYXRhYmFz ZSAlcyIsIGRiKSk7CiAgICAgZHVtcF9yb3V0aW5lc19mb3JfZGIoZGIpOwpAQCAtNDQxNCwxMCAr NDYxNSw5IEBAIHN0YXRpYyBpbnQgZG9fc2hvd19tYXN0ZXJfc3RhdHVzKE1ZU1FMICoKICAgICBp ZiAocm93ICYmIHJvd1swXSAmJiByb3dbMV0pCiAgICAgewogICAgICAgLyogU0hPVyBNQVNURVIg U1RBVFVTIHJlcG9ydHMgZmlsZSBhbmQgcG9zaXRpb24gKi8KLSAgICAgIGlmIChvcHRfY29tbWVu dHMpCi0gICAgICAgIGZwcmludGYobWRfcmVzdWx0X2ZpbGUsCi0gICAgICAgICAgICAgICAgIlxu LS1cbi0tIFBvc2l0aW9uIHRvIHN0YXJ0IHJlcGxpY2F0aW9uIG9yIHBvaW50LWluLXRpbWUgIgot ICAgICAgICAgICAgICAgICJyZWNvdmVyeSBmcm9tXG4tLVxuXG4iKTsKKyAgICAgIHByaW50X2Nv bW1lbnQobWRfcmVzdWx0X2ZpbGUsIDAsCisgICAgICAgICAgICAgICAgICAgICJcbi0tXG4tLSBQ b3NpdGlvbiB0byBzdGFydCByZXBsaWNhdGlvbiBvciBwb2ludC1pbi10aW1lICIKKyAgICAgICAg ICAgICAgICAgICAgInJlY292ZXJ5IGZyb21cbi0tXG5cbiIpOwogICAgICAgZnByaW50ZihtZF9y ZXN1bHRfZmlsZSwKICAgICAgICAgICAgICAgIiVzQ0hBTkdFIE1BU1RFUiBUTyBNQVNURVJfTE9H X0ZJTEU9JyVzJywgTUFTVEVSX0xPR19QT1M9JXM7XG4iLAogICAgICAgICAgICAgICBjb21tZW50 X3ByZWZpeCwgcm93WzBdLCByb3dbMV0pOwpAQCAtNTAwNSwxMiArNTIwNSwxMCBAQCBzdGF0aWMg bXlfYm9vbCBnZXRfdmlld19zdHJ1Y3R1cmUoY2hhciAqCiAgICAgd3JpdGVfaGVhZGVyKHNxbF9m aWxlLCBkYik7CiAgIH0KIAotICBpZiAoIW9wdF94bWwgJiYgb3B0X2NvbW1lbnRzKQotICB7Ci0g ICAgZnByaW50ZihzcWxfZmlsZSwgIlxuLS1cbi0tIEZpbmFsIHZpZXcgc3RydWN0dXJlIGZvciB2 aWV3ICVzXG4tLVxuXG4iLAotICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKLSAgICBjaGVja19p byhzcWxfZmlsZSk7Ci0gIH0KKyAgcHJpbnRfY29tbWVudChzcWxfZmlsZSwgMCwKKyAgICAgICAg ICAgICAgICAiXG4tLVxuLS0gRmluYWwgdmlldyBzdHJ1Y3R1cmUgZm9yIHZpZXcgJXNcbi0tXG5c biIsCisgICAgICAgICAgICAgICAgcmVzdWx0X3RhYmxlKTsKKwogICAvKiBUYWJsZSBtaWdodCBu b3QgZXhpc3QgaWYgdGhpcyB2aWV3IHdhcyBkdW1wZWQgd2l0aCAtLXRhYi4gKi8KICAgZnByaW50 ZihzcWxfZmlsZSwgIi8qITUwMDAxIERST1AgVEFCTEUgSUYgRVhJU1RTICVzKi87XG4iLCBvcHRf cXVvdGVkX3RhYmxlKTsKICAgaWYgKG9wdF9kcm9wKQpAQCAtNTIwNyw2ICs1NDA1LDEyIEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBleGl0KGV4aXRfY29kZSk7CiAgIH0K IAorICAvKgorICAgIERpc2FibGUgY29tbWVudHMgaW4geG1sIG1vZGUgaWYgJ2NvbW1lbnRzJyBv cHRpb24gaXMgbm90IGV4cGxpY2l0bHkgdXNlZC4KKyAgKi8KKyAgaWYgKG9wdF94bWwgJiYgIW9w dF9jb21tZW50c191c2VkKQorICAgIG9wdF9jb21tZW50cz0gMDsKKwogICBpZiAobG9nX2Vycm9y X2ZpbGUpCiAgIHsKICAgICBpZighKHN0ZGVycm9yX2ZpbGU9IGZyZW9wZW4obG9nX2Vycm9yX2Zp bGUsICJhKyIsIHN0ZGVycikpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9teXNx bGR1bXAucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvbXlzcWxkdW1wLnJlc3VsdAkyMDExLTEy LTI0IDA5OjQzOjU2ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9teXNxbGR1bXAucmVzdWx0CTIw MTItMDEtMTAgMTA6NTA6MjIgKzAwMDAKQEAgLTQ2MzMsNiArNDYzMyw0NDYgQEAgQUxURVIgREFU QUJBU0UgYHRlc3QtZGF0YWJhc2VgIENIQVJBQ1RFUgogRFJPUCBEQVRBQkFTRSBgdGVzdC1kYXRh YmFzZWA7CiBVU0UgdGVzdDsKICMKKyMgQlVHIzExNzYwMzg0IDogNTI3OTI6IG15c3FsZHVtcCBp biBYTUwgbW9kZSBkb2VzIG5vdCBkdW1wIHJvdXRpbmVzLgorIworQ1JFQVRFIERBVEFCQVNFIEJV RzUyNzkyOworVVNFIEJVRzUyNzkyOworQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQsIGMyIFZBUkNI QVIoMjApKTsKK0NSRUFURSBUQUJMRSB0MiAoYzEgSU5UKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVF UyAoMSwgJ2FhYScpLCAoMiwgJ2JiYicpLCAoMywgJ2NjYycpOworSU5TRVJUIElOVE8gdDIgVkFM VUVTICgxKSwoMiksKDMpOworIyBTdG9yZWQgUHJvY2VkdXJlcy4KK0NSRUFURSBQUk9DRURVUkUg c2ltcGxlcHJvYzEgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRP IHBhcmFtMSBGUk9NIHQxOworRU5ELy8KK0NSRUFURSBQUk9DRURVUkUgc2ltcGxlcHJvYzIgKE9V VCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBGUk9NIHQy OworRU5ELy8KKyMgRXZlbnRzLgorQ1JFQVRFIEVWRU5UIGUxIE9OIFNDSEVEVUxFIEVWRVJZIDEg U0VDT05EIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTI7CitDUkVBVEUgRVZFTlQgZTIgT04gU0NI RURVTEUgRVZFUlkgMSBTRUNPTkQgRE8gRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MjsKKyMgRnVuY3Rp b25zLgorQ1JFQVRFIEZVTkNUSU9OIGBoZWxsbzFgIChzIENIQVIoMjApKQorUkVUVVJOUyBDSEFS KDUwKSBERVRFUk1JTklTVElDCitSRVRVUk4gQ09OQ0FUKCdIZWxsbywgJyAscyAsJyEnKTsKK0NS RUFURSBGVU5DVElPTiBgaGVsbG8yYCAocyBDSEFSKDIwKSkKK1JFVFVSTlMgQ0hBUig1MCkgREVU RVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgnXV0+LCAnICwgcyAsJyEnKTsKKyMgVHJpZ2dlcnMu CitDUkVBVEUgVFJJR0dFUiB0cmlnMSBCRUZPUkUgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBST1cg QkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxKTsKK0VORDsKK3wKK0NSRUFURSBUUklHR0VS IHRyaWcyIEFGVEVSIElOU0VSVCBPTiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5U TyB0MiBWQUxVRVMoMSwgJ11dPicpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICc8IVtDREFU QV1dPicpOworSU5TRVJUIElOVE8gdDIgVkFMVUVTKDMsICc8IVtDREFUQVsnKTsKK0lOU0VSVCBJ TlRPIHQyIFZBTFVFUyg0LCAnPCA+ICYgXCAiIF8nKTsKK0VORDsKK3wKKyMgVmlld3MKK0NSRUFU RSBWSUVXIHYxIEFTIFNFTEVDVCAqIEZST00gdDE7CitDUkVBVEUgVklFVyB2MiBBUyBTRUxFQ1Qg KiBGUk9NIHQyOworCisjIER1bXBpbmcgQlVHNTI3OTIgZGF0YWJhc2UgaW4geG1sIGZvcm1hdC4K KworIyBSdW5uaW5nICdyZXBsYWNlX3JlZ2V4IG9uIHRpbWVzdGFtcCcKKzw/eG1sIHZlcnNpb249 IjEuMCI/PgorPG15c3FsZHVtcCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1M U2NoZW1hLWluc3RhbmNlIj4KKzxkYXRhYmFzZSBuYW1lPSJCVUc1Mjc5MiI+CisJPHRhYmxlX3N0 cnVjdHVyZSBuYW1lPSJ0MSI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51 bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPGZpZWxkIEZpZWxkPSJj MiIgVHlwZT0idmFyY2hhcigyMCkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9 IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idDEiIEVuZ2luZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIg Um93X2Zvcm1hdD0iRHluYW1pYyIgUm93cz0iMyIgQXZnX3Jvd19sZW5ndGg9IjIwIiBEYXRhX2xl bmd0aD0iNjAiIE1heF9kYXRhX2xlbmd0aD0iMjgxNDc0OTc2NzEwNjU1IiBJbmRleF9sZW5ndGg9 IjEwMjQiIERhdGFfZnJlZT0iMCIgQ3JlYXRlX3RpbWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0i LS1USU1FLS0iIENvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIi IENvbW1lbnQ9IiIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKwk8dGFibGVfZGF0YSBuYW1lPSJ0 MSI+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4xPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9 ImMyIj5hYWE8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+Mjwv ZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+YmJiPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93Pgor CQk8ZmllbGQgbmFtZT0iYzEiPjM8L2ZpZWxkPgorCQk8ZmllbGQgbmFtZT0iYzIiPmNjYzwvZmll bGQ+CisJPC9yb3c+CisJPC90YWJsZV9kYXRhPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDIi PgorCQk8ZmllbGQgRmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBF eHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9InQyIiBFbmdpbmU9Ik15SVNB TSIgVmVyc2lvbj0iMTAiIFJvd19mb3JtYXQ9IkZpeGVkIiBSb3dzPSIzIiBBdmdfcm93X2xlbmd0 aD0iNyIgRGF0YV9sZW5ndGg9IjIxIiBNYXhfZGF0YV9sZW5ndGg9IjE5NzAzMjQ4MzY5NzQ1OTEi IEluZGV4X2xlbmd0aD0iMTAyNCIgRGF0YV9mcmVlPSIwIiBDcmVhdGVfdGltZT0iLS1USU1FLS0i IFVwZGF0ZV90aW1lPSItLVRJTUUtLSIgQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgQ3Jl YXRlX29wdGlvbnM9IiIgQ29tbWVudD0iIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgorCTx0YWJs ZV9kYXRhIG5hbWU9InQyIj4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjE8L2ZpZWxkPgor CTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJPC9yb3c+CisJ PHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4zPC9maWVsZD4KKwk8L3Jvdz4KKwk8L3RhYmxlX2Rh dGE+CisJPHRyaWdnZXJzIG5hbWU9InQyIj4KKwkJPHRyaWdnZXIgVHJpZ2dlcj0idHJpZzEiIHNx bF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0 aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlz aF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBUUklH R0VSIHRyaWcxIEJFRk9SRSBJTlNFUlQgT04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJU IElOVE8gdDIgVkFMVUVTKDEpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCQk8dHJpZ2dlciBU cmlnZ2VyPSJ0cmlnMiIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIg Y29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRp b249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3Rg QGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzIgQUZURVIgSU5TRVJUIE9OIHQyCitGT1IgRUFDSCBS T1cgQkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnXV1dXT48IVtDREFUQVs+Jyk7CitJ TlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwgJzwhW0NEQVRBXV1dXT48IVtDREFUQVs+Jyk7CitJTlNF UlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRBWycpOworSU5TRVJUIElOVE8gdDIgVkFMVUVT KDQsICc8ID4gJiBcICIgXycpOworRU5ECitdXT4KKwkJPC90cmlnZ2VyPgorCTwvdHJpZ2dlcnM+ CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ2MSI+CisJCTxmaWVsZCBGaWVsZD0iYzEiIFR5cGU9 ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9IiIgLz4KKwkJPGZp ZWxkIEZpZWxkPSJjMiIgVHlwZT0idmFyY2hhcigyMCkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJh PSIiIENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idjEiIENvbW1lbnQ9IlZJRVciIC8+ CisJPC90YWJsZV9zdHJ1Y3R1cmU+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ2MiI+CisJCTxm aWVsZCBGaWVsZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIi IENvbW1lbnQ9IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idjIiIENvbW1lbnQ9IlZJRVciIC8+CisJ PC90YWJsZV9zdHJ1Y3R1cmU+CisJPGV2ZW50cz4KKwkJPGV2ZW50IEV2ZW50PSJlMSIgc3FsX21v ZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNv bGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9u PSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBg bG9jYWxob3N0YCBFVkVOVCBgZTFgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAn LS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFC QVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwkJPGV2ZW50IEV2ZW50PSJlMiIgc3FsX21v ZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNv bGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9u PSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBg bG9jYWxob3N0YCBFVkVOVCBgZTJgIE9OIFNDSEVEVUxFIEVWRVJZIDEgU0VDT05EIFNUQVJUUyAn LS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVOQUJMRSBETyBEUk9QIERBVEFC QVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwk8L2V2ZW50cz4KKwk8cm91dGluZXM+CisJ CTxyb3V0aW5lIEZ1bmN0aW9uPSJoZWxsbzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xp ZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0 YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBE RUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8xYChzIENIQVIoMjApKSBS RVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQworUkVUVVJO IENPTkNBVCgnSGVsbG8sICcgLHMgLCchJykKK11dPgorCQk8L3JvdXRpbmU+CisJCTxyb3V0aW5l IEZ1bmN0aW9uPSJoZWxsbzIiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRp bjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29s bGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWBy b290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8yYChzIENIQVIoMjApKSBSRVRVUk5TIGNo YXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgn XV1dXT48IVtDREFUQVs+LCAnICwgcyAsJyEnKQorXV0+CisJCTwvcm91dGluZT4KKwkJPHJvdXRp bmUgUHJvY2VkdXJlPSJzaW1wbGVwcm9jMSIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3NldF9jbGll bnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRh YmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERF RklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFBST0NFRFVSRSBgc2ltcGxlcHJvYzFgKE9VVCBwYXJh bTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJTlRPIHBhcmFtMSBGUk9NIHQxOworRU5E CitdXT4KKwkJPC9yb3V0aW5lPgorCQk8cm91dGluZSBQcm9jZWR1cmU9InNpbXBsZXByb2MyIiBz cWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVj dGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRp c2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgUFJP Q0VEVVJFIGBzaW1wbGVwcm9jMmAoT1VUIHBhcmFtMSBJTlQpCitCRUdJTgorU0VMRUNUIENPVU5U KCopIElOVE8gcGFyYW0xIEZST00gdDI7CitFTkQKK11dPgorCQk8L3JvdXRpbmU+CisJPC9yb3V0 aW5lcz4KKzwvZGF0YWJhc2U+Cis8L215c3FsZHVtcD4KKworIyBEdW1waW5nIEJVRzUyNzkyIGRh dGFiYXNlIGluIHhtbCBmb3JtYXQgd2l0aCBjb21tZW50cy4KKworIyBSdW5uaW5nICdyZXBsYWNl X3JlZ2V4IG9uIHRpbWVzdGFtcCcKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPG15c3FsZHVtcCB4 bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KKzxk YXRhYmFzZSBuYW1lPSJCVUc1Mjc5MiI+Cis8IS0tIAorLQorLSBUYWJsZSBzdHJ1Y3R1cmUgZm9y IHRhYmxlIGB0MWAKKy0KKworIC0tPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idDEiPgorCQk8 ZmllbGQgRmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0i IiBDb21tZW50PSIiIC8+CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9InZhcmNoYXIoMjApIiBO dWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9 InQxIiBFbmdpbmU9Ik15SVNBTSIgVmVyc2lvbj0iMTAiIFJvd19mb3JtYXQ9IkR5bmFtaWMiIFJv d3M9IjMiIEF2Z19yb3dfbGVuZ3RoPSIyMCIgRGF0YV9sZW5ndGg9IjYwIiBNYXhfZGF0YV9sZW5n dGg9IjI4MTQ3NDk3NjcxMDY1NSIgSW5kZXhfbGVuZ3RoPSIxMDI0IiBEYXRhX2ZyZWU9IjAiIENy ZWF0ZV90aW1lPSItLVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0tVElNRS0tIiBDb2xsYXRpb249Imxh dGluMV9zd2VkaXNoX2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBDb21tZW50PSIiIC8+CisJPC90YWJs ZV9zdHJ1Y3R1cmU+Cis8IS0tIAorLQorLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGB0MWAKKy0K KyAtLT4KKwk8dGFibGVfZGF0YSBuYW1lPSJ0MSI+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMx Ij4xPC9maWVsZD4KKwkJPGZpZWxkIG5hbWU9ImMyIj5hYWE8L2ZpZWxkPgorCTwvcm93PgorCTxy b3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MjwvZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+YmJi PC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQgbmFtZT0iYzEiPjM8L2ZpZWxkPgor CQk8ZmllbGQgbmFtZT0iYzIiPmNjYzwvZmllbGQ+CisJPC9yb3c+CisJPC90YWJsZV9kYXRhPgor PCEtLSAKKy0KKy0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgdDJgCistCisKKyAtLT4KKwk8 dGFibGVfc3RydWN0dXJlIG5hbWU9InQyIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50 KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9u cyBOYW1lPSJ0MiIgRW5naW5lPSJNeUlTQU0iIFZlcnNpb249IjEwIiBSb3dfZm9ybWF0PSJGaXhl ZCIgUm93cz0iMyIgQXZnX3Jvd19sZW5ndGg9IjciIERhdGFfbGVuZ3RoPSIyMSIgTWF4X2RhdGFf bGVuZ3RoPSIxOTcwMzI0ODM2OTc0NTkxIiBJbmRleF9sZW5ndGg9IjEwMjQiIERhdGFfZnJlZT0i MCIgQ3JlYXRlX3RpbWU9Ii0tVElNRS0tIiBVcGRhdGVfdGltZT0iLS1USU1FLS0iIENvbGxhdGlv bj0ibGF0aW4xX3N3ZWRpc2hfY2kiIENyZWF0ZV9vcHRpb25zPSIiIENvbW1lbnQ9IiIgLz4KKwk8 L3RhYmxlX3N0cnVjdHVyZT4KKzwhLS0gCistCistIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYHQy YAorLQorIC0tPgorCTx0YWJsZV9kYXRhIG5hbWU9InQyIj4KKwk8cm93PgorCQk8ZmllbGQgbmFt ZT0iYzEiPjE8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+Mjwv ZmllbGQ+CisJPC9yb3c+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4zPC9maWVsZD4KKwk8 L3Jvdz4KKwk8L3RhYmxlX2RhdGE+CisJPHRyaWdnZXJzIG5hbWU9InQyIj4KKwkJPHRyaWdnZXIg VHJpZ2dlcj0idHJpZzEiIHNxbF9tb2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEi IGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0 aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290 YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyaWcxIEJFRk9SRSBJTlNFUlQgT04gdDIKK0ZPUiBFQUNI IFJPVyBCRUdJTgorSU5TRVJUIElOVE8gdDIgVkFMVUVTKDEpOworRU5ECitdXT4KKwkJPC90cmln Z2VyPgorCQk8dHJpZ2dlciBUcmlnZ2VyPSJ0cmlnMiIgc3FsX21vZGU9IiIgY2hhcmFjdGVyX3Nl dF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2VkaXNoX2Np IiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRBWworQ1JF QVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzIgQUZURVIgSU5TRVJU IE9OIHQyCitGT1IgRUFDSCBST1cgQkVHSU4KK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnXV1d XT48IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwgJzwhW0NEQVRBXV1dXT48 IVtDREFUQVs+Jyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJzwhW0NEQVRBWycpOworSU5T RVJUIElOVE8gdDIgVkFMVUVTKDQsICc8ID4gJiBcICIgXycpOworRU5ECitdXT4KKwkJPC90cmln Z2VyPgorCTwvdHJpZ2dlcnM+Cis8IS0tIAorLQorLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxl IGB2MWAKKy0KKworIC0tPgorCTx0YWJsZV9zdHJ1Y3R1cmUgbmFtZT0idjEiPgorCQk8ZmllbGQg RmllbGQ9ImMxIiBUeXBlPSJpbnQoMTEpIiBOdWxsPSJZRVMiIEtleT0iIiBFeHRyYT0iIiBDb21t ZW50PSIiIC8+CisJCTxmaWVsZCBGaWVsZD0iYzIiIFR5cGU9InZhcmNoYXIoMjApIiBOdWxsPSJZ RVMiIEtleT0iIiBFeHRyYT0iIiBDb21tZW50PSIiIC8+CisJCTxvcHRpb25zIE5hbWU9InYxIiBD b21tZW50PSJWSUVXIiAvPgorCTwvdGFibGVfc3RydWN0dXJlPgorPCEtLSAKKy0KKy0gVGFibGUg c3RydWN0dXJlIGZvciB0YWJsZSBgdjJgCistCisKKyAtLT4KKwk8dGFibGVfc3RydWN0dXJlIG5h bWU9InYyIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBL ZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9ucyBOYW1lPSJ2MiIgQ29tbWVu dD0iVklFVyIgLz4KKwk8L3RhYmxlX3N0cnVjdHVyZT4KKzwhLS0gCistCistIER1bXBpbmcgZXZl bnRzIGZvciBkYXRhYmFzZSAnQlVHNTI3OTInCistCisgLS0+CisJPGV2ZW50cz4KKwkJPGV2ZW50 IEV2ZW50PSJlMSIgc3FsX21vZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRf Y2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIg RGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFU RSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBFVkVOVCBgZTFgIE9OIFNDSEVEVUxFIEVWRVJZ IDEgU0VDT05EIFNUQVJUUyAnLS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVO QUJMRSBETyBEUk9QIERBVEFCQVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwkJPGV2ZW50 IEV2ZW50PSJlMiIgc3FsX21vZGU9IiIgdGltZV96b25lPSJTWVNURU0iIGNoYXJhY3Rlcl9zZXRf Y2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIg RGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NSRUFU RSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBFVkVOVCBgZTJgIE9OIFNDSEVEVUxFIEVWRVJZ IDEgU0VDT05EIFNUQVJUUyAnLS1USU1FLS0nIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIEVO QUJMRSBETyBEUk9QIERBVEFCQVNFIEJVRzUyNzkyCitdXT4KKwkJPC9ldmVudD4KKwk8L2V2ZW50 cz4KKzwhLS0gCistCistIER1bXBpbmcgcm91dGluZXMgZm9yIGRhdGFiYXNlICdCVUc1Mjc5MicK Ky0KKyAtLT4KKwk8cm91dGluZXM+CisJCTxyb3V0aW5lIEZ1bmN0aW9uPSJoZWxsbzEiIHNxbF9t b2RlPSIiIGNoYXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9u PSJsYXRpbjFfc3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9j aSI+Cis8IVtDREFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElP TiBgaGVsbG8xYChzIENIQVIoMjApKSBSRVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisg ICAgREVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgnSGVsbG8sICcgLHMgLCchJykKK11dPgor CQk8L3JvdXRpbmU+CisJCTxyb3V0aW5lIEZ1bmN0aW9uPSJoZWxsbzIiIHNxbF9tb2RlPSIiIGNo YXJhY3Rlcl9zZXRfY2xpZW50PSJsYXRpbjEiIGNvbGxhdGlvbl9jb25uZWN0aW9uPSJsYXRpbjFf c3dlZGlzaF9jaSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtD REFUQVsKK0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgaGVsbG8y YChzIENIQVIoMjApKSBSRVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJN SU5JU1RJQworUkVUVVJOIENPTkNBVCgnXV1dXT48IVtDREFUQVs+LCAnICwgcyAsJyEnKQorXV0+ CisJCTwvcm91dGluZT4KKwkJPHJvdXRpbmUgUHJvY2VkdXJlPSJzaW1wbGVwcm9jMSIgc3FsX21v ZGU9IiIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249 ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2Np Ij4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFBST0NFRFVS RSBgc2ltcGxlcHJvYzFgKE9VVCBwYXJhbTEgSU5UKQorQkVHSU4KK1NFTEVDVCBDT1VOVCgqKSBJ TlRPIHBhcmFtMSBGUk9NIHQxOworRU5ECitdXT4KKwkJPC9yb3V0aW5lPgorCQk8cm91dGluZSBQ cm9jZWR1cmU9InNpbXBsZXByb2MyIiBzcWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0i bGF0aW4xIiBjb2xsYXRpb25fY29ubmVjdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNl X0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5F Uj1gcm9vdGBAYGxvY2FsaG9zdGAgUFJPQ0VEVVJFIGBzaW1wbGVwcm9jMmAoT1VUIHBhcmFtMSBJ TlQpCitCRUdJTgorU0VMRUNUIENPVU5UKCopIElOVE8gcGFyYW0xIEZST00gdDI7CitFTkQKK11d PgorCQk8L3JvdXRpbmU+CisJPC9yb3V0aW5lcz4KKzwvZGF0YWJhc2U+Cis8L215c3FsZHVtcD4K KworIyBUZXN0IHRvIGNoZWNrICdJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcycgZXJyb3IuCisKK0dS QU5UIEFMTCBQUklWSUxFR0VTIE9OIEJVRzUyNzkyLiogVE8gdXNlcjE7CisjIFJ1bm5pbmcgJ3Jl cGxhY2VfcmVnZXggb24gdGltZXN0YW1wJworPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8bXlzcWxk dW1wIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2Ui PgorPGRhdGFiYXNlIG5hbWU9IkJVRzUyNzkyIj4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InQx Ij4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIg RXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8ZmllbGQgRmllbGQ9ImMyIiBUeXBlPSJ2YXJjaGFy KDIwKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8b3B0aW9u cyBOYW1lPSJ0MSIgRW5naW5lPSJNeUlTQU0iIFZlcnNpb249IjEwIiBSb3dfZm9ybWF0PSJEeW5h bWljIiBSb3dzPSIzIiBBdmdfcm93X2xlbmd0aD0iMjAiIERhdGFfbGVuZ3RoPSI2MCIgTWF4X2Rh dGFfbGVuZ3RoPSIyODE0NzQ5NzY3MTA2NTUiIEluZGV4X2xlbmd0aD0iMTAyNCIgRGF0YV9mcmVl PSIwIiBDcmVhdGVfdGltZT0iLS1USU1FLS0iIFVwZGF0ZV90aW1lPSItLVRJTUUtLSIgQ29sbGF0 aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSIgQ3JlYXRlX29wdGlvbnM9IiIgQ29tbWVudD0iIiAvPgor CTwvdGFibGVfc3RydWN0dXJlPgorCTx0YWJsZV9kYXRhIG5hbWU9InQxIj4KKwk8cm93PgorCQk8 ZmllbGQgbmFtZT0iYzEiPjE8L2ZpZWxkPgorCQk8ZmllbGQgbmFtZT0iYzIiPmFhYTwvZmllbGQ+ CisJPC9yb3c+CisJPHJvdz4KKwkJPGZpZWxkIG5hbWU9ImMxIj4yPC9maWVsZD4KKwkJPGZpZWxk IG5hbWU9ImMyIj5iYmI8L2ZpZWxkPgorCTwvcm93PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJj MSI+MzwvZmllbGQ+CisJCTxmaWVsZCBuYW1lPSJjMiI+Y2NjPC9maWVsZD4KKwk8L3Jvdz4KKwk8 L3RhYmxlX2RhdGE+CisJPHRhYmxlX3N0cnVjdHVyZSBuYW1lPSJ0MiI+CisJCTxmaWVsZCBGaWVs ZD0iYzEiIFR5cGU9ImludCgxMSkiIE51bGw9IllFUyIgS2V5PSIiIEV4dHJhPSIiIENvbW1lbnQ9 IiIgLz4KKwkJPG9wdGlvbnMgTmFtZT0idDIiIEVuZ2luZT0iTXlJU0FNIiBWZXJzaW9uPSIxMCIg Um93X2Zvcm1hdD0iRml4ZWQiIFJvd3M9IjMiIEF2Z19yb3dfbGVuZ3RoPSI3IiBEYXRhX2xlbmd0 aD0iMjEiIE1heF9kYXRhX2xlbmd0aD0iMTk3MDMyNDgzNjk3NDU5MSIgSW5kZXhfbGVuZ3RoPSIx MDI0IiBEYXRhX2ZyZWU9IjAiIENyZWF0ZV90aW1lPSItLVRJTUUtLSIgVXBkYXRlX3RpbWU9Ii0t VElNRS0tIiBDb2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIiBDcmVhdGVfb3B0aW9ucz0iIiBD b21tZW50PSIiIC8+CisJPC90YWJsZV9zdHJ1Y3R1cmU+CisJPHRhYmxlX2RhdGEgbmFtZT0idDIi PgorCTxyb3c+CisJCTxmaWVsZCBuYW1lPSJjMSI+MTwvZmllbGQ+CisJPC9yb3c+CisJPHJvdz4K KwkJPGZpZWxkIG5hbWU9ImMxIj4yPC9maWVsZD4KKwk8L3Jvdz4KKwk8cm93PgorCQk8ZmllbGQg bmFtZT0iYzEiPjM8L2ZpZWxkPgorCTwvcm93PgorCTwvdGFibGVfZGF0YT4KKwk8dHJpZ2dlcnMg bmFtZT0idDIiPgorCQk8dHJpZ2dlciBUcmlnZ2VyPSJ0cmlnMSIgc3FsX21vZGU9IiIgY2hhcmFj dGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rpb249ImxhdGluMV9zd2Vk aXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNoX2NpIj4KKzwhW0NEQVRB WworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIFRSSUdHRVIgdHJpZzEgQkVGT1JF IElOU0VSVCBPTiB0MgorRk9SIEVBQ0ggUk9XIEJFR0lOCitJTlNFUlQgSU5UTyB0MiBWQUxVRVMo MSk7CitFTkQKK11dPgorCQk8L3RyaWdnZXI+CisJCTx0cmlnZ2VyIFRyaWdnZXI9InRyaWcyIiBz cWxfbW9kZT0iIiBjaGFyYWN0ZXJfc2V0X2NsaWVudD0ibGF0aW4xIiBjb2xsYXRpb25fY29ubmVj dGlvbj0ibGF0aW4xX3N3ZWRpc2hfY2kiIERhdGFiYXNlX0NvbGxhdGlvbj0ibGF0aW4xX3N3ZWRp c2hfY2kiPgorPCFbQ0RBVEFbCitDUkVBVEUgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAgVFJJ R0dFUiB0cmlnMiBBRlRFUiBJTlNFUlQgT04gdDIKK0ZPUiBFQUNIIFJPVyBCRUdJTgorSU5TRVJU IElOVE8gdDIgVkFMVUVTKDEsICddXV1dPjwhW0NEQVRBWz4nKTsKK0lOU0VSVCBJTlRPIHQyIFZB TFVFUygyLCAnPCFbQ0RBVEFdXV1dPjwhW0NEQVRBWz4nKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVF UygzLCAnPCFbQ0RBVEFbJyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoNCwgJzwgPiAmIFwgIiBf Jyk7CitFTkQKK11dPgorCQk8L3RyaWdnZXI+CisJPC90cmlnZ2Vycz4KKwk8dGFibGVfc3RydWN0 dXJlIG5hbWU9InYxIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIgVHlwZT0iaW50KDExKSIgTnVsbD0i WUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgorCQk8ZmllbGQgRmllbGQ9ImMyIiBU eXBlPSJ2YXJjaGFyKDIwKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAv PgorCQk8b3B0aW9ucyBOYW1lPSJ2MSIgQ29tbWVudD0iVklFVyIgLz4KKwk8L3RhYmxlX3N0cnVj dHVyZT4KKwk8dGFibGVfc3RydWN0dXJlIG5hbWU9InYyIj4KKwkJPGZpZWxkIEZpZWxkPSJjMSIg VHlwZT0iaW50KDExKSIgTnVsbD0iWUVTIiBLZXk9IiIgRXh0cmE9IiIgQ29tbWVudD0iIiAvPgor CQk8b3B0aW9ucyBOYW1lPSJ2MiIgQ29tbWVudD0iVklFVyIgLz4KKwk8L3RhYmxlX3N0cnVjdHVy ZT4KKwk8ZXZlbnRzPgorCQk8ZXZlbnQgRXZlbnQ9ImUxIiBzcWxfbW9kZT0iIiB0aW1lX3pvbmU9 IlNZU1RFTSIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rp b249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNo X2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIEVWRU5U IGBlMWAgT04gU0NIRURVTEUgRVZFUlkgMSBTRUNPTkQgU1RBUlRTICctLVRJTUUtLScgT04gQ09N UExFVElPTiBOT1QgUFJFU0VSVkUgRU5BQkxFIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTIKK11d PgorCQk8L2V2ZW50PgorCQk8ZXZlbnQgRXZlbnQ9ImUyIiBzcWxfbW9kZT0iIiB0aW1lX3pvbmU9 IlNZU1RFTSIgY2hhcmFjdGVyX3NldF9jbGllbnQ9ImxhdGluMSIgY29sbGF0aW9uX2Nvbm5lY3Rp b249ImxhdGluMV9zd2VkaXNoX2NpIiBEYXRhYmFzZV9Db2xsYXRpb249ImxhdGluMV9zd2VkaXNo X2NpIj4KKzwhW0NEQVRBWworQ1JFQVRFIERFRklORVI9YHJvb3RgQGBsb2NhbGhvc3RgIEVWRU5U IGBlMmAgT04gU0NIRURVTEUgRVZFUlkgMSBTRUNPTkQgU1RBUlRTICctLVRJTUUtLScgT04gQ09N UExFVElPTiBOT1QgUFJFU0VSVkUgRU5BQkxFIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTIKK11d PgorCQk8L2V2ZW50PgorCTwvZXZlbnRzPgorCTxyb3V0aW5lcz4KKzwhLS0gCistIGluc3VmZmlj aWVudCBwcml2aWxlZ2VzIHRvIFNIT1cgQ1JFQVRFIEZVTkNUSU9OIGBoZWxsbzFgCisgLS0+Cis8 IS0tIC0gZG9lcyB1c2VyMSBoYXZlIHBlcm1pc3Npb25zIG9uIG15c3FsLnByb2M/CisKKyAtLT4K K0RST1AgVVNFUiB1c2VyMTsKK0RST1AgREFUQUJBU0UgQlVHNTI3OTI7CisjIFVURi04CitDUkVB VEUgREFUQUJBU0UgQlVHNTI3OTI7CitVU0UgQlVHNTI3OTI7CitTRVQgTkFNRVMgdXRmODsKK0NS RUFURSBGVU5DVElPTiBgc3RyYcOfZWAgKCBjMSBDSEFSKDIwKSkKK1JFVFVSTlMgQ0hBUig1MCkg REVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgnXV0+LCAnLCBzLCAnIScpOworPD94bWwgdmVy c2lvbj0iMS4wIj8+Cis8bXlzcWxkdW1wIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw MS9YTUxTY2hlbWEtaW5zdGFuY2UiPgorPGRhdGFiYXNlIG5hbWU9IkJVRzUyNzkyIj4KKwk8cm91 dGluZXM+CisJCTxyb3V0aW5lIEZ1bmN0aW9uPSJzdHJhw59lIiBzcWxfbW9kZT0iIiBjaGFyYWN0 ZXJfc2V0X2NsaWVudD0idXRmOCIgY29sbGF0aW9uX2Nvbm5lY3Rpb249InV0ZjhfZ2VuZXJhbF9j aSIgRGF0YWJhc2VfQ29sbGF0aW9uPSJsYXRpbjFfc3dlZGlzaF9jaSI+Cis8IVtDREFUQVsKK0NS RUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBGVU5DVElPTiBgc3RyYcOfZWAoIGMxIENI QVIoMjApKSBSRVRVUk5TIGNoYXIoNTApIENIQVJTRVQgbGF0aW4xCisgICAgREVURVJNSU5JU1RJ QworUkVUVVJOIENPTkNBVCgnXV1dXT48IVtDREFUQVs+LCAnLCBzLCAnIScpCitdXT4KKwkJPC9y b3V0aW5lPgorCTwvcm91dGluZXM+Cis8L2RhdGFiYXNlPgorPC9teXNxbGR1bXA+CitEUk9QIERB VEFCQVNFIEJVRzUyNzkyOworU0VUIE5BTUVTIGRlZmF1bHQ7CitVU0UgdGVzdDsKKyMKICMgRW5k IG9mIDUuMSB0ZXN0cwogIwogIwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9teXNx bGR1bXAudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L215c3FsZHVtcC50ZXN0CTIwMTEtMTItMjQg MDk6NDM6NTYgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L215c3FsZHVtcC50ZXN0CTIwMTItMDEt MTAgMTA6NTA6MjIgKzAwMDAKQEAgLTIyMTQsNiArMjIxNCwxMTkgQEAgRFJPUCBEQVRBQkFTRSBg dGVzdC1kYXRhYmFzZWA7CiBVU0UgdGVzdDsKIAogLS1lY2hvICMKKy0tZWNobyAjIEJVRyMxMTc2 MDM4NCA6IDUyNzkyOiBteXNxbGR1bXAgaW4gWE1MIG1vZGUgZG9lcyBub3QgZHVtcCByb3V0aW5l cy4KKy0tZWNobyAjCitDUkVBVEUgREFUQUJBU0UgQlVHNTI3OTI7CitVU0UgQlVHNTI3OTI7CitD UkVBVEUgVEFCTEUgdDEgKGMxIElOVCwgYzIgVkFSQ0hBUigyMCkpOworQ1JFQVRFIFRBQkxFIHQy IChjMSBJTlQpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxLCAnYWFhJyksICgyLCAnYmJiJyks ICgzLCAnY2NjJyk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMgKDEpLCgyKSwoMyk7CisKKy0tZWNo byAjIFN0b3JlZCBQcm9jZWR1cmVzLgorCitERUxJTUlURVIgLy87CitDUkVBVEUgUFJPQ0VEVVJF IHNpbXBsZXByb2MxIChPVVQgcGFyYW0xIElOVCkKK0JFR0lOCisgIFNFTEVDVCBDT1VOVCgqKSBJ TlRPIHBhcmFtMSBGUk9NIHQxOworRU5ELy8KK0RFTElNSVRFUiA7Ly8KKworREVMSU1JVEVSIC8v OworQ1JFQVRFIFBST0NFRFVSRSBzaW1wbGVwcm9jMiAoT1VUIHBhcmFtMSBJTlQpCitCRUdJTgor ICBTRUxFQ1QgQ09VTlQoKikgSU5UTyBwYXJhbTEgRlJPTSB0MjsKK0VORC8vCitERUxJTUlURVIg Oy8vCisKKy0tZWNobyAjIEV2ZW50cy4KKworQ1JFQVRFIEVWRU5UIGUxIE9OIFNDSEVEVUxFIEVW RVJZIDEgU0VDT05EIERPIERST1AgREFUQUJBU0UgQlVHNTI3OTI7CitDUkVBVEUgRVZFTlQgZTIg T04gU0NIRURVTEUgRVZFUlkgMSBTRUNPTkQgRE8gRFJPUCBEQVRBQkFTRSBCVUc1Mjc5MjsKKwor LS1lY2hvICMgRnVuY3Rpb25zLgorCitDUkVBVEUgRlVOQ1RJT04gYGhlbGxvMWAgKHMgQ0hBUigy MCkpCisgIFJFVFVSTlMgQ0hBUig1MCkgREVURVJNSU5JU1RJQworUkVUVVJOIENPTkNBVCgnSGVs bG8sICcgLHMgLCchJyk7CisKK0NSRUFURSBGVU5DVElPTiBgaGVsbG8yYCAocyBDSEFSKDIwKSkK KyAgICBSRVRVUk5TIENIQVIoNTApIERFVEVSTUlOSVNUSUMKK1JFVFVSTiBDT05DQVQoJ11dPiwg JyAsIHMgLCchJyk7CisKKy0tZWNobyAjIFRyaWdnZXJzLgorCitERUxJTUlURVIgfDsKK0NSRUFU RSBUUklHR0VSIHRyaWcxIEJFRk9SRSBJTlNFUlQgT04gdDIKKyAgRk9SIEVBQ0ggUk9XIEJFR0lO CisgICAgSU5TRVJUIElOVE8gdDIgVkFMVUVTKDEpOworRU5EOworfAorREVMSU1JVEVSIDt8CisK K0RFTElNSVRFUiB8OworQ1JFQVRFIFRSSUdHRVIgdHJpZzIgQUZURVIgSU5TRVJUIE9OIHQyCisg IEZPUiBFQUNIIFJPVyBCRUdJTgorICAgIElOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnXV0+Jyk7 CisgICAgSU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICc8IVtDREFUQV1dPicpOworICAgIElOU0VS VCBJTlRPIHQyIFZBTFVFUygzLCAnPCFbQ0RBVEFbJyk7CisgICAgSU5TRVJUIElOVE8gdDIgVkFM VUVTKDQsICc8ID4gJiBcICIgXycpOworRU5EOworfAorREVMSU1JVEVSIDt8CisKKy0tZWNobyAj IFZpZXdzCisKK0NSRUFURSBWSUVXIHYxIEFTIFNFTEVDVCAqIEZST00gdDE7CitDUkVBVEUgVklF VyB2MiBBUyBTRUxFQ1QgKiBGUk9NIHQyOworLS1lY2hvCistLWVjaG8gIyBEdW1waW5nIEJVRzUy NzkyIGRhdGFiYXNlIGluIHhtbCBmb3JtYXQuCistLWVjaG8KKy0tZWNobyAjIFJ1bm5pbmcgJ3Jl cGxhY2VfcmVnZXggb24gdGltZXN0YW1wJworLS1yZXBsYWNlX3JlZ2V4IC9bMC05XXs0fS1bMC05 XXsyfS1bMC05XXsyfSBbMC05XXsyfTpbMC05XXsyfTpbMC05XXsyfS8tLVRJTUUtLS8KKy0tZXhl YyAkTVlTUUxfRFVNUCAtLXVzZXI9cm9vdCAtLWNvbXBhY3QgLVIgLUUgLS10cmlnZ2VycyAtWCBC VUc1Mjc5MgorLS1lY2hvCistLWVjaG8gIyBEdW1waW5nIEJVRzUyNzkyIGRhdGFiYXNlIGluIHht bCBmb3JtYXQgd2l0aCBjb21tZW50cy4KKy0tZWNobworLS1lY2hvICMgUnVubmluZyAncmVwbGFj ZV9yZWdleCBvbiB0aW1lc3RhbXAnCistLXJlcGxhY2VfcmVnZXggL1swLTldezR9LVswLTldezJ9 LVswLTldezJ9IFswLTldezJ9OlswLTldezJ9OlswLTldezJ9Ly0tVElNRS0tLworLS1leGVjICRN WVNRTF9EVU1QIC0tY29tbWVudHMgLS11c2VyPXJvb3QgLVIgLUUgLS10cmlnZ2VycyAtWCBCVUc1 Mjc5MgorCistLWVjaG8KKy0tZWNobyAjIFRlc3QgdG8gY2hlY2sgJ0luc3VmZmljaWVudCBwcml2 aWxlZ2VzJyBlcnJvci4KKy0tZWNobworCitHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBCVUc1Mjc5 Mi4qIFRPIHVzZXIxOworCitjb25uZWN0IChjb25uXzEsIGxvY2FsaG9zdCwgdXNlcjEsICwgQlVH NTI3OTIsICRNQVNURVJfTVlQT1JULCAkTUFTVEVSX01ZU09DSyk7Citjb25uZWN0aW9uIGNvbm5f MTsKKworLS1lY2hvICMgUnVubmluZyAncmVwbGFjZV9yZWdleCBvbiB0aW1lc3RhbXAnCistLXJl cGxhY2VfcmVnZXggL1swLTldezR9LVswLTldezJ9LVswLTldezJ9IFswLTldezJ9OlswLTldezJ9 OlswLTldezJ9Ly0tVElNRS0tLworLS1lcnJvciAyCistLWV4ZWMgJE1ZU1FMX0RVTVAgLS11c2Vy PXVzZXIxIC1SIC1FIC0tdHJpZ2dlcnMgLVggQlVHNTI3OTIKKworY29ubmVjdGlvbiBkZWZhdWx0 OworZGlzY29ubmVjdCBjb25uXzE7CisKK0RST1AgVVNFUiB1c2VyMTsKK0RST1AgREFUQUJBU0Ug QlVHNTI3OTI7CistLWVjaG8gIyBVVEYtOAorQ1JFQVRFIERBVEFCQVNFIEJVRzUyNzkyOworVVNF IEJVRzUyNzkyOworU0VUIE5BTUVTIHV0Zjg7CitDUkVBVEUgRlVOQ1RJT04gYHN0cmHDn2VgICgg YzEgQ0hBUigyMCkpCisgIFJFVFVSTlMgQ0hBUig1MCkgREVURVJNSU5JU1RJQworUkVUVVJOIENP TkNBVCgnXV0+LCAnLCBzLCAnIScpOworCistLWV4ZWMgJE1ZU1FMX0RVTVAgLS1jaGFyYWN0ZXIt c2V0cy1kaXI9JENIQVJTRVRTRElSIC0tc2tpcC1jb21tZW50cyAtLWRlZmF1bHQtY2hhcmFjdGVy LXNldD11dGY4IC0tY29tcGF0aWJsZT1teXNxbDMyMyAtUiAtWCBCVUc1Mjc5MgorCitEUk9QIERB VEFCQVNFIEJVRzUyNzkyOworU0VUIE5BTUVTIGRlZmF1bHQ7CisKK1VTRSB0ZXN0OworCistLWVj aG8gIwogLS1lY2hvICMgRW5kIG9mIDUuMSB0ZXN0cwogLS1lY2hvICMKIAoKTm8gYnVuZGxlIChy ZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=