ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0IGIvcnVudGltZS9kb2MvaWZfcGVybC50eHQKaW5kZXggODQyMzkzYS4uNTBmMjcxMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfcGVybC50eHQKKysrIGIvcnVudGltZS9kb2MvaWZfcGVybC50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfcGVybC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuM2IuICBMYXN0IGNoYW5nZTogMjAxMCBKdWwgMjAKKyppZl9wZXJsLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4zYi4gIExhc3QgY2hhbmdlOiAyMDEwIEp1bCAyMQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBTdmVuIFZlcmRvb2xhZWdlCkBAIC0yNjUsMTIgKzI2NSwxNSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA0LiBEeW5hbWljIGxvYWRpbmcJCQkJCSpwZXJsLWR5bmFtaWMqCiAKLU9uIE1TLVdpbmRvd3MgdGhlIFBlcmwgbGlicmFyeSBjYW4gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LiAgVGhlIHw6dmVyc2lvbnwKLW91dHB1dCB0aGVuIGluY2x1ZGVzIHwrcGVybC9keW58LgorT24gTVMtV2luZG93cyBhbmQgVW5peCB0aGUgUGVybCBsaWJyYXJ5IGNhbiBiZSBsb2FkZWQgZHluYW1pY2FsbHkuICBUaGUKK3w6dmVyc2lvbnwgb3V0cHV0IHRoZW4gaW5jbHVkZXMgfCtwZXJsL2R5bnwuCiAKLVRoaXMgbWVhbnMgdGhhdCBWaW0gd2lsbCBzZWFyY2ggZm9yIHRoZSBQZXJsIERMTCBmaWxlIG9ubHkgd2hlbiBuZWVkZWQuICBXaGVuCi15b3UgZG9uJ3QgdXNlIHRoZSBQZXJsIGludGVyZmFjZSB5b3UgZG9uJ3QgbmVlZCBpdCwgdGh1cyB5b3UgY2FuIHVzZSBWaW0KLXdpdGhvdXQgdGhpcyBETEwgZmlsZS4KK1RoaXMgbWVhbnMgdGhhdCBWaW0gd2lsbCBzZWFyY2ggZm9yIHRoZSBQZXJsIERMTCBvciBzaGFyZWQgbGlicmFyeSBmaWxlIG9ubHkKK3doZW4gbmVlZGVkLiAgV2hlbiB5b3UgZG9uJ3QgdXNlIHRoZSBQZXJsIGludGVyZmFjZSB5b3UgZG9uJ3QgbmVlZCBpdCwgdGh1cworeW91IGNhbiB1c2UgVmltIHdpdGhvdXQgdGhpcyBmaWxlLgorCisKK01TLVdpbmRvd3MgfgogCiBZb3UgY2FuIGRvd25sb2FkIFBlcmwgZnJvbSBodHRwOi8vd3d3LnBlcmwub3JnLiAgVGhlIG9uZSBmcm9tIEFjdGl2ZVN0YXRlIHdhcwogdXNlZCBmb3IgYnVpbGRpbmcgVmltLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dCBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKaW5kZXggYmRkM2M0Zi4uOWM5Y2FlZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dAorKysgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKnN5bnRheC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjNiLiAgTGFzdCBjaGFuZ2U6IDIwMTAgSnVsIDIwCisqc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuM2IuICBMYXN0IGNoYW5nZTogMjAxMCBKdWwgMjEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTA4Myw3ICsxMDgzLDkgQEAKIERlZmF1bHQgaGlnaGxpZ2h0aW5nIGFuZCBkaWFsZWN0IH4KIEhpZ2hsaWdodGluZyBhcHByb3ByaWF0ZSBmb3IgZjk1IChGb3J0cmFuIDk1KSBpcyB1c2VkIGJ5IGRlZmF1bHQuICBUaGlzIGNob2ljZQogc2hvdWxkIGJlIGFwcHJvcHJpYXRlIGZvciBtb3N0IHVzZXJzIG1vc3Qgb2YgdGhlIHRpbWUgYmVjYXVzZSBGb3J0cmFuIDk1IGlzIGEKLXN1cGVyc2V0IG9mIEZvcnRyYW4gOTAgYW5kIGFsbW9zdCBhIHN1cGVyc2V0IG9mIEZvcnRyYW4gNzcuCitzdXBlcnNldCBvZiBGb3J0cmFuIDkwIGFuZCBhbG1vc3QgYSBzdXBlcnNldCBvZiBGb3J0cmFuIDc3LiAgUHJlbGltaW5hcnkKK3N1cHBvcnQgZm9yIEZvcnRyYW4gMjAwMyBhbmQgRm9ydHJhbiAyMDA4IGZlYXR1cmVzIGhhcyBiZWVuIGludHJvZHVjZWQgYW5kIGlzCithdXRvbWF0aWNhbGx5IGF2YWlsYWJsZSBpbiB0aGUgZGVmYXVsdCAoZjk1KSBoaWdobGlnaHRpbmcuCiAKIEZvcnRyYW4gc291cmNlIGNvZGUgZm9ybSB+CiBGb3J0cmFuIDl4IGNvZGUgY2FuIGJlIGluIGVpdGhlciBmaXhlZCBvciBmcmVlIHNvdXJjZSBmb3JtLiAgTm90ZSB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdG9kby50eHQgYi9ydW50aW1lL2RvYy90b2RvLnR4dAppbmRleCAwYjczNmJhLi45MDZkNmVkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90b2RvLnR4dAorKysgYi9ydW50aW1lL2RvYy90b2RvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4zYi4gIExhc3QgY2hhbmdlOiAyMDEwIEp1bCAyMAorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjNiLiAgTGFzdCBjaGFuZ2U6IDIwMTAgSnVsIDIxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMxLDYgKzMxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBJbmNsdWRlIHBhdGNoIGZvciBob3Jpem9udGFsIHNjb2xsIHdoZWVsPyAoQmpvcm4gV2luY2tsZXIsIDIwMTAgSnVsIDIwKQorQXNrZWQgZm9yIGEgZmV3IGNoYW5nZXMuCiAKIFBhdGNoIGZvciBEeW5hbWljIGxvYWRpbmcgZm9yIFBlcmwuIChKYW1lcyBWZWdhLCAyMDEwIEp1bCAyMCkKIApAQCAtMTEyNCw4ICsxMTI1LDYgQEAKICAgICBTZXAgMTMpCiAtICAgUGF0Y2ggZm9yIGFkZGluZyAic3BhY2UiIGl0ZW0gaW4gJ2xpc3RjaGFycycuIChKw6lyw6ltaWUgUm9xdWV0LCAyMDA5IE9jdCAyOSwKICAgICBEb2NzIHBhdGNoIE9jdCAzMCkKLS0gICBQYXRjaCBmb3Igc3VwcG9ydGluZyAjcnJnZ2JiIGluIGNvbG9yIHRlcm1pbmFscy4gIChNYXR0IFdvem5pc2tpKQotICAgIFdoZXJlIGlzIGEgcmVjZW50IHZlcnNpb24gb2YgdGhpcyBwYXRjaD8gIE9yIHVzZSBDU0FwcHJveCBwbHVnaW4/CiAtICAgUmVwbGFjZSBjY29tcGxldGUudmltIGJ5IGNwcGNvbXBsZXRlLnZpbSBmcm9tIHd3dy52aW0ub3JnPyAgc2NyaXB0IDE1MjAgYnkKICAgICBWaXNzYWxlIE5lYW5nLiAgKE1hcnRpbiBTdHViZW5zY2hyb3R0KSBBc2tlZCBWaXNzYWxlIHRvIG1ha2UgdGhlIHNjcmlwdHMKICAgICBtb3JlIGZyaWVuZGx5IGZvciB0aGUgVmltIGRpc3RyaWJ1dGlvbi4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vZGViY2hhbmdlbG9nLnZpbSBiL3J1bnRpbWUvZnRwbHVnaW4vZGViY2hhbmdlbG9nLnZpbQppbmRleCBjZDIxZTkzLi44MGZmOGVmIDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL2RlYmNoYW5nZWxvZy52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9kZWJjaGFuZ2Vsb2cudmltCkBAIC0zLDkgKzMsOSBAQAogIiBNYWludGFpbmVyOiAgIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMgPHBrZy12aW0tbWFpbnRhaW5lcnNAbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmc+CiAiIEZvcm1lciBNYWludGFpbmVyczogICBNaWNoYWVsIFBpZWZlbCA8cGllZmVsQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgogIiAgICAgICAgICAgICAgICAgICAgICAgU3RlZmFubyBaYWNjaGlyb2xpIDx6YWNrQGRlYmlhbi5vcmc+Ci0iIExhc3QgQ2hhbmdlOiAgMjAxMC0wNC0yOQorIiBMYXN0IENoYW5nZTogIDIwMTAtMDctMTEKICIgTGljZW5zZTogICAgICBHTlUgR1BMLCB2ZXJzaW9uIDIuMCBvciBsYXRlcgotIiBVUkw6ICAgICAgICAgIGh0dHA6Ly9oZy5kZWJpYW4ub3JnL2hnL3BrZy12aW0vdmltL3Jhdy1maWxlL3RpcC9ydW50aW1lL2Z0cGx1Z2luL2RlYmNoYW5nZWxvZy52aW0KKyIgVVJMOiAgICAgICAgICBodHRwOi8vaGcuZGViaWFuLm9yZy9oZy9wa2ctdmltL3ZpbS9maWxlL3Vuc3RhYmxlL3J1bnRpbWUvZnRwbHVnaW4vZGViY2hhbmdlbG9nLnZpbQogCiAiIEJ1ZyBjb21wbGV0aW9uIHJlcXVpcmVzIGFwdC1saXN0YnVncyBpbnN0YWxsZWQgZm9yIERlYmlhbiBwYWNrYWdlcyBvcgogIiBweXRob24tbGF1bmNocGFkbGliIGluc3RhbGxlZCBmb3IgVWJ1bnR1IHBhY2thZ2VzCkBAIC0yMjgsNyArMjI4LDcgQEAKIAogYXVncm91cCBjaGFuZ2Vsb2dNZW51CiBhdSBCdWZFbnRlciAqIGlmICZmaWxldHlwZSA9PSAiZGViY2hhbmdlbG9nIiB8IGNhbGwgPFNJRD5NYWtlTWVudSgpIHwgZW5kaWYKLWF1IEJ1ZkxlYXZlICogaWYgJmZpbGV0eXBlID09ICJkZWJjaGFuZ2Vsb2ciIHwgYXVubWVudSBDaGFuZ2Vsb2cgfCBlbmRpZgorYXUgQnVmTGVhdmUgKiBpZiAmZmlsZXR5cGUgPT0gImRlYmNoYW5nZWxvZyIgfCBzaWxlbnQhIGF1bm1lbnUgQ2hhbmdlbG9nIHwgZW5kaWYKIGF1Z3JvdXAgRU5ECiAKICIgfX19CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9mb3J0cmFuLnZpbSBiL3J1bnRpbWUvc3ludGF4L2ZvcnRyYW4udmltCmluZGV4IDNkMzIzZmIuLmJjYzc3YzUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2ZvcnRyYW4udmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2ZvcnRyYW4udmltCkBAIC0xLDE2ICsxLDE2IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJRm9ydHJhbjk1IChhbmQgRm9ydHJhbjkwLCBGb3J0cmFuNzcsIEYgYW5kIGVsZjkwKQotIiBWZXJzaW9uOgkwLjg4CisiIFZlcnNpb246CTAuODkKICIgVVJMOgkJaHR0cDovL3d3dy51bmIuY2EvY2hlbS9haml0L3N5bnRheC9mb3J0cmFuLnZpbQotIiBMYXN0IENoYW5nZToJMjAwOCBOb3YgMDEKKyIgTGFzdCBDaGFuZ2U6CTIwMTAgSnVseSAyMQogIiBNYWludGFpbmVyOglBaml0IEouIFRoYWtrYXIgKGFqaXQgQVQgdW5iLmNhKTsgPGh0dHA6Ly93d3cudW5iLmNhL2NoZW0vYWppdC8+Ci0iIFVzYWdlOglEbyA6aGVscCBmb3J0cmFuLXN5bnRheCBmcm9tIFZpbQorIiBVc2FnZToJRm9yIGluc3RydWN0aW9ucywgZG8gOmhlbHAgZm9ydHJhbi1zeW50YXggZnJvbSBWaW0KICIgQ3JlZGl0czoKICIgIFZlcnNpb24gMC4xIHdhcyBiYXNlZCBvbiB0aGUgZm9ydHJhbiA3NyBzeW50YXggZmlsZSBieSBNYXJpbyBFdXNlYmlvIGFuZAogIiAgUHJlYmVuIEd1bGRiZXJnLiBVc2VmdWwgc3VnZ2VzdGlvbnMgd2VyZSBtYWRlIGJ5OiBBbmRyZWogUGFuamtvdiwKICIgIEJyYW0gTW9vbGVuYWFyLCBUaG9tYXMgT2xzZW4sIE1pY2hhZWwgU3Rlcm5iZXJnLCBDaHJpc3RpYW4gUmVpbGUsCiAiICBXYWx0ZXIgRGlldWRvbm7pLCBBbGV4YW5kZXIgV2FnbmVyLCBSb21hbiBCZXJ0bGUsIENoYXJsZXMgUmVuZGxlbWFuLAotIiAgYW5kIEFuZHJldyBHcmlmZml0aHMuIEZvciBpbnN0cnVjdGlvbnMgb24gdXNlLCBkbyA6aGVscCBmb3J0cmFuIGZyb20gdmltCisiICBBbmRyZXcgR3JpZmZpdGhzLCBKb2UgS3JhaG4sIGFuZCBIZW5kcmlrIE1lcnguCiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCBpZiBhIHN5bnRheCBmaWxlIGlzIGFscmVhZHkgbG9hZGVkCkBAIC03NCw3ICs3NCw3IEBACiAgICAgIiBEZXRlY3Rpb24gYmVjb21lcyBtb3JlIGFjY3VyYXRlIGFuZCB0aW1lLWNvbnN1bWluZyBpZiBtb3JlIGxpbmVzCiAgICAgIiBhcmUgY2hlY2tlZC4gSW5jcmVhc2UgdGhlIGxpbWl0IGJlbG93IGlmIHlvdSBrZWVwIGxvdHMgb2YgY29tbWVudHMgYXQKICAgICAiIHRoZSB2ZXJ5IHRvcCBvZiBlYWNoIGZpbGUgYW5kIHlvdSBoYXZlIGEgZmFzdCBjb21wdXRlci4KLSAgICBsZXQgYjpsbWF4ID0gMjUwCisgICAgbGV0IGI6bG1heCA9IDUwMAogICAgIGlmICggYjpsbWF4ID4gbGluZSgiJCIpICkKICAgICAgIGxldCBiOmxtYXggPSBsaW5lKCIkIikKICAgICBlbmRpZgpAQCAtODIsNyArODIsNyBAQAogICAgIGxldCBiOmxuPTEKICAgICB3aGlsZSBiOmxuIDw9IGI6bG1heAogICAgICAgbGV0IGI6dGVzdCA9IHN0cnBhcnQoZ2V0bGluZShiOmxuKSwwLDUpCi0gICAgICBpZiBiOnRlc3RbMF0gIX4gJ1tDYyohI10nICYmIGI6dGVzdCAhfiAnXiBcK1shI10nICYmIGI6dGVzdCA9fiAnW14gMC05XHRdJworICAgICAgaWYgYjp0ZXN0ICF+ICdeW0NjKl0nICYmIGI6dGVzdCAhfiAnXiAqWyEjXScgJiYgYjp0ZXN0ID1+ICdbXiAwLTlcdF0nICYmIGI6dGVzdCAhfiAnXlsgMC05XSpcdCcKIAlsZXQgYjpmb3J0cmFuX2ZpeGVkX3NvdXJjZSA9IDAKIAlicmVhawogICAgICAgZW5kaWYKQEAgLTIwNyw3ICsyMDcsOCBAQAogCiBzeW4ga2V5d29yZCBmb3J0cmFuVHlwZUV4CWV4dGVybmFsCiBzeW4ga2V5d29yZCBmb3J0cmFuSU9FeAkJZm9ybWF0Ci1zeW4ga2V5d29yZCBmb3J0cmFuS2V5d29yZEV4CWNvbnRpbnVlCitzeW4gbWF0Y2ggZm9ydHJhbktleXdvcmRFeAkiXDxjb250aW51ZVw+Igorc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkCSJeXHMqXGRcK1xzXCtjb250aW51ZVw+Igogc3luIG1hdGNoIGZvcnRyYW5LZXl3b3JkRXgJIlw8Z29ccyp0b1w+Igogc3luIHJlZ2lvbiBmb3J0cmFuU3RyaW5nRXgJc3RhcnQ9KycrIGVuZD0rJysgY29udGFpbnM9Zm9ydHJhbkNvbnRpbnVlTWFyayxmb3J0cmFuTGVmdE1hcmdpbixmb3J0cmFuU2VyaWFsTnVtYmVyCiBzeW4ga2V5d29yZCBmb3J0cmFuNzdJbnRyaW5zaWNFeAlkaW0gbGdlIGxndCBsbGUgbGx0IG1vZApAQCAtMjkwLDYgKzI5MSw0MCBAQAogICBlbmRpZgogZW5kaWYKIAoraWYgYjpmb3J0cmFuX2RpYWxlY3QgPT0gImY5NSIKKyAgIiBGMjAwMworICBzeW4ga2V5d29yZCBmb3J0cmFuMDNJbnRyaW5zaWMgICAgICAgIGNvbW1hbmRfYXJndW1lbnRfY291bnQgZ2V0X2NvbW1hbmQgZ2V0X2NvbW1hbmRfYXJndW1lbnQgZ2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlIGlzX2lvc3RhdF9lbmQgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mCisgICIgSVNPX0NfYmluZGluZworICBzeW4ga2V5d29yZCBmb3J0cmFuMDNDb25zdGFudCAgICAgICAgIGNfbnVsbF9jaGFyIGNfYWxlcnQgY19iYWNrc3BhY2UgY19mb3JtX2ZlZWQgY19uZXdfbGluZSBjX2NhcnJpYWdlX3JldHVybiBjX2hvcml6b250YWxfdGFiIGNfdmVydGljYWxfdGFiCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0NvbnN0YW50ICAgICAgICAgY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0ludHJpbnNpYyAgICAgICAgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyIGNfZl9wcm9jcG9pbnRlcgorICBzeW4ga2V5d29yZCBmb3J0cmFuMDNUeXBlICAgICAgICAgICAgIGNfcHRyIGNfZnVucHRyCisgICIgSVNPX0ZvcnRyYW5fZW52CisgIHN5biBrZXl3b3JkIGZvcnRyYW4wM0NvbnN0YW50ICAgICAgICAgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdAorICAiIElFRUVfYXJpdGhtZXRpYworICBzeW4ga2V5d29yZCBmb3J0cmFuMDNJbnRyaW5zaWMgICAgICAgIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUKKworICBzeW4ga2V5d29yZCBmb3J0cmFuMDNSZWFkV3JpdGUJZmx1c2ggd2FpdAorICBzeW4ga2V5d29yZCBmb3J0cmFuMDNJTwkgICAgICAgIGRlY2ltYWwgcm91bmQgaW9tc2cKKyAgc3luIGtleXdvcmQgZm9ydHJhbjAzVHlwZSAgICAgICAgICAgICBhc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydAorICBzeW4ga2V5d29yZCBmb3J0cmFuMDNUeXBlICAgICAgICAgICAgIG5vbl9pbnRyaW5zaWMgdmFsdWUgYmluZCBkZWZlcnJlZCBnZW5lcmljIGZpbmFsIGVudW1lcmF0b3IgY2xhc3MKKyAgc3luIG1hdGNoIGZvcnRyYW4wM1R5cGUgICAgICAgICAgICAgICAiXDxhc3NvY2lhdGVcPiIKKyAgc3luIG1hdGNoIGZvcnRyYW4wM1R5cGUgICAgICAgICAgICAgICAiXDxlbmRccyphc3NvY2lhdGUiCisgIHN5biBtYXRjaCBmb3J0cmFuMDNUeXBlICAgICAgICAgICAgICAgIlw8ZW51bVxzKixccypiaW5kXHMqKFxzKmNccyopIgorICBzeW4gbWF0Y2ggZm9ydHJhbjAzVHlwZSAgICAgICAgICAgICAgICJcPGVuZFxzKmVudW0iCisgIHN5biBtYXRjaCBmb3J0cmFuMDNDb25kaXRpb25hbAkiXDxzZWxlY3Rccyp0eXBlIgorICBzeW4gbWF0Y2ggZm9ydHJhbjAzQ29uZGl0aW9uYWwgICAgICAgICJcPHR5cGVccyppc1w+IgorICBzeW4gbWF0Y2ggZm9ydHJhbjAzVW5pdEhlYWRlciAgICAgICAgICJcPGFic3RyYWN0XHMqaW50ZXJmYWNlXD4iCisgIHN5biBtYXRjaCBmb3J0cmFuMDNPcGVyYXRvciAgICAgICAgICAgIlwoW1x8XVwpIgorCisgICIgRjIwMDgKKyAgc3luIGtleXdvcmQgZm9ydHJhbjA4SW50cmluc2ljICAgICAgICBhY29zaCBhc2luaCBhdGFuaCBiZXNzZWxfajAgYmVzc2VsX2oxIGJlc3NlbF9qbiBiZXNzZWxfeTAgYmVzc2VsX3kxIGJlc3NlbF95biBlcmYgZXJmYyBlcmZjX3NjYWxlZCBnYW1tYSBsb2dfZ2FtbWEgaHlwb3Qgbm9ybTIKKyAgc3luIGtleXdvcmQgZm9ydHJhbjA4SW50cmluc2ljICAgICAgICBhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzCisgIHN5biBrZXl3b3JkIGZvcnRyYW4wOEludHJpbnNpYyAgICAgICAgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZQorICBzeW4ga2V5d29yZCBmb3J0cmFuMDhJTyAgICAgICAgICAgICAgIG5ld3VuaXQKKyAgc3luIGtleXdvcmQgZm9ydHJhbjA4VHlwZSAgICAgICAgICAgICBjb250aWd1b3VzCitlbmRpZgorCiBzeW4gY2x1c3RlciBmb3J0cmFuQ29tbWVudEdyb3VwIGNvbnRhaW5zPWZvcnRyYW5Ub2RvCiAKIGlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDEpCkBAIC0zMjQsOSArMzU5LDkgQEAKIGlmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikgfHwgZXhpc3RzKCJmb3J0cmFuX21vcmVfcHJlY2lzZSIpCiAgIHN5biBzeW5jIGZyb21zdGFydAogZWxzZWlmIChiOmZvcnRyYW5fZml4ZWRfc291cmNlID09IDApCi0gIHN5biBzeW5jIGxpbmVjb250ICImIiBtaW5saW5lcz0yMAorICBzeW4gc3luYyBsaW5lY29udCAiJiIgbWlubGluZXM9MzAKIGVsc2UKLSAgc3luIHN5bmMgbWlubGluZXM9MjAKKyAgc3luIHN5bmMgbWlubGluZXM9MzAKIGVuZGlmCiAKIGlmIHZlcnNpb24gPj0gNjAwICYmIGV4aXN0cygiZm9ydHJhbl9mb2xkIikKQEAgLTMzNiwxNSArMzcxLDE3IEBACiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlwoWyFjKl1cfFxzKiNcKS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKG1vZHVsZVwoXHNcK1x6MVw+XClcPVx8JFwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0KICAgICBzeW4gcmVnaW9uIGZvcnRyYW5GdW5jdGlvbiB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypcKFwoXChyZWFsIFx8aW50ZWdlciBcfGxvZ2ljYWwgXHxjb21wbGV4IFx8ZG91YmxlIFxzKnByZWNpc2lvbiBcKVxzKlwoKFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcfHR5cGVcc1wrKFxzKlx3XCtccyopIFx8Y2hhcmFjdGVyIFwoKFwoXHMqbGVuXHMqPVwpXD1ccypcZFwrXHMqKVx8KFwoXHMqa2luZFxzKj1cKVw9XHMqXHdcK1xzKilcKVw9XClcPVxzKmZ1bmN0aW9uXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxmdW5jdGlvblwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQogICAgIHN5biByZWdpb24gZm9ydHJhblN1YnJvdXRpbmUgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqc3Vicm91dGluZVxzXCtceihcYVx3KlwpIiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8c3Vicm91dGluZVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQotICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jaworICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXChcc1wrXHooXGFcdypcKVwpXD0iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXCgkXHxibG9ja1xzKmRhdGFcKFxzXCtcejFcPlwpXD1cKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhblN1YnJvdXRpbmUsZm9ydHJhbkZ1bmN0aW9uLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICAgIHN5biByZWdpb24gZm9ydHJhbkludGVyZmFjZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqaW50ZXJmYWNlXD4iIHNraXA9Il5cKFshYypdXHxccyojXCkuKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqaW50ZXJmYWNlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jaworICAgIHN5biByZWdpb24gZm9ydHJhblR5cGVEZWYgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKnR5cGVccypcKCxccypcKHB1YmxpY1x8cHJpdmF0ZVwpXClcPVxzKjo6IiBza2lwPSJeXChbIWMqXVx8XHMqI1wpLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKnR5cGVcPiIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtLGZvcnRyYW5Nb2R1bGUsZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgIGVsc2UKICAgICBzeW4gcmVnaW9uIGZvcnRyYW5Qcm9ncmFtIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKnByb2dyYW1cc1wrXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChwcm9ncmFtXChcc1wrXHoxXD5cKVw9XHwkXCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuTW9kdWxlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBzdGFydD0iXlxzKm1vZHVsZVxzXCtcKHByb2NlZHVyZVwpXEAhXHooXGFcdypcKSIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqXChtb2R1bGVcKFxzXCtcejFcPlwpXD1cfCRcKSIgY29udGFpbnM9QUxMQlVULGZvcnRyYW5Qcm9ncmFtCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuRnVuY3Rpb24gdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKlwoZWxlbWVudGFsIFx8cHVyZSBcfHJlY3Vyc2l2ZSBcKVw9XHMqXChcKFwocmVhbCBcfGludGVnZXIgXHxsb2dpY2FsIFx8Y29tcGxleCBcfGRvdWJsZSBccypwcmVjaXNpb24gXClccypcKChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXHx0eXBlXHNcKyhccypcd1wrXHMqKSBcfGNoYXJhY3RlciBcKChcKFxzKmxlblxzKj1cKVw9XHMqXGRcK1xzKilcfChcKFxzKmtpbmRccyo9XClcPVxzKlx3XCtccyopXClcPVwpXD1ccypmdW5jdGlvblxzXCtceihcYVx3KlwpIiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGZ1bmN0aW9uXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuU3Vicm91dGluZSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgZXh0ZW5kIHN0YXJ0PSJeXHMqXChlbGVtZW50YWwgXHxwdXJlIFx8cmVjdXJzaXZlIFwpXD1ccypzdWJyb3V0aW5lXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8c3Vicm91dGluZVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZQotICAgIHN5biByZWdpb24gZm9ydHJhbkJsb2NrRGF0YSB0cmFuc3BhcmVudCBmb2xkIGtlZXBlbmQgc3RhcnQ9Ilw8YmxvY2tccypkYXRhXHNcK1x6KFxhXHcqXCkiIHNraXA9Il5ccypbISNdLiokIiBleGNsdWRlbmwgZW5kPSJcPGVuZFxzKlwoJFx8YmxvY2tccypkYXRhXChcc1wrXHoxXD5cKVw9XCkiIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW5TdWJyb3V0aW5lLGZvcnRyYW5GdW5jdGlvbixmb3J0cmFuNzdMb29wLGZvcnRyYW5DYXNlLGZvcnRyYW45MExvb3AsZm9ydHJhbklmQmxvY2sKKyAgICBzeW4gcmVnaW9uIGZvcnRyYW5CbG9ja0RhdGEgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIHN0YXJ0PSJcPGJsb2NrXHMqZGF0YVwoXHNcK1x6KFxhXHcqXClcKVw9IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccypcKCRcfGJsb2NrXHMqZGF0YVwoXHNcK1x6MVw+XClcPVwpIiBjb250YWlucz1BTExCVVQsZm9ydHJhblByb2dyYW0sZm9ydHJhbk1vZHVsZSxmb3J0cmFuU3Vicm91dGluZSxmb3J0cmFuRnVuY3Rpb24sZm9ydHJhbjc3TG9vcCxmb3J0cmFuQ2FzZSxmb3J0cmFuOTBMb29wLGZvcnRyYW5JZkJsb2NrCiAgICAgc3luIHJlZ2lvbiBmb3J0cmFuSW50ZXJmYWNlIHRyYW5zcGFyZW50IGZvbGQga2VlcGVuZCBleHRlbmQgc3RhcnQ9Il5ccyppbnRlcmZhY2VcPiIgc2tpcD0iXlxzKlshI10uKiQiIGV4Y2x1ZGVubCBlbmQ9Ilw8ZW5kXHMqaW50ZXJmYWNlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jaworICAgIHN5biByZWdpb24gZm9ydHJhblR5cGVEZWYgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kIGV4dGVuZCBzdGFydD0iXlxzKnR5cGVccypcKCxccypcKHB1YmxpY1x8cHJpdmF0ZVwpXClcPVxzKjo6IiBza2lwPSJeXHMqWyEjXS4qJCIgZXhjbHVkZW5sIGVuZD0iXDxlbmRccyp0eXBlXD4iIGNvbnRhaW5zPUFMTEJVVCxmb3J0cmFuUHJvZ3JhbSxmb3J0cmFuTW9kdWxlLGZvcnRyYW43N0xvb3AsZm9ydHJhbkNhc2UsZm9ydHJhbjkwTG9vcCxmb3J0cmFuSWZCbG9jawogICBlbmRpZgogCiAgIGlmIGV4aXN0cygiZm9ydHJhbl9mb2xkX2NvbmRpdGlvbmFscyIpCkBAIC0zOTAsMjYgKzQyNyw0MSBAQAogICAiIGZvcnRyYW5NdWx0aUNvbW1lbnRMaW5lcwogICBIaUxpbmsgZm9ydHJhbktleXdvcmQgCUtleXdvcmQKICAgSGlMaW5rIGZvcnRyYW5Db25zdHJ1Y3ROYW1lCUlkZW50aWZpZXIKKyAgSGlMaW5rIGZvcnRyYW4wM0NvbmRpdGlvbmFsCWZvcnRyYW5Db25kaXRpb25hbAogICBIaUxpbmsgZm9ydHJhbkNvbmRpdGlvbmFsCUNvbmRpdGlvbmFsCiAgIEhpTGluayBmb3J0cmFuUmVwZWF0CQlSZXBlYXQKICAgSGlMaW5rIGZvcnRyYW5Ub2RvCQlUb2RvCi0gIEhpTGluayBmb3J0cmFuQ29udGludWVNYXJrCVRvZG8KKyAgaWYgKGI6Zm9ydHJhbl9maXhlZF9zb3VyY2UgPT0gMSkKKyAgICBIaUxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlUb2RvCisgIGVsc2UKKyAgICBIaUxpbmsgZm9ydHJhbkNvbnRpbnVlTWFyawlLZXl3b3JkCisgIGVuZGlmCiAgIEhpTGluayBmb3J0cmFuU3RyaW5nCQlTdHJpbmcKICAgSGlMaW5rIGZvcnRyYW5OdW1iZXIJCU51bWJlcgorICBIaUxpbmsgZm9ydHJhbjAzT3BlcmF0b3IJZm9ydHJhbk9wZXJhdG9yCiAgIEhpTGluayBmb3J0cmFuT3BlcmF0b3IJT3BlcmF0b3IKICAgSGlMaW5rIGZvcnRyYW5Cb29sZWFuCQlCb29sZWFuCiAgIEhpTGluayBmb3J0cmFuTGFiZWxFcnJvcglFcnJvcgogICBIaUxpbmsgZm9ydHJhbk9ic29sZXRlCVRvZG8KKyAgSGlMaW5rIGZvcnRyYW4wM1R5cGUgIAlmb3J0cmFuVHlwZQorICBIaUxpbmsgZm9ydHJhbjA4VHlwZQkgICAgICAgIGZvcnRyYW5UeXBlCiAgIEhpTGluayBmb3J0cmFuVHlwZQkJVHlwZQogICBIaUxpbmsgZm9ydHJhblN0cnVjdHVyZQlUeXBlCiAgIEhpTGluayBmb3J0cmFuU3RvcmFnZUNsYXNzCVN0b3JhZ2VDbGFzcwotICBIaUxpbmsgZm9ydHJhbkNhbGwJCWZvcnRyYW5Vbml0SGVhZGVyCisgIEhpTGluayBmb3J0cmFuQ2FsbAkJRnVuY3Rpb24KKyAgSGlMaW5rIGZvcnRyYW4wM1VuaXRIZWFkZXIJZm9ydHJhblVuaXRIZWFkZXIKICAgSGlMaW5rIGZvcnRyYW5Vbml0SGVhZGVyCWZvcnRyYW5QcmVDb25kaXQKKyAgSGlMaW5rIGZvcnRyYW4wM1JlYWRXcml0ZQlmb3J0cmFuUmVhZFdyaXRlCiAgIEhpTGluayBmb3J0cmFuUmVhZFdyaXRlCUtleXdvcmQKKyAgSGlMaW5rIGZvcnRyYW4wM0lPCQlmb3J0cmFuSU8KKyAgSGlMaW5rIGZvcnRyYW4wOElPCQlmb3J0cmFuSU8KICAgSGlMaW5rIGZvcnRyYW5JTwkJS2V5d29yZAogICBIaUxpbmsgZm9ydHJhbjk1SW50cmluc2ljCWZvcnRyYW45MEludHJpbnNpYwogICBIaUxpbmsgZm9ydHJhbjc3SW50cmluc2ljCWZvcnRyYW45MEludHJpbnNpYwogICBIaUxpbmsgZm9ydHJhbjkwSW50cmluc2ljCUZ1bmN0aW9uCisgIEhpTGluayBmb3J0cmFuMDNJbnRyaW5zaWMJRnVuY3Rpb24KKyAgSGlMaW5rIGZvcnRyYW4wOEludHJpbnNpYwlGdW5jdGlvbgorICBIaUxpbmsgZm9ydHJhbjAzQ29uc3RhbnQJRnVuY3Rpb24KIAogICBpZiAoIGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJlbGYiIHx8IGI6Zm9ydHJhbl9kaWFsZWN0ID09ICJGIiApCiAgICAgSGlMaW5rIGZvcnRyYW5LZXl3b3JkT2IJZm9ydHJhbk9ic29sZXRlCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKaW5kZXggNWQ4NThiZC4uNTlhY2EyMiAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlCisrKyBiL3NyYy9NYWtlZmlsZQpAQCAtMzg0LDggKzM4NCwxMCBAQAogI0NPTkZfT1BUX1BMVEhPTUUgID0gLS13aXRoLXBsdGhvbWU9L2hvbWUvbWUvbXoKIAogIyBQRVJMCi0jIFVuY29tbWVudCB0aGlzIHdoZW4geW91IHdhbnQgdG8gaW5jbHVkZSB0aGUgUGVybCBpbnRlcmZhY2UuCisjIFVuY29tbWVudCBvbmUgb2YgdGhlc2Ugd2hlbiB5b3Ugd2FudCB0byBpbmNsdWRlIHRoZSBQZXJsIGludGVyZmFjZS4KKyMgRmlyc3Qgb25lIGlzIGZvciBzdGF0aWMgbGlua2luZywgc2Vjb25kIG9uZSBmb3IgZHluYW1pYyBsb2FkaW5nLgogIyBUaGUgUGVybCBvcHRpb24gc29tZXRpbWVzIGNhdXNlcyBwcm9ibGVtcywgYmVjYXVzZSBpdCBhZGRzIGV4dHJhIGZsYWdzCisjCiAjIHRvIHRoZSBjb21tYW5kIGxpbmUuCUlmIHlvdSBzZWUgc3RyYW5nZSBmbGFncyBkdXJpbmcgY29tcGlsYXRpb24sIGNoZWNrIGluCiAjIGF1dG8vY29uZmlnLm1rIHdoZXJlIHRoZXkgY29tZSBmcm9tLiAgSWYgaXQncyBQRVJMX0NGTEFHUywgdHJ5IGNvbW1lbnRpbmcKICMgdGhlIG5leHQgbGluZS4KQEAgLTM5Myw2ICszOTUsNyBAQAogIyBvbmU6ICJ0b3VjaCBwZXJsLmV4cCIuCiAjIFRoaXMgcmVxdWlyZXMgYXQgbGVhc3QgInNtYWxsIiBmZWF0dXJlcywgInRpbnkiIGRvZXNuJ3Qgd29yay4KICNDT05GX09QVF9QRVJMID0gLS1lbmFibGUtcGVybGludGVycAorI0NPTkZfT1BUX1BFUkwgPSAtLWVuYWJsZS1wZXJsaW50ZXJwPWR5bmFtaWMKIAogIyBQWVRIT04KICMgVW5jb21tZW50IHRoaXMgd2hlbiB5b3Ugd2FudCB0byBpbmNsdWRlIHRoZSBQeXRob24gaW50ZXJmYWNlLgpAQCAtMTMxMSw3ICsxMzE0LDcgQEAKIC5TVUZGSVhFUzogLmMgLm8gLnBybwogCiBQUkVfREVGUyA9IC1JcHJvdG8gJChERUZTKSAkKEdVSV9ERUZTKSAkKEdVSV9JUEFUSCkgJChDUFBGTEFHUykgJChFWFRSQV9JUEFUSFMpCi1QT1NUX0RFRlMgPSAkKFhfQ0ZMQUdTKSAkKExVQV9DRkxBR1MpICQoTVpTQ0hFTUVfQ0ZMQUdTKSAkKFBFUkxfQ0ZMQUdTKSAkKEVDTF9DRkxBR1MpICQoVENMX0NGTEFHUykgJChSVUJZX0NGTEFHUykgJChFWFRSQV9ERUZTKQorUE9TVF9ERUZTID0gJChYX0NGTEFHUykgJChMVUFfQ0ZMQUdTKSAkKE1aU0NIRU1FX0NGTEFHUykgJChUQ0xfQ0ZMQUdTKSAkKFJVQllfQ0ZMQUdTKSAkKEVYVFJBX0RFRlMpCiAKIEFMTF9DRkxBR1MgPSAkKFBSRV9ERUZTKSAkKENGTEFHUykgJChQUk9GSUxFX0NGTEFHUykgJChQT1NUX0RFRlMpCiAKQEAgLTI0OTQsMTAgKzI0OTcsMTAgQEAKIAkkKE1aU0NIRU1FX01aQykgLS1jLW1vZHMgbXpzY2hlbWVfYmFzZS5jICsrbGliIHNjaGVtZS9iYXNlCiAKIG9iamVjdHMvaWZfcGVybC5vOiBhdXRvL2lmX3BlcmwuYwotCSQoQ0NDKSAtbyAkQCBhdXRvL2lmX3BlcmwuYworCSQoQ0NDKSAkKFBFUkxfQ0ZMQUdTKSAtbyAkQCBhdXRvL2lmX3BlcmwuYwogCiBvYmplY3RzL2lmX3BlcmxzZmlvLm86IGlmX3BlcmxzZmlvLmMKLQkkKENDQykgLW8gJEAgaWZfcGVybHNmaW8uYworCSQoQ0NDKSAkKFBFUkxfQ0ZMQUdTKSAtbyAkQCBpZl9wZXJsc2Zpby5jCiAKIG9iamVjdHMvcHlfY29uZmlnLm86ICQoUFlUSE9OX0NPTkZESVIpL2NvbmZpZy5jCiAJJChDQ0MpICQoUFlUSE9OX0NGTEFHUykgLW8gJEAgJChQWVRIT05fQ09ORkRJUikvY29uZmlnLmMgXApkaWZmIC0tZ2l0IGEvc3JjL2F1dG8vY29uZmlndXJlIGIvc3JjL2F1dG8vY29uZmlndXJlCmluZGV4IDlkN2E3MTkuLjEyZWM3MjEgMTAwNzU1Ci0tLSBhL3NyYy9hdXRvL2NvbmZpZ3VyZQorKysgYi9zcmMvYXV0by9jb25maWd1cmUKQEAgLTE0MjMsNyArMTQyMyw3IEBACiAgIC0tZGlzYWJsZS14c21wLWludGVyYWN0IERpc2FibGUgWFNNUCBpbnRlcmFjdGlvbgogICAtLWVuYWJsZS1sdWFpbnRlcnAgICAgICBJbmNsdWRlIEx1YSBpbnRlcnByZXRlci4KICAgLS1lbmFibGUtbXpzY2hlbWVpbnRlcnAgICBJbmNsdWRlIE16U2NoZW1lIGludGVycHJldGVyLgotICAtLWVuYWJsZS1wZXJsaW50ZXJwICAgICBJbmNsdWRlIFBlcmwgaW50ZXJwcmV0ZXIuCisgIC0tZW5hYmxlLXBlcmxpbnRlcnA9T1BUUyAgICAgSW5jbHVkZSBQZXJsIGludGVycHJldGVyLiAgZGVmYXVsdD1ubyBPUFRTPW5vL3llcy9keW5hbWljCiAgIC0tZW5hYmxlLXB5dGhvbmludGVycCAgIEluY2x1ZGUgUHl0aG9uIGludGVycHJldGVyLgogICAtLWVuYWJsZS1weXRob24zaW50ZXJwICAgSW5jbHVkZSBQeXRob24zIGludGVycHJldGVyLgogICAtLWVuYWJsZS10Y2xpbnRlcnAgICAgICBJbmNsdWRlIFRjbCBpbnRlcnByZXRlci4KQEAgLTQyNDEsNyArNDI0MSw3IEBACiAgICAgKi8qKSA7OwogICAgIG5vKQogICAgICAgIyBhdm9pZCBhZGRpbmcgbG9jYWwgZGlyIHRvIExERkxBR1MgYW5kIENQUEZMQUdTCi0gICAgICBoYXZlX2xvY2FsX2Rpcj15ZXMKKyAgICAgIGhhdmVfbG9jYWxfaW5jbHVkZT15ZXMKICAgICAgIGhhdmVfbG9jYWxfbGliPXllcwogICAgICAgOzsKICAgICAqKSBhc19mbl9lcnJvciAibXVzdCBwYXNzIHBhdGggYXJndW1lbnQgdG8gLS13aXRoLWxvY2FsLWRpciIgIiRMSU5FTk8iIDUgOzsKQEAgLTQ5MjQsNyArNDkyNCw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZW5hYmxlX3BlcmxpbnRlcnAiID4mNQogJGFzX2VjaG8gIiRlbmFibGVfcGVybGludGVycCIgPiY2OyB9Ci1pZiB0ZXN0ICIkZW5hYmxlX3BlcmxpbnRlcnAiID0gInllcyI7IHRoZW4KK2lmIHRlc3QgIiRlbmFibGVfcGVybGludGVycCIgPSAieWVzIiAtbyAiJGVuYWJsZV9wZXJsaW50ZXJwIiA9ICJkeW5hbWljIjsgdGhlbgogCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGVybCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgcGVybDsgYWNfd29yZD0kMgpAQCAtNDk3MSw2ICs0OTcxLDcgQEAKICRhc19lY2hvX24gImNoZWNraW5nIFBlcmwgdmVyc2lvbi4uLiAiID4mNjsgfQogICAgIGlmICR2aV9jdl9wYXRoX3BlcmwgLWUgJ3JlcXVpcmUgNS4wMDNfMDEnID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KICAgICAgZXZhbCBgJHZpX2N2X3BhdGhfcGVybCAtVjp1c2V0aHJlYWRzYAorICAgICBldmFsIGAkdmlfY3ZfcGF0aF9wZXJsIC1WOmxpYnBlcmxgCiAgICAgIGlmIHRlc3QgIlgkdXNldGhyZWFkcyIgPSAiWFVOS05PV04iIC1vICJYJHVzZXRocmVhZHMiID0gIlh1bmRlZiI7IHRoZW4KICAgICAgICBiYWR0aHJlYWRzPW5vCiAgICAgIGVsc2UKQEAgLTUwNzcsNiArNTA3OCwxMyBAQAogICAgICAgUEVSTF9MSUJTPSItTCRkYXJ3aW5kaXIvQ09SRSAtbHBlcmwiCiAgICAgZmkKICAgZmkKKyAgaWYgdGVzdCAiJGVuYWJsZV9wZXJsaW50ZXJwIiA9ICJkeW5hbWljIjsgdGhlbgorICAgIGlmIHRlc3QgIiRwZXJsX29rIiA9ICJ5ZXMiIC1hICJYJGxpYnBlcmwiICE9ICJYIjsgdGhlbgorICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgRFlOQU1JQ19QRVJMIDEiID4+Y29uZmRlZnMuaAorCisgICAgICBQRVJMX0NGTEFHUz0iLUREWU5BTUlDX1BFUkxfRExMPVxcXCIkbGlicGVybFxcXCIgJFBFUkxfQ0ZMQUdTIgorICAgIGZpCisgIGZpCiBmaQogCiAKZGlmZiAtLWdpdCBhL3NyYy9jb25maWcuaC5pbiBiL3NyYy9jb25maWcuaC5pbgppbmRleCA1NTcwZjJiLi4zZTg2Yjg0IDEwMDY0NAotLS0gYS9zcmMvY29uZmlnLmguaW4KKysrIGIvc3JjL2NvbmZpZy5oLmluCkBAIC0zMjUsNiArMzI1LDkgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIHRoZSBQZXJsIGludGVycHJldGVyLiAqLwogI3VuZGVmIEZFQVRfUEVSTAogCisvKiBEZWZpbmUgZm9yIGxpbmtpbmcgdmlhIGRsb3BlbigpIG9yIExvYWRMaWJyYXJ5KCkgKi8KKyN1bmRlZiBEWU5BTUlDX1BFUkwKKwogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4gKi8KICN1bmRlZiBGRUFUX1BZVEhPTgogCmRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmluIGIvc3JjL2NvbmZpZ3VyZS5pbgppbmRleCAxMTJmOGE2Li5iMTBkNWM5IDEwMDY0NAotLS0gYS9zcmMvY29uZmlndXJlLmluCisrKyBiL3NyYy9jb25maWd1cmUuaW4KQEAgLTIxMyw3ICsyMTMsNyBAQAogICAgICovKikgOzsKICAgICBubykKICAgICAgICMgYXZvaWQgYWRkaW5nIGxvY2FsIGRpciB0byBMREZMQUdTIGFuZCBDUFBGTEFHUwotICAgICAgaGF2ZV9sb2NhbF9kaXI9eWVzCisgICAgICBoYXZlX2xvY2FsX2luY2x1ZGU9eWVzCiAgICAgICBoYXZlX2xvY2FsX2xpYj15ZXMKICAgICAgIDs7CiAgICAgKikgQUNfTVNHX0VSUk9SKG11c3QgcGFzcyBwYXRoIGFyZ3VtZW50IHRvIC0td2l0aC1sb2NhbC1kaXIpIDs7CkBAIC02MjAsMTYgKzYyMCwxNyBAQAogCiBBQ19NU0dfQ0hFQ0tJTkcoLS1lbmFibGUtcGVybGludGVycCBhcmd1bWVudCkKIEFDX0FSR19FTkFCTEUocGVybGludGVycCwKLQlbICAtLWVuYWJsZS1wZXJsaW50ZXJwICAgICBJbmNsdWRlIFBlcmwgaW50ZXJwcmV0ZXIuXSwgLAorCVsgIC0tZW5hYmxlLXBlcmxpbnRlcnBbPU9QVFNdICAgICBJbmNsdWRlIFBlcmwgaW50ZXJwcmV0ZXIuICBbZGVmYXVsdD1ub10gW09QVFM9bm8veWVzL2R5bmFtaWNdXSwgLAogCVtlbmFibGVfcGVybGludGVycD0ibm8iXSkKIEFDX01TR19SRVNVTFQoJGVuYWJsZV9wZXJsaW50ZXJwKQotaWYgdGVzdCAiJGVuYWJsZV9wZXJsaW50ZXJwIiA9ICJ5ZXMiOyB0aGVuCitpZiB0ZXN0ICIkZW5hYmxlX3BlcmxpbnRlcnAiID0gInllcyIgLW8gIiRlbmFibGVfcGVybGludGVycCIgPSAiZHluYW1pYyI7IHRoZW4KICAgQUNfU1VCU1QodmlfY3ZfcGF0aF9wZXJsKQogICBBQ19QQVRIX1BST0codmlfY3ZfcGF0aF9wZXJsLCBwZXJsKQogICBpZiB0ZXN0ICJYJHZpX2N2X3BhdGhfcGVybCIgIT0gIlgiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFBlcmwgdmVyc2lvbikKICAgICBpZiAkdmlfY3ZfcGF0aF9wZXJsIC1lICdyZXF1aXJlIDUuMDAzXzAxJyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgIGV2YWwgYCR2aV9jdl9wYXRoX3BlcmwgLVY6dXNldGhyZWFkc2AKKyAgICAgZXZhbCBgJHZpX2N2X3BhdGhfcGVybCAtVjpsaWJwZXJsYAogICAgICBpZiB0ZXN0ICJYJHVzZXRocmVhZHMiID0gIlhVTktOT1dOIiAtbyAiWCR1c2V0aHJlYWRzIiA9ICJYdW5kZWYiOyB0aGVuCiAgICAgICAgYmFkdGhyZWFkcz1ubwogICAgICBlbHNlCkBAIC03MjIsNiArNzIzLDEyIEBACiAgICAgICBQRVJMX0xJQlM9Ii1MJGRhcndpbmRpci9DT1JFIC1scGVybCIKICAgICBmaQogICBmaQorICBpZiB0ZXN0ICIkZW5hYmxlX3BlcmxpbnRlcnAiID0gImR5bmFtaWMiOyB0aGVuCisgICAgaWYgdGVzdCAiJHBlcmxfb2siID0gInllcyIgLWEgIlgkbGlicGVybCIgIT0gIlgiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoRFlOQU1JQ19QRVJMKQorICAgICAgUEVSTF9DRkxBR1M9Ii1ERFlOQU1JQ19QRVJMX0RMTD1cXFwiJGxpYnBlcmxcXFwiICRQRVJMX0NGTEFHUyIKKyAgICBmaQorICBmaQogZmkKIEFDX1NVQlNUKHNocnBlbnYpCiBBQ19TVUJTVChQRVJMX1NSQykKZGlmZiAtLWdpdCBhL3NyYy9pZl9wZXJsLnhzIGIvc3JjL2lmX3BlcmwueHMKaW5kZXggMWE4M2RlNC4uNjM2ZTcwNCAxMDA2NDQKLS0tIGEvc3JjL2lmX3BlcmwueHMKKysrIGIvc3JjL2lmX3BlcmwueHMKQEAgLTg0LDkgKzg0LDMyIEBACiBFWFRFUk5fQyB2b2lkIGJvb3RfRHluYUxvYWRlciBfX0FSR1MoKHBUSFhfIENWKikpOwogCiAvKgotICogRm9yIGR5bmFtaWMgbGlua2VkIHBlcmwuIChXaW5kb3dzKQorICogRm9yIGR5bmFtaWMgbGlua2VkIHBlcmwuCiAgKi8KICNpZiBkZWZpbmVkKERZTkFNSUNfUEVSTCkgfHwgZGVmaW5lZChQUk9UTykKKworI2lmbmRlZiBEWU5BTUlDX1BFUkwgLyoganVzdCBnZW5lcmF0aW5nIHByb3RvdHlwZXMgKi8KKyNpZmRlZiBfTVNXSU4KK3R5cGVkZWYgaW50IEhBTkRMRTsKKyNlbmRpZgordHlwZWRlZiBpbnQgWFNJTklUX3Q7Cit0eXBlZGVmIGludCBYU1VCQUREUl90OwordHlwZWRlZiBpbnQgcGVybF9rZXk7CisjZW5kaWYKKworI2lmbmRlZiBfTVNXSU4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2RlZmluZSBIQU5ETEUgdm9pZCoKKyNkZWZpbmUgUEVSTF9QUk9DIHZvaWQqCisjZGVmaW5lIGxvYWRfZGxsKG4pIGRsb3BlbigobiksIFJUTERfTEFaWXxSVExEX0dMT0JBTCkKKyNkZWZpbmUgc3ltYm9sX2Zyb21fZGxsIGRsc3ltCisjZGVmaW5lIGNsb3NlX2RsbCBkbGNsb3NlCisjZWxzZQorI2RlZmluZSBQRVJMX1BST0MgRkFSUFJPQworI2RlZmluZSBsb2FkX2RsbCBMb2FkTGlicmFyeQorI2RlZmluZSBzeW1ib2xfZnJvbV9kbGwgR2V0UHJvY0FkZHJlc3MKKyNkZWZpbmUgY2xvc2VfZGxsIEZyZWVMaWJyYXJ5CisjZW5kaWYKIC8qCiAgKiBXcmFwcGVyIGRlZmluZXMKICAqLwpAQCAtMTczLDYgKzE5Niw3IEBACiAjIGRlZmluZSBQZXJsX0llcnJndl9wdHIgZGxsX1BlcmxfSWVycmd2X3B0cgogIyBkZWZpbmUgUGVybF9Jc3ZfeWVzX3B0ciBkbGxfUGVybF9Jc3ZfeWVzX3B0cgogIyBkZWZpbmUgYm9vdF9EeW5hTG9hZGVyIGRsbF9ib290X0R5bmFMb2FkZXIKKyMgZGVmaW5lIFBlcmxfR3Rocl9rZXlfcHRyIGRsbF9QZXJsX0d0aHJfa2V5X3B0cgogCiAjIGRlZmluZSBQZXJsX3N5c19pbml0IGRsbF9QZXJsX3N5c19pbml0CiAjIGRlZmluZSBQZXJsX3N5c190ZXJtIGRsbF9QZXJsX3N5c190ZXJtCkBAIC0xOTEsMTIgKzIxNSw2IEBACiAjIGRlZmluZSBQZXJsX0lzY29wZXN0YWNrX2l4X3B0ciBkbGxfUGVybF9Jc2NvcGVzdGFja19peF9wdHIKICMgZGVmaW5lIFBlcmxfSXVuaXRjaGVja2F2X3B0ciBkbGxfUGVybF9JdW5pdGNoZWNrYXZfcHRyCiAKLSNpZm5kZWYgRFlOQU1JQ19QRVJMIC8qIGp1c3QgZ2VuZXJhdGluZyBwcm90b3R5cGVzICovCi10eXBlZGVmIGludCBIQU5ETEU7Ci10eXBlZGVmIGludCBYU0lOSVRfdDsKLXR5cGVkZWYgaW50IFhTVUJBRERSX3Q7Ci0jZW5kaWYKLQogLyoKICAqIERlY2xhcmUgSEFORExFIGZvciBwZXJsLmRsbCBhbmQgZnVuY3Rpb24gcG9pbnRlcnMuCiAgKi8KQEAgLTI2NSw2ICsyODMsNyBAQAogc3RhdGljIHZvaWQgKCpQZXJsX3N2X3NldHN2KShwVEhYXyBTViosIFNWKik7CiAjZW5kaWYKIHN0YXRpYyBib29sICgqUGVybF9zdl91cGdyYWRlKShwVEhYXyBTViosIFUzMik7CisjaWYgKFBFUkxfUkVWSVNJT04gPT0gNSkgJiYgKFBFUkxfVkVSU0lPTiA8IDEwKQogc3RhdGljIFNWKioqICgqUGVybF9Uc3RhY2tfc3BfcHRyKShyZWdpc3RlciBQZXJsSW50ZXJwcmV0ZXIqKTsKIHN0YXRpYyBPUCoqICgqUGVybF9Ub3BfcHRyKShyZWdpc3RlciBQZXJsSW50ZXJwcmV0ZXIqKTsKIHN0YXRpYyBTVioqKiAoKlBlcmxfVHN0YWNrX2Jhc2VfcHRyKShyZWdpc3RlciBQZXJsSW50ZXJwcmV0ZXIqKTsKQEAgLTI3NiwxMiArMjk1LDcgQEAKIHN0YXRpYyBTVioqICgqUGVybF9UU3ZfcHRyKShyZWdpc3RlciBQZXJsSW50ZXJwcmV0ZXIqKTsKIHN0YXRpYyBYUFYqKiAoKlBlcmxfVFhwdl9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOwogc3RhdGljIFNUUkxFTiogKCpQZXJsX1RuYV9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOwotc3RhdGljIEdWKiogKCpQZXJsX0lkZWZndl9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOwotc3RhdGljIEdWKiogKCpQZXJsX0llcnJndl9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOwotc3RhdGljIFNWKiAoKlBlcmxfSXN2X3llc19wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOwotc3RhdGljIHZvaWQgKCpib290X0R5bmFMb2FkZXIpXygocFRIWF8gQ1YqKSk7Ci0KLSNpZiAoUEVSTF9SRVZJU0lPTiA9PSA1KSAmJiAoUEVSTF9WRVJTSU9OID49IDEwKQorI2Vsc2UKIHN0YXRpYyB2b2lkICgqUGVybF9zdl9mcmVlMikocFRIWF8gU1YqKTsKIHN0YXRpYyB2b2lkICgqUGVybF9zeXNfaW5pdCkoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YpOwogc3RhdGljIHZvaWQgKCpQZXJsX3N5c190ZXJtKSh2b2lkKTsKQEAgLTMwMSwxMCArMzE1LDE1IEBACiBzdGF0aWMgQVYqKiAoKlBlcmxfSXVuaXRjaGVja2F2X3B0cikocmVnaXN0ZXIgUGVybEludGVycHJldGVyKik7CiAjZW5kaWYKIAorc3RhdGljIEdWKiogKCpQZXJsX0lkZWZndl9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOworc3RhdGljIEdWKiogKCpQZXJsX0llcnJndl9wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOworc3RhdGljIFNWKiAoKlBlcmxfSXN2X3llc19wdHIpKHJlZ2lzdGVyIFBlcmxJbnRlcnByZXRlciopOworc3RhdGljIHZvaWQgKCpib290X0R5bmFMb2FkZXIpXygocFRIWF8gQ1YqKSk7CitzdGF0aWMgcGVybF9rZXkqICgqUGVybF9HdGhyX2tleV9wdHIpXygocFRIWCkpOworCiAvKgogICogVGFibGUgb2YgbmFtZSB0byBmdW5jdGlvbiBwb2ludGVyIG9mIHBlcmwuCiAgKi8KLSNkZWZpbmUgUEVSTF9QUk9DIEZBUlBST0MKIHN0YXRpYyBzdHJ1Y3QgewogICAgIGNoYXIqIG5hbWU7CiAgICAgUEVSTF9QUk9DKiBwdHI7CkBAIC0zODksMTcgKzQwOCwxNiBAQAogICAgIHsiUGVybF9zeXNfaW5pdCIsIChQRVJMX1BST0MqKSZQZXJsX3N5c19pbml0fSwKICAgICB7IlBlcmxfc3lzX3Rlcm0iLCAoUEVSTF9QUk9DKikmUGVybF9zeXNfdGVybX0sCiAgICAgeyJQZXJsX0lTdl9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9JU3ZfcHRyfSwKLSAgICB7IlBlcmxfSXN0YWNrX3NwX3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0lzdGFja19zcF9wdHJ9LAotICAgIHsiUGVybF9Jb3BfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSW9wX3B0cn0sCi0gICAgeyJQZXJsX0lzdGFja19iYXNlX3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0lzdGFja19iYXNlX3B0cn0sCiAgICAgeyJQZXJsX0lzdGFja19tYXhfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSXN0YWNrX21heF9wdHJ9LAorICAgIHsiUGVybF9Jc3RhY2tfYmFzZV9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9Jc3RhY2tfYmFzZV9wdHJ9LAorICAgIHsiUGVybF9JWHB2X3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0lYcHZfcHRyfSwKICAgICB7IlBlcmxfSXRtcHNfaXhfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSXRtcHNfaXhfcHRyfSwKICAgICB7IlBlcmxfSXRtcHNfZmxvb3JfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSXRtcHNfZmxvb3JfcHRyfSwKKyAgICB7IlBlcmxfSW5hX3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0luYV9wdHJ9LAogICAgIHsiUGVybF9JbWFya3N0YWNrX3B0cl9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9JbWFya3N0YWNrX3B0cl9wdHJ9LAogICAgIHsiUGVybF9JbWFya3N0YWNrX21heF9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9JbWFya3N0YWNrX21heF9wdHJ9LAotICAgIHsiUGVybF9JU3ZfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSVN2X3B0cn0sCi0gICAgeyJQZXJsX0lYcHZfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSVhwdl9wdHJ9LAotICAgIHsiUGVybF9JbmFfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSW5hX3B0cn0sCisgICAgeyJQZXJsX0lzdGFja19zcF9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9Jc3RhY2tfc3BfcHRyfSwKKyAgICB7IlBlcmxfSW9wX3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0lvcF9wdHJ9LAogICAgIHsiUGVybF9jYWxsX2xpc3QiLCAoUEVSTF9QUk9DKikmUGVybF9jYWxsX2xpc3R9LAogICAgIHsiUGVybF9Jc2NvcGVzdGFja19peF9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9Jc2NvcGVzdGFja19peF9wdHJ9LAogICAgIHsiUGVybF9JdW5pdGNoZWNrYXZfcHRyIiwgKFBFUkxfUFJPQyopJlBlcmxfSXVuaXRjaGVja2F2X3B0cn0sCkBAIC00MDgsNiArNDI2LDcgQEAKICAgICB7IlBlcmxfSWVycmd2X3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0llcnJndl9wdHJ9LAogICAgIHsiUGVybF9Jc3ZfeWVzX3B0ciIsIChQRVJMX1BST0MqKSZQZXJsX0lzdl95ZXNfcHRyfSwKICAgICB7ImJvb3RfRHluYUxvYWRlciIsIChQRVJMX1BST0MqKSZib290X0R5bmFMb2FkZXJ9LAorICAgIHsiUGVybF9HdGhyX2tleV9wdHIiLCAoUEVSTF9QUk9DKikmUGVybF9HdGhyX2tleV9wdHJ9LAogICAgIHsiIiwgTlVMTH0sCiB9OwogCkBAIC00MjgsNyArNDQ3LDcgQEAKIAogICAgIGlmIChoUGVybExpYiAhPSBOVUxMKQogCXJldHVybiBPSzsKLSAgICBpZiAoIShoUGVybExpYiA9IExvYWRMaWJyYXJ5RXgobGlibmFtZSwgTlVMTCwgMCkpKQorICAgIGlmICgoaFBlcmxMaWIgPSBsb2FkX2RsbChsaWJuYW1lKSkgPT0gTlVMTCkKICAgICB7CiAJaWYgKHZlcmJvc2UpCiAJICAgIEVNU0cyKF8oIkUzNzA6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgJXMiKSwgbGlibmFtZSk7CkBAIC00MzYsMTAgKzQ1NSwxMCBAQAogICAgIH0KICAgICBmb3IgKGkgPSAwOyBwZXJsX2Z1bmNuYW1lX3RhYmxlW2ldLnB0cjsgKytpKQogICAgIHsKLQlpZiAoISgqcGVybF9mdW5jbmFtZV90YWJsZVtpXS5wdHIgPSBHZXRQcm9jQWRkcmVzcyhoUGVybExpYiwKKwlpZiAoISgqcGVybF9mdW5jbmFtZV90YWJsZVtpXS5wdHIgPSBzeW1ib2xfZnJvbV9kbGwoaFBlcmxMaWIsCiAJCQlwZXJsX2Z1bmNuYW1lX3RhYmxlW2ldLm5hbWUpKSkKIAl7Ci0JICAgIEZyZWVMaWJyYXJ5KGhQZXJsTGliKTsKKwkgICAgY2xvc2VfZGxsKGhQZXJsTGliKTsKIAkgICAgaFBlcmxMaWIgPSBOVUxMOwogCSAgICBpZiAodmVyYm9zZSkKIAkJRU1TRzIoXyhlX2xvYWRmdW5jKSwgcGVybF9mdW5jbmFtZV90YWJsZVtpXS5uYW1lKTsKQEAgLTUwOCw3ICs1MjcsNyBAQAogI2lmZGVmIERZTkFNSUNfUEVSTAogICAgIGlmIChoUGVybExpYikKICAgICB7Ci0JRnJlZUxpYnJhcnkoaFBlcmxMaWIpOworCWNsb3NlX2RsbChoUGVybExpYik7CiAJaFBlcmxMaWIgPSBOVUxMOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2xpbmsuc2ggYi9zcmMvbGluay5zaAppbmRleCA2ZTE2MTY4Li4zZDkwZjNjIDEwMDc1NQotLS0gYS9zcmMvbGluay5zaAorKysgYi9zcmMvbGluay5zaApAQCAtNDEsNyArNDEsNyBAQAogICBpZiBzaCBsaW5rLmNtZDsgdGhlbgogICAgIHRvdWNoIGF1dG8vbGluay5zZWQKICAgICBjcCBsaW5rLmNtZCBsaW5raXQuc2gKLSAgICBmb3IgbGlibmFtZSBpbiBTTSBJQ0UgbnNsIGRuZXQgZG5ldF9zdHViIGluZXQgc29ja2V0IGRpciBlbGYgaWNvbnYgWHQgWG11IFhwIFhwbSBYMTEgWGRtY3AgeCB3IGRsIHB0aHJlYWQgdGhyZWFkIHJlYWRsaW5lIG0gcGVybCBjcnlwdCBhdHRyOyBkbworICAgIGZvciBsaWJuYW1lIGluIFNNIElDRSBuc2wgZG5ldCBkbmV0X3N0dWIgaW5ldCBzb2NrZXQgZGlyIGVsZiBpY29udiBYdCBYbXUgWHAgWHBtIFgxMSBYZG1jcCB4IHcgcGVybCBkbCBwdGhyZWFkIHRocmVhZCByZWFkbGluZSBtIGNyeXB0IGF0dHI7IGRvCiAgICAgICBjb250PXllcwogICAgICAgd2hpbGUgdGVzdCAtbiAiJGNvbnQiOyBkbwogICAgICAgICBpZiBncmVwICJsJGxpYm5hbWUgIiBsaW5raXQuc2ggPi9kZXYvbnVsbDsgdGhlbgo=