ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggYzk3ZTkzZi4uODE1MTljNyAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsMjAgKzEsNDkgQEAKIAotTGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCitMaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKIAogVGhpcyBpcyBhIHB1YmxpYyByZWxlYXNlIG9mIGxpYnBuZywgaW50ZW5kZWQgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIGNvZGVzLgogCi1DaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHB1YmxpYyByZWxlYXNlICgxLjAuMTEpOgorQ2hhbmdlcyBzaW5jZSB0aGUgbGFzdCBwdWJsaWMgcmVsZWFzZSAoMS4yLjEpOgogCi0gIFRlc3QgZm9yIFdpbmRvd3MgcGxhdGZvcm0gaW4gcG5nY29uZi5oIHdoZW4gaW5jbHVkaW5nIG1hbGxvYy5oIChFbW1hbnVlbCBCbG90KQotICBVcGRhdGVkIG1ha2VmaWxlLmN5Z3dpbiBhbmQgaGFuZGxpbmcgb2YgQ3lnd2luJ3MgQUxMX1NUQVRJQyBpbiBwbmdjb25mLmgKLSAgQWRkZWQgc29tZSBuZXZlci10by1iZS1leGVjdXRlZCBjb2RlIGluIHBuZ2djY3JkLmMgdG8gcXVpZXQgY29tcGlsZXIgd2FybmluZ3MuCi0gIEJ1bXBlZCBETExOVU0gdG8gMi4KLSAgQWRkZWQgYSBjaGVjayBmb3IgYXR0ZW1wdHMgdG8gcmVhZCBvciB3cml0ZSBQTFRFIGluIGdyYXlzY2FsZSBQTkcgZGF0YXN0cmVhbXMuCi0gIEVsaW1pbmF0ZWQgdGhlIHBuZ19lcnJvciBhYm91dCBhcHBzIHVzaW5nIHBuZ19yZWFkfHdyaXRlX2luaXQoKS4gIEluc3RlYWQsCi0gICAgbGlicG5nIHdpbGwgcmVhbGxvY2F0ZSB0aGUgcG5nX3N0cnVjdCBhbmQgaW5mb19zdHJ1Y3QgaWYgdGhleSBhcmUgdG9vIHNtYWxsLgotICAgIFRoaXMgYWNoaWV2ZXMgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5IGZvciBvbGQgYXBwbGljYXRpb25zIHdyaXR0ZW4gZm9yCi0gICAgbGlicG5nLTAuODggYW5kIGVhcmxpZXIuCi0gIE1vZGlmaWVkIHBuZ19jcmVhdGVfc3RydWN0IHNvIGl0IHBhc3NlcyB1c2VyIG1lbV9wdHIgdG8gdXNlciBtZW1vcnkgYWxsb2NhdG9yLgorICBGaXhlZCBhIGJ1ZyB3aXRoIHJlYWRpbmcgdGhlIGxlbmd0aCBvZiBpQ0NQIHByb2ZpbGVzIChMYXJyeSBSZWV2ZXMpLgorICBSZXZpc2VkIG1ha2VmaWxlLmxpbnV4LCBtYWtlZmlsZS5nY21teCwgYW5kIG90aGVycyB0byBnZW5lcmF0ZQorICAgIGxpYnBuZy5hLCBsaWJwbmdOTi5zbywgbGlicG5nLnNvLk5OLCBhbmQgbGlicG5nTk4vcG5nLmgKKyAgUmV2aXNlZCBtYWtlZmlsZS5kYXJ3aW4gdG8gcmVtb3ZlICItdW5kZWZpbmVkIHN1cHByZXNzIiBvcHRpb24uCisgIEFkZGVkIGNoZWNrcyBmb3IgZ2FtbWEgYW5kIGNocm9tYXRpY2l0eSB2YWx1ZXMgb3ZlciAyMTQ3NC44Mywgd2hpY2ggZXhjZWVkCisgICAgdGhlIGxpbWl0IGZvciBQTkcgdW5zaWduZWQgMzItYml0IGludGVnZXJzIHdoZW4gZW5jb2RlZC4KKyAgUmV2aXNlZCBjYWxscyB0byBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KCkgYW5kIHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0KCkKKyAgICBmb3Igc2ltcGxlciBkZWJ1Z2dpbmcuCisgIFJldmlzZWQgcG5nX3phbGxvYygpIHNvIHpsaWIgaGFuZGxlcyBlcnJvcnMgKHVzZXMgUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKQorICBDaGVjayBjaHVua19sZW5ndGggYW5kIGlkYXRfc2l6ZSBmb3IgaW52YWxpZCAob3ZlciBQTkdfTUFYX1VJTlQpIGxlbmd0aHMuCisgIENoZWNrIGZvciBpbnZhbGlkIGltYWdlIGRpbWVuc2lvbnMgaW4gcG5nX2dldF9JSERSLgorICBBZGRlZCBpbnN0YWxsLXNoYXJlZCBhbmQgaW5zdGFsbC1zdGF0aWMgdGFyZ2V0cyB0byBhbGwgbWFrZWZpbGVzIHRoYXQgbWFrZQorICAgIHNoYXJlZCBsaWJyYXJpZXMuCisgIEFsd2F5cyBkbyBnYW1tYSBjb21wZW5zYXRpb24gd2hlbiBpbWFnZSBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQuCisgIE1vZGlmaWVkIHNoYXJlZC1saWJyYXJ5IG1ha2VmaWxlcyB0byBpbnN0YWxsIHBrZ2NvbmZpZy9saWJwbmdOTi5wYy4KKyAgRXhwb3J0ICh3aXRoIFBOR0FQSSkgcG5nX3phbGxvYywgcG5nX3pmcmVlLCBhbmQgcG5nX2hhbmRsZV9hc191bmtub3duCisgIFJlbW92ZWQgdW51c2VkIHBuZ193cml0ZV9kZXN0cm95X2luZm8gcHJvdG90eXBlIGZyb20gcG5nLmgKKyAgRWxpbWluYXRlZCBpbmNvcnJlY3QgdXNlIG9mIHdpZHRoX21teCBmcm9tIHBuZ2djY3JkLmMgaW4gcGl4ZWxfYnl0ZXMgPT0gOCBjYXNlCisgIFN0b3BwZWQgYSBkb3VibGUgZnJlZSBvZiBwYWxldHRlLCBoaXN0LCBhbmQgdHJhbnMgd2hlbiBub3QgdXNpbmcgZnJlZV9tZS4KKyAgQWRkZWQgbWFrZWZpbGUuMzJzdW51IGZvciBTdW4gVWx0cmEgMzIgYW5kIG1ha2VmaWxlLjY0c3VudSBmb3IgU3VuIFVsdHJhIDY0LgorICBDb21wdXRlIGJhY2tncm91bmQuZ3JheSBhbmQgYmFja2dyb3VuZF8xLmdyYXkgZXZlbiB3aGVuIGNvbG9yX3R5cGUgaXMgUkdCCisgICAgaW4gY2FzZSBpbWFnZSBnZXRzIHJlZHVjZWQgdG8gZ3JheSBsYXRlciAoSmFzb24gU3VtbWVycykuCisgIEFkZGVkIFBOR18xXzBfWCBtYWNybyB3aGljaCBjYW4gYmUgdXNlZCB0byBidWlsZCBhIDEuMC54LWNvbXBhdGlibGUgbGlicmFyeS4KKyAgQWRkZWQgbWlzc2luZyBQTkdBUEkgdG8gc2V2ZXJhbCBmdW5jdGlvbiBkZWZpbml0aW9ucy4KKyAgQ2hlY2sgZm9yIGludmFsaWQgYml0X2RlcHRoIG9yIGNvbG9yX3R5cGUgaW4gcG5nX2dldF9JSERSKCksIGFuZAorICAgIGNoZWNrIGZvciBtaXNzaW5nIFBMVEUgb3IgSUhEUiBpbiBwbmdfcHVzaF9yZWFkX2NodW5rKCkgKE1hdHRoaWFzIENsYXNlbikuCisgIFJldmlzZWQgaVRYdCBzdXBwb3J0IHRvIGFjY2VwdCBOVUxMIGZvciBsYW5nIGFuZCBsYW5nX2tleS4KKyAgQ29tcHV0ZSBnYW1tYSBmb3IgY29sb3IgY29tcG9uZW50cyBvZiBiYWNrZ3JvdW5kIGV2ZW4gd2hlbiBjb2xvcl90eXBlIGlzIGdyYXkuCisgIFJldmlzZWQgbWFrZWZpbGVzIHRvIHB1dCBwbmcuaCBhbmQgcG5nY29uZi5oIG9ubHkgaW4gJHByZWZpeC9pbmNsdWRlL2xpYnBuZ05OCisgIFJldmlzZWQgbWFrZWZpbGVzIHRvIG1ha2Ugc3ltbGluayB0byBsaWJwbmcuc28uTk4gaW4gYWRkaXRpb24gdG8gbGlicG5nTk4uc28KKyAgUHJldmVudCBwbmdfemFsbG9jKCkgZnJvbSB0cnlpbmcgdG8gbWVtc2V0IG1lbW9yeSB0aGF0IGl0IGZhaWxlZCB0byBhY3F1aXJlLgorICBBZGQgdHlwZWNhc3RzIG9mIFBOR19NQVhfVUlOVCBpbiBwbmdzZXRfY0hSTV9maXhlZCgpIChNYXR0IEhvbGdhdGUpLgorICBFbnN1cmUgdGhhdCB0aGUgcmlnaHQgZnVuY3Rpb24gKHVzZXIgb3IgZGVmYXVsdCkgaXMgdXNlZCB0byBmcmVlIHRoZQorICAgIHBuZ19zdHJ1Y3QgYWZ0ZXIgYW4gZXJyb3IgaW4gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yKCkuCisgIFNhdmUgdGhlIGVieCByZWdpc3RlciBpbiBwbmdnY2NyZC5jIChTYW1pIEZhcmluKQorICBBZGQgIm1lbV9wdHIgPSBwbmdfcHRyLT5tZW1fcHRyIiBpbiBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoKSAoUGF1bCBHYXJkbmVyKS4KKyAgVXBkYXRlZCBtYWtlZmlsZXMgdG8gcHV0IGhlYWRlcnMgaW4gaW5jbHVkZS9saWJwbmcgYW5kIHJlbW92ZSBvbGQgaW5jbHVkZS8qLmguCisgIFJldmlzZWQgZGVzY3JpcHRpb24gb2YgcG5nX3NldF9maWx0ZXIoKSBpbiBsaWJwbmcuMy9saWJwbmcudHh0LgorICBSZXZpc2VkIG1ha2VmaWxlLm5ldGJzZCBhbmQgYWRkZWQgbWFrZWZpbGUubmVOTmJzZCBhbmQgbWFrZWZpbGUuZnJlZWJzZAogCiBTZW5kIGNvbW1lbnRzL2NvcnJlY3Rpb25zL2NvbW1lbmRhdGlvbnMgdG8KIHBuZy1pbXBsZW1lbnRAY2NyYy53dXN0bC5lZHUgb3IgdG8gcmFuZGVnQGFsdW0ucnBpLmVkdQpkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKaW5kZXggZTRiNzVmNC4uZmM2MGQ3ZSAxMDA2NDQKLS0tIGEvQ0hBTkdFUworKysgYi9DSEFOR0VTCkBAIC0xLDMgKzEsNCBAQAorCiBDSEFOR0VTIC0gY2hhbmdlcyBmb3IgbGlicG5nCiAKIHZlcnNpb24gMC4yCkBAIC03MzIsMTAgKzczMywxMSBAQAogdmVyc2lvbiAxLjAuN2JldGExMSBbTWF5IDcsIDIwMDBdCiAgIFJlbW92ZWQgdGhlIG5ldyBQTkdfQ1JFQVRFRF9SRUFEX1NUUlVDVCBhbmQgUE5HX0NSRUFURURfV1JJVEVfU1RSVUNUIG1vZGVzCiAgICAgd2hpY2ggYXJlIG5vIGxvbmdlciB1c2VkLgotICBFbGltaW5hdGVkIHRoZSB0aHJlZSBuZXcgbWVtYmVycyBvZiBwbmdfdGV4dCB3aGVuIFBOR19OT19pVFh0X1NVUFBPUlRFRAotICAgIG9yIFBOR19MRUdBQ1lfU1VQUE9SVEVEIGlzIGRlZmluZWQuCi0gIE1hZGUgUE5HX05PX0lUWFRfU1VQUE9SVEVEIHRoZSBkZWZhdWx0IHNldHRpbmcsIHRvIGF2b2lkIG1lbW9yeSBvdmVycnVuCi0gICAgd2hlbiBvbGQgYXBwbGljYXRpb25zIGZpbGwgdGhlIGluZm9fcHRyLT50ZXh0IHN0cnVjdHVyZSBkaXJlY3RseS4KKyAgRWxpbWluYXRlZCB0aGUgdGhyZWUgbmV3IG1lbWJlcnMgb2YgcG5nX3RleHQgd2hlbiBQTkdfTEVHQUNZX1NVUFBPUlRFRCBpcworICAgIGRlZmluZWQgb3Igd2hlbiBuZWl0aGVyIFBOR19SRUFEX2lUWHRfU1VQUE9SVEVEIG5vciBQTkdfV1JJVEVfaVRYVF9TVVBQT1JURUQKKyAgICBpcyBkZWZpbmVkLgorICBNYWRlIFBOR19OT19SRUFEfFdSSVRFX2lUWHQgdGhlIGRlZmF1bHQgc2V0dGluZywgdG8gYXZvaWQgbWVtb3J5CisgICAgb3ZlcnJ1biB3aGVuIG9sZCBhcHBsaWNhdGlvbnMgZmlsbCB0aGUgaW5mb19wdHItPnRleHQgc3RydWN0dXJlIGRpcmVjdGx5LgogICBBZGRlZCBQTkdBUEkgbWFjcm8sIGFuZCBhZGRlZCBpdCB0byB0aGUgZGVmaW5pdGlvbnMgb2YgYWxsIGV4cG9ydGVkIGZ1bmN0aW9ucy4KICAgUmVsb2NhdGVkIHZlcnNpb24gbWFjcm8gZGVmaW5pdGlvbnMgYWhlYWQgb2YgdGhlIGluY2x1ZGVzIG9mIHpsaWIuaCBhbmQKICAgICBwbmdjb25mLmggaW4gcG5nLmguCkBAIC05MzQsMTMgKzkzNiwxMzggQEAKICAgVGVzdCBmb3IgV2luZG93cyBwbGF0Zm9ybSBpbiBwbmdjb25mLmggd2hlbiBpbmNsdWRpbmcgbWFsbG9jLmggKEVtbWFudWVsIEJsb3QpCiAgIFVwZGF0ZWQgbWFrZWZpbGUuY3lnd2luIGFuZCBoYW5kbGluZyBvZiBDeWd3aW4ncyBBTExfU1RBVElDIGluIHBuZ2NvbmYuaAogICBBZGRlZCBzb21lIG5ldmVyLXRvLWJlLWV4ZWN1dGVkIGNvZGUgaW4gcG5nZ2NjcmQuYyB0byBxdWlldCBjb21waWxlciB3YXJuaW5ncy4KLSAgQnVtcGVkIERMTE5VTSB0byAyLgotICBBZGRlZCBhIGNoZWNrIGZvciBhdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIFBMVEUgaW4gZ3JheXNjYWxlIFBORyBkYXRhc3RyZWFtcy4KICAgRWxpbWluYXRlZCB0aGUgcG5nX2Vycm9yIGFib3V0IGFwcHMgdXNpbmcgcG5nX3JlYWR8d3JpdGVfaW5pdCgpLiAgSW5zdGVhZCwKICAgICBsaWJwbmcgd2lsbCByZWFsbG9jYXRlIHRoZSBwbmdfc3RydWN0IGFuZCBpbmZvX3N0cnVjdCBpZiB0aGV5IGFyZSB0b28gc21hbGwuCi0gICAgVGhpcyBhY2hpZXZlcyBmdXR1cmUgYmluYXJ5IGNvbXBhdGliaWxpdHkgZm9yIG9sZCBhcHBsaWNhdGlvbnMgd3JpdHRlbiBmb3IKKyAgICBUaGlzIHJldGFpbnMgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5IGZvciBvbGQgYXBwbGljYXRpb25zIHdyaXR0ZW4gZm9yCiAgICAgbGlicG5nLTAuODggYW5kIGVhcmxpZXIuCit2ZXJzaW9uIDEuMi4wYmV0YTEgW01heSA2LCAyMDAxXQorICBCdW1wZWQgRExMTlVNIHRvIDIuCisgIFJlLWVuYWJsZWQgUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQgYW5kIGVuYWJsZWQgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorICAgIGJ5IGRlZmF1bHQuCisgIEFkZGVkIHJ1bnRpbWUgc2VsZWN0aW9uIG9mIE1NWCBmZWF0dXJlcy4KKyAgQWRkZWQgcG5nX3NldF9zdHJpcF9lcnJvcl9udW1iZXJzIGZ1bmN0aW9uIGFuZCByZWxhdGVkIG1hY3Jvcy4KK3ZlcnNpb24gMS4yLjBiZXRhMiBbTWF5IDcsIDIwMDFdCisgIEZpbmlzaGVkIG1lcmdpbmcgMS4yLjBiZXRhMSB3aXRoIHZlcnNpb24gMS4wLjExCisgIEFkZGVkIGEgY2hlY2sgZm9yIGF0dGVtcHRzIHRvIHJlYWQgb3Igd3JpdGUgUExURSBpbiBncmF5c2NhbGUgUE5HIGRhdGFzdHJlYW1zLgordmVyc2lvbiAxLjIuMGJldGEzIFtNYXkgMTcsIDIwMDFdCisgIEVuYWJsZWQgdXNlciBtZW1vcnkgZnVuY3Rpb24gYnkgZGVmYXVsdC4KICAgTW9kaWZpZWQgcG5nX2NyZWF0ZV9zdHJ1Y3Qgc28gaXQgcGFzc2VzIHVzZXIgbWVtX3B0ciB0byB1c2VyIG1lbW9yeSBhbGxvY2F0b3IuCisgIEluY3JlYXNlZCBwbmdfbW5nX2ZlYXR1cmVzIGZsYWcgZnJvbSBwbmdfYnl0ZSB0byBwbmdfdWludF8zMi4KKyAgQnVtcGVkIHNoYXJlZC1saWJyYXJ5IChzby1udW1iZXIpIGFuZCBkbGwtbnVtYmVyIHRvIDMuCit2ZXJzaW9uIDEuMi4wYmV0YTQgW0p1bmUgMjMsIDIwMDFdCisgIENoZWNrIGZvciBtaXNzaW5nIHByb2ZpbGUgbGVuZ3RoIGZpZWxkIGluIGlDQ1AgY2h1bmsgYW5kIGZyZWUgY2h1bmtfZGF0YQorICAgICBpbiBjYXNlIG9mIHRydW5jYXRlZCBpQ0NQIGNodW5rLgorICBCdW1wZWQgc2hhcmVkLWxpYnJhcnkgbnVtYmVyIHRvIDMgaW4gbWFrZWZpbGUuc2dpIGFuZCBtYWtlZmlsZS5zZ2djYworICBCdW1wZWQgZGxsLW51bWJlciBmcm9tIDIgdG8gMyBpbiBtYWtlZmlsZS5jeWd3aW4KKyAgUmV2aXNlZCBjb250cmliL2dyZWdib29rL3JwbmcqLXguYyB0byBhdm9pZCBhIG1lbW9yeSBsZWFrIGFuZCB0byBleGl0IGNsZWFubHkKKyAgICAgaWYgdXNlciBhdHRlbXB0cyB0byBydW4gaXQgb24gYW4gOC1iaXQgZGlzcGxheS4KKyAgVXBkYXRlZCBjb250cmliL2dyZWdib29rCisgIFVzZSBwbmdfbWFsbG9jIGluc3RlYWQgb2YgcG5nX3phbGxvYyB0byBhbGxvY2F0ZSBwYWxldHRlIGluIHBuZ3NldC5jCisgIFVwZGF0ZWQgbWFrZWZpbGUuaWJtYworICBBZGRlZCBzb21lIHR5cGVjYXN0cyB0byBlbGltaW5hdGUgZ2NjIDMuMCB3YXJuaW5ncy4gIENoYW5nZWQgcHJvdG90eXBlcworICAgICBvZiBwbmdfd3JpdGVfb0ZGUyB3aWR0aCBhbmQgaGVpZ2h0IGZyb20gcG5nX3VpbnRfMzIgdG8gcG5nX2ludF8zMi4KKyAgVXBkYXRlZCBleGFtcGxlLmMKKyAgUmV2aXNlZCBwcm90b3R5cGVzIGZvciBwbmdfZGVidWdfbWFsbG9jIGFuZCBwbmdfZGVidWdfZnJlZSBpbiBwbmd0ZXN0LmMKK3ZlcnNpb24gMS4yLjBiZXRhNSBbQXVndXN0IDgsIDIwMDFdCisgIFJldmlzZWQgY29udHJpYi9ncmVnYm9vaworICBSZXZpc2VkIG1ha2VmaWxlLmdjbW14CisgIFJldmlzZWQgcG5nZ2NjcmQuYyB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgc29tZSB0aHJlYWQtdW5zYWZlIGNvZGUgb25seQorICAgICB3aGVuIFBOR19USFJFQURfVU5TQUZFX09LIGlzIGRlZmluZWQuCisgIEFkZGVkIHRlc3RzIHRvIHByZXZlbnQgcG5nd3V0aWwuYyBmcm9tIHdyaXRpbmcgYSBiS0dEIG9yIHRSTlMgY2h1bmsgd2l0aAorICAgICB2YWx1ZSBleGNlZWRpbmcgMl5iaXRfZGVwdGgtMQorICBSZXZpc2VkIG1ha2VmaWxlLnNnaSBhbmQgbWFrZWZpbGUuc2dnY2MKKyAgUmVwbGFjZWQgY2FsbHMgdG8gZnByaW50ZihzdGRlcnIsLi4uKSB3aXRoIHBuZ193YXJuaW5nKCkgaW4gcG5nZ2NjcmQuYworICBSZW1vdmVkIHJlc3RyaWN0aW9uIHRoYXQgZG9faW52ZXJ0X21vbm8gb25seSBvcGVyYXRlIG9uIDEtYml0IG9wYXF1ZSBmaWxlcwordmVyc2lvbiAxLjIuMCBbU2VwdGVtYmVyIDEsIDIwMDFdCisgIENoYW5nZWQgYSBwbmdfd2FybmluZygpIHRvIHBuZ19kZWJ1ZygpIGluIHBuZ2djY3JkLmMKKyAgRml4ZWQgY29udHJpYi9ncmVnYm9vay9ycG5nLXguYywgcnBuZzIteC5jIHRvIGF2b2lkIGNyYXNoIHdpdGggWEZyZWVHQygpLgordmVyc2lvbiAxLjIuMWJldGExIFtPY3RvYmVyIDE5LCAyMDAxXQorICBSZXZpc2VkIG1ha2VmaWxlLnN0ZCBpbiBjb250cmliL3BuZ21pbnVzCisgIEluY2x1ZGUgYmFja2dyb3VuZF8xIGluIHBuZ19zdHJ1Y3QgcmVnYXJkbGVzcyBvZiBnYW1tYSBzdXBwb3J0LgorICBSZXZpc2VkIG1ha2VmaWxlLm5ldGJzZCBhbmQgbWFrZWZpbGUubWFjb3N4LCBhZGRlZCBtYWtlZmlsZS5kYXJ3aW4uCisgIFJldmlzZWQgZXhhbXBsZS5jIHRvIHByb3ZpZGUgbW9yZSBkZXRhaWxzIGFib3V0IHVzaW5nIHJvd19jYWxsYmFjaygpLgordmVyc2lvbiAxLjIuMWJldGEyIFtPY3RvYmVyIDI1LCAyMDAxXQorICBBZGRlZCB0eXBlIGNhc3QgdG8gZWFjaCBOVUxMIGFwcGVhcmluZyBpbiBhIGZ1bmN0aW9uIGNhbGwsIGV4Y2VwdCBmb3IKKyAgICBXSU5DRSBmdW5jdGlvbnMuCisgIEFkZGVkIG1ha2VmaWxlLnNvOS4KK3ZlcnNpb24gMS4yLjFiZXRhMyBbT2N0b2JlciAyNywgMjAwMV0KKyAgUmVtb3ZlZCB0eXBlIGNhc3RzIGZyb20gYWxsIE5VTExzLgorICBTaW1wbGlmaWVkIHBuZ19jcmVhdGVfc3RydWN0XzIoKS4KK3ZlcnNpb24gMS4yLjFiZXRhNCBbTm92ZW1iZXIgNywgMjAwMV0KKyAgUmV2aXNlZCBwbmdfY3JlYXRlX2luZm9fc3RydWN0KCkgYW5kIHBuZ19jcmVhdF9zdHJ1Y3RfMigpLgorICBBZGRlZCBlcnJvciBtZXNzYWdlIGlmIHBuZ193cml0ZV9pbmZvKCkgd2FzIG9taXR0ZWQuCisgIFR5cGUgY2FzdCBOVUxMcyBhcHBlYXJpbmcgaW4gZnVuY3Rpb24gY2FsbHMgd2hlbiBfTk9fUFJPVE8gb3IKKyAgICBQTkdfVFlQRUNBU1RfTlVMTCBpcyBkZWZpbmVkLgordmVyc2lvbiAxLjIuMXJjMSBbTm92ZW1iZXIgMjQsIDIwMDFdCisgIFR5cGUgY2FzdCBOVUxMcyBhcHBlYXJpbmcgaW4gZnVuY3Rpb24gY2FsbHMgZXhjZXB0IHdoZW4gUE5HX05PX1RZUEVDQVNUX05VTEwKKyAgICBpcyBkZWZpbmVkLgorICBDaGFuZ2VkIHR5cGVjYXN0IG9mICJzaXplIiBhcmd1bWVudCB0byBwbmdfc2l6ZV90IGluIHBuZ21lbS5jIGNhbGxzIHRvCisgICAgdGhlIHVzZXIgbWFsbG9jX2ZuLCB0byBhZ3JlZSB3aXRoIHRoZSBwcm90b3R5cGUgaW4gcG5nLmgKKyAgQWRkZWQgYSBwb3AvcHVzaCBvcGVyYXRpb24gdG8gcG5nZ2NjcmQuYywgdG8gcHJlc2VydmUgRWZsYWcgKE1heGltIFNvYm9sZXYpCisgIFVwZGF0ZWQgbWFrZWZpbGUuc2dpIHRvIHJlY29nbml6ZSBMSUJQQVRIIGFuZCBJTkNQQVRILgorICBVcGRhdGVkIHZhcmlvdXMgbWFrZWZpbGVzIHNvICJtYWtlIGNsZWFuIiBkb2VzIG5vdCByZW1vdmUgcHJldmlvdXMgbWFqb3IKKyAgICB2ZXJzaW9uIG9mIHRoZSBzaGFyZWQgbGlicmFyeS4KK3ZlcnNpb24gMS4yLjFyYzIgW0RlY2VtYmVyIDQsIDIwMDFdCisgIEFkZGVkIGEgcG9wL3B1c2ggb3BlcmF0aW9uIHRvIHBuZ3ZjcmQuYywgdG8gcHJlc2VydmUgRWZsYWcuCisgIEFsd2F5cyBhbGxvY2F0ZSAyNTYtZW50cnkgaW50ZXJuYWwgcGFsZXR0ZSwgaGlzdCwgYW5kIHRyYW5zIGFycmF5cywgdG8KKyAgICBhdm9pZCBvdXQtb2YtYm91bmRzIG1lbW9yeSByZWZlcmVuY2UgY2F1c2VkIGJ5IGludmFsaWQgUE5HIGRhdGFzdHJlYW1zLgorICBBZGRlZCBhIGNoZWNrIGZvciBwcmVmaXhfbGVuZ3RoID4gZGF0YV9sZW5ndGggaW4gaUNDUCBjaHVuayBoYW5kbGVyLgordmVyc2lvbiAxLjIuMSBbRGVjZW1iZXIgNywgMjAwMV0KKyAgTm9uZS4KK3ZlcnNpb24gMS4yLjJiZXRhMSBbRmVicnVhcnkgMjIsIDIwMDJdCisgIEZpeGVkIGEgYnVnIHdpdGggcmVhZGluZyB0aGUgbGVuZ3RoIG9mIGlDQ1AgcHJvZmlsZXMgKExhcnJ5IFJlZXZlcykuCisgIFJldmlzZWQgbWFrZWZpbGUubGludXgsIG1ha2VmaWxlLmdjbW14LCBhbmQgbWFrZWZpbGUuc2dpIHRvIGdlbmVyYXRlCisgICAgbGlicG5nLmEsIGxpYnBuZzEyLnNvIChub3QgbGlicG5nLnNvLjMpLCBhbmQgbGlicG5nMTIvcG5nLmgKKyAgUmV2aXNlZCBtYWtlZmlsZS5kYXJ3aW4gdG8gcmVtb3ZlICItdW5kZWZpbmVkIHN1cHByZXNzIiBvcHRpb24uCisgIEFkZGVkIGNoZWNrcyBmb3IgZ2FtbWEgYW5kIGNocm9tYXRpY2l0eSB2YWx1ZXMgb3ZlciAyMTQ3NC44Mywgd2hpY2ggZXhjZWVkCisgICAgdGhlIGxpbWl0IGZvciBQTkcgdW5zaWduZWQgMzItYml0IGludGVnZXJzIHdoZW4gZW5jb2RlZC4KKyAgUmV2aXNlZCBjYWxscyB0byBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KCkgYW5kIHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0KCkKKyAgICBmb3Igc2ltcGxlciBkZWJ1Z2dpbmcuCisgIFJldmlzZWQgcG5nX3phbGxvYygpIHNvIHpsaWIgaGFuZGxlcyBlcnJvcnMgKHVzZXMgUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKQordmVyc2lvbiAxLjIuMmJldGEyIFtGZWJydWFyeSAyMywgMjAwMl0KKyAgQ2hlY2sgY2h1bmtfbGVuZ3RoIGFuZCBpZGF0X3NpemUgZm9yIGludmFsaWQgKG92ZXIgUE5HX01BWF9VSU5UKSBsZW5ndGhzLgorICBDaGVjayBmb3IgaW52YWxpZCBpbWFnZSBkaW1lbnNpb25zIGluIHBuZ19nZXRfSUhEUi4KKyAgQWRkZWQgbWlzc2luZyAiZmk7IiBpbiB0aGUgaW5zdGFsbCB0YXJnZXQgb2YgdGhlIFNHSSBtYWtlZmlsZXMuCisgIEFkZGVkIGluc3RhbGwtc3RhdGljIHRvIGFsbCBtYWtlZmlsZXMgdGhhdCBtYWtlIHNoYXJlZCBsaWJyYXJpZXMuCisgIEFsd2F5cyBkbyBnYW1tYSBjb21wZW5zYXRpb24gd2hlbiBpbWFnZSBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQuCit2ZXJzaW9uIDEuMi4yYmV0YTMgW01hcmNoIDcsIDIwMDJdCisgIENvbXB1dGUgYmFja2dyb3VuZC5ncmF5IGFuZCBiYWNrZ3JvdW5kXzEuZ3JheSBldmVuIHdoZW4gY29sb3JfdHlwZSBpcyBSR0IKKyAgICBpbiBjYXNlIGltYWdlIGdldHMgcmVkdWNlZCB0byBncmF5IGxhdGVyLgorICBNb2RpZmllZCBzaGFyZWQtbGlicmFyeSBtYWtlZmlsZXMgdG8gaW5zdGFsbCBwa2djb25maWcvbGlicG5nTk4ucGMuCisgIEV4cG9ydCAod2l0aCBQTkdBUEkpIHBuZ196YWxsb2MsIHBuZ196ZnJlZSwgYW5kIHBuZ19oYW5kbGVfYXNfdW5rbm93bgorICBSZW1vdmVkIHVudXNlZCBwbmdfd3JpdGVfZGVzdHJveV9pbmZvIHByb3RvdHlwZSBmcm9tIHBuZy5oCisgIEVsaW1pbmF0ZWQgaW5jb3JyZWN0IHVzZSBvZiB3aWR0aF9tbXggZnJvbSBwbmdnY2NyZC5jIGluIHBpeGVsX2J5dGVzID09IDggY2FzZQorICBBZGRlZCBpbnN0YWxsLXNoYXJlZCB0YXJnZXQgdG8gYWxsIG1ha2VmaWxlcyB0aGF0IG1ha2Ugc2hhcmVkIGxpYnJhcmllcy4KKyAgU3RvcHBlZCBhIGRvdWJsZSBmcmVlIG9mIHBhbGV0dGUsIGhpc3QsIGFuZCB0cmFucyB3aGVuIG5vdCB1c2luZyBmcmVlX21lLgorICBBZGRlZCBtYWtlZmlsZS4zMnN1bnUgZm9yIFN1biBVbHRyYSAzMiBhbmQgbWFrZWZpbGUuNjRzdW51IGZvciBTdW4gVWx0cmEgNjQuCit2ZXJzaW9uIDEuMi4yYmV0YTQgW01hcmNoIDgsIDIwMDJdCisgIENvbXB1dGUgYmFja2dyb3VuZC5ncmF5IGFuZCBiYWNrZ3JvdW5kXzEuZ3JheSBldmVuIHdoZW4gY29sb3JfdHlwZSBpcyBSR0IKKyAgICBpbiBjYXNlIGltYWdlIGdldHMgcmVkdWNlZCB0byBncmF5IGxhdGVyIChKYXNvbiBTdW1tZXJzKS4KKyAgUmVsb2NhdGVkIGEgbWlzcGxhY2VkIC9iaW4vcm0gaW4gdGhlICJpbnN0YWxsLXNoYXJlZCIgbWFrZWZpbGUgdGFyZ2V0cworICBBZGRlZCBQTkdfMV8wX1ggbWFjcm8gd2hpY2ggY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSAxLjAueC1jb21wYXRpYmxlIGxpYnJhcnkuCit2ZXJzaW9uIDEuMi4yYmV0YTUgW01hcmNoIDI2LCAyMDAyXQorICBBZGRlZCBtaXNzaW5nIFBOR0FQSSB0byBzZXZlcmFsIGZ1bmN0aW9uIGRlZmluaXRpb25zLgorICBDaGVjayBmb3IgaW52YWxpZCBiaXRfZGVwdGggb3IgY29sb3JfdHlwZSBpbiBwbmdfZ2V0X0lIRFIoKSwgYW5kCisgICAgY2hlY2sgZm9yIG1pc3NpbmcgUExURSBvciBJSERSIGluIHBuZ19wdXNoX3JlYWRfY2h1bmsoKSAoTWF0dGhpYXMgQ2xhc2VuKS4KKyAgUmV2aXNlZCBpVFh0IHN1cHBvcnQgdG8gYWNjZXB0IE5VTEwgZm9yIGxhbmcgYW5kIGxhbmdfa2V5LgorICBDb21wdXRlIGdhbW1hIGZvciBjb2xvciBjb21wb25lbnRzIG9mIGJhY2tncm91bmQgZXZlbiB3aGVuIGNvbG9yX3R5cGUgaXMgZ3JheS4KKyAgQ2hhbmdlZCAiKCkiIHRvICJ7fSIgaW4gc2NyaXB0cy9saWJwbmcucGMuaW4uCisgIFJldmlzZWQgbWFrZWZpbGVzIHRvIHB1dCBwbmcuaCBhbmQgcG5nY29uZi5oIG9ubHkgaW4gJHByZWZpeC9pbmNsdWRlL2xpYnBuZ05OCisgIFJldmlzZWQgbWFrZWZpbGVzIHRvIG1ha2Ugc3ltbGluayB0byBsaWJwbmcuc28uTk4gaW4gYWRkaXRpb24gdG8gbGlicG5nTk4uc28KK3ZlcnNpb24gMS4yLjJiZXRhNiBbTWFyY2ggMzEsIDIwMDJdCit2ZXJzaW9uIDEuMC4xM2JldGExIFtNYXJjaCAzMSwgMjAwMl0KKyAgUHJldmVudCBwbmdfemFsbG9jKCkgZnJvbSB0cnlpbmcgdG8gbWVtc2V0IG1lbW9yeSB0aGF0IGl0IGZhaWxlZCB0byBhY3F1aXJlLgorICBBZGQgdHlwZWNhc3RzIG9mIFBOR19NQVhfVUlOVCBpbiBwbmdzZXRfY0hSTV9maXhlZCgpIChNYXR0IEhvbGdhdGUpLgorICBFbnN1cmUgdGhhdCB0aGUgcmlnaHQgZnVuY3Rpb24gKHVzZXIgb3IgZGVmYXVsdCkgaXMgdXNlZCB0byBmcmVlIHRoZQorICAgIHBuZ19zdHJ1Y3QgYWZ0ZXIgYW4gZXJyb3IgaW4gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yKCkuCit2ZXJzaW9uIDEuMi4ycmMxIFtBcHJpbCA3LCAyMDAyXQordmVyc2lvbiAxLjAuMTNyYzEgW0FwcmlsIDcsIDIwMDJdCisgIFNhdmUgdGhlIGVieCByZWdpc3RlciBpbiBwbmdnY2NyZC5jIChTYW1pIEZhcmluKQorICBBZGQgIm1lbV9wdHIgPSBwbmdfcHRyLT5tZW1fcHRyIiBpbiBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoKSAoUGF1bCBHYXJkbmVyKS4KKyAgVXBkYXRlZCBtYWtlZmlsZXMgdG8gcHV0IGhlYWRlcnMgaW4gaW5jbHVkZS9saWJwbmcgYW5kIHJlbW92ZSBvbGQgaW5jbHVkZS8qLmguCit2ZXJzaW9uIDEuMC4xMyBbQXByaWwgMTUsIDIwMDJdCisgIFJldmlzZWQgZGVzY3JpcHRpb24gb2YgcG5nX3NldF9maWx0ZXIoKSBpbiBsaWJwbmcuMy9saWJwbmcudHh0LgorICBSZXZpc2VkIG1ha2VmaWxlLm5ldGJzZCBhbmQgYWRkZWQgbWFrZWZpbGUubmVOTmJzZCBhbmQgbWFrZWZpbGUuZnJlZWJzZAogCiBTZW5kIGNvbW1lbnRzL2NvcnJlY3Rpb25zL2NvbW1lbmRhdGlvbnMgdG8KIHBuZy1pbXBsZW1lbnRAY2NyYy53dXN0bC5lZHUgb3IgdG8gcmFuZGVnQGFsdW0ucnBpLmVkdQpkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggNTgxMTFjZC4uMjA3MDU0OSAxMDA2NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC0xLDUgKzEsNSBAQAogCi1JbnN0YWxsaW5nIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCitJbnN0YWxsaW5nIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAKIEJlZm9yZSBpbnN0YWxsaW5nIGxpYnBuZywgeW91IG11c3QgZmlyc3QgaW5zdGFsbCB6bGliLiAgemxpYgogY2FuIHVzdWFsbHkgYmUgZm91bmQgd2hlcmV2ZXIgeW91IGdvdCBsaWJwbmcuICB6bGliIGNhbiBiZQpAQCAtMTAsNyArMTAsNyBAQAogdmVyc2lvbiBvZiB6bGliIHRoYXQncyBpbnN0YWxsZWQuCiAKIFlvdSBjYW4gcmVuYW1lIHRoZSBkaXJlY3RvcmllcyB0aGF0IHlvdSBkb3dubG9hZGVkICh0aGV5Ci1taWdodCBiZSBjYWxsZWQgImxpYnBuZy0xLjAuMTJiZXRhMSIgb3IgImxwbmcxMDkiIGFuZCAiemxpYi0xLjEuMyIKK21pZ2h0IGJlIGNhbGxlZCAibGlicG5nLTEuMC4xMyIgb3IgImxwbmcxMDkiIGFuZCAiemxpYi0xLjEuMyIKIG9yICJ6bGliMTEzIikgc28gdGhhdCB5b3UgaGF2ZSBkaXJlY3RvcmllcyBjYWxsZWQgInpsaWIiIGFuZCAibGlicG5nIi4KIAogWW91ciBkaXJlY3Rvcnkgc3RydWN0dXJlIHNob3VsZCBsb29rIGxpa2UgdGhpczoKQEAgLTMxLDcgKzMxLDggQEAKICAgICAgICAgICAgICBiZW9zCiAgICAgICAgICAgICAgYm9ybGFuZAogICAgICAgICAgICAgIG1zdmMKLSAgICAgICAgICAgICB3aW5jZQorICAgICAgICAgICAgIG5ldHdhcmUudHh0CisgICAgICAgICAgICAgd2luY2UudHh0CiAgICAgICAgICAgc2NyaXB0cwogICAgICAgICAgICAgIG1ha2VmaWxlLioKICAgICAgICAgICBwbmd0ZXN0LnBuZwpAQCAtNDgsOSArNDksMTIgQEAKIGVuZGluZ3MpIGFuZCB6aXAgKERPUyBzdHlsZSBsaW5lIGVuZGluZ3MpIGZvcm1hdHMuCiAKIElmIHlvdSBhcmUgYnVpbGRpbmcgbGlicG5nIHdpdGggTVNWQywgeW91IGNhbiBlbnRlciB0aGUgbGlicG5nXG1zdmMgZGlyZWN0b3J5Ci1hbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gbXN2Y1xSRUFETUUudHh0LiAgWW91IGNhbiBidWlsZCBsaWJwbmcgZm9yCi1XaW5kb3dzQ0UgYnkgZW50ZXJpbmcgdGhlIGxpYnBuZ1x3aW5jZSBkaXJlY3RvcnkgYW5kIGZvbGxvd2luZyB0aGUKLWluc3RydWN0aW9ucyBpbiB0aGUgUkVBRE1FKiBmaWxlcy4KK2FuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiBtc3ZjXFJFQURNRS50eHQuCisKK1lvdSBjYW4gYnVpbGQgbGlicG5nIGZvciBXaW5kb3dzQ0UgYnkgZW50ZXJpbmcgdGhlIGRvd25sb2FkaW5nIGFuZCBpbnN0YWxsaW5nCit0aGUgbGlicG5nXHdpbmNlIGRpcmVjdG9yeSBhcyBpbnN0cnVjdGVkIGluIHRoZSBwcm9qZWN0c1x3aW5jZS50eHQgZmlsZSwgYW5kCit0aGVuIGZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUqIGZpbGVzLiAgU2ltaWxhcmx5LCB5b3UgY2FuCitidWlsZCBsaWJwbmcgZm9yIE5ldHdhcmUgYXMgaW5zdHJ1Y3RlZCBpbiBwcm9qZWN0c1xuZXR3YXJlLnR4dC4KIAogRWxzZSBlbnRlciB0aGUgemxpYiBkaXJlY3RvcnkgYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHpsaWIvUkVBRE1FLAogdGhlbiBjb21lIGJhY2sgaGVyZSBhbmQgY2hvb3NlIHRoZSBhcHByb3ByaWF0ZSBtYWtlZmlsZS5zeXMgaW4gdGhlIHNjcmlwdHMKQEAgLTYwLDggKzY0LDggQEAKIGluY2x1ZGUKIAogIG1ha2VmaWxlLnN0ZCAgICAgID0+ICBHZW5lcmljIFVOSVggbWFrZWZpbGUgKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKLSBtYWtlZmlsZS5saW51eCAgICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjEyYmV0YTEpCi0gbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExLAorIG1ha2VmaWxlLmxpbnV4ICAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcxMC5zby4wLjEuMC4xMykKKyBtYWtlZmlsZS5nY21teCAgICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgbGlicG5nMTAuc28uMC4xLjAuMTMsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgYXNzZW1ibGVyIGNvZGUgdHVuZWQgZm9yIEludGVsIE1NWCBwbGF0Zm9ybSkKICBtYWtlZmlsZS5nY2MgICAgICA9PiAgR2VuZXJpYyBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICBtYWtlZmlsZS5rbnIgICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aApAQCAtNjksNiArNzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBmdHA6Ly9mdHAuY3Mud2lzYy5lZHUvZ2hvc3QpCiAgbWFrZWZpbGUuYWl4ICAgICAgPT4gIEFJWCBtYWtlZmlsZQogIG1ha2VmaWxlLmN5Z3dpbiAgID0+ICBDeWd3aW4vZ2NjIG1ha2VmaWxlCisgbWFrZWZpbGUuZGFyd2luICAgPT4gIERhcndpbiBtYWtlZmlsZQogIG1ha2VmaWxlLmRlYyAgICAgID0+ICBERUMgQWxwaGEgVU5JWCBtYWtlZmlsZQogIG1ha2VmaWxlLmhwZ2NjICAgID0+ICBIUFVYIG1ha2VmaWxlIHVzaW5nIGdjYwogIG1ha2VmaWxlLmhwdXggICAgID0+ICBIUFVYICgxMC4yMCBhbmQgMTEuMDApIG1ha2VmaWxlCkBAIC03NywxMCArODIsMTQgQEAKICBsaWJwbmcuaWNjICAgICAgICA9PiAgUHJvamVjdCBmaWxlIGZvciBJQk0gVmlzdWFsQWdlL0MrKyB2ZXJzaW9uIDQuMCBvciBsYXRlcgogIG1ha2VmaWxlLm1hY29zeCAgID0+ICBNQUNPUyBYIE1ha2VmaWxlCiAgbWFrZWZpbGUubmV0YnNkICAgPT4gIE5ldEJTRC9jYyBtYWtlZmlsZSwgdXNlcyBQTkdHQ0NSRAorIG1ha2VmaWxlLm9wZW5ic2QgID0+ICBPcGVuQlNEIG1ha2VmaWxlCiAgbWFrZWZpbGUuc2dpICAgICAgPT4gIFNpbGljb24gR3JhcGhpY3MgSVJJWCBtYWtlZmlsZSAoY2MsIGNyZWF0ZXMgc3RhdGljIGxpYikKLSBtYWtlZmlsZS5zZ2djYyAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExKQorIG1ha2VmaWxlLnNnZ2NjICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nMTAuc28uMC4xLjAuMTMpCiAgbWFrZWZpbGUuc3Vub3MgICAgPT4gIFN1biBtYWtlZmlsZQotIG1ha2VmaWxlLnNvbGFyaXMgID0+ICBTb2xhcmlzIDIuWCBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExKQorIG1ha2VmaWxlLnNvbGFyaXMgID0+ICBTb2xhcmlzIDIuWCBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZzEwLnNvLjAuMS4wLjEzKQorIG1ha2VmaWxlLnNvOSAgICAgID0+ICBTb2xhcmlzIDkgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcxMC5zby4wLjEuMC4xMykKKyBtYWtlZmlsZS4zMnN1bnUgICA9PiAgU3VuIFVsdHJhIDMyLWJpdCBtYWtlZmlsZQorIG1ha2VmaWxlLjY0c3VudSAgID0+ICBTdW4gVWx0cmEgNjQtYml0IG1ha2VmaWxlCiAgbWFrZWZpbGUuc2NvICAgICAgPT4gIEZvciBTQ08gT1NyNSAgRUxGIGFuZCBVbml4d2FyZSA3IHdpdGggTmF0aXZlIGNjCiAgbWFrZWZpbGUubWlwcyAgICAgPT4gIE1JUFMgbWFrZWZpbGUKICBtYWtlZmlsZS5hY29ybiAgICA9PiAgQWNvcm4gbWFrZWZpbGUKZGlmZiAtLWdpdCBhL0tOT1dOQlVHIGIvS05PV05CVUcKaW5kZXggZDU5NmRlYi4uNDBjOThiNiAxMDA2NDQKLS0tIGEvS05PV05CVUcKKysrIGIvS05PV05CVUcKQEAgLTEsNyArMSw5IEBACiAKLUtub3duIGJ1Z3MgaW4gbGlicG5nLTEuMC4xMQorS25vd24gYnVncyBpbiBsaWJwbmcgdmVyc2lvbiAxLjAuMTMKIAogMS4gQXByaWwgMjIsIDIwMDE6IHBuZ2djY3JkLmMgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gY3Jhc2ggb24gTmV0QlNEIHdoZW4KICAgIHJlYWRpbmcgaW50ZXJsYWNlZCBQTkcgZmlsZXMsIHdoZW4gYXNzZW1ibGVyIGNvZGUgaXMgZW5hYmxlZC4KIAotICAgU1RBVFVTOiBVbmRlciBpbnZlc3RpZ2F0aW9uLgorICAgU1RBVFVTOiBVbmRlciBpbnZlc3RpZ2F0aW9uLiAgVGhlIGNoYW5nZSB0byBwbmdnY2NyZC5jIGluIGxpYnBuZy0xLjIuMQorICAgZml4ZWQgYSBwcm9ibGVtIHVuZGVyIEZyZWVCU0QgYnV0IG5vdCB0aGUgcHJvYmxlbSB3aXRoIE5ldEJTRC4KKwpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggZTVlOWI0YS4uOTAxMWJiYSAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC04LDggKzgsOCBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjEyYmV0YTEsIE1heSAxNCwgMjAwMSwgYXJlCi1Db3B5cmlnaHQgKGMpIDIwMDAsIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCitsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAxLjAuMTMsIEFwcmlsIDE1LCAyMDAyLCBhcmUKK0NvcHlyaWdodCAoYykgMjAwMC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogYW5kIGFyZSBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwogCkBAIC03MywxMSArNzMsMTEgQEAKIAogMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvdXJjZSBjb2RlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkLgogCi0yLiBBbHRlcmVkIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCBhbmQKLSAgIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb3VyY2UuCisyLiBBbHRlcmVkIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCBhbmQgbXVzdCBub3QKKyAgIGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb3VyY2UuCiAKLTMuIFRoaXMgQ29weXJpZ2h0IG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tCi0gICBhbnkgc291cmNlIG9yIGFsdGVyZWQgc291cmNlIGRpc3RyaWJ1dGlvbi4KKzMuIFRoaXMgQ29weXJpZ2h0IG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueQorICAgc291cmNlIG9yIGFsdGVyZWQgc291cmNlIGRpc3RyaWJ1dGlvbi4KIAogVGhlIENvbnRyaWJ1dGluZyBBdXRob3JzIGFuZCBHcm91cCA0MiwgSW5jLiBzcGVjaWZpY2FsbHkgcGVybWl0LCB3aXRob3V0CiBmZWUsIGFuZCBlbmNvdXJhZ2UgdGhlIHVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGFzIGEgY29tcG9uZW50IHRvCkBAIC05OSw0ICs5OSw0IEBACiAKIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogcmFuZGVnQGFsdW0ucnBpLmVkdQotTWF5IDE0LCAyMDAxCitBcHJpbCAxNSwgMjAwMgpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDZjODNmMzMuLjk0NGMzZjAgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi1SRUFETUUgZm9yIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMSAoc2hhcmVkIGxpYnJhcnkgMi4xKQorUkVBRE1FIGZvciBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIgKHNoYXJlZCBsaWJyYXJ5IDIuMSkKIFNlZSB0aGUgbm90ZSBhYm91dCB2ZXJzaW9uIG51bWJlcnMgbmVhciB0aGUgdG9wIG9mIHBuZy5oCiAKIFNlZSBJTlNUQUxMIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGluc3RhbGwgbGlicG5nLgpAQCAtMTc3LDE1ICsxNzcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgemxpYgogICAgICAgIG1zdmMgICAgICAgICAgICAgPT4gIENvbnRhaW5zIGEgTWljcm9zb2Z0IFZpc3VhbCBDKysgKE1TVkMpIHdvcmtzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZGluZyBsaWJwbmcgYW5kIHpsaWIKLSAgICAgICB3aW5jZSAgICAgICAgICAgID0+ICBDb250YWlucyBhIE1pY3Jvc29mdCBWaXN1YWwgQysrIChXaW5kb3dzIENEIFRvb2xraXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlIGZvciBidWlsZGluZyBsaWJwbmcgYW5kIHpsaWIgb24gV2luZG93c0NFCisgICAgICAgbmV0d2FyZS50eHQgICAgICA9PiAgQ29udGFpbnMgaW5zdHJ1Y3Rpb25zIGZvciBkb3dubG9hZGluZyBhIHNldCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgZmlsZXMgZm9yIGJ1aWxkaW5nIGxpYnBuZyBhbmQgemxpYiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdhcmUuCisgICAgICAgd2luY2UudHh0ICAgICAgICA9PiAgQ29udGFpbnMgaW5zdHJ1Y3Rpb25zIGZvciBkb3dubG9hZGluZyBhIE1pY3Jvc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc3VhbCBDKysgKFdpbmRvd3MgQ0QgVG9vbGtpdCkgd29ya3NwYWNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGxpYnBuZyBhbmQgemxpYiBvbiBXaW5kb3dzQ0UKICAgICAgIHNjcmlwdHMgICAgICAgPT4gIERpcmVjdG9yeSBjb250YWluaW5nIHNjcmlwdHMgZm9yIGJ1aWxkaW5nIGxpYnBuZzoKICAgICAgICBkZXNjcmlwLm1tcyAgICAgID0+ICBWTVMgbWFrZWZpbGUgZm9yIE1NUyBvciBNTUsKICAgICAgICBtYWtlZmlsZS5zdGQgICAgID0+ICBHZW5lcmljIFVOSVggbWFrZWZpbGUgKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICAgICAgICBtYWtlZmlsZS5saW51eCAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2MsIGNyZWF0ZXMgbGlicG5nMTAuc28uMC4xLjAuMTMpCiAgICAgICAgbWFrZWZpbGUuZ2NtbXggICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJwbmcuc28uMi4xLjAuMTJiZXRhMSwgdXNlcyBhc3NlbWJsZXIgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBuZzEwLnNvLjAuMS4wLjEzLCB1c2VzIGFzc2VtYmxlciBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVuZWQgZm9yIEludGVsIE1NWCBwbGF0Zm9ybSkKICAgICAgICBtYWtlZmlsZS5nY2MgICAgID0+ICBHZW5lcmljIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgc3RhdGljIGxpYnBuZy5hKQogICAgICAgIG1ha2VmaWxlLmtuciAgICAgPT4gIEFyY2hhaWMgVU5JWCBNYWtlZmlsZSB0aGF0IGNvbnZlcnRzIGZpbGVzIHdpdGgKQEAgLTE5Myw2ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0cDovL2Z0cC5jcy53aXNjLmVkdS9naG9zdCkKICAgICAgICBtYWtlZmlsZS5haXggICAgID0+ICBBSVggbWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5jeWd3aW4gID0+ICBDeWd3aW4vZ2NjIG1ha2VmaWxlCisgICAgICAgbWFrZWZpbGUuZGFyd2luICA9PiAgRGFyd2luIG1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUuZGVjICAgICA9PiAgREVDIEFscGhhIFVOSVggbWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5ocGdjYyAgID0+ICBIUFVYIG1ha2VmaWxlIHVzaW5nIGdjYwogICAgICAgIG1ha2VmaWxlLmhwdXggICAgPT4gIEhQVVggKDEwLjIwIGFuZCAxMS4wMCkgbWFrZWZpbGUKQEAgLTIwMSwxMSArMjA2LDE2IEBACiAgICAgICAgbGlicG5nLmljYyAgICAgICA9PiAgUHJvamVjdCBmaWxlLCBJQk0gVmlzdWFsQWdlL0MrKyA0LjAgb3IgbGF0ZXIKICAgICAgICBtYWtlZmlsZS5tYWNvc3ggID0+ICBNQUNPUyBYIE1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUubmV0YnNkICA9PiAgTmV0QlNEL2NjIG1ha2VmaWxlLCB1c2VzIFBOR0dDQ1JECisgICAgICAgbWFrZWZpbGUub3BlbmJzZCA9PiAgT3BlbkJTRCBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLnNnaSAgICAgPT4gIFNpbGljb24gR3JhcGhpY3MgSVJJWCAoY2MsIGNyZWF0ZXMgc3RhdGljIGxpYikKLSAgICAgICBtYWtlZmlsZS5zZ2djYyAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjEyYmV0YTEpCisgICAgICAgbWFrZWZpbGUuc2dnY2MgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZzEwLnNvLjAuMS4wLjEzKQogICAgICAgIG1ha2VmaWxlLnN1bm9zICAgPT4gIFN1biBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLnNvbGFyaXMgPT4gIFNvbGFyaXMgMi5YIG1ha2VmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTJiZXRhMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZzEwLnNvLjAuMS4wLjEzKQorICAgICAgIG1ha2VmaWxlLnNvOSAgICAgPT4gIFNvbGFyaXMgOSBtYWtlZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2MsIGNyZWF0ZXMgbGlicG5nMTAuc28uMC4xLjAuMTMpCisgICAgICAgbWFrZWZpbGUuMzJzdW51ICA9PiAgU3VuIFVsdHJhIDMyLWJpdCBtYWtlZmlsZQorICAgICAgIG1ha2VmaWxlLjY0c3VudSAgPT4gIFN1biBVbHRyYSA2NC1iaXQgbWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5zY28gICAgID0+ICBGb3IgU0NPIE9TcjUgIEVMRiBhbmQgVW5peHdhcmUgNyB3aXRoIE5hdGl2ZSBjYwogICAgICAgIG1ha2VmaWxlLm1pcHMgICAgPT4gIE1JUFMgbWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5hY29ybiAgID0+ICBBY29ybiBtYWtlZmlsZQpkaWZmIC0tZ2l0IGEvWTJLSU5GTyBiL1kyS0lORk8KaW5kZXggODZiNzIxMy4uNjdkNGU3ZSAxMDA2NDQKLS0tIGEvWTJLSU5GTworKysgYi9ZMktJTkZPCkBAIC0xLDEzICsxLDEzIEBACiAgICBZMksgY29tcGxpYW5jZSBpbiBsaWJwbmc6CiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSAgICAgIE1heSAxNCwgMjAwMQorICAgICAgQXByaWwgMTUsIDIwMDIKIAogICAgICAgU2luY2UgdGhlIFBORyBEZXZlbG9wbWVudCBncm91cCBpcyBhbiBhZC1ob2MgYm9keSwgd2UgY2FuJ3QgbWFrZQogICAgICAgYW4gb2ZmaWNpYWwgZGVjbGFyYXRpb24uCiAKICAgICAgIFRoaXMgaXMgeW91ciB1bm9mZmljaWFsIGFzc3VyYW5jZSB0aGF0IGxpYnBuZyBmcm9tIHZlcnNpb24gMC43MSBhbmQKLSAgICAgIHVwd2FyZCB0aHJvdWdoIDEuMC4xMmJldGExIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgorICAgICAgdXB3YXJkIHRocm91Z2ggMS4wLjEzIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogICAgICAgdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAKICAgICAgIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMWQxMjVjNi4uNmZjMjdkMCAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw1ICsxLDUgQEAKIGVjaG8gIgotICBUaGVyZSBpcyBubyBcImNvbmZpZ3VyZVwiIHNjcmlwdCBmb3IgTGlicG5nLTEuMC4xMmJldGExLiAgSW5zdGVhZCwgcGxlYXNlCisgIFRoZXJlIGlzIG5vIFwiY29uZmlndXJlXCIgc2NyaXB0IGZvciBMaWJwbmctMS4wLjEzLiAgSW5zdGVhZCwgcGxlYXNlCiAgIGNvcHkgdGhlIGFwcHJvcHJpYXRlIG1ha2VmaWxlIGZvciB5b3VyIHN5c3RlbSBmcm9tIHRoZSBcInNjcmlwdHNcIgogICBkaXJlY3RvcnkuICBSZWFkIHRoZSBJTlNUQUxMIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4KICIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svTElDRU5TRSBiL2NvbnRyaWIvZ3JlZ2Jvb2svTElDRU5TRQppbmRleCA1NzE0NzcyLi4xNzVlYmZkIDEwMDY0NAotLS0gYS9jb250cmliL2dyZWdib29rL0xJQ0VOU0UKKysrIGIvY29udHJpYi9ncmVnYm9vay9MSUNFTlNFCkBAIC0xLDYgKzEsNiBAQAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAgR3JlZyBSb2Vsb2ZzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzLCIgd2l0aG91dCB3YXJyYW50eSBvZiBhbnkga2luZCwKICAgICAgIGV4cHJlc3Mgb3IgaW1wbGllZC4gIEluIG5vIGV2ZW50IHNoYWxsIHRoZSBhdXRob3Igb3IgY29udHJpYnV0b3JzCmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL01ha2VmaWxlLnNnaSBiL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUuc2dpCmluZGV4IGJiYTYxZmIuLmY4MjRhOTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUuc2dpCisrKyBiL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUuc2dpCkBAIC0xLDYgKzEsNiBAQAogIyBTYW1wbGUgbWFrZWZpbGUgZm9yIHJwbmcteCAvIHJwbmcyLXggLyB3cG5nIGZvciBTR0kgdXNpbmcgY2MgYW5kIG1ha2UuCiAjIEdyZWcgUm9lbG9mcwotIyBMYXN0IG1vZGlmaWVkOiAgMTYgSmFudWFyeSAxMDAwCisjIExhc3QgbW9kaWZpZWQ6ICA3IE1hcmNoIDIwMDIKICMKICMJVGhlIHByb2dyYW1zIGJ1aWx0IGJ5IHRoaXMgbWFrZWZpbGUgYXJlIGRlc2NyaWJlZCBpbiB0aGUgYm9vaywKICMJIlBORzogIFRoZSBEZWZpbml0aXZlIEd1aWRlLCIgYnkgR3JlZyBSb2Vsb2ZzIChPJ1JlaWxseSBhbmQKQEAgLTIzLDkgKzIzLDkgQEAKIAogIyBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUE5HSU5DID0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKLVBOR0xJQiA9IC1ML3Vzci9sb2NhbC9saWIgLWxwbmcJIyBkeW5hbWljYWxseSBsaW5rZWQgYWdhaW5zdCBsaWJwbmcKLSNQTkdMSUIgPSAvdXNyL2xvY2FsL2xpYi9saWJwbmcuYQkjIHN0YXRpY2FsbHkgbGlua2VkIGFnYWluc3QgbGlicG5nCitQTkdJTkMgPSAtSS91c3IvbG9jYWwvaW5jbHVkZS9saWJwbmcxMAorUE5HTElCID0gLUwvdXNyL2xvY2FsL2xpYiAtbHBuZzEwCSAgIyBkeW5hbWljYWxseSBsaW5rZWQgYWdhaW5zdCBsaWJwbmcKKyNQTkdMSUIgPSAvdXNyL2xvY2FsL2xpYi9saWJwbmcxMC5hICMgc3RhdGljYWxseSBsaW5rZWQgYWdhaW5zdCBsaWJwbmcKICMgb3I6CiAjUE5HSU5DID0gLUkuLi8uLgogI1BOR0xJQiA9IC1MLi4vLi4gLWxwbmcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUudW54IGIvY29udHJpYi9ncmVnYm9vay9NYWtlZmlsZS51bngKaW5kZXggODUwZGRjZS4uODkwMThhZSAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9NYWtlZmlsZS51bngKKysrIGIvY29udHJpYi9ncmVnYm9vay9NYWtlZmlsZS51bngKQEAgLTEsNiArMSw2IEBACiAjIFNhbXBsZSBtYWtlZmlsZSBmb3IgcnBuZy14IC8gcnBuZzIteCAvIHdwbmcgdXNpbmcgZ2NjIGFuZCBtYWtlLgogIyBHcmVnIFJvZWxvZnMKLSMgTGFzdCBtb2RpZmllZDogIDI4IEZlYnJ1YXJ5IDIwMDAKKyMgTGFzdCBtb2RpZmllZDogIDcgTWFyY2ggMjAwMgogIwogIwlUaGUgcHJvZ3JhbXMgYnVpbHQgYnkgdGhpcyBtYWtlZmlsZSBhcmUgZGVzY3JpYmVkIGluIHRoZSBib29rLAogIwkiUE5HOiAgVGhlIERlZmluaXRpdmUgR3VpZGUsIiBieSBHcmVnIFJvZWxvZnMgKE8nUmVpbGx5IGFuZApAQCAtMjMsMjQgKzIzLDI0IEBACiAKICMgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBOR0lOQyA9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCi0jUE5HTElCID0gLUwvdXNyL2xvY2FsL2xpYiAtbHBuZwkjIGR5bmFtaWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnBuZwotUE5HTElCID0gL3Vzci9sb2NhbC9saWIvbGlicG5nLmEJIyBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnBuZworUE5HSU5DID0gLUkvdXNyL2xvY2FsL2luY2x1ZGUvbGlicG5nMTAKKyNQTkdMSUIgPSAtTC91c3IvbG9jYWwvbGliIC1scG5nMTAgIyBkeW5hbWljYWxseSBsaW5rZWQgYWdhaW5zdCBsaWJwbmcKK1BOR0xJQiA9IC91c3IvbG9jYWwvbGliL2xpYnBuZzEwLmEgIyBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnBuZwogIyBvcjoKLSNQTkdJTkMgPSAtSS4uLy4uCi0jUE5HTElCID0gLUwuLi8uLiAtbHBuZwotI1BOR0xJQiA9IC4uLy4uL2xpYnBuZy5hCisjUE5HSU5DID0gLUkuLi9saWJwbmcKKyNQTkdMSUIgPSAtTC4uL2xpYnBuZyAtbHBuZworI1BOR0xJQiA9IC4uL2xpYnBuZy9saWJwbmcuYQogCiBaSU5DID0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKICNaTElCID0gLUwvdXNyL2xvY2FsL2xpYiAtbHoJCSMgZHluYW1pY2FsbHkgbGlua2VkIGFnYWluc3QgemxpYgogWkxJQiA9IC91c3IvbG9jYWwvbGliL2xpYnouYQkJIyBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IHpsaWIKICNaSU5DID0gLUkuLi96bGliCiAjWkxJQiA9IC1MLi4vemxpYiAtbHoKLSNaTElCID0gLi4vLi4vLi4vemxpYi9saWJ6LmEKKyNaTElCID0gLi4vemxpYi9saWJ6LmEKIAotI1hJTkMgPSAtSS91c3IvaW5jbHVkZS9YMTEJCSMgb2xkLXN0eWxlLCBzdG9jayBYIGRpc3RyaWJ1dGlvbnMKKyNYSU5DID0gLUkvdXNyL2luY2x1ZGUJCQkjIG9sZC1zdHlsZSwgc3RvY2sgWCBkaXN0cmlidXRpb25zCiAjWExJQiA9IC1ML3Vzci9saWIvWDExIC1sWDExCi0jWElOQyA9IC1JL3Vzci9vcGVud2luL2luY2x1ZGUgICAgCSMgU3VuIHdvcmtzdGF0aW9ucyAoT3BlbldpbmRvd3MpCisjWElOQyA9IC1JL3Vzci9vcGVud2luL2luY2x1ZGUJCSMgU3VuIHdvcmtzdGF0aW9ucyAoT3BlbldpbmRvd3MpCiAjWExJQiA9IC1ML3Vzci9vcGVud2luL2xpYiAtbFgxMQogWElOQyA9IC1JL3Vzci9YMTFSNi9pbmNsdWRlCQkjIG5ldyBYIGRpc3RyaWJ1dGlvbnMgKFhGcmVlODYsIGV0Yy4pCiBYTElCID0gLUwvdXNyL1gxMVI2L2xpYiAtbFgxMQpkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay9NYWtlZmlsZS53MzIgYi9jb250cmliL2dyZWdib29rL01ha2VmaWxlLnczMgppbmRleCAyYTg0MDIyLi42MjA0MWNkIDEwMDY0NAotLS0gYS9jb250cmliL2dyZWdib29rL01ha2VmaWxlLnczMgorKysgYi9jb250cmliL2dyZWdib29rL01ha2VmaWxlLnczMgpAQCAtMzIsMTIgKzMyLDEyIEBACiAKICMgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBOR1BBVEggPSAuLi8uLgorUE5HUEFUSCA9IC4uL2xpYnBuZwogUE5HSU5DID0gLUkkKFBOR1BBVEgpCiAjUE5HTElCID0gJChQTkdQQVRIKS9wbmdkbGwubGliCiBQTkdMSUIgPSAkKFBOR1BBVEgpL2xpYnBuZy5saWIKIAotWlBBVEggPSAuLi8uLi8uLi96bGliCitaUEFUSCA9IC4uL3psaWIKIFpJTkMgPSAtSSQoWlBBVEgpCiAjWkxJQiA9ICQoWlBBVEgpL3psaWJkbGwubGliCiBaTElCID0gJChaUEFUSCkvemxpYnN0YXQubGliCmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL1JFQURNRSBiL2NvbnRyaWIvZ3JlZ2Jvb2svUkVBRE1FCmluZGV4IGE4YmJjMjguLmM2NzA0NWMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svUkVBRE1FCisrKyBiL2NvbnRyaWIvZ3JlZ2Jvb2svUkVBRE1FCkBAIC0xNiwxMyArMTYsMTIgQEAKIFRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIHRocmVlIGRlbW8gcHJvZ3JhbXMgY3VycmVudGx5IGNvbXBpbGVzIHVuZGVyCiBVbml4LCBPcGVuVk1TLCBhbmQgMzItYml0IFdpbmRvd3MuICAoU3BlY2lhbCB0aGFua3MgdG8gTWFydGluIFppbnNlciwKIHppbnNlckBkZWN1cy5kZSwgZm9yIG1ha2luZyB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgZm9yIE9wZW5WTVMgYW5kIGZvcgotcHJvdmlkaW5nIGFuIGFwcHJvcHJpYXRlIGJ1aWxkIHNjcmlwdC4pICBCdWlsZCBpbnN0cnVjdGlvbnMgY2FuIGJlCi1mb3VuZCBiZWxvdy4KK3Byb3ZpZGluZyBhbiBhcHByb3ByaWF0ZSBidWlsZCBzY3JpcHQuKSAgQnVpbGQgaW5zdHJ1Y3Rpb25zIGNhbiBiZSBmb3VuZAorYmVsb3cuCiAKIEZpbGVzOgogCiAgICBSRUFETUUgICAgICAgICAgICAgdGhpcyBmaWxlCi0gICBSRUFETUUudzMyICAgICAgICAgYWRkaXRpb25hbCBXaW5kb3dzLXNwZWNpZmljIGluZm9ybWF0aW9uCiAgICBMSUNFTlNFICAgICAgICAgICAgdGVybXMgb2YgZGlzdHJpYnV0aW9uIGFuZCByZXVzZSAoQlNELWxpa2UpCiAKICAgIE1ha2VmaWxlLnVueCAgICAgICBVbml4IG1ha2VmaWxlCkBAIC00NSwyNiArNDQsMjcgQEAKIAogICAgdG91Y2FuLnBuZyAgICAgICAgIHRyYW5zcGFyZW50IFBORyBmb3IgdGVzdGluZyAoYnkgU3RlZmFuIFNjaG5laWRlcikKIAotTm90ZSB0aGF0IHRoZSBwcm9ncmFtcyBhcmUgZGVzaWduZWQgdG8gYmUgZnVuY3Rpb25hbCwgYnV0IHRoZWlyIHByaW1hcnkKLXB1cnBvc2UgaXMgdG8gZGVtb25zdHJhdGUgaG93IHRvIHVzZSBsaWJwbmcgdG8gYWRkIFBORyBzdXBwb3J0IHRvIG90aGVyCi1wcm9ncmFtcy4gIEFzIHN1Y2gsIHRoZWlyIHVzZXIgaW50ZXJmYWNlcyBhcmUgY3J1ZGUgYW5kIGRlZmluaXRlbHkgbm90Ci1pbnRlbmRlZCBmb3IgZXZlcnlkYXkgdXNlLgorTm90ZSB0aGF0LCBhbHRob3VnaCB0aGUgcHJvZ3JhbXMgYXJlIGRlc2lnbmVkIHRvIGJlIGZ1bmN0aW9uYWwsIHRoZWlyCitwcmltYXJ5IHB1cnBvc2UgaXMgdG8gaWxsdXN0cmF0ZSBob3cgdG8gdXNlIGxpYnBuZyB0byBhZGQgUE5HIHN1cHBvcnQgdG8KK290aGVyIHByb2dyYW1zLiAgQXMgc3VjaCwgdGhlaXIgdXNlciBpbnRlcmZhY2VzIGFyZSBjcnVkZSBhbmQgZGVmaW5pdGVseQorYXJlIG5vdCBpbnRlbmRlZCBmb3IgZXZlcnlkYXkgdXNlLgogCi1QbGVhc2Ugc2VlIGh0dHA6Ly93d3cuY2Ryb20uY29tL3B1Yi9wbmcvcG5nYm9vay5odG1sIGZvciBmdXJ0aGVyIGluZm9yLQorUGxlYXNlIHNlZSBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3BuZy9wbmdib29rLmh0bWwgZm9yIGZ1cnRoZXIgaW5mb3ItCiBtYXRpb24gYW5kIGxpbmtzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc291cmNlIGNvZGUsIGFuZCBDaGFwdGVycwogMTMtMTUgb2YgdGhlIGJvb2sgZm9yIGRldGFpbGVkIGRpc2N1c3Npb24gb2YgdGhlIHRocmVlIHByb2dyYW1zLgogCiBHcmVnIFJvZWxvZnMKLTE5IE1hcmNoIDIwMDAKK25ld3RAcG9ib3guY29tCiszMCBKdW5lIDIwMDEKIAogCiBCVUlMRCBJTlNUUlVDVElPTlMKIAotIC0gUHJlcmVxdWlzaXRlczoKKyAtIFByZXJlcXVpc2l0ZXMgKGluIG9yZGVyIG9mIGNvbXBpbGF0aW9uKToKIAotICAgICAgLSB6bGliCQlmdHA6Ly9mdHAuY2Ryb20uY29tL3B1Yi9pbmZvemlwL3psaWIvemxpYi5odG1sCi0gICAgICAtIGxpYnBuZwkJaHR0cDovL3d3dy5jZHJvbS5jb20vcHViL3BuZy9wbmdjb2RlLmh0bWwKLSAgICAgIC0gcG5nYm9vawkJaHR0cDovL3d3dy5jZHJvbS5jb20vcHViL3BuZy9ib29rL3NvdXJjZXMuaHRtbAorICAgICAgLSB6bGliCQlodHRwOi8vd3d3Lmd6aXAub3JnL3psaWIvCisgICAgICAtIGxpYnBuZwkJaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwKKyAgICAgIC0gcG5nYm9vawkJaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvYm9vay9zb3VyY2VzLmh0bWwKIAogICAgICBUaGUgcG5nYm9vayBkZW1vIHByb2dyYW1zIGFyZSBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIGRlbW9uc3RyYXRlIHByb3BlcgogICAgICBjb2RpbmcgdGVjaG5pcXVlcyBmb3IgdXNpbmcgdGhlIGxpYnBuZyByZWZlcmVuY2UgbGlicmFyeS4gIEFzIGEgcmVzdWx0LApAQCAtMTI4LDExICsxMjgsMTMgQEAKIAogICAgICBUaGUgcmVzdWx0IHNob3VsZCBiZSB0aHJlZSBleGVjdXRhYmxlczogIHJwbmctd2luLmV4ZSwgcnBuZzItd2luLmV4ZSwKICAgICAgYW5kIHdwbmcuZXhlLiAgQ29weSB0aGVtIHNvbWV3aGVyZSBpbiB5b3VyIFBBVEggb3IgcnVuIHRoZW0gZnJvbSB0aGUKLSAgICAgY3VycmVudCBmb2xkZXIuICBVbmxpa2UgdGhlIFVuaXggdmVyc2lvbnMsIHRoZSB0d28gd2luZG93ZWQgcHJvZ3JhbXMKLSAgICAgKHJwbmcgYW5kIHJwbmcyKSBkbyBub3QgZGlzcGxheSBhIHVzYWdlIHNjcmVlbiB3aGVuIGludm9rZWQgd2l0aG91dAotICAgICBjb21tYW5kLWxpbmUgYXJndW1lbnRzOyBzZWUgUkVBRE1FLnczMiBmb3IgYnJpZWYgaGVscCBvciB0aGUgYm9vayBmb3IKLSAgICAgZGV0YWlscy4gIE5vdGUgdGhhdCB0aGUgcHJvZ3JhbXMgdXNlIHRoZSBVbml4LXN0eWxlICItIiBjaGFyYWN0ZXIgdG8KLSAgICAgc3BlY2lmeSBvcHRpb25zLCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbW1vbiBET1MvV2luZG93cyAiLyIgY2hhcmFjdGVyLgorICAgICBjdXJyZW50IGZvbGRlci4gIExpa2UgdGhlIFVuaXggdmVyc2lvbnMsIHRoZSB0d28gd2luZG93ZWQgcHJvZ3JhbXMKKyAgICAgKHJwbmcgYW5kIHJwbmcyKSBub3cgZGlzcGxheSBhIHVzYWdlIHNjcmVlbiBpbiBhIGNvbnNvbGUgd2luZG93IHdoZW4KKyAgICAgaW52b2tlZCB3aXRob3V0IGNvbW1hbmQtbGluZSBhcmd1bWVudHM7IHRoaXMgaXMgbmV3IGJlaGF2aW9yIGFzIG9mCisgICAgIHRoZSBKdW5lIDIwMDEgcmVsZWFzZS4gIE5vdGUgdGhhdCB0aGUgcHJvZ3JhbXMgdXNlIHRoZSBVbml4LXN0eWxlICItIgorICAgICBjaGFyYWN0ZXIgdG8gc3BlY2lmeSBvcHRpb25zLCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbW1vbiBET1MvV2luZG93cworICAgICAiLyIgY2hhcmFjdGVyLiAgKEZvciBleGFtcGxlOiAgInJwbmcyLXdpbiAtYmdwYXQgNCBmb28ucG5nIiwgbm90CisgICAgICJycG5nMi13aW4gL2JncGF0IDQgZm9vLnBuZyIpCiAKIAogIC0gT3BlblZNUzoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svUkVBRE1FLnczMiBiL2NvbnRyaWIvZ3JlZ2Jvb2svUkVBRE1FLnczMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM2YzAwMS4uMDAwMDAwMAotLS0gYS9jb250cmliL2dyZWdib29rL1JFQURNRS53MzIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TZWUgdGhlIG1haW4gUkVBRE1FIGZpbGUgZm9yIGJhc2ljIGluc3RydWN0aW9ucyBvbiBjb21waWxpbmcgYW5kIHJ1bm5pbmcKLXRoZSBwcm9ncmFtcy4gIFNlZSBodHRwOi8vd3d3LmNkcm9tLmNvbS9wdWIvcG5nL3BuZ2Jvb2suaHRtbCBmb3IgZnVydGhlcgotaW5mb3JtYXRpb24gYW5kIGxpbmtzIHRvIHRoZSBzb3VyY2UgY29kZSwgYW5kIENoYXB0ZXJzIDEzLTE1IG9mIHRoZSBib29rCi1mb3IgZGV0YWlsZWQgZGlzY3Vzc2lvbiBvZiB0aGUgdGhyZWUgcHJvZ3JhbXMuCi0KLVNpbmNlIHRoZSB0d28gdmlld2VycywgcnBuZyBhbmQgcnBuZzIsIGFyZSBib3RoIGRlc2lnbmVkIHRvIHdyaXRlIGluZm9yLQotbWF0aW9uIHRvIHRoZSBjb25zb2xlIChpLmUuLCBhIERPUy13aW5kb3cgY29tbWFuZCBsaW5lKSB3aGlsZSBkaXNwbGF5aW5nCi10aGUgaW1hZ2UgaW4gYSBncmFwaGljYWwgd2luZG93LS1hbmQgc2luY2UgSSBoYXZlbid0IHlldCBmaWd1cmVkIG91dCBob3cKLXRvIGRvIHRoYXQgdW5kZXIgV2luZG93cy0taGVyZSBhcmUgdGhlIHVzYWdlIHNjcmVlbnMgZm9yIHRoZSB0d28gcHJvZ3JhbXM6Ci0KLQotcnBuZy13aW4gMS4wMiBvZiAxOSBNYXJjaCAyMDAwOiAgU2ltcGxlIFBORyBWaWV3ZXIgZm9yIFdpbmRvd3MKLSAgIENvbXBpbGVkIHdpdGggbGlicG5nIDEuMC41OyB1c2luZyBsaWJwbmcgMS4wLjUuCi0gICBDb21waWxlZCB3aXRoIHpsaWIgMS4xLjM7IHVzaW5nIHpsaWIgMS4xLjMuCi0KLVVzYWdlOiAgcnBuZy13aW4gWy1nYW1tYSBleHBdIFstYmdjb2xvciBiZ10gZmlsZS5wbmcKLSAgICBleHAgCXRyYW5zZmVyLWZ1bmN0aW9uIGV4cG9uZW50IChgYGdhbW1hJycpIG9mIHRoZSBkaXNwbGF5Ci0JCSAgc3lzdGVtIGluIGZsb2F0aW5nLXBvaW50IGZvcm1hdCAoZS5nLiwgYGAyLjInJyk7IGVxdWFsCi0JCSAgdG8gdGhlIHByb2R1Y3Qgb2YgdGhlIGxvb2t1cC10YWJsZSBleHBvbmVudCAodmFyaWVzKQotCQkgIGFuZCB0aGUgQ1JUIGV4cG9uZW50ICh1c3VhbGx5IDIuMik7IG11c3QgYmUgcG9zaXRpdmUKLSAgICBiZyAgCWRlc2lyZWQgYmFja2dyb3VuZCBjb2xvciBpbiA3LWNoYXJhY3RlciBoZXggUkdCIGZvcm1hdAotCQkgIChlLmcuLCBgYCNmZjdmMDAnJyBmb3Igb3JhbmdlOiAgc2FtZSBhcyBIVE1MIGNvbG9ycyk7Ci0JCSAgdXNlZCB3aXRoIHRyYW5zcGFyZW50IGltYWdlcwotCi1QcmVzcyBRLCBFc2Mgb3IgbW91c2UgYnV0dG9uIDEgYWZ0ZXIgaW1hZ2UgaXMgZGlzcGxheWVkIHRvIHF1aXQuCi0KLQotcnBuZzItd2luIDEuMDQgb2YgMTkgTWFyY2ggMjAwMDogIFByb2dyZXNzaXZlIFBORyBWaWV3ZXIgZm9yIFdpbmRvd3MKLSAgIENvbXBpbGVkIHdpdGggbGlicG5nIDEuMC41OyB1c2luZyBsaWJwbmcgMS4wLjUuCi0gICBDb21waWxlZCB3aXRoIHpsaWIgMS4xLjM7IHVzaW5nIHpsaWIgMS4xLjMuCi0KLVVzYWdlOiAgcnBuZzItd2luIFstZ2FtbWEgZXhwXSBbLWJnY29sb3IgYmcgfCAtYmdwYXQgcGF0XSBbLXRpbWluZ10gZmlsZS5wbmcKLQotICAgIGV4cCAJdHJhbnNmZXItZnVuY3Rpb24gZXhwb25lbnQgKGBgZ2FtbWEnJykgb2YgdGhlIGRpc3BsYXkKLQkJICBzeXN0ZW0gaW4gZmxvYXRpbmctcG9pbnQgZm9ybWF0IChlLmcuLCBgYDIuMicnKTsgZXF1YWwKLQkJICB0byB0aGUgcHJvZHVjdCBvZiB0aGUgbG9va3VwLXRhYmxlIGV4cG9uZW50ICh2YXJpZXMpCi0JCSAgYW5kIHRoZSBDUlQgZXhwb25lbnQgKHVzdWFsbHkgMi4yKTsgbXVzdCBiZSBwb3NpdGl2ZQotICAgIGJnICAJZGVzaXJlZCBiYWNrZ3JvdW5kIGNvbG9yIGluIDctY2hhcmFjdGVyIGhleCBSR0IgZm9ybWF0Ci0JCSAgKGUuZy4sIGBgI2ZmN2YwMCcnIGZvciBvcmFuZ2U6ICBzYW1lIGFzIEhUTUwgY29sb3JzKTsKLQkJICB1c2VkIHdpdGggdHJhbnNwYXJlbnQgaW1hZ2VzOyBvdmVycmlkZXMgLWJncGF0Ci0gICAgcGF0IAlkZXNpcmVkIGJhY2tncm91bmQgcGF0dGVybiBudW1iZXIgKDEtMTYpOyB1c2VkIHdpdGgKLQkJICB0cmFuc3BhcmVudCBpbWFnZXM7IG92ZXJyaWRlcyAtYmdjb2xvcgotICAgIC10aW1pbmcJZW5hYmxlcyBkZWxheSBmb3IgZXZlcnkgYmxvY2sgcmVhZCwgdG8gc2ltdWxhdGUgbW9kZW0KLQkJICBkb3dubG9hZCBvZiBpbWFnZSAofjM2IEticHMpCi0KLVByZXNzIFEsIEVzYyBvciBtb3VzZSBidXR0b24gMSBhZnRlciBpbWFnZSBpcyBkaXNwbGF5ZWQgdG8gcXVpdC4KLQotCi1UaGUgdXNhZ2Ugc2NyZWVuIGZvciB0aGUgdGhpcmQgKG5vbi13aW5kb3dlZCkgcHJvZ3JhbSwgd3BuZywgY2FuIGJlIHNlZW4KLXNpbXBseSBieSBpbnZva2luZyBpdCB3aXRob3V0IGFueSBwYXJhbWV0ZXJzIChgYHdwbmcnJykuCi0KLUdyZWcgUm9lbG9mcwotMTkgTWFyY2ggMjAwMApkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay9tYWtldm1zLmNvbSBiL2NvbnRyaWIvZ3JlZ2Jvb2svbWFrZXZtcy5jb20KaW5kZXggMzczOTI2Yi4uYmQzN2RjMCAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9tYWtldm1zLmNvbQorKysgYi9jb250cmliL2dyZWdib29rL21ha2V2bXMuY29tCkBAIC05LDIxICs5LDIyIEBACiAkIQogJCB6cGF0aCAgID0gIiIKICQgcG5ncGF0aCA9ICIiCi0kIGlmIGYkc2VhcmNoKCJbLS56bGliXXpsaWIuaCIpLm5lcy4iIiB0aGVuIHpwYXRoID0gIlstLnpsaWJdIgotJCBpZiBmJHNlYXJjaCgiWy0ubGlicG5nXXBuZy5oIikubmVzLiIiIHRoZW4gcG5ncGF0aCA9ICJbLS5saWJwbmddIgogJCEKICQgaWYgZiRzZWFyY2goIlstLS0uemxpYl16bGliLmgiKS5uZXMuIiIgdGhlbiB6cGF0aCA9ICJbLS0tLnpsaWJdIgogJCBpZiBmJHNlYXJjaCgiWy0tXXBuZy5oIikubmVzLiIiIHRoZW4gcG5ncGF0aCA9ICJbLS1dIgogJCEKKyQgaWYgZiRzZWFyY2goIlstLnpsaWJdemxpYi5oIikubmVzLiIiIHRoZW4genBhdGggPSAiWy0uemxpYl0iCiskIGlmIGYkc2VhcmNoKCJbLS5saWJwbmddcG5nLmgiKS5uZXMuIiIgdGhlbiBwbmdwYXRoID0gIlstLmxpYnBuZ10iCiskIQogJCBpZiB6cGF0aCAuZXFzLiAiIgogJCB0aGVuCi0kICAgd3JpdGUgc3lzJG91dHB1dCAiWmxpYiBpbmNsdWRlIG5vdCBmb3VuZC4gRXhpdGluZy4uLiIKKyQgICB3cml0ZSBzeXMkb3V0cHV0ICJ6bGliIGluY2x1ZGUgbm90IGZvdW5kLiBFeGl0aW5nLi4uIgogJCAgIGV4aXQgMgogJCBlbmRpZiAKICQhCiAkIGlmIHBuZ3BhdGggLmVxcy4gIiIKICQgdGhlbgotJCAgIHdyaXRlIHN5cyRvdXRwdXQgIkxpYnBuZyBpbmNsdWRlIG5vdCBmb3VuZC4gRXhpdGluZy4uLiIKKyQgICB3cml0ZSBzeXMkb3V0cHV0ICJsaWJwbmcgaW5jbHVkZSBub3QgZm91bmQuIEV4aXRpbmcuLi4iCiAkICAgZXhpdCAyCiAkIGVuZGlmIAogJCEKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svcmVhZHBuZy5jIGIvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nLmMKaW5kZXggZGM5NDhlZS4uYjhlMDkwNCAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nLmMKKysrIGIvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nLmMKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBUcmFjZSgoc3RkZXJyLCAicmVhZHBuZ19nZXRfaW1hZ2U6ICByb3dieXRlcyA9ICVsZCwgaGVpZ2h0ID0gJWxkXG4iLCByb3dieXRlcywgaGVpZ2h0KSk7CisgICAgVHJhY2UoKHN0ZGVyciwgInJlYWRwbmdfZ2V0X2ltYWdlOiAgY2hhbm5lbHMgPSAlZCwgcm93Ynl0ZXMgPSAlbGQsIGhlaWdodCA9ICVsZFxuIiwgKnBDaGFubmVscywgcm93Ynl0ZXMsIGhlaWdodCkpOwogCiAKICAgICAvKiBzZXQgdGhlIGluZGl2aWR1YWwgcm93X3BvaW50ZXJzIHRvIHBvaW50IGF0IHRoZSBjb3JyZWN0IG9mZnNldHMgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svcmVhZHBuZzIuYyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcmVhZHBuZzIuYwppbmRleCA0OThkOTY3Li44N2YxMzUwIDEwMDY0NAotLS0gYS9jb250cmliL2dyZWdib29rL3JlYWRwbmcyLmMKKysrIGIvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nMi5jCkBAIC00OSw4ICs0OSw3NyBAQAogCiB2b2lkIHJlYWRwbmcyX3ZlcnNpb25faW5mbyh2b2lkKQogewotICAgIGZwcmludGYoc3RkZXJyLCAiICAgQ29tcGlsZWQgd2l0aCBsaWJwbmcgJXM7IHVzaW5nIGxpYnBuZyAlcy5cbiIsCi0gICAgICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHBuZ19saWJwbmdfdmVyKTsKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIFwKKyAgICAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkgJiYgXAorICAgIGRlZmluZWQoUE5HX0xJQlBOR19WRVIpICYmIChQTkdfTElCUE5HX1ZFUiA+PSAxMDIwMCkKKyAgICAvKgorICAgICAqIFdBUk5JTkc6ICBUaGlzIHByZXByb2Nlc3NvciBhcHByb2FjaCBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZQorICAgICAqICAgICAgICAgICBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgbGlicG5nIERMTCBvbGRlciB0aGFuIDEuMi4wLS10aGUKKyAgICAgKiAgICAgICAgICAgY29tcGlsZWQtaW4gc3ltYm9scyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMgd2lsbCBub3QgZXhpc3QuCisgICAgICogICAgICAgICAgIChDb3VsZCB1c2UgZGxvcGVuKCkgYW5kIGRsc3ltKCkgb24gVW5peCBhbmQgY29ycmVzcG9uZGluZworICAgICAqICAgICAgICAgICBjYWxscyBmb3IgV2luZG93cywgYnV0IG5vdCBwb3J0YWJsZS4uLikKKyAgICAgKi8KKyAgICB7CisgICAgICAgIGludCBtbXhzdXBwb3J0ID0gcG5nX21teF9zdXBwb3J0KCk7CisgICAgICAgIGlmIChtbXhzdXBwb3J0IDwgMCkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgQ29tcGlsZWQgd2l0aCBsaWJwbmcgJXM7IHVzaW5nIGxpYnBuZyAlcyAiCisgICAgICAgICAgICAgICJ3aXRob3V0IE1NWCBzdXBwb3J0LlxuIiwgUE5HX0xJQlBOR19WRVJfU1RSSU5HLCBwbmdfbGlicG5nX3Zlcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGNvbXBpbGVySUQ7CisgICAgICAgICAgICBwbmdfdWludF8zMiBtbXhfbWFzayA9IHBuZ19nZXRfbW14X2ZsYWdtYXNrKAorICAgICAgICAgICAgICBQTkdfU0VMRUNUX1JFQUQgfCBQTkdfU0VMRUNUX1dSSVRFLCAmY29tcGlsZXJJRCk7CisKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgQ29tcGlsZWQgd2l0aCBsaWJwbmcgJXM7IHVzaW5nIGxpYnBuZyAlcyAiCisgICAgICAgICAgICAgICJ3aXRoIE1NWCBzdXBwb3J0XG4gICAoJXMgdmVyc2lvbikuIiwgUE5HX0xJQlBOR19WRVJfU1RSSU5HLAorICAgICAgICAgICAgICBwbmdfbGlicG5nX3ZlciwgY29tcGlsZXJJRCA9PSAxPyAiTVNWQysrIiA6CisgICAgICAgICAgICAgIChjb21waWxlcklEID09IDI/ICJHTlUgQyIgOiAidW5rbm93biIpKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBQcm9jZXNzb3IgJXMgTU1YIGluc3RydWN0aW9ucy5cbiIsCisgICAgICAgICAgICAgIG1teHN1cHBvcnQ/ICJzdXBwb3J0cyIgOiAiZG9lcyBub3Qgc3VwcG9ydCIpOworICAgICAgICAgICAgaWYgKG1teHN1cHBvcnQgPiAwKSB7CisgICAgICAgICAgICAgICAgaW50IG51bV9vcHRpbXMgPSAwOworCisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAiICAgICAgUG90ZW50aWFsIE1NWCBvcHRpbWl6YXRpb25zIHN1cHBvcnRlZCBieSBsaWJwbmc6XG4iKTsKKyAgICAgICAgICAgICAgICBpZiAobW14X21hc2sgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1NVQikKKyAgICAgICAgICAgICAgICAgICAgKytudW1fb3B0aW1zOworICAgICAgICAgICAgICAgIGlmIChtbXhfbWFzayAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVApCisgICAgICAgICAgICAgICAgICAgICsrbnVtX29wdGltczsKKyAgICAgICAgICAgICAgICBpZiAobW14X21hc2sgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX0FWRykKKyAgICAgICAgICAgICAgICAgICAgKytudW1fb3B0aW1zOworICAgICAgICAgICAgICAgIGlmIChtbXhfbWFzayAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfUEFFVEgpCisgICAgICAgICAgICAgICAgICAgICsrbnVtX29wdGltczsKKyAgICAgICAgICAgICAgICBpZiAobnVtX29wdGltcykKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgIGRlY29kaW5nICVzIHJvdyBmaWx0ZXJzIChyZWFkaW5nKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAobnVtX29wdGltcyA9PSA0KT8gImFsbCBub24tdHJpdmlhbCIgOiAic29tZSIpOworICAgICAgICAgICAgICAgIGlmIChtbXhfbWFzayAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVykgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgIGNvbWJpbmluZyByb3dzIChyZWFkaW5nKVxuIik7CisgICAgICAgICAgICAgICAgICAgICsrbnVtX29wdGltczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1teF9tYXNrICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRSkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgZXhwYW5kaW5nIGludGVybGFjaW5nIChyZWFkaW5nKVxuIik7CisgICAgICAgICAgICAgICAgICAgICsrbnVtX29wdGltczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbW14X21hc2sgJj0gfiggUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRSAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9VUCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCApOworICAgICAgICAgICAgICAgIGlmIChtbXhfbWFzaykgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgIG90aGVyICh1bmtub3duKVxuIik7CisgICAgICAgICAgICAgICAgICAgICsrbnVtX29wdGltczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG51bV9vcHRpbXMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgICAobm9uZSlcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIENvbXBpbGVkIHdpdGggbGlicG5nICVzOyB1c2luZyBsaWJwbmcgJXMgIgorICAgICAgIndpdGhvdXQgTU1YIHN1cHBvcnQuXG4iLCBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHBuZ19saWJwbmdfdmVyKTsKKyNlbmRpZgogCiAgICAgZnByaW50ZihzdGRlcnIsICIgICBDb21waWxlZCB3aXRoIHpsaWIgJXM7IHVzaW5nIHpsaWIgJXMuXG4iLAogICAgICAgWkxJQl9WRVJTSU9OLCB6bGliX3ZlcnNpb24pOwpAQCAtMTExLDYgKzE4MCw5NyBAQAogICAgIHBuZ19zZXRfcHJvZ3Jlc3NpdmVfcmVhZF9mbihwbmdfcHRyLCBtYWlucHJvZ19wdHIsCiAgICAgICByZWFkcG5nMl9pbmZvX2NhbGxiYWNrLCByZWFkcG5nMl9yb3dfY2FsbGJhY2ssIHJlYWRwbmcyX2VuZF9jYWxsYmFjayk7CiAKKworICAgIC8qCisgICAgICogbWF5IGFzIHdlbGwgZW5hYmxlIG9yIGRpc2FibGUgTU1YIHJvdXRpbmVzIGhlcmUsIGlmIHN1cHBvcnRlZDsKKyAgICAgKgorICAgICAqIHRvIGVuYWJsZSBhbGw6ICBtYXNrID0gcG5nX2dldF9tbXhfZmxhZ21hc2sgKAorICAgICAqICAgICAgICAgICAgICAgICAgIFBOR19TRUxFQ1RfUkVBRCB8IFBOR19TRUxFQ1RfV1JJVEUsICZjb21waWxlcklEKTsKKyAgICAgKiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBwbmdfZ2V0X2FzbV9mbGFncyAocG5nX3B0cik7CisgICAgICogICAgICAgICAgICAgICAgIGZsYWdzIHw9IG1hc2s7CisgICAgICogICAgICAgICAgICAgICAgIHBuZ19zZXRfYXNtX2ZsYWdzIChwbmdfcHRyLCBmbGFncyk7CisgICAgICoKKyAgICAgKiB0byBkaXNhYmxlIGFsbDogIG1hc2sgPSBwbmdfZ2V0X21teF9mbGFnbWFzayAoCisgICAgICogICAgICAgICAgICAgICAgICAgUE5HX1NFTEVDVF9SRUFEIHwgUE5HX1NFTEVDVF9XUklURSwgJmNvbXBpbGVySUQpOworICAgICAqICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBwbmdfZ2V0X2FzbV9mbGFncyAocG5nX3B0cik7CisgICAgICogICAgICAgICAgICAgICAgICBmbGFncyAmPSB+bWFzazsKKyAgICAgKiAgICAgICAgICAgICAgICAgIHBuZ19zZXRfYXNtX2ZsYWdzIChwbmdfcHRyLCBmbGFncyk7CisgICAgICovCisKKyNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkgJiYgXAorICAgIGRlZmluZWQoUE5HX0xJQlBOR19WRVIpICYmIChQTkdfTElCUE5HX1ZFUiA+PSAxMDIwMCkKKyAgICAvKgorICAgICAqIFdBUk5JTkc6ICBUaGlzIHByZXByb2Nlc3NvciBhcHByb2FjaCBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZQorICAgICAqICAgICAgICAgICBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgbGlicG5nIERMTCBvbGRlciB0aGFuIDEuMi4wLS10aGUKKyAgICAgKiAgICAgICAgICAgY29tcGlsZWQtaW4gc3ltYm9scyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMgd2lsbCBub3QgZXhpc3QuCisgICAgICogICAgICAgICAgIChDb3VsZCB1c2UgZGxvcGVuKCkgYW5kIGRsc3ltKCkgb24gVW5peCBhbmQgY29ycmVzcG9uZGluZworICAgICAqICAgICAgICAgICBjYWxscyBmb3IgV2luZG93cywgYnV0IG5vdCBwb3J0YWJsZS4uLikKKyAgICAgKi8KKyAgICB7CisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorICAgICAgICBwbmdfdWludF8zMiBtbXhfZGlzYWJsZV9tYXNrID0gMDsKKyAgICAgICAgcG5nX3VpbnRfMzIgYXNtX2ZsYWdzLCBtbXhfbWFzazsKKyAgICAgICAgaW50IGNvbXBpbGVySUQ7CisKKyAgICAgICAgaWYgKG1haW5wcm9nX3B0ci0+bm9tbXhmaWx0ZXJzKQorICAgICAgICAgICAgbW14X2Rpc2FibGVfbWFzayB8PSAoIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfU1VCICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfUEFFVEggKTsKKyAgICAgICAgaWYgKG1haW5wcm9nX3B0ci0+bm9tbXhjb21iaW5lKQorICAgICAgICAgICAgbW14X2Rpc2FibGVfbWFzayB8PSBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1c7CisgICAgICAgIGlmIChtYWlucHJvZ19wdHItPm5vbW14aW50ZXJsYWNlKQorICAgICAgICAgICAgbW14X2Rpc2FibGVfbWFzayB8PSBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfSU5URVJMQUNFOworICAgICAgICBhc21fZmxhZ3MgPSBwbmdfZ2V0X2FzbV9mbGFncyhwbmdfcHRyKTsKKyAgICAgICAgcG5nX3NldF9hc21fZmxhZ3MocG5nX3B0ciwgYXNtX2ZsYWdzICYgfm1teF9kaXNhYmxlX21hc2spOworCisKKyAgICAgICAgLyogTm93IHF1ZXJ5IGxpYnBuZydzIGFzbSBzZXR0aW5ncywganVzdCBmb3IgeXVrcy4gIE5vdGUgdGhhdCB0aGlzCisgICAgICAgICAqIGRpZmZlcnMgZnJvbSB0aGUgcXVlcnlpbmcgb2YgaXRzICpwb3RlbnRpYWwqIE1NWCBjYXBhYmlsaXRpZXMKKyAgICAgICAgICogaW4gcmVhZHBuZzJfdmVyc2lvbl9pbmZvKCk7IHRoaXMgaXMgdHJ1ZSBydW50aW1lIHZlcmlmaWNhdGlvbi4gKi8KKworICAgICAgICBhc21fZmxhZ3MgPSBwbmdfZ2V0X2FzbV9mbGFncyhwbmdfcHRyKTsKKyAgICAgICAgbW14X21hc2sgPSBwbmdfZ2V0X21teF9mbGFnbWFzayhQTkdfU0VMRUNUX1JFQUQgfCBQTkdfU0VMRUNUX1dSSVRFLAorICAgICAgICAgICZjb21waWxlcklEKTsKKyAgICAgICAgaWYgKGFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfU1VQUE9SVF9DT01QSUxFRCkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAiICBNTVggc3VwcG9ydCAoJXMgdmVyc2lvbikgaXMgY29tcGlsZWQgaW50byBsaWJwbmdcbiIsCisgICAgICAgICAgICAgIGNvbXBpbGVySUQgPT0gMT8gIk1TVkMrKyIgOgorICAgICAgICAgICAgICAoY29tcGlsZXJJRCA9PSAyPyAiR05VIEMiIDogInVua25vd24iKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBNTVggc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW50byBsaWJwbmdcbiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgTU1YIGluc3RydWN0aW9ucyBhcmUgJXNzdXBwb3J0ZWQgYnkgQ1BVXG4iLAorICAgICAgICAgIChhc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1NVUFBPUlRfSU5fQ1BVKT8gIiIgOiAibm90ICIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgTU1YIHJlYWQgc3VwcG9ydCBmb3IgY29tYmluaW5nIHJvd3MgaXMgJXNhYmxlZFxuIiwKKyAgICAgICAgICAoYXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XKT8gImVuIiA6ICJkaXMiKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgIiAgTU1YIHJlYWQgc3VwcG9ydCBmb3IgZXhwYW5kaW5nIGludGVybGFjaW5nIGlzICVzYWJsZWRcbiIsCisgICAgICAgICAgKGFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UpPyAiZW4iIDogImRpcyIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgTU1YIHJlYWQgc3VwcG9ydCBmb3IgXCJzdWJcIiBmaWx0ZXIgaXMgJXNhYmxlZFxuIiwKKyAgICAgICAgICAoYXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIpPyAiZW4iIDogImRpcyIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgTU1YIHJlYWQgc3VwcG9ydCBmb3IgXCJ1cFwiIGZpbHRlciBpcyAlc2FibGVkXG4iLAorICAgICAgICAgIChhc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1VQKT8gImVuIiA6ICJkaXMiKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIE1NWCByZWFkIHN1cHBvcnQgZm9yIFwiYXZnXCIgZmlsdGVyIGlzICVzYWJsZWRcbiIsCisgICAgICAgICAgKGFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHKT8gImVuIiA6ICJkaXMiKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIE1NWCByZWFkIHN1cHBvcnQgZm9yIFwiUGFldGhcIiBmaWx0ZXIgaXMgJXNhYmxlZFxuIiwKKyAgICAgICAgICAoYXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCk/ICJlbiIgOiAiZGlzIik7CisgICAgICAgIGFzbV9mbGFncyAmPSAobW14X21hc2sgJiB+KCBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1VQICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCApKTsKKyAgICAgICAgaWYgKGFzbV9mbGFncykKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAiICBhZGRpdGlvbmFsIE1NWCBzdXBwb3J0IGlzIGFsc28gZW5hYmxlZCAoMHglMDJseClcbiIsCisgICAgICAgICAgICAgIGFzbV9mbGFncyk7CisjZWxzZSAgLyogIVBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIE1NWCBxdWVyeWluZyBpcyBkaXNhYmxlZCBpbiBsaWJwbmcuXG4iKTsKKyNlbmRpZiAvKiA/UE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCAqLworICAgIH0KKyNlbmRpZgorCisKICAgICAvKiBtYWtlIHN1cmUgd2Ugc2F2ZSBvdXIgcG9pbnRlcnMgZm9yIHVzZSBpbiByZWFkcG5nMl9kZWNvZGVfZGF0YSgpICovCiAKICAgICBtYWlucHJvZ19wdHItPnBuZ19wdHIgPSBwbmdfcHRyOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay9ycG5nLXdpbi5jIGIvY29udHJpYi9ncmVnYm9vay9ycG5nLXdpbi5jCmluZGV4IDUxZTE5NzQuLmI4NGE3ZmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZy13aW4uYworKysgYi9jb250cmliL2dyZWdib29rL3Jwbmctd2luLmMKQEAgLTksNyArOSw2IEBACiAgICB3aXRoIGEgbGl0dGxlIHR3ZWFraW5nIChvciBtYXliZSBub3QpLgogCiAgICB0byBkbzoKLSAgICAtIHN0ZG91dC9zdGRlcnIgZG9uJ3Qgd29yayEgIG5lZWQgbWVzc2FnZSB3aW5kb3cgKG1heWJlIHNjcm9sbGFibGU/KQogICAgIC0gaGFuZGxlIHF1b3RlZCBjb21tYW5kLWxpbmUgYXJncyAoZXNwZWNpYWxseSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMpCiAgICAgLSBoYXZlIG1pbmltdW0gd2luZG93IHdpZHRoOiAgb2ggd2VsbAogICAgIC0gdXNlICUuMTAyM3MgdG8gc2ltcGxpZnkgdHJ1bmNhdGlvbiBvZiB0aXRsZS1iYXIgc3RyaW5nPwpAQCAtMjIsMTAgKzIxLDExIEBACiAgICAgICAgICAgICAgIG1hdGNoOyBzd2l0Y2hlZCB0byBwbmdfam1wYnVmKCkgbWFjcm8KICAgICAtIDEuMDI6ICBhZGRlZCBleHRyYSBzZXQgb2YgcGFyZW50aGVzZXMgdG8gcG5nX2ptcGJ1ZigpIG1hY3JvOyBmaXhlZAogICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgcGFyc2luZyBidWcKKyAgICAtIDEuMTA6ICBlbmFibGVkICJtZXNzYWdlIHdpbmRvdyIvY29uc29sZSAodGhhbmtzIHRvIERhdmlkIEdlbGRyZWljaCkKIAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAgR3JlZyBSb2Vsb2ZzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzLCIgd2l0aG91dCB3YXJyYW50eSBvZiBhbnkga2luZCwKICAgICAgIGV4cHJlc3Mgb3IgaW1wbGllZC4gIEluIG5vIGV2ZW50IHNoYWxsIHRoZSBhdXRob3Igb3IgY29udHJpYnV0b3JzCkBAIC01MiwxMyArNTIsMTQgQEAKIAogI2RlZmluZSBQUk9HTkFNRSAgInJwbmctd2luIgogI2RlZmluZSBMT05HTkFNRSAgIlNpbXBsZSBQTkcgVmlld2VyIGZvciBXaW5kb3dzIgotI2RlZmluZSBWRVJTSU9OICAgIjEuMDIgb2YgMTkgTWFyY2ggMjAwMCIKKyNkZWZpbmUgVkVSU0lPTiAgICIxLjIwIG9mIDI4IE1heSAyMDAxIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGNvbmlvLmg+ICAgICAgLyogb25seSBmb3IgX2dldGNoKCkgKi8KIAogLyogI2RlZmluZSBERUJVRyAgOiAgdGhpcyBlbmFibGVzIHRoZSBUcmFjZSgpIG1hY3JvcyAqLwogCkBAIC0xMjgsNyArMTI5LDE3IEBACiAgICAgZmlsZW5hbWUgPSAoY2hhciAqKU5VTEw7CiAKIAotICAgIC8qIEZpcnN0IHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3Igb3VyIGRpc3BsYXktc3lzdGVtIGV4cG9uZW50LCBpLmUuLAorICAgIC8qIEZpcnN0IHJlZW5hYmxlIGNvbnNvbGUgb3V0cHV0LCB3aGljaCBub3JtYWxseSBnb2VzIHRvIHRoZSBiaXQgYnVja2V0CisgICAgICogZm9yIHdpbmRvd2VkIGFwcHMuICBDbG9zaW5nIHRoZSBjb25zb2xlIHdpbmRvdyB3aWxsIHRlcm1pbmF0ZSB0aGUKKyAgICAgKiBhcHAuICBUaGFua3MgdG8gRGF2aWQuR2VsZHJlaWNoQHJlYWx2aXouY29tIGZvciBzdXBwbHlpbmcgdGhlIG1hZ2ljYWwKKyAgICAgKiBpbmNhbnRhdGlvbi4gKi8KKworICAgIEFsbG9jQ29uc29sZSgpOworICAgIGZyZW9wZW4oIkNPTk9VVCQiLCAiYSIsIHN0ZGVycik7CisgICAgZnJlb3BlbigiQ09OT1VUJCIsICJhIiwgc3Rkb3V0KTsKKworCisgICAgLyogTmV4dCBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIG91ciBkaXNwbGF5LXN5c3RlbSBleHBvbmVudCwgaS5lLiwKICAgICAgKiB0aGUgcHJvZHVjdCBvZiB0aGUgQ1JUIGV4cG9uZW50IGFuZCB0aGUgZXhwb25lbnQgY29ycmVzcG9uZGluZyB0bwogICAgICAqIHRoZSBmcmFtZS1idWZmZXIncyBsb29rdXAgdGFibGUgKExVVCksIGlmIGFueS4gIFRoaXMgaXMgbm90IGFuCiAgICAgICogZXhoYXVzdGl2ZSBsaXN0IG9mIExVVCB2YWx1ZXMgKGUuZy4sIE9wZW5TdGVwIGhhcyBhIGxvdCBvZiB3ZWlyZApAQCAtMjcyLDIwICsyODMsMzEgQEAKICAgICAvKiB1c2FnZSBzY3JlZW4gKi8KIAogICAgIGlmIChlcnJvcikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuJXMgJXM6ICAlc1xuIiwgUFJPR05BTUUsIFZFUlNJT04sIGFwcG5hbWUpOworICAgICAgICBpbnQgY2g7CisKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiVzICVzOiAgJXNcblxuIiwgUFJPR05BTUUsIFZFUlNJT04sIGFwcG5hbWUpOwogICAgICAgICByZWFkcG5nX3ZlcnNpb25faW5mbygpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIgotICAgICAgICAgIlVzYWdlOiAgJXMgWy1nYW1tYSBleHBdIFstYmdjb2xvciBiZ10gZmlsZS5wbmdcbiIKLSAgICAgICAgICIgICAgZXhwIFx0dHJhbnNmZXItZnVuY3Rpb24gZXhwb25lbnQgKGBgZ2FtbWEnJykgb2YgdGhlIGRpc3BsYXlcbiIKLSAgICAgICAgICJcdFx0ICBzeXN0ZW0gaW4gZmxvYXRpbmctcG9pbnQgZm9ybWF0IChlLmcuLCBgYCUuMWYnJyk7IGVxdWFsXG4iCi0gICAgICAgICAiXHRcdCAgdG8gdGhlIHByb2R1Y3Qgb2YgdGhlIGxvb2t1cC10YWJsZSBleHBvbmVudCAodmFyaWVzKVxuIgotICAgICAgICAgIlx0XHQgIGFuZCB0aGUgQ1JUIGV4cG9uZW50ICh1c3VhbGx5IDIuMik7IG11c3QgYmUgcG9zaXRpdmVcbiIKLSAgICAgICAgICIgICAgYmcgIFx0ZGVzaXJlZCBiYWNrZ3JvdW5kIGNvbG9yIGluIDctY2hhcmFjdGVyIGhleCBSR0IgZm9ybWF0XG4iCi0gICAgICAgICAiXHRcdCAgKGUuZy4sIGBgI2ZmNzcwMCcnIGZvciBvcmFuZ2U6ICBzYW1lIGFzIEhUTUwgY29sb3JzKTtcbiIKLSAgICAgICAgICJcdFx0ICB1c2VkIHdpdGggdHJhbnNwYXJlbnQgaW1hZ2VzXG4iCi0gICAgICAgICAiXG5QcmVzcyBRLCBFc2Mgb3IgbW91c2UgYnV0dG9uIDEgYWZ0ZXIgaW1hZ2UgaXMgZGlzcGxheWVkIHRvIHF1aXQuXG4iCi0gICAgICAgICAiXG4iLCBQUk9HTkFNRSwgZGVmYXVsdF9kaXNwbGF5X2V4cG9uZW50KTsKKyAgICAgICAgICAiVXNhZ2U6ICAlcyBbLWdhbW1hIGV4cF0gWy1iZ2NvbG9yIGJnXSBmaWxlLnBuZ1xuIgorICAgICAgICAgICIgICAgZXhwIFx0dHJhbnNmZXItZnVuY3Rpb24gZXhwb25lbnQgKGBgZ2FtbWEnJykgb2YgdGhlIGRpc3BsYXlcbiIKKyAgICAgICAgICAiXHRcdCAgc3lzdGVtIGluIGZsb2F0aW5nLXBvaW50IGZvcm1hdCAoZS5nLiwgYGAlLjFmJycpOyBlcXVhbFxuIgorICAgICAgICAgICJcdFx0ICB0byB0aGUgcHJvZHVjdCBvZiB0aGUgbG9va3VwLXRhYmxlIGV4cG9uZW50ICh2YXJpZXMpXG4iCisgICAgICAgICAgIlx0XHQgIGFuZCB0aGUgQ1JUIGV4cG9uZW50ICh1c3VhbGx5IDIuMik7IG11c3QgYmUgcG9zaXRpdmVcbiIKKyAgICAgICAgICAiICAgIGJnICBcdGRlc2lyZWQgYmFja2dyb3VuZCBjb2xvciBpbiA3LWNoYXJhY3RlciBoZXggUkdCIGZvcm1hdFxuIgorICAgICAgICAgICJcdFx0ICAoZS5nLiwgYGAjZmY3NzAwJycgZm9yIG9yYW5nZTogIHNhbWUgYXMgSFRNTCBjb2xvcnMpO1xuIgorICAgICAgICAgICJcdFx0ICB1c2VkIHdpdGggdHJhbnNwYXJlbnQgaW1hZ2VzXG4iCisgICAgICAgICAgIlxuUHJlc3MgUSwgRXNjIG9yIG1vdXNlIGJ1dHRvbiAxIGFmdGVyIGltYWdlIGlzIGRpc3BsYXllZCB0byBxdWl0LlxuIgorICAgICAgICAgICJQcmVzcyBRIG9yIEVzYyB0byBxdWl0IHRoaXMgdXNhZ2Ugc2NyZWVuLlxuIgorICAgICAgICAgICJcbiIsIFBST0dOQU1FLCBkZWZhdWx0X2Rpc3BsYXlfZXhwb25lbnQpOworICAgICAgICBkbworICAgICAgICAgICAgY2ggPSBfZ2V0Y2goKTsKKyAgICAgICAgd2hpbGUgKGNoICE9ICdxJyAmJiBjaCAhPSAnUScgJiYgY2ggIT0gMHgxQik7CiAgICAgICAgIGV4aXQoMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiVzICVzOiAgJXNcbiIsIFBST0dOQU1FLCBWRVJTSU9OLCBhcHBuYW1lKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgIlxuICAgW2NvbnNvbGUgd2luZG93OiAgY2xvc2luZyB0aGlzIHdpbmRvdyB3aWxsIHRlcm1pbmF0ZSAlc11cblxuIiwKKyAgICAgICAgICBQUk9HTkFNRSk7CiAgICAgfQogCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZy14LmMgYi9jb250cmliL2dyZWdib29rL3JwbmcteC5jCmluZGV4IGFlYTk3NWQuLmU3ODdlZjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZy14LmMKKysrIGIvY29udHJpYi9ncmVnYm9vay9ycG5nLXguYwpAQCAtMjEsMTAgKzIxLDEyIEBACiAgICAgLSAxLjEwOiAgYWRkZWQgc3VwcG9ydCBmb3Igbm9uLWRlZmF1bHQgdmlzdWFsczsgZml4ZWQgWCBwaXhlbC1jb252ZXJzaW9uCiAgICAgLSAxLjExOiAgYWRkZWQgZXh0cmEgc2V0IG9mIHBhcmVudGhlc2VzIHRvIHBuZ19qbXBidWYoKSBtYWNybzsgZml4ZWQKICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIHBhcnNpbmcgYnVnCisgICAgLSAxLjEyOiAgZml4ZWQgc21hbGwgWCBtZW1vcnkgbGVhayAodGhhbmtzIHRvIEZyYW5jb2lzIFBldGl0amVhbikKKyAgICAtIDEuMTM6ICBmaXhlZCBYRnJlZUdDKCkgY3Jhc2ggYnVnCiAKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAwIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHcmVnIFJvZWxvZnMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcywiIHdpdGhvdXQgd2FycmFudHkgb2YgYW55IGtpbmQsCiAgICAgICBleHByZXNzIG9yIGltcGxpZWQuICBJbiBubyBldmVudCBzaGFsbCB0aGUgYXV0aG9yIG9yIGNvbnRyaWJ1dG9ycwpAQCAtNTEsNyArNTMsNyBAQAogCiAjZGVmaW5lIFBST0dOQU1FICAicnBuZy14IgogI2RlZmluZSBMT05HTkFNRSAgIlNpbXBsZSBQTkcgVmlld2VyIGZvciBYIgotI2RlZmluZSBWRVJTSU9OICAgIjEuMTEgb2YgMTkgTWFyY2ggMjAwMCIKKyNkZWZpbmUgVkVSU0lPTiAgICIxLjEzIG9mIDE2IEF1Z3VzdCAyMDAxIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTExNyw2ICsxMTksNyBAQAogc3RhdGljIGludCBoYXZlX25vbmRlZmF1bHRfdmlzdWFsID0gRkFMU0U7CiBzdGF0aWMgaW50IGhhdmVfY29sb3JtYXAgPSBGQUxTRTsKIHN0YXRpYyBpbnQgaGF2ZV93aW5kb3cgPSBGQUxTRTsKK3N0YXRpYyBpbnQgaGF2ZV9nYyA9IEZBTFNFOwogLyoKIHVsZyBudW1jb2xvcnM9MCwgcGl4ZWxzWzI1Nl07CiB1c2ggcmVkc1syNTZdLCBncmVlbnNbMjU2XSwgYmx1ZXNbMjU2XTsKQEAgLTU0Miw5ICs1NDUsMjAgQEAKICAgICBYU2V0V01Qcm9wZXJ0aWVzKGRpc3BsYXksIHdpbmRvdywgcFdpbmRvd05hbWUsIHBJY29uTmFtZSwgTlVMTCwgMCwKICAgICAgIHNpemVfaGludHMsIHdtX2hpbnRzLCBOVUxMKTsKIAorICAgIC8qIHZhcmlvdXMgcHJvcGVydGllcyBhbmQgaGludHMgbm8gbG9uZ2VyIG5lZWRlZDsgZnJlZSBtZW1vcnkgKi8KKyAgICBpZiAocFdpbmRvd05hbWUpCisgICAgICAgWEZyZWUocFdpbmRvd05hbWUtPnZhbHVlKTsKKyAgICBpZiAocEljb25OYW1lKQorICAgICAgIFhGcmVlKHBJY29uTmFtZS0+dmFsdWUpOworICAgIGlmIChzaXplX2hpbnRzKQorICAgICAgICBYRnJlZShzaXplX2hpbnRzKTsKKyAgICBpZiAod21faGludHMpCisgICAgICAgWEZyZWUod21faGludHMpOworCiAgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB3aW5kb3cpOwogCiAgICAgZ2MgPSBYQ3JlYXRlR0MoZGlzcGxheSwgd2luZG93LCAwLCAmZ2N2YWx1ZXMpOworICAgIGhhdmVfZ2MgPSBUUlVFOwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEZpbGwgd2luZG93IHdpdGggdGhlIHNwZWNpZmllZCBiYWNrZ3JvdW5kIGNvbG9yLgpAQCAtODE0LDcgKzgyOCw4IEBACiAgICAgICAgIHhpbWFnZSA9IE5VTEw7CiAgICAgfQogCi0gICAgWEZyZWVHQyhkaXNwbGF5LCBnYyk7CisgICAgaWYgKGhhdmVfZ2MpCisgICAgICAgIFhGcmVlR0MoZGlzcGxheSwgZ2MpOwogCiAgICAgaWYgKGhhdmVfd2luZG93KQogICAgICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay9ycG5nMi13aW4uYyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzItd2luLmMKaW5kZXggZDYwNzNmZi4uMGMxYTlkMSAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9ycG5nMi13aW4uYworKysgYi9jb250cmliL2dyZWdib29rL3JwbmcyLXdpbi5jCkBAIC0yNCw4ICsyNCw5IEBACiAgICAgLSAxLjAzOiAgbW9kaWZpZWQgdG8gYWxsb3cgYWJicmV2aWF0ZWQgb3B0aW9ucwogICAgIC0gMS4wNDogIHJlbW92ZWQgYm9ndXMgZXh0cmEgYXJndW1lbnQgZnJvbSB1c2FnZSBmcHJpbnRmKCkgW0dsZW5uIFItUD9dOwogICAgICAgICAgICAgICBmaXhlZCBjb21tYW5kLWxpbmUgcGFyc2luZyBidWcKLSAgICAtIDEuMTA6ICBlbmFibGVkICJtZXNzYWdlIHdpbmRvdyIgKGNvbnNvbGUpLCB0aGFua3MgdG8gRGF2aWQgR2VsZHJlaWNoCisgICAgLSAxLjEwOiAgZW5hYmxlZCAibWVzc2FnZSB3aW5kb3ciL2NvbnNvbGUgKHRoYW5rcyB0byBEYXZpZCBHZWxkcmVpY2gpCiAgICAgLSAxLjIwOiAgYWRkZWQgcnVudGltZSBNTVgtZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBuZXcgLW1teCogb3B0aW9ucworICAgIC0gMS4yMTogIG1hZGUgbWlub3IgdHdlYWsgdG8gdXNhZ2Ugc2NyZWVuIHRvIGZpdCB3aXRoaW4gMjUtbGluZSBjb25zb2xlCiAKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU2LDcgKzU3LDcgQEAKIAogI2RlZmluZSBQUk9HTkFNRSAgInJwbmcyLXdpbiIKICNkZWZpbmUgTE9OR05BTUUgICJQcm9ncmVzc2l2ZSBQTkcgVmlld2VyIGZvciBXaW5kb3dzIgotI2RlZmluZSBWRVJTSU9OICAgIjEuMjAgb2YgMjkgSmFudWFyeSAyMDAxIgorI2RlZmluZSBWRVJTSU9OICAgIjEuMjEgb2YgMjkgSnVuZSAyMDAxIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQ1MSwxMiArNDUyLDEzIEBACiAgICAgICAgICAgIlx0XHQgIGNvbWJpbmluZyByb3dzLCBhbmQgZXhwYW5kaW5nIGludGVybGFjaW5nLCByZXNwZWN0aXZlbHlcbiIKICNlbmRpZgogICAgICAgICAgICJcblByZXNzIFEsIEVzYyBvciBtb3VzZSBidXR0b24gMSBhZnRlciBpbWFnZSBpcyBkaXNwbGF5ZWQgdG8gcXVpdC5cbiIKLSAgICAgICAgICAiUHJlc3MgUSBvciBFc2MgdG8gcXVpdCB0aGlzIHVzYWdlIHNjcmVlbi5cbiIKLSAgICAgICAgICAiXG4iLCBQUk9HTkFNRSwKKyAgICAgICAgICAiUHJlc3MgUSBvciBFc2MgdG8gcXVpdCB0aGlzIHVzYWdlIHNjcmVlbi4gIiwKKyAgICAgICAgICBQUk9HTkFNRSwKICNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkKICAgICAgICAgICBzdHJsZW4oUFJPR05BTUUpLCAiICIsCiAjZW5kaWYKICAgICAgICAgICBzdHJsZW4oUFJPR05BTUUpLCAiICIsIGRlZmF1bHRfZGlzcGxheV9leHBvbmVudCwgbnVtX2JncGF0KTsKKyAgICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgICAgIGRvCiAgICAgICAgICAgICBjaCA9IF9nZXRjaCgpOwogICAgICAgICB3aGlsZSAoY2ggIT0gJ3EnICYmIGNoICE9ICdRJyAmJiBjaCAhPSAweDFCKTsKQEAgLTQ2Niw2ICs0NjgsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAiXG4gICBbY29uc29sZSB3aW5kb3c6ICBjbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgdGVybWluYXRlICVzXVxuXG4iLAogICAgICAgICAgIFBST0dOQU1FKTsKKyAgICAgICAgZmZsdXNoKHN0ZGVycik7CiAgICAgfQogCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzIteC5jIGIvY29udHJpYi9ncmVnYm9vay9ycG5nMi14LmMKaW5kZXggNGY5MGVmMC4uMWM2MTI4MyAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9ycG5nMi14LmMKKysrIGIvY29udHJpYi9ncmVnYm9vay9ycG5nMi14LmMKQEAgLTI2LDYgKzI2LDggQEAKICAgICAtIDEuMTE6ICBhZGRlZCAtdXNsZWVwIG9wdGlvbiBmb3IgZGVtb3M7IGZpeGVkIGNvbW1hbmQtbGluZSBwYXJzaW5nIGJ1ZwogICAgIC0gMS4xMjogIGFkZGVkIC1wYXVzZSBvcHRpb24gZm9yIGRlbW9zIGFuZCB0ZXN0aW5nCiAgICAgLSAxLjIwOiAgYWRkZWQgcnVudGltZSBNTVgtZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBuZXcgLW1teCogb3B0aW9ucworICAgIC0gMS4yMTogIGZpeGVkIHNtYWxsIFggbWVtb3J5IGxlYWsgKHRoYW5rcyB0byBGcmFuY29pcyBQZXRpdGplYW4pCisgICAgLSAxLjIyOiAgZml4ZWQgWEZyZWVHQygpIGNyYXNoIGJ1ZwogCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01Niw3ICs1OCw3IEBACiAKICNkZWZpbmUgUFJPR05BTUUgICJycG5nMi14IgogI2RlZmluZSBMT05HTkFNRSAgIlByb2dyZXNzaXZlIFBORyBWaWV3ZXIgZm9yIFgiCi0jZGVmaW5lIFZFUlNJT04gICAiMS4yMCBvZiAyOSBKYW51YXJ5IDIwMDEiCisjZGVmaW5lIFZFUlNJT04gICAiMS4yMiBvZiAxNiBBdWd1c3QgMjAwMSIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0yMjcsNiArMjI5LDcgQEAKIHN0YXRpYyBpbnQgaGF2ZV9ub25kZWZhdWx0X3Zpc3VhbCA9IEZBTFNFOwogc3RhdGljIGludCBoYXZlX2NvbG9ybWFwID0gRkFMU0U7CiBzdGF0aWMgaW50IGhhdmVfd2luZG93ID0gRkFMU0U7CitzdGF0aWMgaW50IGhhdmVfZ2MgPSBGQUxTRTsKIAogCiAKQEAgLTU4NSw4ICs1ODgsMTUgQEAKICAgICAgKiBwYXR0ZXJuICovCiAKICAgICBpZiAocnBuZzJfeF9jcmVhdGVfd2luZG93KCkpIHsKKworICAgICAgICAvKiBHUlIgVEVNUE9SQVJZIEhBQ0s6ICB0aGlzIGlzIGZ1bmRhbWVudGFsbHkgbm8gZGlmZmVyZW50IGZyb20gY2FzZXMKKyAgICAgICAgICogYWJvdmU7IGxpYnBuZyBzaG91bGQgbG9uZ2ptcCgpIGJhY2sgdG8gdXMgd2hlbiBwbmdfcHRyIGdvZXMgYXdheS4KKyAgICAgICAgICogSWYgd2UvaXQgc2VnZmF1bHQgaW5zdGVhZCwgc2VlbXMgbGlrZSBhIGxpYnBuZyBidWcuLi4gKi8KKworICAgICAgICAvKiB3ZSdyZSBoZXJlIHZpYSBsaWJwbmcgY2FsbGJhY2ssIHNvIGlmIHdpbmRvdyBmYWlscywgY2xlYW4gYW5kIGJhaWwgKi8KICAgICAgICAgcmVhZHBuZzJfY2xlYW51cCgmcnBuZzJfaW5mbyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcnBuZzJfeF9jbGVhbnVwKCk7CisgICAgICAgIGV4aXQoMik7CiAgICAgfQogfQogCkBAIC03MzgsOSArNzQ4LDIwIEBACiAgICAgWFNldFdNUHJvcGVydGllcyhkaXNwbGF5LCB3aW5kb3csIHBXaW5kb3dOYW1lLCBwSWNvbk5hbWUsIE5VTEwsIDAsCiAgICAgICBzaXplX2hpbnRzLCB3bV9oaW50cywgTlVMTCk7CiAKKyAgICAvKiB2YXJpb3VzIHByb3BlcnRpZXMgYW5kIGhpbnRzIG5vIGxvbmdlciBuZWVkZWQ7IGZyZWUgbWVtb3J5ICovCisgICAgaWYgKHBXaW5kb3dOYW1lKQorICAgICAgIFhGcmVlKHBXaW5kb3dOYW1lLT52YWx1ZSk7CisgICAgaWYgKHBJY29uTmFtZSkKKyAgICAgICBYRnJlZShwSWNvbk5hbWUtPnZhbHVlKTsKKyAgICBpZiAoc2l6ZV9oaW50cykKKyAgICAgICAgWEZyZWUoc2l6ZV9oaW50cyk7CisgICAgaWYgKHdtX2hpbnRzKQorICAgICAgIFhGcmVlKHdtX2hpbnRzKTsKKwogICAgIFhNYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKIAogICAgIGdjID0gWENyZWF0ZUdDKGRpc3BsYXksIHdpbmRvdywgMCwgJmdjdmFsdWVzKTsKKyAgICBoYXZlX2djID0gVFJVRTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBYLSBhbmQgZGlzcGxheS1zcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KQEAgLTEzNTYsNyArMTM3Nyw4IEBACiAgICAgICAgIHhpbWFnZSA9IE5VTEw7CiAgICAgfQogCi0gICAgWEZyZWVHQyhkaXNwbGF5LCBnYyk7CisgICAgaWYgKGhhdmVfZ2MpCisgICAgICAgIFhGcmVlR0MoZGlzcGxheSwgZ2MpOwogCiAgICAgaWYgKGhhdmVfd2luZG93KQogICAgICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay90b3VjYW4ucG5nIGIvY29udHJpYi9ncmVnYm9vay90b3VjYW4ucG5nCmluZGV4IDAzOTYwZDQuLjI2YzkzMmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svdG91Y2FuLnBuZworKysgYi9jb250cmliL2dyZWdib29rL3RvdWNhbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29udHJpYi9tc3ZjdGVzdC9tc3ZjdGVzdC5kc3AgYi9jb250cmliL21zdmN0ZXN0L21zdmN0ZXN0LmRzcAppbmRleCBiYTM5NDg3Li5lYTgxY2IwIDEwMDY0NAotLS0gYS9jb250cmliL21zdmN0ZXN0L21zdmN0ZXN0LmRzcAorKysgYi9jb250cmliL21zdmN0ZXN0L21zdmN0ZXN0LmRzcApAQCAtNTQsNyArNTQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2Ci0jIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsXGxpYnBuZzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiAuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGxcbGlicG5nMTAubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKICMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sCiBPdXREaXI9LlxkbGwKIFNPVVJDRT0iJChJbnB1dFBhdGgpIgpAQCAtODQsNyArODQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0Ci0jIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZ1xsaWJwbmcyZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmdcbGlicG5nMTBkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CiAjIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbAogT3V0RGlyPS5cZGxsX2RiZwogU09VUkNFPSIkKElucHV0UGF0aCkiCkBAIC0xMTQsNyArMTE0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQogIyBBREQgQkFTRSBMSU5LMzIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgotIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMmEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiAuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGxfYXNtXGxpYnBuZzEwYS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgogIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wKIE91dERpcj0uXGRsbF9hc20KIFNPVVJDRT0iJChJbnB1dFBhdGgpIgpAQCAtMTQ0LDcgKzE0NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKICMgQUREIEJBU0UgTElOSzMyIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKLSMgQUREIExJTkszMiAuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGxfZGJnYVxsaWJwbmcyYi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmdhXGxpYnBuZzEwYi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAogIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wKIE91dERpcj0uXGRsbF9kYmdhCiBTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG5nbWludXMvbWFrZWZpbGUuc3RkIGIvY29udHJpYi9wbmdtaW51cy9tYWtlZmlsZS5zdGQKaW5kZXggYzk4Y2Q2NC4uYjMzYjAyMiAxMDA2NDQKLS0tIGEvY29udHJpYi9wbmdtaW51cy9tYWtlZmlsZS5zdGQKKysrIGIvY29udHJpYi9wbmdtaW51cy9tYWtlZmlsZS5zdGQKQEAgLTEsMjYgKzEsMzEgQEAKICMgTWFrZWZpbGUgZm9yIFBuZ01pbnVzIChwbmcycG5tIGFuZCBwbm0ycG5nKQogIyBMaW51eCAvIFVuaXgKIAotQ0M9Y2MgLU8KLUxEPWNjIC1PCi0jQ0M9Z2NjIC1PCi0jTEQ9Z2NjIC1PCi1MQj1hcgotUk09cm0KLUNQPWNwCisjQ0M9Y2MKK0NDPWdjYworTEQ9JChDQykKIAotUE5HUEFUSCA9IC91c3IvbG9jYWwKLVBOR0lOQyA9ICQoUE5HUEFUSCkvaW5jbHVkZQotI1BOR0xJQiA9ICQoUE5HUEFUSCkvbGliIC1scG5nCi1QTkdMSUIgPSAkKFBOR1BBVEgpL2xpYi9saWJwbmcuYQorUk09cm0gLWYKIAotWlBBVEggPSAvdXNyL2xvY2FsCi1aSU5DID0gJChaUEFUSCkvaW5jbHVkZQotI1pMSUIgPSAkKFpQQVRIKS9saWIgLWx6Ci1aTElCID0gJChaUEFUSCkvbGliL2xpYnouYQorI1BOR1BBVEggPSAvdXNyL2xvY2FsCisjUE5HSU5DID0gLUkkKFBOR1BBVEgpL2luY2x1ZGUvbGlicG5nMTAKKyNQTkdMSUIgPSAtTCQoUE5HUEFUSCkvbGliIC1scG5nMTAKKyNQTkdMSUJTID0gJChQTkdQQVRIKS9saWIvbGlicG5nMTAuYQorUE5HSU5DID0gLUkuLi8uLgorUE5HTElCID0gLUwuLi8uLiAtbHBuZworUE5HTElCUyA9IC4uLy4uL2xpYnBuZy5hCiAKLUNDRkxBR1M9LUkkKFBOR0lOQykgLUkkKFpJTkMpCi1MREZMQUdTPS1MJChQTkdMSUIpIC1MJChaTElCKQorI1pQQVRIID0gL3Vzci9sb2NhbAorI1pJTkMgPSAtSSQoWlBBVEgpL2luY2x1ZGUKKyNaTElCID0gLUwkKFpQQVRIKS9saWIgLWx6CisjWkxJQlMgPSAkKFpQQVRIKS9saWIvbGliei5hCitaSU5DID0gLUkuLi8uLi8uLi96bGliCitaTElCID0gLUwuLi8uLi8uLi96bGliIC1segorWkxJQlMgPSAuLi8uLi8uLi96bGliL2xpYnouYQorCitDRkxBR1M9LU8zICQoUE5HSU5DKSAkKFpJTkMpCitMREZMQUdTPSQoUE5HTElCKSAkKFpMSUIpCitMREZMQUdTUz0kKFBOR0xJQlMpICQoWkxJQlMpCiBDPS5jCiBPPS5vCiBMPS5hCkBAIC0yOCwyNSArMzMsMzMgQEAKIAogIyBkZXBlbmRlbmNpZXMKIAotYWxsOiBwbmcycG5tJChFKSBwbm0ycG5nJChFKQorI2FsbDogcG5nMnBubSQoRSkgcG5tMnBuZyQoRSkKK2FsbDogcG5nMnBubSQoRSkgcG5tMnBuZyQoRSkgcG5nMnBubS1zdGF0aWMkKEUpIHBubTJwbmctc3RhdGljJChFKQogCiBwbmcycG5tJChPKTogcG5nMnBubSQoQykKLQkkKENDKSAtYyAkKENDRkxBR1MpIHBuZzJwbm0kKEMpCisJJChDQykgLWMgJChDRkxBR1MpIHBuZzJwbm0kKEMpCiAKIHBuZzJwbm0kKEUpOiBwbmcycG5tJChPKQotCSQoTEQpIC1vIHBuZzJwbm0kKEUpIHBuZzJwbm0kKE8pICQoTERGTEFHUykgLWxwbmcgLWx6IC1sbQorCSQoTEQpIC1vIHBuZzJwbm0kKEUpIHBuZzJwbm0kKE8pICQoTERGTEFHUykgLWxtCisKK3BuZzJwbm0tc3RhdGljJChFKTogcG5nMnBubSQoTykKKwkkKExEKSAtbyBwbmcycG5tLXN0YXRpYyQoRSkgcG5nMnBubSQoTykgJChMREZMQUdTUykgLWxtCiAKIHBubTJwbmckKE8pOiBwbm0ycG5nJChDKQotCSQoQ0MpIC1jICQoQ0NGTEFHUykgcG5tMnBuZyQoQykKKwkkKENDKSAtYyAkKENGTEFHUykgcG5tMnBuZyQoQykKIAogcG5tMnBuZyQoRSk6IHBubTJwbmckKE8pCi0JJChMRCkgLW8gcG5tMnBuZyQoRSkgcG5tMnBuZyQoTykgJChMREZMQUdTKSAtbHBuZyAtbHogLWxtCisJJChMRCkgLW8gcG5tMnBuZyQoRSkgcG5tMnBuZyQoTykgJChMREZMQUdTKSAtbG0KKworcG5tMnBuZy1zdGF0aWMkKEUpOiBwbm0ycG5nJChPKQorCSQoTEQpIC1vIHBubTJwbmctc3RhdGljJChFKSBwbm0ycG5nJChPKSAkKExERkxBR1NTKSAtbG0KIAogY2xlYW46CiAJJChSTSkgcG5nMnBubSQoTykKIAkkKFJNKSBwbm0ycG5nJChPKQogCSQoUk0pIHBuZzJwbm0kKEUpCiAJJChSTSkgcG5tMnBuZyQoRSkKKwkkKFJNKSBwbmcycG5tLXN0YXRpYyQoRSkKKwkkKFJNKSBwbm0ycG5nLXN0YXRpYyQoRSkKIAogIyBFbmQgb2YgbWFrZWZpbGUgZm9yIHBuZzJwbm0gLyBwbm0ycG5nCi0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG5nbWludXMvcG5nMnBubS5zaCBiL2NvbnRyaWIvcG5nbWludXMvcG5nMnBubS5zaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9jb250cmliL3BuZ21pbnVzL3BuZ21pbnVzLnNoIGIvY29udHJpYi9wbmdtaW51cy9wbmdtaW51cy5zaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9jb250cmliL3BuZ21pbnVzL3BubTJwbmcuc2ggYi9jb250cmliL3BuZ21pbnVzL3BubTJwbmcuc2gKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvY29udHJpYi92aXN1cG5nL1BuZ0ZpbGUuYyBiL2NvbnRyaWIvdmlzdXBuZy9QbmdGaWxlLmMKaW5kZXggYWY4ZDgxYy4uOTU5YWZlOSAxMDA2NDQKLS0tIGEvY29udHJpYi92aXN1cG5nL1BuZ0ZpbGUuYworKysgYi9jb250cmliL3Zpc3VwbmcvUG5nRmlsZS5jCkBAIC0zNzAsMTQgKzM3MCwxNCBAQAogICAgICAgICAKICAgICAgICAgLy8gY2xlYW4gdXAgYWZ0ZXIgdGhlIHdyaXRlLCBhbmQgZnJlZSBhbnkgbWVtb3J5IGFsbG9jYXRlZAogICAgICAgICAKLSAgICAgICAgcG5nX2Rlc3Ryb3lfd3JpdGVfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIpOworICAgICAgICBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoJnBuZ19wdHIsIChwbmdfaW5mb3BwKSBOVUxMKTsKICAgICAgICAgCiAgICAgICAgIC8vIHllcHAsIGRvbmUKICAgICB9CiAKICAgICBDYXRjaCAobXNnKQogICAgIHsKLSAgICAgICAgcG5nX2Rlc3Ryb3lfd3JpdGVfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIpOworICAgICAgICBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoJnBuZ19wdHIsIChwbmdfaW5mb3BwKSBOVUxMKTsKIAogICAgICAgICBpZihwcGJSb3dQb2ludGVycykKICAgICAgICAgICAgIGZyZWUgKHBwYlJvd1BvaW50ZXJzKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdmlzdXBuZy9WaXN1YWxQbmcuZHNwIGIvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKaW5kZXggYTg4MzQ2Zi4uMjQ0MDJjYSAxMDA2NDQKLS0tIGEvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKKysrIGIvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKQEAgLTU5LDggKzU5LDggQEAKICMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBsaWJwbmcyLmxpYiB6bGliZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoibGlicG5nIiAvbGlicGF0aDoiemxpYiIKLSMgQUREIExJTkszMiBsaWJwbmcyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGwiCisjIEFERCBCQVNFIExJTkszMiBsaWJwbmcxMC5saWIgemxpYmQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6ImxpYnBuZyIgL2xpYnBhdGg6InpsaWIiCisjIEFERCBMSU5LMzIgbGlicG5nMTAubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbCIKICMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sCiBPdXREaXI9LlxkbGwKIFNPVVJDRT0iJChJbnB1dFBhdGgpIgpAQCAtOTIsOSArOTIsOSBAQAogIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGxpYnBuZzIubGliIHpsaWJkLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiJsaWJwbmciIC9saWJwYXRoOiJ6bGliIgorIyBBREQgQkFTRSBMSU5LMzIgbGlicG5nMTAubGliIHpsaWJkLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiJsaWJwbmciIC9saWJwYXRoOiJ6bGliIgogIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgbGlicG5nMmQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmciCisjIEFERCBMSU5LMzIgbGlicG5nMTBkLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGxfZGJnIgogIyBTVUJUUkFDVCBMSU5LMzIgL25vZGVmYXVsdGxpYgogIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wKIE91dERpcj0uXGRsbF9kYmcKQEAgLTEyOCw3ICsxMjgsNyBAQAogIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGxpYnBuZzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbCIKKyMgQUREIEJBU0UgTElOSzMyIGxpYnBuZzEwLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGwiCiAjIEFERCBMSU5LMzIgbGlicG5nLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xsaWIiCiAjIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbAogT3V0RGlyPS5cbGliCkBAIC0xNjEsNyArMTYxLDcgQEAKICMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBsaWJwbmcyZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZyIKKyMgQUREIEJBU0UgTElOSzMyIGxpYnBuZzEwZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZyIKICMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL25vZGVmYXVsdGxpYgogIyBBREQgTElOSzMyIGxpYnBuZy5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcbGliX2RiZyIKICMgU1VCVFJBQ1QgTElOSzMyIC9ub2RlZmF1bHRsaWIKZGlmZiAtLWdpdCBhL2V4YW1wbGUuYyBiL2V4YW1wbGUuYwppbmRleCBmMGZlNjg4Li5hNzJiZWRjIDEwMDY0NAotLS0gYS9leGFtcGxlLmMKKysrIGIvZXhhbXBsZS5jCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgIGlmIChpbmZvX3B0ciA9PSBOVUxMKQogICAgewogICAgICAgZmNsb3NlKGZwKTsKLSAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAocG5nX2luZm9wcClOVUxMLCAocG5nX2luZm9wcClOVUxMKTsKKyAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCBwbmdfaW5mb3BwX05VTEwsIHBuZ19pbmZvcHBfTlVMTCk7CiAgICAgICByZXR1cm4gKEVSUk9SKTsKICAgIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBACiAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYocG5nX3B0cikpKQogICAgewogICAgICAgLyogRnJlZSBhbGwgb2YgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBuZ19wdHIgYW5kIGluZm9fcHRyICovCi0gICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmcG5nX3B0ciwgJmluZm9fcHRyLCAocG5nX2luZm9wcClOVUxMKTsKKyAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIHBuZ19pbmZvcHBfTlVMTCk7CiAgICAgICBmY2xvc2UoZnApOwogICAgICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGhhZCBhIHByb2JsZW0gcmVhZGluZyB0aGUgZmlsZSAqLwogICAgICAgcmV0dXJuIChFUlJPUik7CkBAIC0xNTcsNyArMTU3LDcgQEAKICAgICAqIGFkanVzdG1lbnQpLCB0aGVuIHlvdSBjYW4gcmVhZCB0aGUgZW50aXJlIGltYWdlIChpbmNsdWRpbmcKICAgICAqIHBpeGVscykgaW50byB0aGUgaW5mbyBzdHJ1Y3R1cmUgd2l0aCB0aGlzIGNhbGw6CiAgICAgKi8KLSAgIHBuZ19yZWFkX3BuZyhwbmdfcHRyLCBpbmZvX3B0ciwgcG5nX3RyYW5zZm9ybXMsIE5VTEwpOworICAgcG5nX3JlYWRfcG5nKHBuZ19wdHIsIGluZm9fcHRyLCBwbmdfdHJhbnNmb3JtcywgcG5nX3ZvaWRwX05VTEwpOwogI2Vsc2UKICAgIC8qIE9LLCB5b3UncmUgZG9pbmcgaXQgdGhlIGhhcmQgd2F5LCB3aXRoIHRoZSBsb3dlci1sZXZlbCBmdW5jdGlvbnMgKi8KIApAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICBwbmdfcmVhZF9pbmZvKHBuZ19wdHIsIGluZm9fcHRyKTsKIAogICAgcG5nX2dldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCAmd2lkdGgsICZoZWlnaHQsICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLAotICAgICAgICZpbnRlcmxhY2VfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgJmludGVybGFjZV90eXBlLCBpbnRfcF9OVUxMLCBpbnRfcF9OVUxMKTsKIAogLyoqKiogU2V0IHVwIHRoZSBkYXRhIHRyYW5zZm9ybWF0aW9ucyB5b3Ugd2FudC4gIE5vdGUgdGhhdCB0aGVzZSBhcmUgYWxsCiAgKioqKiBvcHRpb25hbC4gIE9ubHkgY2FsbCB0aGVtIGlmIHlvdSB3YW50L25lZWQgdGhlbS4gIE1hbnkgb2YgdGhlCkBAIC0xOTQsMTcgKzE5NCwxNyBAQAogCiAgICAvKiBFeHBhbmQgcGFsZXR0ZWQgY29sb3JzIGludG8gdHJ1ZSBSR0IgdHJpcGxldHMgKi8KICAgIGlmIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCi0gICAgICBwbmdfc2V0X2V4cGFuZChwbmdfcHRyKTsKKyAgICAgIHBuZ19zZXRfcGFsZXR0ZV9yZ2IocG5nX3B0cik7CiAKICAgIC8qIEV4cGFuZCBncmF5c2NhbGUgaW1hZ2VzIHRvIHRoZSBmdWxsIDggYml0cyBmcm9tIDEsIDIsIG9yIDQgYml0cy9waXhlbCAqLwogICAgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSAmJiBiaXRfZGVwdGggPCA4KQotICAgICAgcG5nX3NldF9leHBhbmQocG5nX3B0cik7CisgICAgICBwbmdfc2V0X2dyYXlfMV8yXzRfdG9fOChwbmdfcHRyKTsKIAogICAgLyogRXhwYW5kIHBhbGV0dGVkIG9yIFJHQiBpbWFnZXMgd2l0aCB0cmFuc3BhcmVuY3kgdG8gZnVsbCBhbHBoYSBjaGFubmVscwogICAgICogc28gdGhlIGRhdGEgd2lsbCBiZSBhdmFpbGFibGUgYXMgUkdCQSBxdWFydGV0cy4KICAgICAqLwogICAgaWYgKHBuZ19nZXRfdmFsaWQocG5nX3B0ciwgaW5mb19wdHIsIFBOR19JTkZPX3RSTlMpKQotICAgICAgcG5nX3NldF9leHBhbmQocG5nX3B0cik7CisgICAgICBwbmdfc2V0X3RSTlNfdG9fYWxwaGEocG5nX3B0cik7CiAKICAgIC8qIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byBkcmF3IHRyYW5zcGFyZW50IGFuZCBhbHBoYSBpbWFnZXMgb3Zlci4KICAgICAqIEl0IGlzIHBvc3NpYmxlIHRvIHNldCB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBkaXJlY3RseQpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgICAgICBwbmdfY29sb3Igc3RkX2NvbG9yX2N1YmVbTUFYX1NDUkVFTl9DT0xPUlNdOwogCiAgICAgICAgICBwbmdfc2V0X2RpdGhlcihwbmdfcHRyLCBzdGRfY29sb3JfY3ViZSwgTUFYX1NDUkVFTl9DT0xPUlMsCi0gICAgICAgICAgICBNQVhfU0NSRUVOX0NPTE9SUywgTlVMTCwgMCk7CisgICAgICAgICAgICBNQVhfU0NSRUVOX0NPTE9SUywgcG5nX3VpbnRfMTZwX05VTEwsIDApOwogICAgICAgfQogICAgICAgLyogVGhpcyByZWR1Y2VzIHRoZSBpbWFnZSB0byB0aGUgcGFsZXR0ZSBzdXBwbGllZCBpbiB0aGUgZmlsZSAqLwogICAgICAgZWxzZSBpZiAocG5nX2dldF9QTFRFKHBuZ19wdHIsIGluZm9fcHRyLCAmcGFsZXR0ZSwgJm51bV9wYWxldHRlKSkKQEAgLTM1NCwxOCArMzU0LDE4IEBACiAjaWZkZWYgc2luZ2xlIC8qIFJlYWQgdGhlIGltYWdlIGEgc2luZ2xlIHJvdyBhdCBhIHRpbWUgKi8KICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKICAgICAgIHsKLSAgICAgICAgIHBuZ19yZWFkX3Jvd3MocG5nX3B0ciwgJnJvd19wb2ludGVyc1t5XSwgTlVMTCwgMSk7CisgICAgICAgICBwbmdfcmVhZF9yb3dzKHBuZ19wdHIsICZyb3dfcG9pbnRlcnNbeV0sIHBuZ19ieXRlcHBfTlVMTCwgMSk7CiAgICAgICB9CiAKICNlbHNlIG5vX3NpbmdsZSAvKiBSZWFkIHRoZSBpbWFnZSBzZXZlcmFsIHJvd3MgYXQgYSB0aW1lICovCiAgICAgICBmb3IgKHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IG51bWJlcl9vZl9yb3dzKQogICAgICAgewogI2lmZGVmIHNwYXJrbGUgLyogUmVhZCB0aGUgaW1hZ2UgdXNpbmcgdGhlICJzcGFya2xlIiBlZmZlY3QuICovCi0gICAgICAgICBwbmdfcmVhZF9yb3dzKHBuZ19wdHIsICZyb3dfcG9pbnRlcnNbeV0sIE5VTEwsIG51bWJlcl9vZl9yb3dzKTsKLQotICAgICAgICAgcG5nX3JlYWRfcm93cyhwbmdfcHRyLCBOVUxMLCByb3dfcG9pbnRlcnNbeV0sIG51bWJlcl9vZl9yb3dzKTsKKyAgICAgICAgIHBuZ19yZWFkX3Jvd3MocG5nX3B0ciwgJnJvd19wb2ludGVyc1t5XSwgcG5nX2J5dGVwcF9OVUxMLAorICAgICAgICAgICAgbnVtYmVyX29mX3Jvd3MpOwogI2Vsc2Ugbm9fc3BhcmtsZSAvKiBSZWFkIHRoZSBpbWFnZSB1c2luZyB0aGUgInJlY3RhbmdsZSIgZWZmZWN0ICovCi0gICAgICAgICBwbmdfcmVhZF9yb3dzKHBuZ19wdHIsIE5VTEwsICZyb3dfcG9pbnRlcnNbeV0sIG51bWJlcl9vZl9yb3dzKTsKKyAgICAgICAgIHBuZ19yZWFkX3Jvd3MocG5nX3B0ciwgcG5nX2J5dGVwcF9OVUxMLCAmcm93X3BvaW50ZXJzW3ldLAorICAgICAgICAgICAgbnVtYmVyX29mX3Jvd3MpOwogI2VuZGlmIG5vX3NwYXJrbGUgLyogdXNlIG9ubHkgb25lIG9mIHRoZXNlIHR3byBtZXRob2RzICovCiAgICAgICB9CiAKQEAgLTM4Miw3ICszODIsNyBAQAogICAgLyogQXQgdGhpcyBwb2ludCB5b3UgaGF2ZSByZWFkIHRoZSBlbnRpcmUgaW1hZ2UgKi8KIAogICAgLyogY2xlYW4gdXAgYWZ0ZXIgdGhlIHJlYWQsIGFuZCBmcmVlIGFueSBtZW1vcnkgYWxsb2NhdGVkIC0gUkVRVUlSRUQgKi8KLSAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIChwbmdfaW5mb3BwKU5VTEwpOworICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoJnBuZ19wdHIsICZpbmZvX3B0ciwgcG5nX2luZm9wcF9OVUxMKTsKIAogICAgLyogY2xvc2UgdGhlIGZpbGUgKi8KICAgIGZjbG9zZShmcCk7CkBAIC00MTUsMTMgKzQxNSwxMyBAQAogCiAgICBpZiAoKmluZm9fcHRyID09IE5VTEwpCiAgICB7Ci0gICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdChwbmdfcHRyLCBpbmZvX3B0ciwgKHBuZ19pbmZvcHApTlVMTCk7CisgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdChwbmdfcHRyLCBpbmZvX3B0ciwgcG5nX2luZm9wcF9OVUxMKTsKICAgICAgIHJldHVybiAoRVJST1IpOwogICAgfQogCiAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYoKCpwbmdfcHRyKSkpKQogICAgewotICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QocG5nX3B0ciwgaW5mb19wdHIsIChwbmdfaW5mb3BwKU5VTEwpOworICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QocG5nX3B0ciwgaW5mb19wdHIsIHBuZ19pbmZvcHBfTlVMTCk7CiAgICAgICByZXR1cm4gKEVSUk9SKTsKICAgIH0KIApAQCAtNDUwLDcgKzQ1MCw3IEBACiAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYoKCpwbmdfcHRyKSkpKQogICAgewogICAgICAgLyogRnJlZSB0aGUgcG5nX3B0ciBhbmQgaW5mb19wdHIgbWVtb3J5IG9uIGVycm9yICovCi0gICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdChwbmdfcHRyLCBpbmZvX3B0ciwgKHBuZ19pbmZvcHApTlVMTCk7CisgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdChwbmdfcHRyLCBpbmZvX3B0ciwgcG5nX2luZm9wcF9OVUxMKTsKICAgICAgIHJldHVybiAoRVJST1IpOwogICAgfQogCkBAIC00ODIsMjEgKzQ4Miw0NyBAQAogcm93X2NhbGxiYWNrKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBuZXdfcm93LAogICAgcG5nX3VpbnRfMzIgcm93X251bSwgaW50IHBhc3MpCiB7Ci0vKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IGluIHRoZSBpbWFnZS4gIElmIHRoZQotICogaW1hZ2UgaXMgaW50ZXJsYWNpbmcsIGFuZCB5b3UgdHVybmVkIG9uIHRoZSBpbnRlcmxhY2UgaGFuZGxlciwKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IGluIHRoZSBpbWFnZS4gIElmIHRoZQorICogaW1hZ2UgaXMgaW50ZXJsYWNlZCwgYW5kIHlvdSB0dXJuZWQgb24gdGhlIGludGVybGFjZSBoYW5kbGVyLAogICogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBmb3IgZXZlcnkgcm93IGluIGV2ZXJ5IHBhc3MuCi0gKiBTb21lIG9mIHRoZXNlIHJvd3Mgd2lsbCBub3QgYmUgY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyBwYXNzLgotICogV2hlbiB0aGUgcm93IGlzIG5vdCBjaGFuZ2VkLCB0aGUgbmV3X3JvdyB2YXJpYWJsZSB3aWxsIGJlIE5VTEwuCisgKgorICogSW4gdGhpcyBmdW5jdGlvbiB5b3Ugd2lsbCByZWNlaXZlIGEgcG9pbnRlciB0byBuZXcgcm93IGRhdGEgZnJvbQorICogbGlicG5nIGNhbGxlZCBuZXdfcm93IHRoYXQgaXMgdG8gcmVwbGFjZSBhIGNvcnJlc3BvbmRpbmcgcm93IChvZgorICogdGhlIHNhbWUgZGF0YSBmb3JtYXQpIGluIGEgYnVmZmVyIGFsbG9jYXRlZCBieSB5b3VyIGFwcGxpY2F0aW9uLgorICogCisgKiBUaGUgbmV3IHJvdyBkYXRhIHBvaW50ZXIgbmV3X3JvdyBtYXkgYmUgTlVMTCwgaW5kaWNhdGluZyB0aGVyZSBpcworICogbm8gbmV3IGRhdGEgdG8gYmUgcmVwbGFjZWQgKGluIGNhc2VzIG9mIGludGVybGFjZSBsb2FkaW5nKS4KKyAqIAorICogSWYgbmV3X3JvdyBpcyBub3QgTlVMTCB0aGVuIHlvdSBuZWVkIHRvIGNhbGwKKyAqIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdygpIHRvIHJlcGxhY2UgdGhlIGNvcnJlc3BvbmRpbmcgcm93IGFzCisgKiBzaG93biBiZWxvdzoKKyAqLworICAgLyogQ2hlY2sgaWYgcm93X251bSBpcyBpbiBib3VuZHMuICovCisgICBpZigocm93X251bSA+PSAwKSAmJiAocm93X251bSA8IGhlaWdodCkpCisgICB7CisgICAgIC8qIEdldCBwb2ludGVyIHRvIGNvcnJlc3BvbmRpbmcgcm93IGluIG91cgorICAgICAgKiBQTkcgcmVhZCBidWZmZXIuCisgICAgICAqLworICAgICBwbmdfYnl0ZXAgb2xkX3JvdyA9ICgocG5nX2J5dGVwICopb3VyX2RhdGEpW3Jvd19udW1dOworCisgICAgIC8qIElmIGJvdGggcm93cyBhcmUgYWxsb2NhdGVkIHRoZW4gY29weSB0aGUgbmV3IHJvdworICAgICAgKiBkYXRhIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdyBkYXRhLgorICAgICAgKi8KKyAgICAgaWYoKG9sZF9yb3cgIT0gTlVMTCkgJiYgKG5ld19yb3cgIT0gTlVMTCkpCisgICAgIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdyhwbmdfcHRyLCBvbGRfcm93LCBuZXdfcm93KTsKKyAgIH0KKy8qCiAgKiBUaGUgcm93cyBhbmQgcGFzc2VzIGFyZSBjYWxsZWQgaW4gb3JkZXIsIHNvIHlvdSBkb24ndCByZWFsbHkKICAqIG5lZWQgdGhlIHJvd19udW0gYW5kIHBhc3MsIGJ1dCBJJ20gc3VwcGx5aW5nIHRoZW0gYmVjYXVzZSBpdAogICogbWF5IG1ha2UgeW91ciBsaWZlIGVhc2llci4KICAqCiAgKiBGb3IgdGhlIG5vbi1OVUxMIHJvd3Mgb2YgaW50ZXJsYWNlZCBpbWFnZXMsIHlvdSBtdXN0IGNhbGwKLSAqIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdygpIHBhc3NpbmcgaW4gdGhlIHJvdyBhbmQgdGhlCi0gKiBvbGQgcm93LiAgWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZm9yIE5VTEwgcm93cyAoaXQgd2lsbAotICoganVzdCByZXR1cm4pIGFuZCBmb3Igbm9uLWludGVybGFjZWQgaW1hZ2VzIChpdCBqdXN0IGRvZXMgdGhlCi0gKiBwbmdfbWVtY3B5IGZvciB5b3UpIGlmIGl0IHdpbGwgbWFrZSB0aGUgY29kZSBlYXNpZXIuICBUaHVzLCB5b3UKLSAqIGNhbiBqdXN0IGRvIHRoaXMgZm9yIGFsbCBjYXNlczoKKyAqIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdygpIHBhc3NpbmcgaW4gdGhlIG5ldyByb3cgYW5kIHRoZQorICogb2xkIHJvdywgYXMgZGVtb25zdHJhdGVkIGFib3ZlLiAgWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZm9yCisgKiBOVUxMIHJvd3MgKGl0IHdpbGwganVzdCByZXR1cm4pIGFuZCBmb3Igbm9uLWludGVybGFjZWQgaW1hZ2VzCisgKiAoaXQganVzdCBkb2VzIHRoZSBwbmdfbWVtY3B5IGZvciB5b3UpIGlmIGl0IHdpbGwgbWFrZSB0aGUgY29kZQorICogZWFzaWVyLiAgVGh1cywgeW91IGNhbiBqdXN0IGRvIHRoaXMgZm9yIGFsbCBjYXNlczoKICAqLwogCiAgICBwbmdfcHJvZ3Jlc3NpdmVfY29tYmluZV9yb3cocG5nX3B0ciwgb2xkX3JvdywgbmV3X3Jvdyk7CkBAIC01MDUsOCArNTMxLDggQEAKICAqIHRoYXQgdGhlIGZpcnN0IHBhc3MgKHBhc3MgPT0gMCByZWFsbHkpIHdpbGwgY29tcGxldGVseSBjb3ZlcgogICogdGhlIG9sZCByb3csIHNvIHRoZSByb3dzIGRvIG5vdCBoYXZlIHRvIGJlIGluaXRpYWxpemVkLiAgQWZ0ZXIKICAqIHRoZSBmaXJzdCBwYXNzIChhbmQgb25seSBmb3IgaW50ZXJsYWNlZCBpbWFnZXMpLCB5b3Ugd2lsbCBoYXZlCi0gKiB0byBwYXNzIHRoZSBjdXJyZW50IHJvdywgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIGNvbWJpbmUgdGhlCi0gKiBvbGQgcm93IGFuZCB0aGUgbmV3IHJvdy4KKyAqIHRvIHBhc3MgdGhlIGN1cnJlbnQgcm93IGFzIG5ld19yb3csIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBjb21iaW5lCisgKiB0aGUgb2xkIHJvdyBhbmQgdGhlIG5ldyByb3cuCiAgKi8KIH0KIApAQCAtNTU2LDcgKzU4Miw3IEBACiAgICBpZiAoaW5mb19wdHIgPT0gTlVMTCkKICAgIHsKICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoJnBuZ19wdHIsICAocG5nX2luZm9wcClOVUxMKTsKKyAgICAgIHBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCgmcG5nX3B0ciwgIHBuZ19pbmZvcHBfTlVMTCk7CiAgICAgICByZXR1cm4gKEVSUk9SKTsKICAgIH0KIApAQCAtNTg4LDcgKzYxNCw3IEBACiAgICAgKiBpbWFnZSBpbmZvIGxpdmluZyBpbmZvIGluIHRoZSBzdHJ1Y3R1cmUuICBZb3UgY291bGQgInwiIG1hbnkKICAgICAqIFBOR19UUkFOU0ZPUk0gZmxhZ3MgaW50byB0aGUgcG5nX3RyYW5zZm9ybXMgaW50ZWdlciBoZXJlLgogICAgICovCi0gICBwbmdfd3JpdGVfcG5nKHBuZ19wdHIsIGluZm9fcHRyLCBwbmdfdHJhbnNmb3JtcywgTlVMTCk7CisgICBwbmdfd3JpdGVfcG5nKHBuZ19wdHIsIGluZm9fcHRyLCBwbmdfdHJhbnNmb3JtcywgcG5nX3ZvaWRwX05VTEwpOwogI2Vsc2UKICAgIC8qIFRoaXMgaXMgdGhlIGhhcmQgd2F5ICovCiAKZGlmZiAtLWdpdCBhL2xpYnBuZy4zIGIvbGlicG5nLjMKaW5kZXggZTA5ODA5YS4uNTAxOWE3MiAxMDA2NDQKLS0tIGEvbGlicG5nLjMKKysrIGIvbGlicG5nLjMKQEAgLTEsNiArMSw2IEBACi0uVEggTElCUE5HIDMgIk1heSAxNCwgMjAwMSIKKy5USCBMSUJQTkcgMyAiQXByaWwgMTUsIDIwMDIiCiAuU0ggTkFNRQotbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjEyYmV0YTEKK2xpYnBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIFJlZmVyZW5jZSBMaWJyYXJ5IDEuMC4xMwogLlNIIFNZTk9QU0lTCiBcZklcZkIKIApAQCAtMzAyLDcgKzMwMiw3IEBACiAKIFxmSVxmQgogCi1cZkJ2b2lkIHBuZ19pbmZvX2luaXQgKHBuZ19pbmZvcCBcZklpbmZvX3B0clxmUFxmQik7XGZQCitcZkJpbnQgcG5nX2hhbmRsZV9hc191bmtub3duIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBwbmdfYnl0ZXAgXGZJY2h1bmtfbmFtZVxmUFxmQik7XGZQCiAKIFxmSVxmQgogCkBAIC0zMTAsNiArMzEwLDE0IEBACiAKIFxmSVxmQgogCitcZkJERVBSRUNBVEVEOiB2b2lkIHBuZ19pbmZvX2luaXQgKHBuZ19pbmZvcCBcZklpbmZvX3B0clxmUFxmQik7XGZQCisKK1xmSVxmQgorCitcZkJERVBSRUNBVEVEOiB2b2lkIHBuZ19pbmZvX2luaXRfMiAocG5nX2luZm9wcCBcZlBcZklwdHJfcHRyXGZQXGZCLCBwbmdfc2l6ZV90IFxmSXBuZ19pbmZvX3N0cnVjdF9zaXplXGZQXGZCKTtcZlAKKworXGZJXGZCCisKIFxmQnBuZ192b2lkcCBwbmdfbWFsbG9jIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBwbmdfdWludF8zMiBcZklzaXplXGZQXGZCKTtcZlAKIAogXGZJXGZCCkBAIC0zMzQsNyArMzQyLDcgQEAKIAogXGZJXGZCCiAKLVxmQnZvaWQgcG5nX3Blcm1pdF9lbXB0eV9wbHRlIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBpbnQgXGZJZW1wdHlfcGx0ZV9wZXJtaXR0ZWRcZlBcZkIpO1xmUAorXGZCREVQUkVDQVRFRDogdm9pZCBwbmdfcGVybWl0X2VtcHR5X3BsdGUgKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIGludCBcZkllbXB0eV9wbHRlX3Blcm1pdHRlZFxmUFxmQik7XGZQCiAKIFxmSVxmQgogCkBAIC0zNjIsNyArMzcwLDkgQEAKIAogXGZJXGZCCiAKLVxmQkRFUFJFQ0FURUQ6IHZvaWQgcG5nX3JlYWRfaW5pdF8yIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBwbmdfY29uc3RfY2hhcnAgXGZQXGZJdXNlcl9wbmdfdmVyXGZQXGZCLCBwbmdfc2l6ZV90IFxmUFxmSXBuZ19zdHJ1Y3Rfc2l6ZVxmUFxmQiwgcG5nX3NpemVfdCBcZklwbmdfaW5mb19zaXplXGZQXGZCKTtcZlAKK1xmQkRFUFJFQ0FURUQ6IHZvaWQgcG5nX3JlYWRfaW5pdF8yIChwbmdfc3RydWN0cHAgXGZQXGZJcHRyX3B0clxmUFxmQiwgcG5nX2NvbnN0X2NoYXJwIFxmUFxmSXVzZXJfcG5nX3ZlclxmUFxmQiwgcG5nX3NpemVfdCBcZlBcZklwbmdfc3RydWN0X3NpemVcZlBcZkIsIHBuZ19zaXplX3QgXGZJcG5nX2luZm9fc2l6ZVxmUFxmQik7XGZQCisKK1xmSVxmQgogCiBcZkJ2b2lkIHBuZ19yZWFkX2luZm8gKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHBuZ19pbmZvcCBcZklpbmZvX3B0clxmUFxmQik7XGZQCiAKQEAgLTY5MiwxMCArNzAyLDYgQEAKIAogXGZJXGZCCiAKLVxmQnZvaWQgcG5nX3dyaXRlX2Rlc3Ryb3lfaW5mbyAocG5nX2luZm9wIFxmSWluZm9fcHRyXGZQXGZCKTtcZlAKLQotXGZJXGZCCi0KIFxmQnZvaWQgcG5nX3dyaXRlX2VuZCAocG5nX3N0cnVjdHAgXGZQXGZJcG5nX3B0clxmUFxmQiwgcG5nX2luZm9wIFxmSWluZm9fcHRyXGZQXGZCKTtcZlAKIAogXGZJXGZCCkBAIC03MTIsNyArNzE4LDcgQEAKIAogXGZJXGZCCiAKLVxmQkRFUFJFQ0FURUQ6IHZvaWQgcG5nX3dyaXRlX2luaXRfMiAocG5nX3N0cnVjdHAgXGZQXGZJcG5nX3B0clxmUFxmQiwgcG5nX2NvbnN0X2NoYXJwIFxmUFxmSXVzZXJfcG5nX3ZlclxmUFxmQiwgcG5nX3NpemVfdCBcZlBcZklwbmdfc3RydWN0X3NpemVcZlBcZkIsIHBuZ19zaXplX3QgXGZJcG5nX2luZm9fc2l6ZVxmUFxmQik7XGZQCitcZkJERVBSRUNBVEVEOiB2b2lkIHBuZ193cml0ZV9pbml0XzIgKHBuZ19zdHJ1Y3RwcCBcZlBcZklwdHJfcHRyXGZQXGZCLCBwbmdfY29uc3RfY2hhcnAgXGZQXGZJdXNlcl9wbmdfdmVyXGZQXGZCLCBwbmdfc2l6ZV90IFxmUFxmSXBuZ19zdHJ1Y3Rfc2l6ZVxmUFxmQiwgcG5nX3NpemVfdCBcZklwbmdfaW5mb19zaXplXGZQXGZCKTtcZlAKIAogXGZJXGZCCiAKQEAgLTczNiw2ICs3NDIsMTQgQEAKIAogXGZJXGZCCiAKK1xmQnZvaWRwZiBwbmdfemFsbG9jICh2b2lkcGYgXGZQXGZJcG5nX3B0clxmUFxmQiwgdUludCBcZlBcZklpdGVtc1xmUFxmQiwgdUludCBcZklzaXplXGZQXGZCKTtcZlAKKworXGZJXGZCCisKK1xmQnZvaWQgcG5nX3pmcmVlICh2b2lkcGYgXGZQXGZJcG5nX3B0clxmUFxmQiwgdm9pZHBmIFxmSXB0clxmUFxmQik7XGZQCisKK1xmSVxmQgorCiAuU0ggREVTQ1JJUFRJT04KIFRoZQogLkkgbGlicG5nCkBAIC03NDcsMTAgKzc2MSwxMCBAQAogLlNIIExJQlBORy5UWFQKIGxpYnBuZy50eHQgLSBBIGRlc2NyaXB0aW9uIG9uIGhvdyB0byB1c2UgYW5kIG1vZGlmeSBsaWJwbmcKIAotIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgbGlicG5nIHZlcnNpb24gMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICBVcGRhdGVkIGFuZCBkaXN0cmlidXRlZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICA8cmFuZGVnQGFsdW0ucnBpLmVkdT4KLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodAogIG5vdGljZSBpbiBwbmcuaC4KIApAQCAtODI1LDcgKzgzOSw5IEBACiBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMuICBFYWNoIHRocmVhZCBzaG91bGQgaGF2ZSBpdHMgb3duCiBwbmdfc3RydWN0IGFuZCBwbmdfaW5mbyBpbnN0YW5jZXMsIGFuZCB0aHVzIGl0cyBvd24gaW1hZ2UuCiBMaWJwbmcgZG9lcyBub3QgcHJvdGVjdCBpdHNlbGYgYWdhaW5zdCB0d28gdGhyZWFkcyB1c2luZyB0aGUKLXNhbWUgaW5zdGFuY2Ugb2YgYSBzdHJ1Y3R1cmUuCitzYW1lIGluc3RhbmNlIG9mIGEgc3RydWN0dXJlLiAgTm90ZTogdGhyZWFkIHNhZmV0eSBtYXkgYmUgZGVmZWF0ZWQKK2J5IHVzZSBvZiBzb21lIG9mIHRoZSBNTVggYXNzZW1ibGVyIGNvZGUgaW4gcG5nZ2NjcmQuYywgd2hpY2ggaXMgb25seQorY29tcGlsZWQgd2hlbiB0aGUgdXNlciBkZWZpbmVzIFBOR19USFJFQURfVU5TQUZFX09LLgogCiAKIC5TSCBJSS4gU3RydWN0dXJlcwpAQCAtMTMyMiw3ICsxMzM4LDcgQEAKICAgICAgICAgICAgICAgICAgYWZ0ZXIgZGVjb21wcmVzc2lvbiwgMCBmb3IgdEVYdC96VFh0CiAgICAgdGV4dF9wdHJbaV0ubGFuZyAgLSBsYW5ndWFnZSBvZiBjb21tZW50IChlbXB0eQogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBmb3IgdW5rbm93bikuCi0gICAgdGV4dF9wdHJbaV0udHJhbnNsYXRlZF9rZXl3b3JkICAtIGtleXdvcmQgaW4gVVRGLTgKKyAgICB0ZXh0X3B0cltpXS5sYW5nX2tleSAgLSBrZXl3b3JkIGluIFVURi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtcHR5IHN0cmluZyBmb3IgdW5rbm93bikuCiAgICAgbnVtX3RleHQgICAgICAgLSBudW1iZXIgb2YgY29tbWVudHMgKHNhbWUgYXMKICAgICAgICAgICAgICAgICAgICAgIG51bV9jb21tZW50czsgeW91IGNhbiBwdXQgTlVMTCBoZXJlCkBAIC0xNTM3LDcgKzE1NTMsNyBAQAogY29udmVydCB0aGUgUE5HIHBpeGVsIGRhdGEgYmFjayB0byB0aGUgb3JpZ2luYWwgYml0IGRlcHRoIG9mIHRoZSBpbWFnZS4KIFRoaXMgY2FsbCByZWR1Y2VzIHRoZSBwaXhlbHMgYmFjayBkb3duIHRvIHRoZSBvcmlnaW5hbCBiaXQgZGVwdGg6CiAKLSAgICBwbmdfY29sb3JfMTZwIHNpZ19iaXQ7CisgICAgcG5nX2NvbG9yXzhwIHNpZ19iaXQ7CiAKICAgICBpZiAocG5nX2dldF9zQklUKHBuZ19wdHIsIGluZm9fcHRyLCAmc2lnX2JpdCkpCiAgICAgICAgIHBuZ19zZXRfc2hpZnQocG5nX3B0ciwgc2lnX2JpdCk7CkBAIC0xNTQ5LDE3ICsxNTY1LDE4IEBACiAgICAgICAgIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKQogICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsKIAotUE5HIGZpbGVzIHN0b3JlIFJHQiBwaXhlbHMgcGFja2VkIGludG8gMyBieXRlcy4gVGhpcyBjb2RlIGV4cGFuZHMgdGhlbQotaW50byA0IGJ5dGVzIGZvciB3aW5kb3dpbmcgc3lzdGVtcyB0aGF0IG5lZWQgdGhlbSBpbiB0aGlzIGZvcm1hdDoKK1BORyBmaWxlcyBzdG9yZSBSR0IgcGl4ZWxzIHBhY2tlZCBpbnRvIDMgb3IgNiBieXRlcy4gVGhpcyBjb2RlIGV4cGFuZHMgdGhlbQoraW50byA0IG9yIDggYnl0ZXMgZm9yIHdpbmRvd2luZyBzeXN0ZW1zIHRoYXQgbmVlZCB0aGVtIGluIHRoaXMgZm9ybWF0OgogCi0gICAgaWYgKGJpdF9kZXB0aCA9PSA4ICYmIGNvbG9yX3R5cGUgPT0KLSAgICAgICAgUE5HX0NPTE9SX1RZUEVfUkdCKSBwbmdfc2V0X2ZpbGxlcihwbmdfcHRyLAotICAgICAgICBmaWxsZXIsIFBOR19GSUxMRVJfQkVGT1JFKTsKKyAgICBpZiAoY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0IpCisgICAgICAgIHBuZ19zZXRfZmlsbGVyKHBuZ19wdHIsIGZpbGxlciwgUE5HX0ZJTExFUl9CRUZPUkUpOwogCiB3aGVyZSAiZmlsbGVyIiBpcyB0aGUgOCBvciAxNi1iaXQgbnVtYmVyIHRvIGZpbGwgd2l0aCwgYW5kIHRoZSBsb2NhdGlvbiBpcwogZWl0aGVyIFBOR19GSUxMRVJfQkVGT1JFIG9yIFBOR19GSUxMRVJfQUZURVIsIGRlcGVuZGluZyB1cG9uIHdoZXRoZXIKIHlvdSB3YW50IHRoZSBmaWxsZXIgYmVmb3JlIHRoZSBSR0Igb3IgYWZ0ZXIuICBUaGlzIHRyYW5zZm9ybWF0aW9uCi1kb2VzIG5vdCBhZmZlY3QgaW1hZ2VzIHRoYXQgYWxyZWFkeSBoYXZlIGZ1bGwgYWxwaGEgY2hhbm5lbHMuCitkb2VzIG5vdCBhZmZlY3QgaW1hZ2VzIHRoYXQgYWxyZWFkeSBoYXZlIGZ1bGwgYWxwaGEgY2hhbm5lbHMuICBUbyBhZGQgYW4KK29wYXF1ZSBhbHBoYSBjaGFubmVsLCB1c2UgZmlsbGVyPTB4ZmYgb3IgMHhmZmZmIGFuZCBQTkdfRklMTEVSX0FGVEVSIHdoaWNoCit3aWxsIGdlbmVyYXRlIFJHQkEgcGl4ZWxzLgogCiBJZiB5b3UgYXJlIHJlYWRpbmcgYW4gaW1hZ2Ugd2l0aCBhbiBhbHBoYSBjaGFubmVsLCBhbmQgeW91IG5lZWQgdGhlCiBkYXRhIGFzIEFSR0IgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIFBORyBmb3JtYXQgUkdCQToKQEAgLTE2MjksOCArMTY0Niw4IEBACiBUaGUgY2FsY3VsYXRpb24gaXMgZG9uZSBpbiBhIGxpbmVhciBjb2xvcnNwYWNlLCBpZiB0aGUgaW1hZ2UgZ2FtbWEKIGlzIGtub3duLgogCi1JZiB5b3UgaGF2ZSBhIGdyYXlzY2FsZSBhbmQgeW91IGFyZSB1c2luZyBwbmdfc2V0X2V4cGFuZF9kZXB0aCgpIG9yCi1wbmdfc2V0X2V4cGFuZCgpIHRvIGNoYW5nZSB0bworSWYgeW91IGhhdmUgYSBncmF5c2NhbGUgYW5kIHlvdSBhcmUgdXNpbmcgcG5nX3NldF9leHBhbmRfZGVwdGgoKSwKK3BuZ19zZXRfZXhwYW5kKCksIG9yIHBuZ19zZXRfZ3JheV90b19yZ2IgdG8gY2hhbmdlIHRvIHRydWVjb2xvciBvciB0bwogYSBoaWdoZXIgYml0LWRlcHRoLCB5b3UgbXVzdCBlaXRoZXIgc3VwcGx5IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFzIGEgZ3JheQogdmFsdWUgYXQgdGhlIG9yaWdpbmFsIGZpbGUgYml0LWRlcHRoIChuZWVkX2V4cGFuZCA9IDEpIG9yIGVsc2Ugc3VwcGx5IHRoZQogYmFja2dyb3VuZCBjb2xvciBhcyBhbiBSR0IgdHJpcGxldCBhdCB0aGUgZmluYWwsIGV4cGFuZGVkIGJpdCBkZXB0aApAQCAtMTc0OSw3ICsxNzY2LDEzIEBACiBUaGUgZm9sbG93aW5nIGNvZGUgd2lsbCByZXZlcnNlIHRoaXMgKG1ha2UgYmxhY2sgYmUgb25lIGFuZCB3aGl0ZSBiZQogemVybyk6CiAKLSAgIGlmIChiaXRfZGVwdGggPT0gMSAmJiBjb2xvcl90eXBlID09IFBOR19DT0xPUl9HUkFZKQorICAgaWYgKGJpdF9kZXB0aCA9PSAxICYmIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSkKKyAgICAgIHBuZ19zZXRfaW52ZXJ0X21vbm8ocG5nX3B0cik7CisKK1RoaXMgZnVuY3Rpb24gY2FuIGFsc28gYmUgdXNlZCB0byBpbnZlcnQgZ3JheXNjYWxlIGFuZCBncmF5LWFscGhhIGltYWdlczoKKworICAgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSB8fAorICAgICAgICBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCiAgICAgICBwbmdfc2V0X2ludmVydF9tb25vKHBuZ19wdHIpOwogCiBQTkcgZmlsZXMgc3RvcmUgMTYgYml0IHBpeGVscyBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgKGJpZy1lbmRpYW4sCkBAIC0xOTk0LDggKzIwMTcsNyBAQAogcmVzcG9uc2liaWxpdHkgZm9yIGxpYnBuZy1hbGxvY2F0ZWQgZGF0YSwgdGhlIGFwcGxpY2F0aW9uIG11c3QgdXNlCiBwbmdfZnJlZSgpIHRvIGZyZWUgaXQsIGFuZCB3aGVuIHRoZSB1c2VyIHRyYW5zZmVycyByZXNwb25zaWJpbGl0eSB0byBsaWJwbmcKIGZvciBkYXRhIHRoYXQgdGhlIHVzZXIgaGFzIGFsbG9jYXRlZCwgdGhlIHVzZXIgbXVzdCBoYXZlIHVzZWQgcG5nX21hbGxvYygpCi1vciBwbmdfemFsbG9jKCkgdG8gYWxsb2NhdGUgaXQgKHRoZSBwbmdfemFsbG9jKCkgZnVuY3Rpb24gaXMgdGhlIHNhbWUKLWFzIHBuZ19tYWxsb2MoKSBleGNlcHQgdGhhdCBpdCBhbHNvIHplcm9lcyB0aGUgbmV3bHktYWxsb2NhdGVkIG1lbW9yeSkuCitvciBwbmdfemFsbG9jKCkgdG8gYWxsb2NhdGUgaXQuCiAKIElmIHlvdSBhbGxvY2F0ZWQgeW91ciByb3dfcG9pbnRlcnMgaW4gYSBzaW5nbGUgYmxvY2ssIGFzIHN1Z2dlc3RlZCBhYm92ZSBpbgogdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBoaWdoIGxldmVsIHJlYWQgaW50ZXJmYWNlLCB5b3UgbXVzdCBub3QgdHJhbnNmZXIKQEAgLTIxNDMsNyArMjE2NSw2IEBACiAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGVhY2ggcm93IG9mIGltYWdlCiAgICAgZGF0YSBpcyBjb21wbGV0ZSAqLwotCiAgdm9pZAogIHJvd19jYWxsYmFjayhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXAgbmV3X3JvdywKICAgICBwbmdfdWludF8zMiByb3dfbnVtLCBpbnQgcGFzcykKQEAgLTMwNTksNyArMzA4MCw3IEBACiBZb3VyIHJlcGxhY2VtZW50IG1lbW9yeSBmdW5jdGlvbnMgbXVzdCBoYXZlIHByb3RvdHlwZXMgYXMgZm9sbG93czoKIAogICAgIHBuZ192b2lkcCBtYWxsb2NfZm4ocG5nX3N0cnVjdHAgcG5nX3B0ciwKLSAgICAgICBwbmdfdWludF8zMiBzaXplKTsKKyAgICAgICBwbmdfc2l6ZV90IHNpemUpOwogICAgIHZvaWQgZnJlZV9mbihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAgcHRyKTsKIAogWW91ciBtYWxsb2NfZm4oKSBjYW4gcmV0dXJuIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLiAgVGhlIHBuZ19tYWxsb2MoKQpAQCAtMzIyNSw2ICszMjQ2LDEwIEBACiBBbm90aGVyIHVzZWZ1bCBvbmUgaXMgdG8gcmVkdWNlIHRoZSBtZW1vcnkgbGV2ZWwgdXNlZCBieSB0aGUgbGlicmFyeS4KIFRoZSBtZW1vcnkgbGV2ZWwgZGVmYXVsdHMgdG8gOCwgYnV0IGl0IGNhbiBiZSBsb3dlcmVkIGlmIHlvdSBhcmUKIHNob3J0IG9uIG1lbW9yeSAocnVubmluZyBET1MsIGZvciBleGFtcGxlLCB3aGVyZSB5b3Ugb25seSBoYXZlIDY0MEspLgorTm90ZSB0aGF0IHRoZSBtZW1vcnkgbGV2ZWwgZG9lcyBoYXZlIGFuIGVmZmVjdCBvbiBjb21wcmVzc2lvbjsgYW1vbmcKK290aGVyIHRoaW5ncywgbG93ZXIgbGV2ZWxzIHdpbGwgcmVzdWx0IGluIHNlY3Rpb25zIG9mIGluY29tcHJlc3NpYmxlCitkYXRhIGJlaW5nIGVtaXR0ZWQgaW4gc21hbGxlciBzdG9yZWQgYmxvY2tzLCB3aXRoIGEgY29ycmVzcG9uZGluZ2x5CitsYXJnZXIgcmVsYXRpdmUgb3ZlcmhlYWQgb2YgdXAgdG8gMTUlIGluIHRoZSB3b3JzdCBjYXNlLgogCiAgICAgcG5nX3NldF9jb21wcmVzc2lvbl9tZW1fbGV2ZWwocG5nX3B0ciwgbGV2ZWwpOwogCkBAIC0zMjU5LDE5ICszMjg0LDE4IEBACiBJbmRpdmlkdWFsIGZpbHRlciB0eXBlcyBhcmUgUE5HX0ZJTFRFUl9OT05FLCBQTkdfRklMVEVSX1NVQiwKIFBOR19GSUxURVJfVVAsIFBOR19GSUxURVJfQVZHLCBQTkdfRklMVEVSX1BBRVRILCB3aGljaCBjYW4gYmUgYml0d2lzZQogT1JlZCB0b2dldGhlciB3aXRoICd8JyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbHRlcnMgdG8gdXNlLgotVGhlc2UgZmlsdGVycyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBQTkcgc3BlY2lmaWNhdGlvbi4gIElmCi15b3UgaW50ZW5kIHRvIGNoYW5nZSB0aGUgZmlsdGVyIHR5cGUgZHVyaW5nIHRoZSBjb3Vyc2Ugb2Ygd3JpdGluZworVGhlc2UgZmlsdGVycyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBQTkcgc3BlY2lmaWNhdGlvbi4KK0lmIHlvdSBpbnRlbmQgdG8gY2hhbmdlIHRoZSBmaWx0ZXIgdHlwZSBkdXJpbmcgdGhlIGNvdXJzZSBvZiB3cml0aW5nCiB0aGUgaW1hZ2UsIHlvdSBzaG91bGQgc3RhcnQgd2l0aCBmbGFncyBzZXQgZm9yIGFsbCBvZiB0aGUgZmlsdGVycwogeW91IGludGVuZCB0byB1c2Ugc28gdGhhdCBsaWJwbmcgY2FuIGluaXRpYWxpemUgaXRzIGludGVybmFsCi1zdHJ1Y3R1cmVzIGFwcHJvcHJpYXRlbHkgZm9yIGFsbCBvZiB0aGUgZmlsdGVyIHR5cGVzLgorc3RydWN0dXJlcyBhcHByb3ByaWF0ZWx5IGZvciBhbGwgb2YgdGhlIGZpbHRlciB0eXBlcy4gIChOb3RlIHRoYXQgdGhpcworbWVhbnMgdGhlIGZpcnN0IHJvdyBtdXN0IGFsd2F5cyBiZSBhZGFwdGl2ZWx5IGZpbHRlcmVkLCBiZWNhdXNlIGxpYnBuZworY3VycmVudGx5IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBmaWx0ZXIgYnVmZmVycyB1bnRpbCBwbmdfd3JpdGVfcm93KCkKK2lzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuKQogCiAgICAgZmlsdGVycyA9IFBOR19GSUxURVJfTk9ORSB8IFBOR19GSUxURVJfU1VCCiAgICAgICAgICAgICAgIFBOR19GSUxURVJfVVAgfCBQTkdfRklMVEVSX0FWRSB8CiAgICAgICAgICAgICAgIFBOR19GSUxURVJfUEFFVEggfCBQTkdfQUxMX0ZJTFRFUlM7Ci0gICAgb3IKLSAgICBmaWx0ZXJzID0gb25lIG9mIFBOR19GSUxURVJfVkFMVUVfTk9ORSwKLSAgICAgICAgICAgICAgUE5HX0ZJTFRFUl9WQUxVRV9TVUIsIFBOR19GSUxURVJfVkFMVUVfVVAsCi0gICAgICAgICAgICAgIFBOR19GSUxURVJfVkFMVUVfQVZFLCBQTkdfRklMVEVSX1ZBTFVFX1BBRVRICiAKICAgICBwbmdfc2V0X2ZpbHRlcihwbmdfcHRyLCBQTkdfRklMVEVSX1RZUEVfQkFTRSwKICAgICAgICBmaWx0ZXJzKTsKQEAgLTMyODMsMTYgKzMzMDcsMTYgQEAKICAgICAgICAgICAgICAgaW4gcG5nX3NldF9JSERSKCkuCiAKIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5mbHVlbmNlIGhvdyBsaWJwbmcgY2hvb3NlcyBmcm9tIGFtb25nIHRoZQotYXZhaWxhYmxlIGZpbHRlcnMuICBUaGlzIGlzIGRvbmUgaW4gdHdvIHdheXMgLSBieSB0ZWxsaW5nIGl0IGhvdwotaW1wb3J0YW50IGl0IGlzIHRvIGtlZXAgdGhlIHNhbWUgZmlsdGVyIGZvciBzdWNjZXNzaXZlIHJvd3MsIGFuZAotYnkgdGVsbGluZyBpdCB0aGUgcmVsYXRpdmUgY29tcHV0YXRpb25hbCBjb3N0cyBvZiB0aGUgZmlsdGVycy4KK2F2YWlsYWJsZSBmaWx0ZXJzLiAgVGhpcyBpcyBkb25lIGluIG9uZSBvciBib3RoIG9mIHR3byB3YXlzIC0gYnkKK3RlbGxpbmcgaXQgaG93IGltcG9ydGFudCBpdCBpcyB0byBrZWVwIHRoZSBzYW1lIGZpbHRlciBmb3Igc3VjY2Vzc2l2ZQorcm93cywgYW5kIGJ5IHRlbGxpbmcgaXQgdGhlIHJlbGF0aXZlIGNvbXB1dGF0aW9uYWwgY29zdHMgb2YgdGhlIGZpbHRlcnMuCiAKICAgICBkb3VibGUgd2VpZ2h0c1szXSA9IHsxLjUsIDEuMywgMS4xfSwKICAgICAgICBjb3N0c1tQTkdfRklMVEVSX1ZBTFVFX0xBU1RdID0KICAgICAgICB7MS4wLCAxLjMsIDEuMywgMS41LCAxLjd9OwogCi0gICAgcG5nX3NldF9maWx0ZXJfc2VsZWN0aW9uKHBuZ19wdHIsCi0gICAgICAgUE5HX0ZJTFRFUl9TRUxFQ1RJT05fV0VJR0hURUQsIDMsCisgICAgcG5nX3NldF9maWx0ZXJfaGV1cmlzdGljcyhwbmdfcHRyLAorICAgICAgIFBOR19GSUxURVJfSEVVUklTVElDX1dFSUdIVEVELCAzLAogICAgICAgIHdlaWdodHMsIGNvc3RzKTsKIAogVGhlIHdlaWdodHMgYXJlIG11bHRpcGx5aW5nIGZhY3RvcnMgdGhhdCBpbmRpY2F0ZSB0byBsaWJwbmcgdGhhdCB0aGUKQEAgLTMzOTIsNyArMzQxNiw2IEBACiBoYXZpbmcgbGV2ZWwgPSAwIHdpbGwgYmUgcHJpbnRlZC4gIFRoZXJlIGFyZW4ndCBhbnkgc3VjaCBzdGF0ZW1lbnRzIGluCiB0aGlzIHZlcnNpb24gb2YgbGlicG5nLCBidXQgaWYgeW91IGluc2VydCBzb21lIHRoZXkgd2lsbCBiZSBwcmludGVkLgogCi0KIC5TSCBWSS4gIE1ORyBzdXBwb3J0CiAKIFRoZSBNTkcgc3BlY2lmaWNhdGlvbiAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvbW5nKSBhbGxvd3MKQEAgLTM0MDYsNyArMzQyOSw3IEBACiAgICAgICAgIFBOR19GTEFHX01OR19FTVBUWV9QTFRFCiAgICAgICAgIFBOR19GTEFHX01OR19GSUxURVJfNjQKICAgICAgICAgUE5HX0FMTF9NTkdfRkVBVFVSRVMKLSAgIGZlYXR1cmVfc2V0IGlzIGEgcG5nXzMyX3VpbnQgdGhhdCBpcyB0aGUgbG9naWNhbCBBTkQgb2YKKyAgIGZlYXR1cmVfc2V0IGlzIGEgcG5nX2J5dGUgdGhhdCBpcyB0aGUgbG9naWNhbCBBTkQgb2YKICAgICAgIHlvdXIgbWFzayB3aXRoIHRoZSBzZXQgb2YgTU5HIGZlYXR1cmVzIHRoYXQgaXMKICAgICAgIHN1cHBvcnRlZCBieSB0aGUgdmVyc2lvbiBvZiBsaWJwbmcgdGhhdCB5b3UgYXJlIHVzaW5nLgogCkBAIC0zNDY3LDE1ICszNDkwLDE1IEBACiAKICAgIHBuZ191aW50XzMyIGFwcGxpY2F0aW9uX3ZuID0gUE5HX0xJQlBOR19WRVI7CiAKLS5TSCBWSUlJLiBZMksgQ29tcGxpYW5jZSBpbiBsaWJwbmcKKy5TSCBWSUkuIFkySyBDb21wbGlhbmNlIGluIGxpYnBuZwogCi1NYXkgMTQsIDIwMDEKK0FwcmlsIDE1LCAyMDAyCiAKIFNpbmNlIHRoZSBQTkcgRGV2ZWxvcG1lbnQgZ3JvdXAgaXMgYW4gYWQtaG9jIGJvZHksIHdlIGNhbid0IG1ha2UKIGFuIG9mZmljaWFsIGRlY2xhcmF0aW9uLgogCiBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi11cHdhcmQgdGhyb3VnaCAxLjAuMTJiZXRhMSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC4xMyBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKIHZlcnNpb25zIHdlcmUgYWxzbyBZMksgY29tcGxpYW50LgogCiBMaWJwbmcgb25seSBoYXMgdGhyZWUgeWVhciBmaWVsZHMuICBPbmUgaXMgYSAyLWJ5dGUgdW5zaWduZWQgaW50ZWdlciB0aGF0CkBAIC0zNTg3LDcgKzM2MTAsMjMgQEAKICAxLjAuMTFiZXRhMS0zICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMWJldGExLTMKICAxLjAuMTFyYzEgICAgICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMXJjMQogIDEuMC4xMSAgICAgICAgICAgICAgIDEgICAgMTAwMTEgIDIuMS4wLjExCi0gMS4wLjEyYmV0YTEgICAgICAgICAgMSAgICAxMDAxMiAgMi4xLjAuMTJiZXRhMQorIDEuMC4xMmJldGExLTIgICAgICAgIDIgICAgMTAwMTIgIDIuMS4wLjEyYmV0YTEtMgorIDEuMC4xMnJjMSAgICAgICAgICAgIDIgICAgMTAwMTIgIDIuMS4wLjEycmMxCisgMS4wLjEyICAgICAgICAgICAgICAgMiAgICAxMDAxMiAgMi4xLjAuMTIKKyAxLjEuMGEtZiAgICAgICAgICAgICAtICAgIDEwMTAwICAyLjEuMS4wYS1mIGFiYW5kb25lZAorIDEuMi4wYmV0YTEtMiAgICAgICAgIDIgICAgMTAyMDAgIDIuMS4yLjBiZXRhMS0yCisgMS4yLjBiZXRhMy01ICAgICAgICAgMyAgICAxMDIwMCAgMy4xLjIuMGJldGEzLTUKKyAxLjIuMHJjMSAgICAgICAgICAgICAzICAgIDEwMjAwICAzLjEuMi4wcmMxCisgMS4yLjAgICAgICAgICAgICAgICAgMyAgICAxMDIwMCAgMy4xLjIuMAorIDEuMi4xYmV0YS00ICAgICAgICAgIDMgICAgMTAyMDEgIDMuMS4yLjFiZXRhMS00CisgMS4yLjFyYzEtMiAgICAgICAgICAgMyAgICAxMDIwMSAgMy4xLjIuMXJjMS0yCisgMS4yLjEgICAgICAgICAgICAgICAgMyAgICAxMDIwMSAgMy4xLjIuMQorIDEuMi4yYmV0YTEtNiAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjJiZXRhMS02CisgMS4wLjEzYmV0YTEgICAgICAgICAxMCAgICAxMDAxMyAgMTAuc28uMC4xLjAuMTNiZXRhMQorIDEuMi4ycmMxICAgICAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjJyYzEKKyAxLjAuMTNyYzEgICAgICAgICAgIDEwICAgIDEwMDEzICAxMC5zby4wLjEuMC4xM3JjMQorIDEuMi4yICAgICAgICAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjIKKyAxLjAuMTMgICAgICAgICAgICAgIDEwICAgIDEwMDEzICAxMC5zby4wLjEuMC4xM3JjMQogCiBIZW5jZWZvcnRoIHRoZSBzb3VyY2UgdmVyc2lvbiB3aWxsIG1hdGNoIHRoZSBzaGFyZWQtbGlicmFyeSBtaW5vcgogYW5kIHBhdGNoIG51bWJlcnM7IHRoZSBzaGFyZWQtbGlicmFyeSBtYWpvciB2ZXJzaW9uIG51bWJlciB3aWxsIGJlCkBAIC0zNjQ1LDcgKzM2ODQsNyBAQAogCiBUaGFua3MgdG8gRnJhbmsgSi4gVC4gV29qY2lrIGZvciBoZWxwaW5nIHdpdGggdGhlIGRvY3VtZW50YXRpb24uCiAKLUxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxOgorTGlicG5nIHZlcnNpb24gMS4wLjEzIC0gQXByaWwgMTUsIDIwMDI6CiBJbml0aWFsbHkgY3JlYXRlZCBpbiAxOTk1IGJ5IEd1eSBFcmljIFNjaGFsbmF0LCB0aGVuIG9mIEdyb3VwIDQyLCBJbmMuCiBDdXJyZW50bHkgbWFpbnRhaW5lZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24gKHJhbmRlZ0BhbHVtLnJwaS5lZHUpLgogCkBAIC0zNjYyLDggKzM3MDEsOCBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC4xMmJldGExLCBNYXkgMTQsIDIwMDEsIGFyZQotQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCitsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAxLjAuMTMsIEFwcmlsIDE1LCAyMDAyLCBhcmUKK0NvcHlyaWdodCAoYykgMjAwMC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbiwgYW5kIGFyZQogZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGRpc2NsYWltZXIgYW5kIGxpY2Vuc2UgYXMgbGlicG5nLTEuMC42CiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5kaXZpZHVhbHMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgQ29udHJpYnV0aW5nIEF1dGhvcnMKIApAQCAtMzc1NCw3ICszNzkzLDcgQEAKIAogR2xlbm4gUmFuZGVycy1QZWhyc29uCiByYW5kZWdAYWx1bS5ycGkuZWR1Ci1NYXkgMTQsIDIwMDEKK0FwcmlsIDE1LCAyMDAyCiAKIC5cIiBlbmQgb2YgbWFuIHBhZ2UKIApkaWZmIC0tZ2l0IGEvbGlicG5nLnR4dCBiL2xpYnBuZy50eHQKaW5kZXggYjI3OTExNi4uMDc1ZjJiYiAxMDA2NDQKLS0tIGEvbGlicG5nLnR4dAorKysgYi9saWJwbmcudHh0CkBAIC0xLDkgKzEsOSBAQAogbGlicG5nLnR4dCAtIEEgZGVzY3JpcHRpb24gb24gaG93IHRvIHVzZSBhbmQgbW9kaWZ5IGxpYnBuZwogCi0gbGlicG5nIHZlcnNpb24gMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyBsaWJwbmcgdmVyc2lvbiAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgogIFVwZGF0ZWQgYW5kIGRpc3RyaWJ1dGVkIGJ5IEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIDxyYW5kZWdAYWx1bS5ycGkuZWR1PgotIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorIENvcHlyaWdodCAoYykgMTk5OC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0CiAgbm90aWNlIGluIHBuZy5oLgogCkBAIC03OCw3ICs3OCw5IEBACiBpbnN0YW5jZXMgb2YgdGhlIHN0cnVjdHVyZXMuICBFYWNoIHRocmVhZCBzaG91bGQgaGF2ZSBpdHMgb3duCiBwbmdfc3RydWN0IGFuZCBwbmdfaW5mbyBpbnN0YW5jZXMsIGFuZCB0aHVzIGl0cyBvd24gaW1hZ2UuCiBMaWJwbmcgZG9lcyBub3QgcHJvdGVjdCBpdHNlbGYgYWdhaW5zdCB0d28gdGhyZWFkcyB1c2luZyB0aGUKLXNhbWUgaW5zdGFuY2Ugb2YgYSBzdHJ1Y3R1cmUuCitzYW1lIGluc3RhbmNlIG9mIGEgc3RydWN0dXJlLiAgTm90ZTogdGhyZWFkIHNhZmV0eSBtYXkgYmUgZGVmZWF0ZWQKK2J5IHVzZSBvZiBzb21lIG9mIHRoZSBNTVggYXNzZW1ibGVyIGNvZGUgaW4gcG5nZ2NjcmQuYywgd2hpY2ggaXMgb25seQorY29tcGlsZWQgd2hlbiB0aGUgdXNlciBkZWZpbmVzIFBOR19USFJFQURfVU5TQUZFX09LLgogCiAKIElJLiBTdHJ1Y3R1cmVzCkBAIC01NzUsNyArNTc3LDcgQEAKICAgICAgICAgICAgICAgICAgYWZ0ZXIgZGVjb21wcmVzc2lvbiwgMCBmb3IgdEVYdC96VFh0CiAgICAgdGV4dF9wdHJbaV0ubGFuZyAgLSBsYW5ndWFnZSBvZiBjb21tZW50IChlbXB0eQogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBmb3IgdW5rbm93bikuCi0gICAgdGV4dF9wdHJbaV0udHJhbnNsYXRlZF9rZXl3b3JkICAtIGtleXdvcmQgaW4gVVRGLTgKKyAgICB0ZXh0X3B0cltpXS5sYW5nX2tleSAgLSBrZXl3b3JkIGluIFVURi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtcHR5IHN0cmluZyBmb3IgdW5rbm93bikuCiAgICAgbnVtX3RleHQgICAgICAgLSBudW1iZXIgb2YgY29tbWVudHMgKHNhbWUgYXMKICAgICAgICAgICAgICAgICAgICAgIG51bV9jb21tZW50czsgeW91IGNhbiBwdXQgTlVMTCBoZXJlCkBAIC03OTAsNyArNzkyLDcgQEAKIGNvbnZlcnQgdGhlIFBORyBwaXhlbCBkYXRhIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJpdCBkZXB0aCBvZiB0aGUgaW1hZ2UuCiBUaGlzIGNhbGwgcmVkdWNlcyB0aGUgcGl4ZWxzIGJhY2sgZG93biB0byB0aGUgb3JpZ2luYWwgYml0IGRlcHRoOgogCi0gICAgcG5nX2NvbG9yXzE2cCBzaWdfYml0OworICAgIHBuZ19jb2xvcl84cCBzaWdfYml0OwogCiAgICAgaWYgKHBuZ19nZXRfc0JJVChwbmdfcHRyLCBpbmZvX3B0ciwgJnNpZ19iaXQpKQogICAgICAgICBwbmdfc2V0X3NoaWZ0KHBuZ19wdHIsIHNpZ19iaXQpOwpAQCAtODAyLDE3ICs4MDQsMTggQEAKICAgICAgICAgY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0JfQUxQSEEpCiAgICAgICAgIHBuZ19zZXRfYmdyKHBuZ19wdHIpOwogCi1QTkcgZmlsZXMgc3RvcmUgUkdCIHBpeGVscyBwYWNrZWQgaW50byAzIGJ5dGVzLiBUaGlzIGNvZGUgZXhwYW5kcyB0aGVtCi1pbnRvIDQgYnl0ZXMgZm9yIHdpbmRvd2luZyBzeXN0ZW1zIHRoYXQgbmVlZCB0aGVtIGluIHRoaXMgZm9ybWF0OgorUE5HIGZpbGVzIHN0b3JlIFJHQiBwaXhlbHMgcGFja2VkIGludG8gMyBvciA2IGJ5dGVzLiBUaGlzIGNvZGUgZXhwYW5kcyB0aGVtCitpbnRvIDQgb3IgOCBieXRlcyBmb3Igd2luZG93aW5nIHN5c3RlbXMgdGhhdCBuZWVkIHRoZW0gaW4gdGhpcyBmb3JtYXQ6CiAKLSAgICBpZiAoYml0X2RlcHRoID09IDggJiYgY29sb3JfdHlwZSA9PQotICAgICAgICBQTkdfQ09MT1JfVFlQRV9SR0IpIHBuZ19zZXRfZmlsbGVyKHBuZ19wdHIsCi0gICAgICAgIGZpbGxlciwgUE5HX0ZJTExFUl9CRUZPUkUpOworICAgIGlmIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQikKKyAgICAgICAgcG5nX3NldF9maWxsZXIocG5nX3B0ciwgZmlsbGVyLCBQTkdfRklMTEVSX0JFRk9SRSk7CiAKIHdoZXJlICJmaWxsZXIiIGlzIHRoZSA4IG9yIDE2LWJpdCBudW1iZXIgdG8gZmlsbCB3aXRoLCBhbmQgdGhlIGxvY2F0aW9uIGlzCiBlaXRoZXIgUE5HX0ZJTExFUl9CRUZPUkUgb3IgUE5HX0ZJTExFUl9BRlRFUiwgZGVwZW5kaW5nIHVwb24gd2hldGhlcgogeW91IHdhbnQgdGhlIGZpbGxlciBiZWZvcmUgdGhlIFJHQiBvciBhZnRlci4gIFRoaXMgdHJhbnNmb3JtYXRpb24KLWRvZXMgbm90IGFmZmVjdCBpbWFnZXMgdGhhdCBhbHJlYWR5IGhhdmUgZnVsbCBhbHBoYSBjaGFubmVscy4KK2RvZXMgbm90IGFmZmVjdCBpbWFnZXMgdGhhdCBhbHJlYWR5IGhhdmUgZnVsbCBhbHBoYSBjaGFubmVscy4gIFRvIGFkZCBhbgorb3BhcXVlIGFscGhhIGNoYW5uZWwsIHVzZSBmaWxsZXI9MHhmZiBvciAweGZmZmYgYW5kIFBOR19GSUxMRVJfQUZURVIgd2hpY2gKK3dpbGwgZ2VuZXJhdGUgUkdCQSBwaXhlbHMuCiAKIElmIHlvdSBhcmUgcmVhZGluZyBhbiBpbWFnZSB3aXRoIGFuIGFscGhhIGNoYW5uZWwsIGFuZCB5b3UgbmVlZCB0aGUKIGRhdGEgYXMgQVJHQiBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgUE5HIGZvcm1hdCBSR0JBOgpAQCAtODgyLDggKzg4NSw4IEBACiBUaGUgY2FsY3VsYXRpb24gaXMgZG9uZSBpbiBhIGxpbmVhciBjb2xvcnNwYWNlLCBpZiB0aGUgaW1hZ2UgZ2FtbWEKIGlzIGtub3duLgogCi1JZiB5b3UgaGF2ZSBhIGdyYXlzY2FsZSBhbmQgeW91IGFyZSB1c2luZyBwbmdfc2V0X2V4cGFuZF9kZXB0aCgpIG9yCi1wbmdfc2V0X2V4cGFuZCgpIHRvIGNoYW5nZSB0bworSWYgeW91IGhhdmUgYSBncmF5c2NhbGUgYW5kIHlvdSBhcmUgdXNpbmcgcG5nX3NldF9leHBhbmRfZGVwdGgoKSwKK3BuZ19zZXRfZXhwYW5kKCksIG9yIHBuZ19zZXRfZ3JheV90b19yZ2IgdG8gY2hhbmdlIHRvIHRydWVjb2xvciBvciB0bwogYSBoaWdoZXIgYml0LWRlcHRoLCB5b3UgbXVzdCBlaXRoZXIgc3VwcGx5IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFzIGEgZ3JheQogdmFsdWUgYXQgdGhlIG9yaWdpbmFsIGZpbGUgYml0LWRlcHRoIChuZWVkX2V4cGFuZCA9IDEpIG9yIGVsc2Ugc3VwcGx5IHRoZQogYmFja2dyb3VuZCBjb2xvciBhcyBhbiBSR0IgdHJpcGxldCBhdCB0aGUgZmluYWwsIGV4cGFuZGVkIGJpdCBkZXB0aApAQCAtMTAwMiw3ICsxMDA1LDEzIEBACiBUaGUgZm9sbG93aW5nIGNvZGUgd2lsbCByZXZlcnNlIHRoaXMgKG1ha2UgYmxhY2sgYmUgb25lIGFuZCB3aGl0ZSBiZQogemVybyk6CiAKLSAgIGlmIChiaXRfZGVwdGggPT0gMSAmJiBjb2xvcl90eXBlID09IFBOR19DT0xPUl9HUkFZKQorICAgaWYgKGJpdF9kZXB0aCA9PSAxICYmIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSkKKyAgICAgIHBuZ19zZXRfaW52ZXJ0X21vbm8ocG5nX3B0cik7CisKK1RoaXMgZnVuY3Rpb24gY2FuIGFsc28gYmUgdXNlZCB0byBpbnZlcnQgZ3JheXNjYWxlIGFuZCBncmF5LWFscGhhIGltYWdlczoKKworICAgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSB8fAorICAgICAgICBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCiAgICAgICBwbmdfc2V0X2ludmVydF9tb25vKHBuZ19wdHIpOwogCiBQTkcgZmlsZXMgc3RvcmUgMTYgYml0IHBpeGVscyBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgKGJpZy1lbmRpYW4sCkBAIC0xMjQ3LDggKzEyNTYsNyBAQAogcmVzcG9uc2liaWxpdHkgZm9yIGxpYnBuZy1hbGxvY2F0ZWQgZGF0YSwgdGhlIGFwcGxpY2F0aW9uIG11c3QgdXNlCiBwbmdfZnJlZSgpIHRvIGZyZWUgaXQsIGFuZCB3aGVuIHRoZSB1c2VyIHRyYW5zZmVycyByZXNwb25zaWJpbGl0eSB0byBsaWJwbmcKIGZvciBkYXRhIHRoYXQgdGhlIHVzZXIgaGFzIGFsbG9jYXRlZCwgdGhlIHVzZXIgbXVzdCBoYXZlIHVzZWQgcG5nX21hbGxvYygpCi1vciBwbmdfemFsbG9jKCkgdG8gYWxsb2NhdGUgaXQgKHRoZSBwbmdfemFsbG9jKCkgZnVuY3Rpb24gaXMgdGhlIHNhbWUKLWFzIHBuZ19tYWxsb2MoKSBleGNlcHQgdGhhdCBpdCBhbHNvIHplcm9lcyB0aGUgbmV3bHktYWxsb2NhdGVkIG1lbW9yeSkuCitvciBwbmdfemFsbG9jKCkgdG8gYWxsb2NhdGUgaXQuCiAKIElmIHlvdSBhbGxvY2F0ZWQgeW91ciByb3dfcG9pbnRlcnMgaW4gYSBzaW5nbGUgYmxvY2ssIGFzIHN1Z2dlc3RlZCBhYm92ZSBpbgogdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBoaWdoIGxldmVsIHJlYWQgaW50ZXJmYWNlLCB5b3UgbXVzdCBub3QgdHJhbnNmZXIKQEAgLTEzOTYsNyArMTQwNCw2IEBACiAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGVhY2ggcm93IG9mIGltYWdlCiAgICAgZGF0YSBpcyBjb21wbGV0ZSAqLwotCiAgdm9pZAogIHJvd19jYWxsYmFjayhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXAgbmV3X3JvdywKICAgICBwbmdfdWludF8zMiByb3dfbnVtLCBpbnQgcGFzcykKQEAgLTIzMTIsNyArMjMxOSw3IEBACiBZb3VyIHJlcGxhY2VtZW50IG1lbW9yeSBmdW5jdGlvbnMgbXVzdCBoYXZlIHByb3RvdHlwZXMgYXMgZm9sbG93czoKIAogICAgIHBuZ192b2lkcCBtYWxsb2NfZm4ocG5nX3N0cnVjdHAgcG5nX3B0ciwKLSAgICAgICBwbmdfdWludF8zMiBzaXplKTsKKyAgICAgICBwbmdfc2l6ZV90IHNpemUpOwogICAgIHZvaWQgZnJlZV9mbihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAgcHRyKTsKIAogWW91ciBtYWxsb2NfZm4oKSBjYW4gcmV0dXJuIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLiAgVGhlIHBuZ19tYWxsb2MoKQpAQCAtMjQ3OCw2ICsyNDg1LDEwIEBACiBBbm90aGVyIHVzZWZ1bCBvbmUgaXMgdG8gcmVkdWNlIHRoZSBtZW1vcnkgbGV2ZWwgdXNlZCBieSB0aGUgbGlicmFyeS4KIFRoZSBtZW1vcnkgbGV2ZWwgZGVmYXVsdHMgdG8gOCwgYnV0IGl0IGNhbiBiZSBsb3dlcmVkIGlmIHlvdSBhcmUKIHNob3J0IG9uIG1lbW9yeSAocnVubmluZyBET1MsIGZvciBleGFtcGxlLCB3aGVyZSB5b3Ugb25seSBoYXZlIDY0MEspLgorTm90ZSB0aGF0IHRoZSBtZW1vcnkgbGV2ZWwgZG9lcyBoYXZlIGFuIGVmZmVjdCBvbiBjb21wcmVzc2lvbjsgYW1vbmcKK290aGVyIHRoaW5ncywgbG93ZXIgbGV2ZWxzIHdpbGwgcmVzdWx0IGluIHNlY3Rpb25zIG9mIGluY29tcHJlc3NpYmxlCitkYXRhIGJlaW5nIGVtaXR0ZWQgaW4gc21hbGxlciBzdG9yZWQgYmxvY2tzLCB3aXRoIGEgY29ycmVzcG9uZGluZ2x5CitsYXJnZXIgcmVsYXRpdmUgb3ZlcmhlYWQgb2YgdXAgdG8gMTUlIGluIHRoZSB3b3JzdCBjYXNlLgogCiAgICAgcG5nX3NldF9jb21wcmVzc2lvbl9tZW1fbGV2ZWwocG5nX3B0ciwgbGV2ZWwpOwogCkBAIC0yNTEyLDE5ICsyNTIzLDE4IEBACiBJbmRpdmlkdWFsIGZpbHRlciB0eXBlcyBhcmUgUE5HX0ZJTFRFUl9OT05FLCBQTkdfRklMVEVSX1NVQiwKIFBOR19GSUxURVJfVVAsIFBOR19GSUxURVJfQVZHLCBQTkdfRklMVEVSX1BBRVRILCB3aGljaCBjYW4gYmUgYml0d2lzZQogT1JlZCB0b2dldGhlciB3aXRoICd8JyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbHRlcnMgdG8gdXNlLgotVGhlc2UgZmlsdGVycyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBQTkcgc3BlY2lmaWNhdGlvbi4gIElmCi15b3UgaW50ZW5kIHRvIGNoYW5nZSB0aGUgZmlsdGVyIHR5cGUgZHVyaW5nIHRoZSBjb3Vyc2Ugb2Ygd3JpdGluZworVGhlc2UgZmlsdGVycyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHRoZSBQTkcgc3BlY2lmaWNhdGlvbi4KK0lmIHlvdSBpbnRlbmQgdG8gY2hhbmdlIHRoZSBmaWx0ZXIgdHlwZSBkdXJpbmcgdGhlIGNvdXJzZSBvZiB3cml0aW5nCiB0aGUgaW1hZ2UsIHlvdSBzaG91bGQgc3RhcnQgd2l0aCBmbGFncyBzZXQgZm9yIGFsbCBvZiB0aGUgZmlsdGVycwogeW91IGludGVuZCB0byB1c2Ugc28gdGhhdCBsaWJwbmcgY2FuIGluaXRpYWxpemUgaXRzIGludGVybmFsCi1zdHJ1Y3R1cmVzIGFwcHJvcHJpYXRlbHkgZm9yIGFsbCBvZiB0aGUgZmlsdGVyIHR5cGVzLgorc3RydWN0dXJlcyBhcHByb3ByaWF0ZWx5IGZvciBhbGwgb2YgdGhlIGZpbHRlciB0eXBlcy4gIChOb3RlIHRoYXQgdGhpcworbWVhbnMgdGhlIGZpcnN0IHJvdyBtdXN0IGFsd2F5cyBiZSBhZGFwdGl2ZWx5IGZpbHRlcmVkLCBiZWNhdXNlIGxpYnBuZworY3VycmVudGx5IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBmaWx0ZXIgYnVmZmVycyB1bnRpbCBwbmdfd3JpdGVfcm93KCkKK2lzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuKQogCiAgICAgZmlsdGVycyA9IFBOR19GSUxURVJfTk9ORSB8IFBOR19GSUxURVJfU1VCCiAgICAgICAgICAgICAgIFBOR19GSUxURVJfVVAgfCBQTkdfRklMVEVSX0FWRSB8CiAgICAgICAgICAgICAgIFBOR19GSUxURVJfUEFFVEggfCBQTkdfQUxMX0ZJTFRFUlM7Ci0gICAgb3IKLSAgICBmaWx0ZXJzID0gb25lIG9mIFBOR19GSUxURVJfVkFMVUVfTk9ORSwKLSAgICAgICAgICAgICAgUE5HX0ZJTFRFUl9WQUxVRV9TVUIsIFBOR19GSUxURVJfVkFMVUVfVVAsCi0gICAgICAgICAgICAgIFBOR19GSUxURVJfVkFMVUVfQVZFLCBQTkdfRklMVEVSX1ZBTFVFX1BBRVRICiAKICAgICBwbmdfc2V0X2ZpbHRlcihwbmdfcHRyLCBQTkdfRklMVEVSX1RZUEVfQkFTRSwKICAgICAgICBmaWx0ZXJzKTsKQEAgLTI1MzYsMTYgKzI1NDYsMTYgQEAKICAgICAgICAgICAgICAgaW4gcG5nX3NldF9JSERSKCkuCiAKIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5mbHVlbmNlIGhvdyBsaWJwbmcgY2hvb3NlcyBmcm9tIGFtb25nIHRoZQotYXZhaWxhYmxlIGZpbHRlcnMuICBUaGlzIGlzIGRvbmUgaW4gdHdvIHdheXMgLSBieSB0ZWxsaW5nIGl0IGhvdwotaW1wb3J0YW50IGl0IGlzIHRvIGtlZXAgdGhlIHNhbWUgZmlsdGVyIGZvciBzdWNjZXNzaXZlIHJvd3MsIGFuZAotYnkgdGVsbGluZyBpdCB0aGUgcmVsYXRpdmUgY29tcHV0YXRpb25hbCBjb3N0cyBvZiB0aGUgZmlsdGVycy4KK2F2YWlsYWJsZSBmaWx0ZXJzLiAgVGhpcyBpcyBkb25lIGluIG9uZSBvciBib3RoIG9mIHR3byB3YXlzIC0gYnkKK3RlbGxpbmcgaXQgaG93IGltcG9ydGFudCBpdCBpcyB0byBrZWVwIHRoZSBzYW1lIGZpbHRlciBmb3Igc3VjY2Vzc2l2ZQorcm93cywgYW5kIGJ5IHRlbGxpbmcgaXQgdGhlIHJlbGF0aXZlIGNvbXB1dGF0aW9uYWwgY29zdHMgb2YgdGhlIGZpbHRlcnMuCiAKICAgICBkb3VibGUgd2VpZ2h0c1szXSA9IHsxLjUsIDEuMywgMS4xfSwKICAgICAgICBjb3N0c1tQTkdfRklMVEVSX1ZBTFVFX0xBU1RdID0KICAgICAgICB7MS4wLCAxLjMsIDEuMywgMS41LCAxLjd9OwogCi0gICAgcG5nX3NldF9maWx0ZXJfc2VsZWN0aW9uKHBuZ19wdHIsCi0gICAgICAgUE5HX0ZJTFRFUl9TRUxFQ1RJT05fV0VJR0hURUQsIDMsCisgICAgcG5nX3NldF9maWx0ZXJfaGV1cmlzdGljcyhwbmdfcHRyLAorICAgICAgIFBOR19GSUxURVJfSEVVUklTVElDX1dFSUdIVEVELCAzLAogICAgICAgIHdlaWdodHMsIGNvc3RzKTsKIAogVGhlIHdlaWdodHMgYXJlIG11bHRpcGx5aW5nIGZhY3RvcnMgdGhhdCBpbmRpY2F0ZSB0byBsaWJwbmcgdGhhdCB0aGUKQEAgLTI2NDUsNyArMjY1NSw2IEBACiBoYXZpbmcgbGV2ZWwgPSAwIHdpbGwgYmUgcHJpbnRlZC4gIFRoZXJlIGFyZW4ndCBhbnkgc3VjaCBzdGF0ZW1lbnRzIGluCiB0aGlzIHZlcnNpb24gb2YgbGlicG5nLCBidXQgaWYgeW91IGluc2VydCBzb21lIHRoZXkgd2lsbCBiZSBwcmludGVkLgogCi0KIFZJLiAgTU5HIHN1cHBvcnQKIAogVGhlIE1ORyBzcGVjaWZpY2F0aW9uIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9tbmcpIGFsbG93cwpAQCAtMjY1OSw3ICsyNjY4LDcgQEAKICAgICAgICAgUE5HX0ZMQUdfTU5HX0VNUFRZX1BMVEUKICAgICAgICAgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NAogICAgICAgICBQTkdfQUxMX01OR19GRUFUVVJFUwotICAgZmVhdHVyZV9zZXQgaXMgYSBwbmdfMzJfdWludCB0aGF0IGlzIHRoZSBsb2dpY2FsIEFORCBvZgorICAgZmVhdHVyZV9zZXQgaXMgYSBwbmdfYnl0ZSB0aGF0IGlzIHRoZSBsb2dpY2FsIEFORCBvZgogICAgICAgeW91ciBtYXNrIHdpdGggdGhlIHNldCBvZiBNTkcgZmVhdHVyZXMgdGhhdCBpcwogICAgICAgc3VwcG9ydGVkIGJ5IHRoZSB2ZXJzaW9uIG9mIGxpYnBuZyB0aGF0IHlvdSBhcmUgdXNpbmcuCiAKQEAgLTI3MjAsMTUgKzI3MjksMTUgQEAKIAogICAgcG5nX3VpbnRfMzIgYXBwbGljYXRpb25fdm4gPSBQTkdfTElCUE5HX1ZFUjsKIAotVklJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCitWSUkuIFkySyBDb21wbGlhbmNlIGluIGxpYnBuZwogCi1NYXkgMTQsIDIwMDEKK0FwcmlsIDE1LCAyMDAyCiAKIFNpbmNlIHRoZSBQTkcgRGV2ZWxvcG1lbnQgZ3JvdXAgaXMgYW4gYWQtaG9jIGJvZHksIHdlIGNhbid0IG1ha2UKIGFuIG9mZmljaWFsIGRlY2xhcmF0aW9uLgogCiBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi11cHdhcmQgdGhyb3VnaCAxLjAuMTJiZXRhMSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC4xMyBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKIHZlcnNpb25zIHdlcmUgYWxzbyBZMksgY29tcGxpYW50LgogCiBMaWJwbmcgb25seSBoYXMgdGhyZWUgeWVhciBmaWVsZHMuICBPbmUgaXMgYSAyLWJ5dGUgdW5zaWduZWQgaW50ZWdlciB0aGF0CmRpZmYgLS1naXQgYS9saWJwbmdwZi4zIGIvbGlicG5ncGYuMwppbmRleCBkNjEyNDAzLi4zMjM0ZWI5IDEwMDY0NAotLS0gYS9saWJwbmdwZi4zCisrKyBiL2xpYnBuZ3BmLjMKQEAgLTEsNiArMSw2IEBACi0uVEggTElCUE5HUEYgMyAiTWF5IDE0LCAyMDAxIgorLlRIIExJQlBOR1BGIDMgIkFwcmlsIDE1LCAyMDAyIgogLlNIIE5BTUUKLWxpYnBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIFJlZmVyZW5jZSBMaWJyYXJ5IDEuMC4xMmJldGExCitsaWJwbmcgXC0gUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAoUE5HKSBSZWZlcmVuY2UgTGlicmFyeSAxLjAuMTMKIChwcml2YXRlIGZ1bmN0aW9ucykKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPHBuZy5oPlxmUApAQCAtNDcsMTEgKzQ3LDExIEBACiAKIFxmSVxmQgogCi1cZkJwbmdfdm9pZHAgcG5nX2NyZWF0ZV9zdHJ1Y3QgKGludCBcZlBcZkl0eXBlXGZQXGZCLCBwbmdfbWFsbG9jX3B0ciBcZkltYWxsb2NfZm5cZlBcZkIpO1xmUAorXGZCcG5nX3ZvaWRwIHBuZ19jcmVhdGVfc3RydWN0IChpbnQgXGZJdHlwZVxmUFxmQik7XGZQCiAKIFxmSVxmQgogCi1cZkJwbmdfdm9pZHAgcG5nX2NyZWF0ZV9zdHJ1Y3RfMiAoaW50IFxmSXR5cGVcZlBcZkIpO1xmUAorXGZCcG5nX3ZvaWRwIHBuZ19jcmVhdGVfc3RydWN0XzIgKGludCBcZlBcZkl0eXBlXGZQXGZCLCBwbmdfbWFsbG9jX3B0ciBcZlBcZkltYWxsb2NfZm5cZlBcZkIsIHBuZ192b2lkcCBcZkltZW1fcHRyXGZQXGZCKTtcZlAKIAogXGZJXGZCCiAKQEAgLTYzLDcgKzYzLDcgQEAKIAogXGZJXGZCCiAKLVxmQnZvaWQgcG5nX2Rlc3Ryb3lfc3RydWN0XzIgKHBuZ192b2lkcCBcZlBcZklzdHJ1Y3RfcHRyXGZQXGZCLCBwbmdfZnJlZV9wdHIgXGZJZnJlZV9mblxmUFxmQik7XGZQCitcZkJ2b2lkIHBuZ19kZXN0cm95X3N0cnVjdF8yIChwbmdfdm9pZHAgXGZQXGZJc3RydWN0X3B0clxmUFxmQiwgcG5nX2ZyZWVfcHRyIFxmUFxmSWZyZWVfZm5cZlBcZkIsIHBuZ192b2lkcCBcZkltZW1fcHRyXGZQXGZCKTtcZlAKIAogXGZJXGZCCiAKQEAgLTE5MSwxMCArMTkxLDYgQEAKIAogXGZJXGZCCiAKLVxmQmludCBwbmdfaGFuZGxlX2FzX3Vua25vd24gKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHBuZ19ieXRlcCBcZkljaHVua19uYW1lXGZQXGZCKTtcZlAKLQotXGZJXGZCCi0KIFxmQnZvaWQgcG5nX2hhbmRsZV9iS0dEIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBwbmdfaW5mb3AgXGZQXGZJaW5mb19wdHJcZlBcZkIsIHBuZ191aW50XzMyIFxmSWxlbmd0aFxmUFxmQik7XGZQCiAKIFxmSVxmQgpAQCAtNDI1LDYgKzQyMSw4IEBACiAKIFxmQnZvaWQgcG5nX3dyaXRlX2RhdGEgKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHBuZ19ieXRlcCBcZlBcZklkYXRhXGZQXGZCLCBwbmdfc2l6ZV90IFxmSWxlbmd0aFxmUFxmQik7XGZQCiAKK1xmSVxmQgorCiBcZkJ2b2lkIHBuZ193cml0ZV9maWx0ZXJlZF9yb3cgKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHBuZ19ieXRlcCBcZklmaWx0ZXJlZF9yb3dcZlBcZkIpO1xmUAogCiBcZklcZkIKQEAgLTUyOSwxNyArNTI3LDEwIEBACiAKIFxmSVxmQgogCi1cZkJ2b2lkcGYgcG5nX3phbGxvYyAodm9pZHBmIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHVJbnQgXGZQXGZJaXRlbXNcZlBcZkIsIHVJbnQgXGZJc2l6ZVxmUFxmQik7XGZQCi0KLVxmSVxmQgotCi1cZkJ2b2lkIHBuZ196ZnJlZSAodm9pZHBmIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHZvaWRwZiBcZklwdHJcZlBcZkIpO1xmUAotCi1cZklcZkIKLQogLlNIIERFU0NSSVBUSU9OCiBUaGUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSBhcmUgdXNlZCBwcml2YXRlbHkgYnkgbGlicG5nCi1hbmQgYXJlIG5vdCByZWNvbW1lbmRlZCBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9ucy4gIFRoZXkKK2FuZCBhcmUgbm90IHJlY29tbWVuZGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb25zLiAgVGhleSBhcmUKK25vdCAiZXhwb3J0ZWQiIHRvIGFwcGxpY2F0aW9ucyB1c2luZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhleQogYXJlIGxpc3RlZCBhbHBoYWJldGljYWxseSBoZXJlIGFzIGFuIGFpZCB0byBsaWJwbmcgbWFpbnRhaW5lcnMuCiBTZWUgcG5nLmggZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgZnVuY3Rpb25zLgogCmRpZmYgLS1naXQgYS9wbmcuNSBiL3BuZy41CmluZGV4IDU4OGQ5NmQuLmQ2MWQyODEgMTAwNjQ0Ci0tLSBhL3BuZy41CisrKyBiL3BuZy41CkBAIC0xLDQgKzEsNCBAQAotLlRIIFBORyA1ICJNYXkgMTQsIDIwMDEiCisuVEggUE5HIDUgIkFwcmlsIDE1LCAyMDAyIgogLlNIIE5BTUUKIHBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIGZvcm1hdAogLlNIIERFU0NSSVBUSU9OCmRpZmYgLS1naXQgYS9wbmcuYyBiL3BuZy5jCmluZGV4IDY5MTgwN2MuLjFkMmFiYTEgMTAwNjQ0Ci0tLSBhL3BuZy5jCisrKyBiL3BuZy5jCkBAIC0xLDggKzEsOCBAQAogCiAvKiBwbmcuYyAtIGxvY2F0aW9uIGZvciBnZW5lcmFsIHB1cnBvc2UgbGlicG5nIGZ1bmN0aW9ucwogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTEzLDE0ICsxMywxNCBAQAogI2luY2x1ZGUgInBuZy5oIgogCiAvKiBHZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIGlmIHRoZXJlIGlzIGFuIG9sZCBwbmcuaCBpbiB0aGUgc2VhcmNoIHBhdGguICovCi10eXBlZGVmIHZlcnNpb25fMV8wXzEyYmV0YTEgWW91cl9wbmdfaF9pc19ub3RfdmVyc2lvbl8xXzBfMTJiZXRhMTsKK3R5cGVkZWYgdmVyc2lvbl8xXzBfMTMgWW91cl9wbmdfaF9pc19ub3RfdmVyc2lvbl8xXzBfMTM7CiAKIC8qIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIEMgZmlsZXMuICBUaGlzIGhhZCBiZXR0ZXIgbWF0Y2ggdGhlIHZlcnNpb24KICAqIHN0cmluZyBkZWZpbmVkIGluIHBuZy5oLiAgKi8KIAogI2lmZGVmIFBOR19VU0VfR0xPQkFMX0FSUkFZUwogLyogcG5nX2xpYnBuZ192ZXIgd2FzIGNoYW5nZWQgdG8gYSBmdW5jdGlvbiBpbiB2ZXJzaW9uIDEuMC41YyAqLwotY29uc3QgY2hhciBwbmdfbGlicG5nX3ZlclsxOF0gPSAiMS4wLjEyYmV0YTEiOworY29uc3QgY2hhciBwbmdfbGlicG5nX3ZlclsxOF0gPSAiMS4wLjEzIjsKIAogLyogcG5nX3NpZyB3YXMgY2hhbmdlZCB0byBhIGZ1bmN0aW9uIGluIHZlcnNpb24gMS4wLjVjICovCiAvKiBQbGFjZSB0byBob2xkIHRoZSBzaWduYXR1cmUgc3RyaW5nIGZvciBhIFBORyBmaWxlLiAqLwpAQCAtMTM1LDEzICsxMzUsMjIgQEAKIH0KIAogLyogRnVuY3Rpb24gdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB6bGliIGFuZCBjbGVhciBpdCB0byAwLiAqLwotdm9pZHBmIC8qIFBSSVZBVEUgKi8KK3ZvaWRwZiBQTkdBUEkKIHBuZ196YWxsb2Modm9pZHBmIHBuZ19wdHIsIHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkKIHsKICAgIHBuZ191aW50XzMyIG51bV9ieXRlcyA9IChwbmdfdWludF8zMilpdGVtcyAqIHNpemU7Ci0gICBwbmdfdm9pZHAgcHRyID0gKHBuZ192b2lkcClwbmdfbWFsbG9jKChwbmdfc3RydWN0cClwbmdfcHRyLCBudW1fYnl0ZXMpOworICAgcG5nX3ZvaWRwIHB0cjsKKyAgIHBuZ19zdHJ1Y3RwIHA9cG5nX3B0cjsKKyAgIHBuZ191aW50XzMyIHNhdmVfZmxhZ3M9cC0+ZmxhZ3M7CisKKyAgIHAtPmZsYWdzfD1QTkdfRkxBR19NQUxMT0NfTlVMTF9NRU1fT0s7CisgICBwdHIgPSAocG5nX3ZvaWRwKXBuZ19tYWxsb2MoKHBuZ19zdHJ1Y3RwKXBuZ19wdHIsIG51bV9ieXRlcyk7CisgICBwLT5mbGFncz1zYXZlX2ZsYWdzOwogCiAjaWZuZGVmIFBOR19OT19aQUxMT0NfWkVSTworICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgIHJldHVybiAoKHZvaWRwZilwdHIpOworCiAgICBpZiAobnVtX2J5dGVzID4gKHBuZ191aW50XzMyKTB4ODAwMEwpCiAgICB7CiAgICAgICBwbmdfbWVtc2V0KHB0ciwgMCwgKHBuZ19zaXplX3QpMHg4MDAwTCk7CkBAIC0xNTcsNyArMTY2LDcgQEAKIH0KIAogLyogZnVuY3Rpb24gdG8gZnJlZSBtZW1vcnkgZm9yIHpsaWIgKi8KLXZvaWQgLyogUFJJVkFURSAqLwordm9pZCBQTkdBUEkKIHBuZ196ZnJlZSh2b2lkcGYgcG5nX3B0ciwgdm9pZHBmIHB0cikKIHsKICAgIHBuZ19mcmVlKChwbmdfc3RydWN0cClwbmdfcHRyLCAocG5nX3ZvaWRwKXB0cik7CkBAIC0yMTIsMTQgKzIyMSwxMyBAQAogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfY3JlYXRlX2luZm9fc3RydWN0XG4iKTsKICAgIGlmKHBuZ19wdHIgPT0gTlVMTCkgcmV0dXJuIChOVUxMKTsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICBpZiAoKGluZm9fcHRyID0gKHBuZ19pbmZvcClwbmdfY3JlYXRlX3N0cnVjdF8yKFBOR19TVFJVQ1RfSU5GTywKLSAgICAgIHBuZ19wdHItPm1hbGxvY19mbiwgcG5nX3B0ci0+bWVtX3B0cikpICE9IE5VTEwpCisgICBpbmZvX3B0ciA9IChwbmdfaW5mb3ApcG5nX2NyZWF0ZV9zdHJ1Y3RfMihQTkdfU1RSVUNUX0lORk8sCisgICAgICBwbmdfcHRyLT5tYWxsb2NfZm4sIHBuZ19wdHItPm1lbV9wdHIpOwogI2Vsc2UKLSAgIGlmICgoaW5mb19wdHIgPSAocG5nX2luZm9wKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfSU5GTykpICE9IE5VTEwpCisgICBpbmZvX3B0ciA9IChwbmdfaW5mb3ApcG5nX2NyZWF0ZV9zdHJ1Y3QoUE5HX1NUUlVDVF9JTkZPKTsKICNlbmRpZgotICAgeworICAgaWYgKGluZm9fcHRyICE9IE5VTEwpCiAgICAgICBwbmdfaW5mb19pbml0XzMoJmluZm9fcHRyLCBzaXplb2YocG5nX2luZm8pKTsKLSAgIH0KIAogICAgcmV0dXJuIChpbmZvX3B0cik7CiB9CkBAIC0yNDgsNyArMjU2LDcgQEAKICNlbHNlCiAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClpbmZvX3B0cik7CiAjZW5kaWYKLSAgICAgICppbmZvX3B0cl9wdHIgPSAocG5nX2luZm9wKU5VTEw7CisgICAgICAqaW5mb19wdHJfcHRyID0gTlVMTDsKICAgIH0KIH0KIApAQCAtMzQ2LDYgKzM1NCw5IEBACiB7CiAgICAgcG5nX2ZyZWUocG5nX3B0ciwgaW5mb19wdHItPnRyYW5zKTsKICAgICBpbmZvX3B0ci0+dmFsaWQgJj0gflBOR19JTkZPX3RSTlM7CisjaWZuZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAorICAgIHBuZ19wdHItPmZsYWdzICY9IH5QTkdfRkxBR19GUkVFX1RSTlM7CisjZW5kaWYKICAgICBpbmZvX3B0ci0+dHJhbnMgPSBOVUxMOwogfQogI2VuZGlmCkBAIC00ODksNiArNTAwLDkgQEAKICAgICBwbmdfZnJlZShwbmdfcHRyLCBpbmZvX3B0ci0+aGlzdCk7CiAgICAgaW5mb19wdHItPmhpc3QgPSBOVUxMOwogICAgIGluZm9fcHRyLT52YWxpZCAmPSB+UE5HX0lORk9faElTVDsKKyNpZm5kZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECisgICAgcG5nX3B0ci0+ZmxhZ3MgJj0gflBOR19GTEFHX0ZSRUVfSElTVDsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTUwMiw2ICs1MTYsOSBAQAogICAgIHBuZ196ZnJlZShwbmdfcHRyLCBpbmZvX3B0ci0+cGFsZXR0ZSk7CiAgICAgaW5mb19wdHItPnBhbGV0dGUgPSBOVUxMOwogICAgIGluZm9fcHRyLT52YWxpZCAmPSB+UE5HX0lORk9fUExURTsKKyNpZm5kZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECisgICAgcG5nX3B0ci0+ZmxhZ3MgJj0gflBOR19GTEFHX0ZSRUVfUExURTsKKyNlbmRpZgogICAgIGluZm9fcHRyLT5udW1fcGFsZXR0ZSA9IDA7CiB9CiAKQEAgLTY0NiwxMCArNjYzLDEwIEBACiBwbmdfZ2V0X2NvcHlyaWdodChwbmdfc3RydWN0cCBwbmdfcHRyKQogewogICAgaWYgKHBuZ19wdHIgIT0gTlVMTCB8fCBwbmdfcHRyID09IE5VTEwpICAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgIHJldHVybiAoKHBuZ19jaGFycCkgIlxuIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxXG5cCi0gICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb25cblwKLSAgIENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlclxuXAotICAgQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLlxuIik7CisgICByZXR1cm4gKChwbmdfY2hhcnApICJcbiBsaWJwbmcgdmVyc2lvbiAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMlxuXAorICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uXG5cCisgICBDb3B5cmlnaHQgKGMpIDE5OTYtMTk5NyBBbmRyZWFzIERpbGdlclxuXAorICAgQ29weXJpZ2h0IChjKSAxOTk1LTE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuXG4iKTsKICAgIHJldHVybiAoKHBuZ19jaGFycCkgIiIpOwogfQogCkBAIC02NjQsOCArNjgxLDggQEAKIHsKICAgIC8qIFZlcnNpb24gb2YgKi5jIGZpbGVzIHVzZWQgd2hlbiBidWlsZGluZyBsaWJwbmcgKi8KICAgIGlmKHBuZ19wdHIgIT0gTlVMTCkgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwbmdfcHRyICovCi0gICAgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC4xMmJldGExIik7Ci0gICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC4xMmJldGExIik7CisgICAgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC4xMyIpOworICAgcmV0dXJuKChwbmdfY2hhcnApICIxLjAuMTMiKTsKIH0KIAogcG5nX2NoYXJwIFBOR0FQSQpAQCAtNjg3LDcgKzcwNCw3IEBACiB9CiAKICNpZmRlZiBQTkdfSEFORExFX0FTX1VOS05PV05fU1VQUE9SVEVECi1pbnQgLyogUFJJVkFURSAqLworaW50IFBOR0FQSQogcG5nX2hhbmRsZV9hc191bmtub3duKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBjaHVua19uYW1lKQogewogICAgLyogY2hlY2sgY2h1bmtfbmFtZSBhbmQgcmV0dXJuICJrZWVwIiB2YWx1ZSBpZiBpdCdzIG9uIHRoZSBsaXN0LCBlbHNlIDAgKi8KQEAgLTcxNSw5ICs3MzIsNTkgQEAKIHBuZ19hY2Nlc3NfdmVyc2lvbl9udW1iZXIodm9pZCkKIHsKICAgIC8qIFZlcnNpb24gb2YgKi5jIGZpbGVzIHVzZWQgd2hlbiBidWlsZGluZyBsaWJwbmcgKi8KLSAgIHJldHVybigocG5nX3VpbnRfMzIpIDEwMDEyTCk7CisgICByZXR1cm4oKHBuZ191aW50XzMyKSAxMDAxM0wpOwogfQogCisKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKQorICAgIC8qIEdSUjogIGNvdWxkIGFkZCB0aGlzOiAgICYmIGRlZmluZWQoUE5HX01NWF9DT0RFX1NVUFBPUlRFRCkgKi8KKy8qIHRoaXMgSU5URVJOQUwgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIGxpYnBuZyAxLjIuMCAqLwordm9pZCAvKiBQUklWQVRFICovCitwbmdfaW5pdF9tbXhfZmxhZ3MgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCit7CisgICAgcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCA9IDA7CisgICAgcG5nX3B0ci0+bW14X2JpdGRlcHRoX3RocmVzaG9sZCA9IDA7CisKKyMgIGlmIChkZWZpbmVkKFBOR19VU0VfUE5HVkNSRCkgfHwgZGVmaW5lZChQTkdfVVNFX1BOR0dDQ1JEKSkKKworICAgIHBuZ19wdHItPmFzbV9mbGFncyB8PSBQTkdfQVNNX0ZMQUdfTU1YX1NVUFBPUlRfQ09NUElMRUQ7CisKKyAgICBpZiAocG5nX21teF9zdXBwb3J0KCkpIHsKKyAgICAgICAgcG5nX3B0ci0+YXNtX2ZsYWdzIHw9IFBOR19BU01fRkxBR19NTVhfU1VQUE9SVF9JTl9DUFUKKyMgICAgaWZkZWYgUE5HX0hBVkVfQVNTRU1CTEVSX0NPTUJJTkVfUk9XCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVworIyAgICBlbmRpZgorIyAgICBpZmRlZiBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRQorIyAgICBlbmRpZgorIyAgICBpZm5kZWYgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfRklMVEVSX1JPVworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOworIyAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfU1VCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCA7CisKKyAgICAgICAgcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCA9IFBOR19NTVhfUk9XQllURVNfVEhSRVNIT0xEX0RFRkFVTFQ7CisgICAgICAgIHBuZ19wdHItPm1teF9iaXRkZXB0aF90aHJlc2hvbGQgPSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUOworIyAgICBlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIHBuZ19wdHItPmFzbV9mbGFncyAmPSB+KCBQTkdfQVNNX0ZMQUdfTU1YX1NVUFBPUlRfSU5fQ1BVCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQTkdfTU1YX1JFQURfRkxBR1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19NTVhfV1JJVEVfRkxBR1MgKTsKKyAgICB9CisKKyMgIGVsc2UgLyogISgoUE5HVkNSRCB8fCBQTkdHQ0NSRCkgJiYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkpICovCisKKyAgICAvKiBjbGVhciBhbGwgTU1YIGZsYWdzOyBubyBzdXBwb3J0IGlzIGNvbXBpbGVkIGluICovCisgICAgcG5nX3B0ci0+YXNtX2ZsYWdzICY9IH4oIFBOR19NTVhfRkxBR1MgKTsKKworIyAgZW5kaWYgLyogPyhQTkdWQ1JEIHx8IFBOR0dDQ1JEKSAqLworfQorCisjZW5kaWYgLyogIShQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAqLworCiAvKiB0aGlzIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byBsaWJwbmcgMS4yLjAgKi8KICNpZiAhZGVmaW5lZChQTkdfVVNFX1BOR0dDQ1JEKSAmJiBcCiAgICAgIShkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1VTRV9QTkdWQ1JEKSkKQEAgLTcyNywzICs3OTQsNCBAQAogICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgorI2VuZGlmIC8qIFBOR18xXzBfWCAqLwpkaWZmIC0tZ2l0IGEvcG5nLmggYi9wbmcuaAppbmRleCAwM2EyYmMxLi44YzZkNmM4IDEwMDY0NAotLS0gYS9wbmcuaAorKysgYi9wbmcuaApAQCAtMSwxNSArMSwxNSBAQAogCiAvKiBwbmcuaCAtIGhlYWRlciBmaWxlIGZvciBQTkcgcmVmZXJlbmNlIGxpYnJhcnkKICAqCi0gKiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCiAgKiBBdXRob3JzIGFuZCBtYWludGFpbmVyczoKICAqICBsaWJwbmcgdmVyc2lvbnMgMC43MSwgTWF5IDE5OTUsIHRocm91Z2ggMC44OCwgSmFudWFyeSAxOTk2OiBHdXkgU2NoYWxuYXQKICAqICBsaWJwbmcgdmVyc2lvbnMgMC44OWMsIEp1bmUgMTk5NiwgdGhyb3VnaCAwLjk2LCBNYXkgMTk5NzogQW5kcmVhcyBEaWxnZXIKLSAqICBsaWJwbmcgdmVyc2lvbnMgMC45NywgSmFudWFyeSAxOTk4LCB0aHJvdWdoIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxOiBHbGVubgorICogIGxpYnBuZyB2ZXJzaW9ucyAwLjk3LCBKYW51YXJ5IDE5OTgsIHRocm91Z2ggMS4wLjEzIC0gQXByaWwgMTUsIDIwMDI6IEdsZW5uCiAgKiAgU2VlIGFsc28gIkNvbnRyaWJ1dGluZyBBdXRob3JzIiwgYmVsb3cuCiAgKgogICogTm90ZSBhYm91dCBsaWJwbmcgdmVyc2lvbiBudW1iZXJzOgpAQCAtNzAsMTAgKzcwLDIzIEBACiAgKiAgICAxLjAuMTFiZXRhMS0zICAgICAgICAgICAgMSAgICAxMDAxMSAgMi4xLjAuMTFiZXRhMS0zCiAgKiAgICAxLjAuMTFyYzEgICAgICAgICAgICAgICAgMSAgICAxMDAxMSAgMi4xLjAuMTFyYzEKICAqICAgIDEuMC4xMSAgICAgICAgICAgICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMQotICogICAgMS4wLjEyYmV0YTEgICAgICAgICAgICAgIDIgICAgMTAwMTIgIDIuMS4wLjExYmV0YTEKLSAqICAgIDEuMS4wYS1mICAgICAgICAgICAgICAgICAxICAgIDEwMTAwICAyLjEuMS4wYS1mIChicmFuY2ggYWJhbmRvbmVkKQorICogICAgMS4wLjEyYmV0YTEtMiAgICAgICAgICAgIDIgICAgMTAwMTIgIDIuMS4wLjEyYmV0YTEtMgorICogICAgMS4wLjEycmMxICAgICAgICAgICAgICAgIDIgICAgMTAwMTIgIDIuMS4wLjEycmMxCisgKiAgICAxLjAuMTIgICAgICAgICAgICAgICAgICAgMiAgICAxMDAxMiAgMi4xLjAuMTIKKyAqICAgIDEuMS4wYS1mICAgICAgICAgICAgICAgICAtICAgIDEwMTAwICAyLjEuMS4wYS1mIChicmFuY2ggYWJhbmRvbmVkKQogICogICAgMS4yLjBiZXRhMS0yICAgICAgICAgICAgIDIgICAgMTAyMDAgIDIuMS4yLjBiZXRhMS0yCi0gKiAgICAxLjIuMGJldGEzICAgICAgICAgICAgICAgMyAgICAxMDIwMCAgMy4xLjIuMGJldGEzCisgKiAgICAxLjIuMGJldGEzLTUgICAgICAgICAgICAgMyAgICAxMDIwMCAgMy4xLjIuMGJldGEzLTUKKyAqICAgIDEuMi4wcmMxICAgICAgICAgICAgICAgICAzICAgIDEwMjAwICAzLjEuMi4wcmMxCisgKiAgICAxLjIuMCAgICAgICAgICAgICAgICAgICAgMyAgICAxMDIwMCAgMy4xLjIuMAorICogICAgMS4yLjFiZXRhMS00ICAgICAgICAgICAgIDMgICAgMTAyMDEgIDMuMS4yLjFiZXRhMS00CisgKiAgICAxLjIuMXJjMS0yICAgICAgICAgICAgICAgMyAgICAxMDIwMSAgMy4xLjIuMXJjMS0yCisgKiAgICAxLjIuMSAgICAgICAgICAgICAgICAgICAgMyAgICAxMDIwMSAgMy4xLjIuMQorICogICAgMS4yLjJiZXRhMS02ICAgICAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjJiZXRhMS02CisgKiAgICAxLjAuMTNiZXRhMSAgICAgICAgICAgICAxMCAgICAxMDAxMyAgMTAuc28uMC4xLjAuMTNiZXRhMQorICogICAgMS4yLjJyYzEgICAgICAgICAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjJyYzEKKyAqICAgIDEuMC4xM3JjMSAgICAgICAgICAgICAgIDEwICAgIDEwMDEzICAxMC5zby4wLjEuMC4xM3JjMQorICogICAgMS4yLjIgICAgICAgICAgICAgICAgICAgMTIgICAgMTAyMDIgIDEyLnNvLjAuMS4yLjIKKyAqICAgIDEuMC4xMyAgICAgICAgICAgICAgICAgIDEwICAgIDEwMDEzICAxMC5zby4wLjEuMC4xMwogICoKICAqICAgIEhlbmNlZm9ydGggdGhlIHNvdXJjZSB2ZXJzaW9uIHdpbGwgbWF0Y2ggdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yCiAgKiAgICBhbmQgbWlub3IgbnVtYmVyczsgdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yIHZlcnNpb24gbnVtYmVyIHdpbGwgYmUKQEAgLTEwMyw4ICsxMTYsOCBAQAogICogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogICogdGhpcyBzZW50ZW5jZS4KICAqCi0gKiBsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAgMS4wLjEyYmV0YTEsIE1heSAxNCwgMjAwMSwgYXJlCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCisgKiBsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAxLjAuMTMsIEFwcmlsIDE1LCAyMDAyLCBhcmUKKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbiwgYW5kIGFyZQogICogZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGRpc2NsYWltZXIgYW5kIGxpY2Vuc2UgYXMgbGlicG5nLTEuMC42CiAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5kaXZpZHVhbHMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgQ29udHJpYnV0aW5nIEF1dGhvcnMKICAqCkBAIC0yMDgsMTMgKzIyMSwxMyBAQAogICogWTJLIGNvbXBsaWFuY2UgaW4gbGlicG5nOgogICogPT09PT09PT09PT09PT09PT09PT09PT09PQogICoKLSAqICAgIE1heSAxNCwgMjAwMQorICogICAgQXByaWwgMTUsIDIwMDIKICAqCiAgKiAgICBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiAgKiAgICBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KICAqCiAgKiAgICBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi0gKiAgICB1cHdhcmQgdGhyb3VnaCAxLjAuMTJiZXRhMSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKKyAqICAgIHVwd2FyZCB0aHJvdWdoIDEuMC4xMyBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKICAqICAgIHZlcnNpb25zIHdlcmUgYWxzbyBZMksgY29tcGxpYW50LgogICoKICAqICAgIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyCkBAIC0yNzAsMTkgKzI4MywxOSBAQAogICovCiAKIC8qIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHBuZy5oIC0gdGhpcyBzaG91bGQgbWF0Y2ggdGhlIHZlcnNpb24gaW4gcG5nLmMgKi8KLSNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuMTJiZXRhMSIKKyNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuMTMiCiAKLSNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU09OVU0gICAyCisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1NPTlVNICAgMAogI2RlZmluZSBQTkdfTElCUE5HX1ZFUl9ETExOVU0gICVETExOVU0lCiAKIC8qIFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgZmlyc3QgMyBjb21wb25lbnRzIG9mIFBOR19MSUJQTkdfVkVSX1NUUklORzogKi8KICNkZWZpbmUgUE5HX0xJQlBOR19WRVJfTUFKT1IgICAxCiAjZGVmaW5lIFBOR19MSUJQTkdfVkVSX01JTk9SICAgMAotI2RlZmluZSBQTkdfTElCUE5HX1ZFUl9SRUxFQVNFIDEyCisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1JFTEVBU0UgMTMKIC8qIFRoaXMgc2hvdWxkIG1hdGNoIHRoZSBudW1lcmljIHBhcnQgb2YgdGhlIGZpbmFsIGNvbXBvbmVudCBvZgogICogUE5HX0xJQlBOR19WRVJfU1RSSU5HLCBvbWl0dGluZyBhbnkgbGVhZGluZyB6ZXJvOiAqLwogCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICAxCisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICAwCiAKICNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9BTFBIQSAgICAxCiAjZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfQkVUQSAgICAgMgpAQCAtMjkwLDE0ICszMDMsMTQgQEAKICNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9TVEFCTEUgICA0CiAjZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfVFlQRU1BU0sgNwogI2RlZmluZSBQTkdfTElCUE5HX0JVSUxEX1BBVENIICAgIDggLyogQ2FuIGJlIE9SJ2VkIHdpdGggU1RBQkxFIG9ubHkgKi8KLSNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIDIKKyNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIDQKIAogLyogQ2FyZWZ1bCBoZXJlLiAgQXQgb25lIHRpbWUsIEd1eSB3YW50ZWQgdG8gdXNlIDA4MiwgYnV0IHRoYXQgd291bGQgYmUgb2N0YWwuCiAgKiBXZSBtdXN0IG5vdCBpbmNsdWRlIGxlYWRpbmcgemVyb3MuCiAgKiBWZXJzaW9ucyAwLjcgdGhyb3VnaCAxLjAuMCB3ZXJlIGluIHRoZSByYW5nZSAwIHRvIDEwMCBoZXJlIChvbmx5CiAgKiB2ZXJzaW9uIDEuMC4wIHdhcyBtaXMtbnVtYmVyZWQgMTAwIGluc3RlYWQgb2YgMTAwMDApLiAgRnJvbQogICogdmVyc2lvbiAxLjAuMSBpdCdzICAgIHh4eXl6eiwgd2hlcmUgeD1tYWpvciwgeT1taW5vciwgej1yZWxlYXNlICovCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSIDEwMDEyIC8qIDEuMC4xMiAqLworI2RlZmluZSBQTkdfTElCUE5HX1ZFUiAxMDAxMyAvKiAxLjAuMTMgKi8KIAogI2lmbmRlZiBQTkdfVkVSU0lPTl9JTkZPX09OTFkKIApAQCAtMzE4LDYgKzMzMSw0MCBAQAogICogd2hpY2ggYXBwbGljYXRpb25zIGFyZW4ndCBleHBlY3RlZCB0byB1c2UgZGlyZWN0bHkuCiAgKi8KIAorI2lmbmRlZiBQTkdfTk9fVFlQRUNBU1RfTlVMTAorI2RlZmluZSBpbnRfcF9OVUxMICAgICAgICAgICAgICAgIChpbnQgKilOVUxMCisjZGVmaW5lIHBuZ19ieXRlcF9OVUxMICAgICAgICAgICAgKHBuZ19ieXRlcClOVUxMCisjZGVmaW5lIHBuZ19ieXRlcHBfTlVMTCAgICAgICAgICAgKHBuZ19ieXRlcHApTlVMTAorI2RlZmluZSBwbmdfZG91YmxlcF9OVUxMICAgICAgICAgIChwbmdfZG91YmxlcClOVUxMCisjZGVmaW5lIHBuZ19lcnJvcl9wdHJfTlVMTCAgICAgICAgKHBuZ19lcnJvcl9wdHIpTlVMTAorI2RlZmluZSBwbmdfZmx1c2hfcHRyX05VTEwgICAgICAgIChwbmdfZmx1c2hfcHRyKU5VTEwKKyNkZWZpbmUgcG5nX2ZyZWVfcHRyX05VTEwgICAgICAgICAocG5nX2ZyZWVfcHRyKU5VTEwKKyNkZWZpbmUgcG5nX2luZm9wcF9OVUxMICAgICAgICAgICAocG5nX2luZm9wcClOVUxMCisjZGVmaW5lIHBuZ19tYWxsb2NfcHRyX05VTEwgICAgICAgKHBuZ19tYWxsb2NfcHRyKU5VTEwKKyNkZWZpbmUgcG5nX3JlYWRfc3RhdHVzX3B0cl9OVUxMICAocG5nX3JlYWRfc3RhdHVzX3B0cilOVUxMCisjZGVmaW5lIHBuZ19yd19wdHJfTlVMTCAgICAgICAgICAgKHBuZ19yd19wdHIpTlVMTAorI2RlZmluZSBwbmdfc3RydWN0cF9OVUxMICAgICAgICAgIChwbmdfc3RydWN0cClOVUxMCisjZGVmaW5lIHBuZ191aW50XzE2cF9OVUxMICAgICAgICAgKHBuZ191aW50XzE2cClOVUxMCisjZGVmaW5lIHBuZ192b2lkcF9OVUxMICAgICAgICAgICAgKHBuZ192b2lkcClOVUxMCisjZGVmaW5lIHBuZ193cml0ZV9zdGF0dXNfcHRyX05VTEwgKHBuZ193cml0ZV9zdGF0dXNfcHRyKU5VTEwKKyNlbHNlCisjZGVmaW5lIGludF9wX05VTEwgICAgICAgICAgICAgICAgTlVMTAorI2RlZmluZSBwbmdfYnl0ZXBfTlVMTCAgICAgICAgICAgIE5VTEwKKyNkZWZpbmUgcG5nX2J5dGVwcF9OVUxMICAgICAgICAgICBOVUxMCisjZGVmaW5lIHBuZ19kb3VibGVwX05VTEwgICAgICAgICAgTlVMTAorI2RlZmluZSBwbmdfZXJyb3JfcHRyX05VTEwgICAgICAgIE5VTEwKKyNkZWZpbmUgcG5nX2ZsdXNoX3B0cl9OVUxMICAgICAgICBOVUxMCisjZGVmaW5lIHBuZ19mcmVlX3B0cl9OVUxMICAgICAgICAgTlVMTAorI2RlZmluZSBwbmdfaW5mb3BwX05VTEwgICAgICAgICAgIE5VTEwKKyNkZWZpbmUgcG5nX21hbGxvY19wdHJfTlVMTCAgICAgICBOVUxMCisjZGVmaW5lIHBuZ19yZWFkX3N0YXR1c19wdHJfTlVMTCAgTlVMTAorI2RlZmluZSBwbmdfcndfcHRyX05VTEwgICAgICAgICAgIE5VTEwKKyNkZWZpbmUgcG5nX3N0cnVjdHBfTlVMTCAgICAgICAgICBOVUxMCisjZGVmaW5lIHBuZ191aW50XzE2cF9OVUxMICAgICAgICAgTlVMTAorI2RlZmluZSBwbmdfdm9pZHBfTlVMTCAgICAgICAgICAgIE5VTEwKKyNkZWZpbmUgcG5nX3dyaXRlX3N0YXR1c19wdHJfTlVMTCBOVUxMCisjZW5kaWYKKwogLyogdmFyaWFibGVzIGRlY2xhcmVkIGluIHBuZy5jIC0gb25seSBpdCBuZWVkcyB0byBkZWZpbmUgUE5HX05PX0VYVEVSTiAqLwogI2lmICFkZWZpbmVkKFBOR19OT19FWFRFUk4pIHx8IGRlZmluZWQoUE5HX0FMV0FZU19FWFRFUk4pCiAvKiBWZXJzaW9uIGluZm9ybWF0aW9uIGZvciBDIGZpbGVzLCBzdG9yZWQgaW4gcG5nLmMuICBUaGlzIGhhZCBiZXR0ZXIgbWF0Y2gKQEAgLTEwNDIsOSArMTA4OSw5IEBACiAgICBmbG9hdCBiYWNrZ3JvdW5kX2dhbW1hOwogIyAgZW5kaWYKICAgIHBuZ19jb2xvcl8xNiBiYWNrZ3JvdW5kOyAgIC8qIGJhY2tncm91bmQgY29sb3IgaW4gc2NyZWVuIGdhbW1hIHNwYWNlICovCi0jICBpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKLSAgICAgcG5nX2NvbG9yXzE2IGJhY2tncm91bmRfMTsgLyogYmFja2dyb3VuZCBub3JtYWxpemVkIHRvIGdhbW1hIDEuMCAqLwotIyAgZW5kaWYgLyogUE5HX1JFQURfR0FNTUEgJiYgUE5HX2JLR0RfU1VQUE9SVEVEICovCisjaWYgZGVmaW5lZChQTkdfUkVBRF9HQU1NQV9TVVBQT1JURUQpCisgICBwbmdfY29sb3JfMTYgYmFja2dyb3VuZF8xOyAvKiBiYWNrZ3JvdW5kIG5vcm1hbGl6ZWQgdG8gZ2FtbWEgMS4wICovCisjZW5kaWYKICNlbmRpZiAvKiBQTkdfYktHRF9TVVBQT1JURUQgKi8KIAogI2lmIGRlZmluZWQoUE5HX1dSSVRFX0ZMVVNIX1NVUFBPUlRFRCkKQEAgLTExNzQsNyArMTIyMSwxMSBAQAogICAgIGRlZmluZWQoUE5HX1JFQURfRU1QVFlfUExURV9TVVBQT1JURUQpIHx8IFwKICAgICBkZWZpbmVkKFBOR19XUklURV9FTVBUWV9QTFRFX1NVUFBPUlRFRCkKIC8qIGNoYW5nZWQgZnJvbSBwbmdfYnl0ZSB0byBwbmdfdWludF8zMiBhdCB2ZXJzaW9uIDEuMi4wICovCisjaWZkZWYgUE5HXzFfMF9YCiAgICBwbmdfYnl0ZSBtbmdfZmVhdHVyZXNfcGVybWl0dGVkOworI2Vsc2UKKyAgIHBuZ191aW50XzMyIG1uZ19mZWF0dXJlc19wZXJtaXR0ZWQ7CisjZW5kaWYgLyogUE5HXzFfMF9YICovCiAjZW5kaWYKIAogLyogTmV3IG1lbWJlciBhZGRlZCBpbiBsaWJwbmctMS4wLjcgKi8KQEAgLTExODcsMTMgKzEyMzgsMTMgQEAKICAgIHBuZ19ieXRlIGZpbHRlcl90eXBlOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBOR19ERUJVRykgJiYgZGVmaW5lZChQTkdfVVNFX1BOR0dDQ1JEKQorI2lmIGRlZmluZWQoUE5HXzFfMF9YKSB8fCAoZGVmaW5lZChQTkdfREVCVUcpICYmIGRlZmluZWQoUE5HX1VTRV9QTkdHQ0NSRCkpCiAvKiBOZXcgbWVtYmVyIGFkZGVkIGluIGxpYnBuZy0xLjAuMTAsIGlmZGVmJ2VkIG91dCBpbiAxLjIuMCAqLwogICAgcG5nX3VpbnRfMzIgcm93X2J1Zl9zaXplOwogI2VuZGlmCiAKIC8qIE5ldyBtZW1iZXJzIGFkZGVkIGluIGxpYnBuZy0xLjIuMCAqLwotI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpICYmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKICAgIHBuZ19ieXRlICAgICBtbXhfYml0ZGVwdGhfdGhyZXNob2xkOwogICAgcG5nX3VpbnRfMzIgIG1teF9yb3dieXRlc190aHJlc2hvbGQ7CiAgICBwbmdfdWludF8zMiAgYXNtX2ZsYWdzOwpAQCAtMTIwNiwxMyArMTI1NywxNSBAQAogICAgcG5nX2ZyZWVfcHRyIGZyZWVfZm47ICAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGZvciBmcmVlaW5nIG1lbW9yeSAqLwogI2VuZGlmCiAKKyAgIHBuZ19ieXRlcCBiaWdfcm93X2J1ZjsgICAgICAgICAvKiBidWZmZXIgdG8gc2F2ZSBjdXJyZW50ICh1bmZpbHRlcmVkKSByb3cgKi8KKwogfTsKIAogCi0vKiBUaGlzIHByZXZlbnRzIGEgY29tcGlsZXIgZXJyb3IgaW4gcG5nX2dldF9jb3B5cmlnaHQoKSBpbiBwbmcuYyBpZiBwbmcuYwotICAgYW5kIHBuZy5oIGFyZSBib3RoIGF0IHZlcnNpb24gMS4wLjEyYmV0YTEKKy8qIFRoaXMgcHJldmVudHMgYSBjb21waWxlciBlcnJvciBpbiBwbmcuYyBpZiBwbmcuYyBhbmQgcG5nLmggYXJlIGJvdGggYXQKKyAgIHZlcnNpb24gMS4wLjEzCiAgKi8KLXR5cGVkZWYgcG5nX3N0cnVjdHAgdmVyc2lvbl8xXzBfMTJiZXRhMTsKK3R5cGVkZWYgcG5nX3N0cnVjdHAgdmVyc2lvbl8xXzBfMTM7CiAKIHR5cGVkZWYgcG5nX3N0cnVjdCBGQVIgKiBGQVIgKiBwbmdfc3RydWN0cHA7CiAKQEAgLTE1MjAsOSArMTU3Myw2IEBACiBleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCkKICAgIFBOR0FSRygocG5nX3N0cnVjdHBwIHBuZ19wdHJfcHRyLCBwbmdfaW5mb3BwIGluZm9fcHRyX3B0cikpOwogCi0vKiBmcmVlIGFueSBtZW1vcnkgdXNlZCBpbiBpbmZvX3B0ciBzdHJ1Y3QgKG9sZCBtZXRob2QgLSBOT1QgRExMIEVYUE9SVEVEKSAqLwotZXh0ZXJuIHZvaWQgcG5nX3dyaXRlX2Rlc3Ryb3lfaW5mbyBQTkdBUkcoKHBuZ19pbmZvcCBpbmZvX3B0cikpOwotCiAvKiBmcmVlIGFueSBtZW1vcnkgdXNlZCBpbiBwbmdfcHRyIHN0cnVjdCAob2xkIG1ldGhvZCAtIE5PVCBETEwgRVhQT1JURUQpICovCiBleHRlcm4gdm9pZCBwbmdfd3JpdGVfZGVzdHJveSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKIApAQCAtMTc2Nyw2ICsxODE3LDEzIEBACiAvKiBmcmVlcyBhIHBvaW50ZXIgYWxsb2NhdGVkIGJ5IHBuZ19tYWxsb2MoKSAqLwogZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfZnJlZSkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdm9pZHAgcHRyKSk7CiAKKy8qIEZ1bmN0aW9uIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgemxpYi4gKi8KK2V4dGVybiBQTkdfRVhQT1JUKHZvaWRwZixwbmdfemFsbG9jKSBQTkdBUkcoKHZvaWRwZiBwbmdfcHRyLCB1SW50IGl0ZW1zLAorICAgdUludCBzaXplKSk7CisKKy8qIEZ1bmN0aW9uIHRvIGZyZWUgbWVtb3J5IGZvciB6bGliICovCitleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ196ZnJlZSkgUE5HQVJHKCh2b2lkcGYgcG5nX3B0ciwgdm9pZHBmIHB0cikpOworCiAvKiBGcmVlIGRhdGEgdGhhdCB3YXMgYWxsb2NhdGVkIGludGVybmFsbHkgKi8KIGV4dGVybiBQTkdfRVhQT1JUKHZvaWQscG5nX2ZyZWVfZGF0YSkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAogICAgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdWludF8zMiBmcmVlX21lLCBpbnQgbnVtKSk7CkBAIC0yMTc0LDYgKzIyMzEsMTAgQEAKIGV4dGVybiBQTkdfRVhQT1JUKHBuZ191aW50XzMyLHBuZ19nZXRfdW5rbm93bl9jaHVua3MpIFBOR0FSRygocG5nX3N0cnVjdHAKICAgIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX3Vua25vd25fY2h1bmtwcCBlbnRyaWVzKSk7CiAjZW5kaWYKKyNpZmRlZiBQTkdfSEFORExFX0FTX1VOS05PV05fU1VQUE9SVEVECitQTkdfRVhQT1JUKGludCxwbmdfaGFuZGxlX2FzX3Vua25vd24pIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwCisgICBjaHVua19uYW1lKSk7CisjZW5kaWYKIAogLyogUG5nX2ZyZWVfZGF0YSgpIHdpbGwgdHVybiBvZmYgdGhlICJ2YWxpZCIgZmxhZyBmb3IgYW55dGhpbmcgaXQgZnJlZXMuCiAgICBJZiB5b3UgbmVlZCB0byB0dXJuIGl0IG9mZiBmb3IgYSBjaHVuayB0aGF0IHlvdXIgYXBwbGljYXRpb24gaGFzIGZyZWVkLApAQCAtMjI1NiwxMSArMjMxNyw3MSBAQAogICAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgbW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCkpOwogI2VuZGlmCiAKLS8qIHBuZ19tbXhfc3VwcG9ydCB3aWxsIGJlIGluY2x1ZGVkIHVuY29uZGl0aW9uYWxseSBzdGFydGluZyBpbiB2ZXJzaW9uIDEuMi4wICovCi0jaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSB8fCBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpCisvKiBBZGRlZCB0byB2ZXJzaW9uIDEuMi4wICovCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKQorI2RlZmluZSBQTkdfQVNNX0ZMQUdfTU1YX1NVUFBPUlRfQ09NUElMRUQgIDB4MDEJCS8qIG5vdCB1c2VyLXNldHRhYmxlICovCisjZGVmaW5lIFBOR19BU01fRkxBR19NTVhfU1VQUE9SVF9JTl9DUFUgICAgMHgwMgkJLyogbm90IHVzZXItc2V0dGFibGUgKi8KKyNkZWZpbmUgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XICAweDA0CisjZGVmaW5lIFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UgICAgMHgwOAorI2RlZmluZSBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1NVQiAgIDB4MTAKKyNkZWZpbmUgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9VUCAgICAweDIwCisjZGVmaW5lIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHICAgMHg0MAorI2RlZmluZSBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1BBRVRIIDB4ODAKKyNkZWZpbmUgUE5HX0FTTV9GTEFHU19JTklUSUFMSVpFRCAgICAgICAgICAweDgwMDAwMDAwCS8qIG5vdCB1c2VyLXNldHRhYmxlICovCisKKyNkZWZpbmUgUE5HX01NWF9SRUFEX0ZMQUdTICggUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1NVQiAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9VUCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1BBRVRIICkKKyNkZWZpbmUgUE5HX01NWF9XUklURV9GTEFHUyAoIDAgKQorCisjZGVmaW5lIFBOR19NTVhfRkxBR1MgKCBQTkdfQVNNX0ZMQUdfTU1YX1NVUFBPUlRfQ09NUElMRUQgXAorICAgICAgICAgICAgICAgICAgICAgIHwgUE5HX0FTTV9GTEFHX01NWF9TVVBQT1JUX0lOX0NQVSAgIFwKKyAgICAgICAgICAgICAgICAgICAgICB8IFBOR19NTVhfUkVBRF9GTEFHUyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgfCBQTkdfTU1YX1dSSVRFX0ZMQUdTICkKKworI2RlZmluZSBQTkdfU0VMRUNUX1JFQUQgICAxCisjZGVmaW5lIFBOR19TRUxFQ1RfV1JJVEUgIDIKKworCisjaWYgIWRlZmluZWQoUE5HXzFfMF9YKQorLyogcG5nZ2V0LmMgKi8KK2V4dGVybiBQTkdfRVhQT1JUKHBuZ191aW50XzMyLHBuZ19nZXRfbW14X2ZsYWdtYXNrKQorICAgUE5HQVJHKChpbnQgZmxhZ19zZWxlY3QsIGludCAqY29tcGlsZXJJRCkpOworCisvKiBwbmdnZXQuYyAqLworZXh0ZXJuIFBOR19FWFBPUlQocG5nX3VpbnRfMzIscG5nX2dldF9hc21fZmxhZ21hc2spCisgICBQTkdBUkcoKGludCBmbGFnX3NlbGVjdCkpOworCisvKiBwbmdnZXQuYyAqLworZXh0ZXJuIFBOR19FWFBPUlQocG5nX3VpbnRfMzIscG5nX2dldF9hc21fZmxhZ3MpCisgICBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKKworLyogcG5nZ2V0LmMgKi8KK2V4dGVybiBQTkdfRVhQT1JUKHBuZ19ieXRlLHBuZ19nZXRfbW14X2JpdGRlcHRoX3RocmVzaG9sZCkKKyAgIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0cikpOworCisvKiBwbmdnZXQuYyAqLworZXh0ZXJuIFBOR19FWFBPUlQocG5nX3VpbnRfMzIscG5nX2dldF9tbXhfcm93Ynl0ZXNfdGhyZXNob2xkKQorICAgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyKSk7CisKKy8qIHBuZ3NldC5jICovCitleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19zZXRfYXNtX2ZsYWdzKQorICAgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdWludF8zMiBhc21fZmxhZ3MpKTsKKworLyogcG5nc2V0LmMgKi8KK2V4dGVybiBQTkdfRVhQT1JUKHZvaWQscG5nX3NldF9tbXhfdGhyZXNob2xkcykKKyAgIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGUgbW14X2JpdGRlcHRoX3RocmVzaG9sZCwKKyAgIHBuZ191aW50XzMyIG1teF9yb3dieXRlc190aHJlc2hvbGQpKTsKKworI2VuZGlmIC8qIFBOR18xXzBfWCAqLworI2VuZGlmIC8qIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KKworI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKIC8qIHBuZy5jLCBwbmdnY2NyZC5jLCBvciBwbmd2Y3JkLmMgKi8KIGV4dGVybiBQTkdfRVhQT1JUKGludCxwbmdfbW14X3N1cHBvcnQpIFBOR0FSRygodm9pZCkpOwotI2VuZGlmIC8qIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KIAogLyogU3RyaXAgdGhlIHByZXBlbmRlZCBlcnJvciBudW1iZXJzICgiI25ubiAiKSBmcm9tIGVycm9yIGFuZCB3YXJuaW5nCiAgKiBtZXNzYWdlcyBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIHRoZSBlcnJvciBvciB3YXJuaW5nIGhhbmRsZXIuICovCkBAIC0yMjY4LDExICsyMzg5LDEyIEBACiBleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19zZXRfc3RyaXBfZXJyb3JfbnVtYmVycykgUE5HQVJHKChwbmdfc3RydWN0cAogICAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc3RyaXBfbW9kZSkpOwogI2VuZGlmCisjZW5kaWYgLyogUE5HXzFfMF9YICovCiAKIC8qIE1haW50YWluZXI6IFB1dCBuZXcgcHVibGljIHByb3RvdHlwZXMgaGVyZSBeLCBpbiBsaWJwbmcuMywgYW5kIHByb2plY3QgZGVmcyAqLwogCiAjZGVmaW5lIFBOR19IRUFERVJfVkVSU0lPTl9TVFJJTkcgXAotICAgIiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMSAoaGVhZGVyKVxuIgorICAgIiBsaWJwbmcgdmVyc2lvbiAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMiAoaGVhZGVyKVxuIgogCiAjaWZkZWYgUE5HX1JFQURfQ09NUE9TSVRFX05PRElWX1NVUFBPUlRFRAogLyogV2l0aCB0aGVzZSByb3V0aW5lcyB3ZSBhdm9pZCBhbiBpbnRlZ2VyIGRpdmlkZSwgd2hpY2ggd2lsbCBiZSBzbG93ZXIgb24KQEAgLTIzOTcsNiArMjUxOSw3IEBACiAjZGVmaW5lIFBOR19GTEFHX0xJQlJBUllfTUlTTUFUQ0ggICAgICAgICAweDIwMDAwTAogI2RlZmluZSBQTkdfRkxBR19TVFJJUF9FUlJPUl9OVU1CRVJTICAgICAgMHg0MDAwMEwKICNkZWZpbmUgUE5HX0ZMQUdfU1RSSVBfRVJST1JfVEVYVCAgICAgICAgIDB4ODAwMDBMCisjZGVmaW5lIFBOR19GTEFHX01BTExPQ19OVUxMX01FTV9PSyAgICAgICAweDEwMDAwMEwKIAogLyogRm9yIHVzZSBpbiBwbmdfc2V0X2tlZXBfdW5rbm93biwgcG5nX2hhbmRsZV9hc191bmtub3duICovCiAjZGVmaW5lIEhBTkRMRV9DSFVOS19BU19ERUZBVUxUICAgMApAQCAtMjU0MCwxMiArMjY2Myw2IEBACiBQTkdfRVhURVJOIHZvaWQgcG5nX2luZm9fZGVzdHJveSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsCiAgICBwbmdfaW5mb3AgaW5mb19wdHIpKTsKIAotLyogRnVuY3Rpb24gdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB6bGliLiAqLwotUE5HX0VYVEVSTiB2b2lkcGYgcG5nX3phbGxvYyBQTkdBUkcoKHZvaWRwZiBwbmdfcHRyLCB1SW50IGl0ZW1zLCB1SW50IHNpemUpKTsKLQotLyogRnVuY3Rpb24gdG8gZnJlZSBtZW1vcnkgZm9yIHpsaWIgKi8KLVBOR19FWFRFUk4gdm9pZCBwbmdfemZyZWUgUE5HQVJHKCh2b2lkcGYgcG5nX3B0ciwgdm9pZHBmIHB0cikpOwotCiAvKiBSZXNldCB0aGUgQ1JDIHZhcmlhYmxlICovCiBQTkdfRVhURVJOIHZvaWQgcG5nX3Jlc2V0X2NyYyBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKIApAQCAtMjU5Miw3ICsyNzA5LDcgQEAKICAqLwogUE5HX0VYVEVSTiB2b2lkIHBuZ19zYXZlX3VpbnRfMzIgUE5HQVJHKChwbmdfYnl0ZXAgYnVmLCBwbmdfdWludF8zMiBpKSk7CiAKLSNpZiBkZWZpbmVkKFBOR19XUklURV9wQ0FMX1NVUFBPUlRFRCkKKyNpZiBkZWZpbmVkKFBOR19XUklURV9wQ0FMX1NVUFBPUlRFRCkgfHwgZGVmaW5lZChQTkdfV1JJVEVfb0ZGc19TVVBQT1JURUQpCiBQTkdfRVhURVJOIHZvaWQgcG5nX3NhdmVfaW50XzMyIFBOR0FSRygocG5nX2J5dGVwIGJ1ZiwgcG5nX2ludF8zMiBpKSk7CiAjZW5kaWYKIApAQCAtMjcxMCw3ICsyODI3LDcgQEAKIAogI2lmIGRlZmluZWQoUE5HX1dSSVRFX29GRnNfU1VQUE9SVEVEKQogUE5HX0VYVEVSTiB2b2lkIHBuZ193cml0ZV9vRkZzIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwKLSAgIHBuZ191aW50XzMyIHhfb2Zmc2V0LCBwbmdfdWludF8zMiB5X29mZnNldCwgaW50IHVuaXRfdHlwZSkpOworICAgcG5nX2ludF8zMiB4X29mZnNldCwgcG5nX2ludF8zMiB5X29mZnNldCwgaW50IHVuaXRfdHlwZSkpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBOR19XUklURV9wQ0FMX1NVUFBPUlRFRCkKQEAgLTI4ODUsMTIgKzMwMDIsMTcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9CQUNLR1JPVU5EX1NVUFBPUlRFRCkKKyNpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKIFBOR19FWFRFUk4gdm9pZCBwbmdfZG9fYmFja2dyb3VuZCBQTkdBUkcoKHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCiAgICBwbmdfY29sb3JfMTZwIHRyYW5zX3ZhbHVlcywgcG5nX2NvbG9yXzE2cCBiYWNrZ3JvdW5kLAogICAgcG5nX2NvbG9yXzE2cCBiYWNrZ3JvdW5kXzEsCiAgICBwbmdfYnl0ZXAgZ2FtbWFfdGFibGUsIHBuZ19ieXRlcCBnYW1tYV9mcm9tXzEsIHBuZ19ieXRlcCBnYW1tYV90b18xLAogICAgcG5nX3VpbnRfMTZwcCBnYW1tYV8xNiwgcG5nX3VpbnRfMTZwcCBnYW1tYV8xNl9mcm9tXzEsCiAgICBwbmdfdWludF8xNnBwIGdhbW1hXzE2X3RvXzEsIGludCBnYW1tYV9zaGlmdCkpOworI2Vsc2UKK1BOR19FWFRFUk4gdm9pZCBwbmdfZG9fYmFja2dyb3VuZCBQTkdBUkcoKHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisgICBwbmdfY29sb3JfMTZwIHRyYW5zX3ZhbHVlcywgcG5nX2NvbG9yXzE2cCBiYWNrZ3JvdW5kKSk7CisjZW5kaWYKICNlbmRpZgogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9HQU1NQV9TVVBQT1JURUQpCkBAIC0zMDAzLDExICszMTI1LDYgQEAKICAgIHBuZ191aW50XzMyIGxlbmd0aCkpOwogI2VuZGlmCiAKLSNpZmRlZiBQTkdfSEFORExFX0FTX1VOS05PV05fU1VQUE9SVEVECi1QTkdfRVhURVJOIGludCBwbmdfaGFuZGxlX2FzX3Vua25vd24gUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXAKLSAgIGNodW5rX25hbWUpKTsKLSNlbmRpZgotCiBQTkdfRVhURVJOIHZvaWQgcG5nX2hhbmRsZV91bmtub3duIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwKICAgIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX3VpbnRfMzIgbGVuZ3RoKSk7CiAKQEAgLTMwNzgsNiArMzE5NSwxMCBAQAogICAgcG5nX2J5dGVwIHJvdykpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCisvKiBwbmcuYyAqLyAvKiBQUklWQVRFICovCitQTkdfRVhURVJOIHZvaWQgcG5nX2luaXRfbW14X2ZsYWdzIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0cikpOworI2VuZGlmCiAvKiBNYWludGFpbmVyOiBQdXQgbmV3IHByaXZhdGUgcHJvdG90eXBlcyBoZXJlIF4gYW5kIGluIGxpYnBuZ3BmLjMgKi8KIAogI2VuZGlmIC8qIFBOR19JTlRFUk5BTCAqLwpkaWZmIC0tZ2l0IGEvcG5nYXNtcmQuaCBiL3BuZ2FzbXJkLmgKaW5kZXggNzI4ZmVjOS4uNzE1ZTRjYSAxMDA2NDQKLS0tIGEvcG5nYXNtcmQuaAorKysgYi9wbmdhc21yZC5oCkBAIC0xLDggKzEsOCBAQAogLyogcG5nYXNtcmQuaCAtIGFzc2VtYmxlciB2ZXJzaW9uIG9mIHV0aWxpdGllcyB0byByZWFkIGEgUE5HIGZpbGUKICAqCi0gKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKgogICovCiAKZGlmZiAtLWdpdCBhL3BuZ2NvbmYuaCBiL3BuZ2NvbmYuaAppbmRleCAzNTE1MDc4Li44OGU4NmE5IDEwMDY0NAotLS0gYS9wbmdjb25mLmgKKysrIGIvcG5nY29uZi5oCkBAIC0xLDggKzEsOCBAQAogLyogcG5nY29uZi5oIC0gbWFjaGluZSBjb25maWd1cmFibGUgZmlsZSBmb3IgbGlicG5nCiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCkBAIC0xNiw2ICsxNiw4IEBACiAjaWZuZGVmIFBOR0NPTkZfSAogI2RlZmluZSBQTkdDT05GX0gKIAorI2RlZmluZSBQTkdfMV8wX1gKKwogLyogVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgY29tcHJlc3Npb24gYnVmZmVyLCBhbmQgdGh1cyB0aGUgc2l6ZSBvZgogICogYW4gSURBVCBjaHVuay4gIE1ha2UgdGhpcyB3aGF0ZXZlciBzaXplIHlvdSBmZWVsIGlzIGJlc3QgZm9yIHlvdXIKICAqIG1hY2hpbmUuICBPbmUgb2YgdGhlc2Ugd2lsbCBiZSBhbGxvY2F0ZWQgcGVyIHBuZ19zdHJ1Y3QuICBXaGVuIHRoaXMKQEAgLTQ3LDEzICs0OSwxMSBAQAogCiAvKiBFbmFibGVkIGJ5IGRlZmF1bHQgaW4gMS4yLjAuICBZb3UgY2FuIGRpc2FibGUgdGhpcyBpZiB5b3UgZG9uJ3QgbmVlZCB0bwogICAgc3VwcG9ydCBQTkdzIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcyAqLwotLyoKLSNpZm5kZWYgUE5HX05PX01OR19GRUFUVVJFUworI2lmICFkZWZpbmVkKFBOR18xXzBfWCkgJiYgIWRlZmluZWQoUE5HX05PX01OR19GRUFUVVJFUykKICMgIGlmbmRlZiBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRAogIyAgICBkZWZpbmUgUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQKICMgIGVuZGlmCiAjZW5kaWYKLSovCiAKICNpZm5kZWYgUE5HX05PX0ZMT0FUSU5HX1BPSU5UX1NVUFBPUlRFRAogIyAgaWZuZGVmIFBOR19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQKQEAgLTIwNCw2ICsyMDQsOSBAQAogCiAjaWZkZWYgX05PX1BST1RPCiAjICBkZWZpbmUgUE5HQVJHKGFyZ2xpc3QpICgpCisjICBpZm5kZWYgUE5HX1RZUEVDQVNUX05VTEwKKyMgICAgIGRlZmluZSBQTkdfVFlQRUNBU1RfTlVMTAorIyAgZW5kaWYKICNlbHNlCiAjICBkZWZpbmUgUE5HQVJHKGFyZ2xpc3QpIGFyZ2xpc3QKICNlbmRpZiAvKiBfTk9fUFJPVE8gKi8KQEAgLTIyOCw3ICsyMzEsNyBAQAogIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBQTkdfU0VUSk1QX05PVF9TVVBQT1JURUQKKyNpZiAhZGVmaW5lZChQTkdfU0VUSk1QX05PVF9TVVBQT1JURUQpICYmICFkZWZpbmVkKFBOR19OT19TRVRKTVBfU1VQUE9SVEVEKQogIyAgZGVmaW5lIFBOR19TRVRKTVBfU1VQUE9SVEVECiAjZW5kaWYKIApAQCAtNDAxLDEwICs0MDQsMTAgQEAKICAqLwogCiAjaWZuZGVmIFBOR19pVFh0X1NVUFBPUlRFRAotIyAgaWZuZGVmIFBOR19SRUFEX2lUWHRfU1VQUE9SVEVECisjICBpZiAhZGVmaW5lZChQTkdfUkVBRF9pVFh0X1NVUFBPUlRFRCkgJiYgIWRlZmluZWQoUE5HX05PX1JFQURfaVRYdCkKICMgICAgZGVmaW5lIFBOR19OT19SRUFEX2lUWHQKICMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX1dSSVRFX2lUWHRfU1VQUE9SVEVECisjICBpZiAhZGVmaW5lZChQTkdfV1JJVEVfaVRYdF9TVVBQT1JURUQpICYmICFkZWZpbmVkKFBOR19OT19XUklURV9pVFh0KQogIyAgICBkZWZpbmUgUE5HX05PX1dSSVRFX2lUWHQKICMgIGVuZGlmCiAjZW5kaWYKQEAgLTU5MCwxMiArNTkzLDExIEBACiAjICBkZWZpbmUgUE5HX1dSSVRFX1dFSUdIVEVEX0ZJTFRFUl9TVVBQT1JURUQKICNlbmRpZgogCi0vKiBXaWxsIGJlIGVuYWJsZWQgaW4gbGlicG5nLTEuMi4wICovCi0vKgorI2lmbmRlZiBQTkdfMV8wX1gKICNpZm5kZWYgUE5HX05PX0VSUk9SX05VTUJFUlMKICNkZWZpbmUgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECiAjZW5kaWYKLSovCisjZW5kaWYgLyogUE5HXzFfMF9YICovCiAKICNpZm5kZWYgUE5HX05PX1dSSVRFX0ZMVVNICiAjICBkZWZpbmUgUE5HX1dSSVRFX0ZMVVNIX1NVUFBPUlRFRApAQCAtNjM0LDcgKzYzNiw2IEBACiAKIC8qIFBOR19BU1NFTUJMRVJfQ09ERSB3YXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIHZlcnNpb24gMS4yLjAgCiAgICBldmVuIHdoZW4gUE5HX1VTRV9QTkdWQ1JEIG9yIFBOR19VU0VfUE5HR0NDUkQgaXMgbm90IGRlZmluZWQgKi8KLS8qCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9TVVBQT1JURUQpICYmICFkZWZpbmVkKFBOR19OT19BU1NFTUJMRVJfQ09ERSkKICMgIGlmbmRlZiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECiAjICAgIGRlZmluZSBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECkBAIC02NDMsMjQgKzY0NCwxOCBAQAogIyAgICBkZWZpbmUgUE5HX01NWF9DT0RFX1NVUFBPUlRFRAogIyAgZW5kaWYKICNlbmRpZgotKi8KLSNpZiBkZWZpbmVkKFBOR19SRUFEX1NVUFBPUlRFRCkgJiYgIWRlZmluZWQoUE5HX05PX0FTU0VNQkxFUl9DT0RFKQotIyAgaWYgZGVmaW5lZChQTkdfVVNFX1BOR1ZDUkQpIHx8IGRlZmluZWQoUE5HX1VTRV9QTkdHQ0NSRCkKLSMgICAgaWZuZGVmIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQKLSMgICAgICBkZWZpbmUgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAotIyAgICBlbmRpZgotIyAgICBpZiAhZGVmaW5lZChQTkdfTU1YX0NPREVfU1VQUE9SVEVEKSAmJiAhZGVmaW5lZChQTkdfTk9fTU1YX0NPREUpCi0jICAgICAgZGVmaW5lIFBOR19NTVhfQ09ERV9TVVBQT1JURUQKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jZW5kaWYKIAotLyogVGhpcyB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBsaWJwbmctMS4yLjAgKi8KLS8qCisvKiBJZiB5b3UgYXJlIHN1cmUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0aHJlYWQgc2FmZXR5IGFuZCB5b3UgYXJlIGNvbXBpbGluZworICAgd2l0aCBQTkdfVVNFX1BOR0NDUkQgZm9yIGFuIE1NWCBhcHBsaWNhdGlvbiwgeW91IGNhbiBkZWZpbmUgdGhpcyBmb3IKKyAgIGZhc3RlciBleGVjdXRpb24uICBTZWUgcG5nZ2NjcmQuYy4KKyNkZWZpbmUgUE5HX1RIUkVBRF9VTlNBRkVfT0sKKyovCisKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCiAjaWYgIWRlZmluZWQoUE5HX05PX1VTRVJfTUVNKSAmJiAhZGVmaW5lZChQTkdfVVNFUl9NRU1fU1VQUE9SVEVEKQogIyAgZGVmaW5lIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICNlbmRpZgotKi8KKyNlbmRpZiAvKiBQTkdfMV8wX1ggKi8KIAogLyogVGhlc2UgYXJlIGN1cnJlbnRseSBleHBlcmltZW50YWwgZmVhdHVyZXMsIGRlZmluZSB0aGVtIGlmIHlvdSB3YW50ICovCiAKQEAgLTY3MSw5ICs2NjYsNiBAQAogIyAgICBkZWZpbmUgUE5HX1JFQURfMTZfVE9fOF9BQ0NVUkFURV9TQ0FMRV9TVVBQT1JURUQKICMgIGVuZGlmCiAjZW5kaWYKLSNpZm5kZWYgUE5HX05PX1pBTExPQ19aRVJPCi0jICBkZWZpbmUgUE5HX1pBTExPQ19aRVJPCi0jZW5kaWYKICovCiAKIC8qIFRoaXMgaXMgb25seSBmb3IgUG93ZXJQQyBiaWctZW5kaWFuIGFuZCA2ODB4MCBzeXN0ZW1zICovCkBAIC03NDMsOCArNzM1LDEyIEBACiAjICBkZWZpbmUgUE5HX2lDQ1BfU1VQUE9SVEVECiAjZW5kaWYKICNpZm5kZWYgUE5HX05PX1JFQURfaVRYdAotIyAgZGVmaW5lIFBOR19SRUFEX2lUWHRfU1VQUE9SVEVECi0jICBkZWZpbmUgUE5HX2lUWHRfU1VQUE9SVEVECisjICBpZm5kZWYgUE5HX1JFQURfaVRYdF9TVVBQT1JURUQKKyMgICAgZGVmaW5lIFBOR19SRUFEX2lUWHRfU1VQUE9SVEVECisjICBlbmRpZgorIyAgaWZuZGVmIFBOR19pVFh0X1NVUFBPUlRFRAorIyAgICBkZWZpbmUgUE5HX2lUWHRfU1VQUE9SVEVECisjICBlbmRpZgogI2VuZGlmCiAjaWZuZGVmIFBOR19OT19SRUFEX29GRnMKICMgIGRlZmluZSBQTkdfUkVBRF9vRkZzX1NVUFBPUlRFRApAQCAtODU5LDcgKzg1NSw5IEBACiAjICBlbmRpZgogI2VuZGlmCiAjaWZuZGVmIFBOR19OT19XUklURV9pVFh0Ci0jICBkZWZpbmUgUE5HX1dSSVRFX2lUWHRfU1VQUE9SVEVECisjICBpZm5kZWYgUE5HX1dSSVRFX2lUWHRfU1VQUE9SVEVECisjICAgIGRlZmluZSBQTkdfV1JJVEVfaVRYdF9TVVBQT1JURUQKKyMgIGVuZGlmCiAjICBpZm5kZWYgUE5HX2lUWHRfU1VQUE9SVEVECiAjICAgIGRlZmluZSBQTkdfaVRYdF9TVVBQT1JURUQKICMgIGVuZGlmCmRpZmYgLS1naXQgYS9wbmdlcnJvci5jIGIvcG5nZXJyb3IuYwppbmRleCAxZTY2MDJjLi4xNjgzN2Y3IDEwMDY0NAotLS0gYS9wbmdlcnJvci5jCisrKyBiL3BuZ2Vycm9yLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ2Vycm9yLmMgLSBzdHViIGZ1bmN0aW9ucyBmb3IgaS9vIGFuZCBtZW1vcnkgYWxsb2NhdGlvbgogICoKLSAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQorICogbGlicG5nIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC0yNzcsNyArMjc3LDcgQEAKIAogCiAjaWZkZWYgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECi12b2lkCit2b2lkIFBOR0FQSQogcG5nX3NldF9zdHJpcF9lcnJvcl9udW1iZXJzKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ191aW50XzMyIHN0cmlwX21vZGUpCiB7CiAgICBpZihwbmdfcHRyICE9IE5VTEwpCkBAIC0yODcsNCArMjg3LDMgQEAKICAgIH0KIH0KICNlbmRpZgotCmRpZmYgLS1naXQgYS9wbmdnY2NyZC5jIGIvcG5nZ2NjcmQuYwppbmRleCA1NTdhOTQzLi5iMGUyMzEyIDEwMDY0NAotLS0gYS9wbmdnY2NyZC5jCisrKyBiL3BuZ2djY3JkLmMKQEAgLTYsOSArNiw5IEBACiAgKiAgICAgYW5kIGh0dHA6Ly93d3cuaW50ZWwuY29tL2RyZy9wZW50aXVtSUkvYXBwbm90ZXMvOTIzLzkyMy5odG0KICAqICAgICBmb3IgSW50ZWwncyBwZXJmb3JtYW5jZSBhbmFseXNpcyBvZiB0aGUgTU1YIHZzLiBub24tTU1YIGNvZGUuCiAgKgotICogbGlicG5nIHZlcnNpb24gMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIEludGVsIENvcnBvcmF0aW9uCiAgKgogICogQmFzZWQgb24gTVNWQyBjb2RlIGNvbnRyaWJ1dGVkIGJ5IE5pcmF2IENoaGF0cmFwYXRpLCBJbnRlbCBDb3JwLiwgMTk5OC4KQEAgLTIwMyw5ICsyMDMsMTQgQEAKICAqICAgICAtICJfU2hpZnRSZW0udXNlID0gNDA7IiAgICAgIHNob3VsZCBoYXZlIGJlZW4gICAiX1NoaWZ0UmVtLnVzZSA9IDQ4OyIKICAqICAgICAtICJwc2xscSBfU2hpZnRSZW0sICUlbW0yIiAgIHNob3VsZCBoYXZlIGJlZW4gICAicHNybHEgX1NoaWZ0UmVtLCAlJW1tMiIKICAqCisgKiAyMDAxMDEwMToKKyAqICAtIGFkZGVkIG5ldyBwbmdfaW5pdF9tbXhfZmxhZ3MoKSBmdW5jdGlvbiAoaGVyZSBvbmx5IGJlY2F1c2UgaXQgbmVlZHMgdG8KKyAqICAgICBjYWxsIG1teHN1cHBvcnQoKSwgd2hpY2ggc2hvdWxkIHByb2JhYmx5IGJlY29tZSBnbG9iYWwgcG5nX21teHN1cHBvcnQoKSk7CisgKiAgICAgbW9kaWZpZWQgb3RoZXIgTU1YIHJvdXRpbmVzIHRvIHJ1biBjb25kaXRpb25hbGx5IChwbmdfcHRyLT5hc21fZmxhZ3MpCisgKgogICogMjAwMTAxMDM6CiAgKiAgLSByZW5hbWVkIG1teHN1cHBvcnQoKSB0byBwbmdfbW14X3N1cHBvcnQoKSwgd2l0aCBhdXRvLXNldCBvZiBtbXhfc3VwcG9ydGVkLAotICogICAgIGFuZCBtYWRlIGl0IHB1YmxpYworICogICAgIGFuZCBtYWRlIGl0IHB1YmxpYzsgbW92ZWQgcG5nX2luaXRfbW14X2ZsYWdzKCkgdG8gcG5nLmMgYXMgaW50ZXJuYWwgZnVuYwogICoKICAqIDIwMDEwMTA0OgogICogIC0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9uIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYygpIChDIGNvZGUgYWxyZWFkeSBkdXBsaWNhdGVkCkBAIC0yMTUsNiArMjIwLDkgQEAKICAqIDIwMDEwMzEwOgogICogIC0gZml4ZWQgYnVmZmVyLW92ZXJydW4gYnVnIGluIHBuZ19jb21iaW5lX3JvdygpIEMgY29kZSAobm9uLU1NWCkKICAqCisgKiAyMDAyMDMwNDoKKyAqICAtIGVsaW1pbmF0ZWQgaW5jb3JyZWN0IHVzZSBvZiB3aWR0aF9tbXggaW4gcGl4ZWxfYnl0ZXMgPT0gOCBjYXNlCisgKgogICogU1RJTEwgVE8gRE86CiAgKiAgICAgLSB0ZXN0IHBuZ19kb19yZWFkX2ludGVybGFjZSgpIDY0LWJpdCBjYXNlIChwaXhlbF9ieXRlcyA9PSA4KQogICogICAgIC0gd3JpdGUgTU1YIGNvZGUgZm9yIDQ4LWJpdCBjYXNlIChwaXhlbF9ieXRlcyA9PSA2KQpAQCAtMjI2LDE1ICsyMzQsOSBAQAogICogICAgIHggcGljayBvbmUgdmVyc2lvbiBvZiBtbXhzdXBwb3J0KCkgYW5kIGdldCByaWQgb2YgdGhlIG90aGVyCiAgKiAgICAgLSBhZGQgZXJyb3IgbWVzc2FnZXMgdG8gYW55IHJlbWFpbmluZyBib2d1cyBkZWZhdWx0IGNhc2VzCiAgKiAgICAgLSBlbmFibGUgcGl4ZWxfZGVwdGggPT0gOCBjYXNlcyBpbiBwbmdfcmVhZF9maWx0ZXJfcm93KCk/ICh0ZXN0IHNwZWVkKQotICogICAgIC0gYWRkIHN1cHBvcnQgZm9yIHJ1bnRpbWUgZW5hYmxlL2Rpc2FibGUvcXVlcnkgb2YgdmFyaW91cyBNTVggcm91dGluZXMKKyAqICAgICB4IGFkZCBzdXBwb3J0IGZvciBydW50aW1lIGVuYWJsZS9kaXNhYmxlL3F1ZXJ5IG9mIHZhcmlvdXMgTU1YIHJvdXRpbmVzCiAgKi8KIAotLyoKLSNpZm5kZWYgUE5HX0RFQlVHCi0jICBkZWZpbmUgUE5HX0RFQlVHIDAKLSNlbmRpZgotKi8KLQogI2RlZmluZSBQTkdfSU5URVJOQUwKICNpbmNsdWRlICJwbmcuaCIKIApAQCAtMjUzLDcgKzI1NSw2IEBACiAgKiBzbyBkZWZpbmUgdGhlbSB3aXRob3V0OiAqLwogI2lmIGRlZmluZWQoX19ESkdQUF9fKSB8fCBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCiAjICBkZWZpbmUgX21teF9zdXBwb3J0ZWQgIG1teF9zdXBwb3J0ZWQKLSMgIGRlZmluZSBfdW5tYXNrICAgICAgICAgdW5tYXNrCiAjICBkZWZpbmUgX2NvbnN0NCAgICAgICAgIGNvbnN0NAogIyAgZGVmaW5lIF9jb25zdDYgICAgICAgICBjb25zdDYKICMgIGRlZmluZSBfbWFzazhfMCAgICAgICAgbWFzazhfMApAQCAtMjcyLDkgKzI3Myw2IEBACiAjICBkZWZpbmUgX21hc2s0OF8yICAgICAgIG1hc2s0OF8yCiAjICBkZWZpbmUgX21hc2s0OF8xICAgICAgIG1hc2s0OF8xCiAjICBkZWZpbmUgX21hc2s0OF8wICAgICAgIG1hc2s0OF8wCi0jICBkZWZpbmUgX0Z1bGxMZW5ndGggICAgIEZ1bGxMZW5ndGgKLSMgIGRlZmluZSBfTU1YTGVuZ3RoICAgICAgTU1YTGVuZ3RoCi0jICBkZWZpbmUgX2RpZiAgICAgICAgICAgIGRpZgogIyAgZGVmaW5lIF9MQkNhcnJ5TWFzayAgICBMQkNhcnJ5TWFzawogIyAgZGVmaW5lIF9IQkNsZWFyTWFzayAgICBIQkNsZWFyTWFzawogIyAgZGVmaW5lIF9BY3RpdmVNYXNrICAgICBBY3RpdmVNYXNrCkBAIC0yODIsMTAgKzI4MCwxNiBAQAogIyAgZGVmaW5lIF9BY3RpdmVNYXNrRW5kICBBY3RpdmVNYXNrRW5kCiAjICBkZWZpbmUgX1NoaWZ0QnBwICAgICAgIFNoaWZ0QnBwCiAjICBkZWZpbmUgX1NoaWZ0UmVtICAgICAgIFNoaWZ0UmVtCisjaWZkZWYgUE5HX1RIUkVBRF9VTlNBRkVfT0sKKyMgIGRlZmluZSBfdW5tYXNrICAgICAgICAgdW5tYXNrCisjICBkZWZpbmUgX0Z1bGxMZW5ndGggICAgIEZ1bGxMZW5ndGgKKyMgIGRlZmluZSBfTU1YTGVuZ3RoICAgICAgTU1YTGVuZ3RoCisjICBkZWZpbmUgX2RpZiAgICAgICAgICAgIGRpZgogIyAgZGVmaW5lIF9wYXRlbXAgICAgICAgICBwYXRlbXAKICMgIGRlZmluZSBfcGJ0ZW1wICAgICAgICAgcGJ0ZW1wCiAjICBkZWZpbmUgX3BjdGVtcCAgICAgICAgIHBjdGVtcAogI2VuZGlmCisjZW5kaWYKIAogCiAvKiBUaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgaW4gdGhlIGlubGluZWQgTU1YIGFzc2VtYmx5IGNvZGUuCkBAIC0yOTcsNyArMzAxLDkgQEAKICAqICAibW9yZSB0aGFuIDEwIG9wZXJhbmRzIGluIGBhc20nIiBlcnJvcnMgd2hlbiAlZWJ4IGlzIHVzZWQgdG8gcHJlbG9hZCB1bm1hc2sKICAqICBpbiB0aGUgbm9uLVBJQyBjYXNlLCBzbyB3ZSdsbCBqdXN0IHVzZSB0aGUgZ2xvYmFsIHVuY29uZGl0aW9uYWxseSBub3cuCiAgKi8KKyNpZmRlZiBQTkdfVEhSRUFEX1VOU0FGRV9PSwogc3RhdGljIGludCBfdW5tYXNrOworI2VuZGlmCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgX21hc2s4XzAgID0gMHgwMTAyMDQwODEwMjA0MDgwTEw7CiAKQEAgLTMyNiwxNSArMzMyLDQ5IEBACiAKIC8vIFRoZXNlIGFyZSB1c2VkIGluIHRoZSByb3ctZmlsdGVyIHJvdXRpbmVzIGFuZCBzaG91bGQvd291bGQgYmUgbG9jYWwKIC8vICB2YXJpYWJsZXMgaWYgbm90IGZvciBnY2MgYWRkcmVzc2luZyBsaW1pdGF0aW9ucy4KKy8vIFdBUk5JTkc6IFRoZWlyIHByZXNlbmNlIHByb2JhYmx5IGRlZmVhdHMgdGhlIHRocmVhZCBzYWZldHkgb2YgbGlicG5nLgogCisjaWZkZWYgUE5HX1RIUkVBRF9VTlNBRkVfT0sKIHN0YXRpYyBwbmdfdWludF8zMiAgX0Z1bGxMZW5ndGg7CiBzdGF0aWMgcG5nX3VpbnRfMzIgIF9NTVhMZW5ndGg7CiBzdGF0aWMgaW50ICAgICAgICAgIF9kaWY7CiBzdGF0aWMgaW50ICAgICAgICAgIF9wYXRlbXA7CS8vIHRlbXAgdmFyaWFibGVzIGZvciBQYWV0aCByb3V0aW5lCiBzdGF0aWMgaW50ICAgICAgICAgIF9wYnRlbXA7CiBzdGF0aWMgaW50ICAgICAgICAgIF9wY3RlbXA7CisjZW5kaWYKKwordm9pZCAvKiBQUklWQVRFICovCitwbmdfc3F1ZWxjaF93YXJuaW5ncyh2b2lkKQoreworI2lmZGVmIFBOR19USFJFQURfVU5TQUZFX09LCisgICBfZGlmID0gX2RpZjsKKyAgIF9wYXRlbXAgPSBfcGF0ZW1wOworICAgX3BidGVtcCA9IF9wYnRlbXA7CisgICBfcGN0ZW1wID0gX3BjdGVtcDsKKyAgIF9NTVhMZW5ndGggPSBfTU1YTGVuZ3RoOworI2VuZGlmCisgICBfY29uc3Q0ICA9IF9jb25zdDQ7CisgICBfY29uc3Q2ICA9IF9jb25zdDY7CisgICBfbWFzazhfMCAgPSBfbWFzazhfMDsKKyAgIF9tYXNrMTZfMSA9IF9tYXNrMTZfMTsKKyAgIF9tYXNrMTZfMCA9IF9tYXNrMTZfMDsKKyAgIF9tYXNrMjRfMiA9IF9tYXNrMjRfMjsKKyAgIF9tYXNrMjRfMSA9IF9tYXNrMjRfMTsKKyAgIF9tYXNrMjRfMCA9IF9tYXNrMjRfMDsKKyAgIF9tYXNrMzJfMyA9IF9tYXNrMzJfMzsKKyAgIF9tYXNrMzJfMiA9IF9tYXNrMzJfMjsKKyAgIF9tYXNrMzJfMSA9IF9tYXNrMzJfMTsKKyAgIF9tYXNrMzJfMCA9IF9tYXNrMzJfMDsKKyAgIF9tYXNrNDhfNSA9IF9tYXNrNDhfNTsKKyAgIF9tYXNrNDhfNCA9IF9tYXNrNDhfNDsKKyAgIF9tYXNrNDhfMyA9IF9tYXNrNDhfMzsKKyAgIF9tYXNrNDhfMiA9IF9tYXNrNDhfMjsKKyAgIF9tYXNrNDhfMSA9IF9tYXNrNDhfMTsKKyAgIF9tYXNrNDhfMCA9IF9tYXNrNDhfMDsKK30KICNlbmRpZiAvKiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICovCiAKKwogc3RhdGljIGludCBfbW14X3N1cHBvcnRlZCA9IDI7CiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTM3MCw5ICs0MTAsMTMgQEAKIHsKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2NvbWJpbmVfcm93IChwbmdnY2NyZC5jKVxuIik7CiAKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCiAgICBpZiAoX21teF9zdXBwb3J0ZWQgPT0gMikgeworICAgICAgIC8qIHRoaXMgc2hvdWxkIGhhdmUgaGFwcGVuZWQgaW4gcG5nX2luaXRfbW14X2ZsYWdzKCkgYWxyZWFkeSAqLworICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJhc21fZmxhZ3MgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiKTsKICAgICAgICBwbmdfbW14X3N1cHBvcnQoKTsKICAgIH0KKyNlbmRpZgogCiAgICBpZiAobWFzayA9PSAweGZmKQogICAgewpAQCAtNTU1LDggKzU5OSwxMyBAQAogICAgICAgICAgICAgcG5nX2J5dGVwIHNyY3B0cjsKICAgICAgICAgICAgIHBuZ19ieXRlcCBkc3RwdHI7CiAKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICApCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19USFJFQURfVU5TQUZFX09LKQorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XKQorICAgICAgICAgICAgICAgIC8qICYmIF9tbXhfc3VwcG9ydGVkICovICkKKyNlbHNlCisgICAgICAgICAgICBpZiAoX21teF9zdXBwb3J0ZWQpCisjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBuZ191aW50XzMyIGxlbjsKICAgICAgICAgICAgICAgIGludCBkaWZmOwpAQCAtNjg4LDggKzczNywxMyBAQAogICAgICAgICAgICAgcG5nX2J5dGVwIHNyY3B0cjsKICAgICAgICAgICAgIHBuZ19ieXRlcCBkc3RwdHI7CiAKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICkKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1RIUkVBRF9VTlNBRkVfT0spCisjaWYgIWRlZmluZWQoUE5HXzFfMF9YKQorICAgICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cpCisgICAgICAgICAgICAgICAgLyogJiYgX21teF9zdXBwb3J0ZWQgKi8gKQorI2Vsc2UKKyAgICAgICAgICAgIGlmIChfbW14X3N1cHBvcnRlZCkKKyNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcG5nX3VpbnRfMzIgbGVuOwogICAgICAgICAgICAgICAgaW50IGRpZmY7CkBAIC04MzYsOCArODkwLDEzIEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgc3JjcHRyOwogICAgICAgICAgICAgcG5nX2J5dGVwIGRzdHB0cjsKIAotI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKLSAgICAgICAgICAgIGlmICggX21teF9zdXBwb3J0ZWQgKQorI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChQTkdfVEhSRUFEX1VOU0FGRV9PSykKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisgICAgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVykKKyAgICAgICAgICAgICAgICAvKiAmJiBfbW14X3N1cHBvcnRlZCAqLyApCisjZWxzZQorICAgICAgICAgICAgaWYgKF9tbXhfc3VwcG9ydGVkKQorI2VuZGlmCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwbmdfdWludF8zMiBsZW47CiAgICAgICAgICAgICAgICBpbnQgZGlmZjsKQEAgLTk5OSw4ICsxMDU4LDEzIEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgc3JjcHRyOwogICAgICAgICAgICAgcG5nX2J5dGVwIGRzdHB0cjsKIAotI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKLSAgICAgICAgICAgIGlmICggX21teF9zdXBwb3J0ZWQgKQorI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChQTkdfVEhSRUFEX1VOU0FGRV9PSykKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisgICAgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVykKKyAgICAgICAgICAgICAgICAvKiAmJiBfbW14X3N1cHBvcnRlZCAqLyApCisjZWxzZQorICAgICAgICAgICAgaWYgKF9tbXhfc3VwcG9ydGVkKQorI2VuZGlmCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwbmdfdWludF8zMiBsZW47CiAgICAgICAgICAgICAgICBpbnQgZGlmZjsKQEAgLTExNjksOCArMTIzMywxMyBAQAogICAgICAgICAgICAgcG5nX2J5dGVwIHNyY3B0cjsKICAgICAgICAgICAgIHBuZ19ieXRlcCBkc3RwdHI7CiAKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICkKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1RIUkVBRF9VTlNBRkVfT0spCisjaWYgIWRlZmluZWQoUE5HXzFfMF9YKQorICAgICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cpCisgICAgICAgICAgICAgICAgLyogJiYgX21teF9zdXBwb3J0ZWQgKi8gKQorI2Vsc2UKKyAgICAgICAgICAgIGlmIChfbW14X3N1cHBvcnRlZCkKKyNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcG5nX3VpbnRfMzIgbGVuOwogICAgICAgICAgICAgICAgaW50IGRpZmY7CkBAIC0xMzk0LDEwICsxNDYzLDcgQEAKICAgICAgICAgIGRlZmF1bHQ6IC8qIHBuZ19wdHItPnJvd19pbmZvLnBpeGVsX2RlcHRoICE9IDEsMiw0LDgsMTYsMjQsMzIsNDgsNjQgKi8KICAgICAgICAgIHsKICAgICAgICAgICAgIC8qIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAqLwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICJsaWJwbmcgaW50ZXJuYWwgZXJyb3I6ICBwbmdfcHRyLT5yb3dfaW5mby5waXhlbF9kZXB0aCA9ICVkXG4iLAotICAgICAgICAgICAgICBwbmdfcHRyLT5yb3dfaW5mby5waXhlbF9kZXB0aCk7Ci0gICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJJbnZhbGlkIHJvd19pbmZvLnBpeGVsX2RlcHRoIGluIHBuZ2djY3JkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgIH0gLyogZW5kIHN3aXRjaCAocG5nX3B0ci0+cm93X2luZm8ucGl4ZWxfZGVwdGgpICovCkBAIC0xNDM2LDkgKzE1MDIsMTMgQEAKIAogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfZG9fcmVhZF9pbnRlcmxhY2UgKHBuZ2djY3JkLmMpXG4iKTsKIAorI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKICAgIGlmIChfbW14X3N1cHBvcnRlZCA9PSAyKSB7CisgICAgICAgLyogdGhpcyBzaG91bGQgaGF2ZSBoYXBwZW5lZCBpbiBwbmdfaW5pdF9tbXhfZmxhZ3MoKSBhbHJlYWR5ICovCisgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImFzbV9mbGFncyBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCIpOwogICAgICAgIHBuZ19tbXhfc3VwcG9ydCgpOwogICAgfQorI2VuZGlmCiAKICAgIGlmIChyb3cgIT0gTlVMTCAmJiByb3dfaW5mbyAhPSBOVUxMKQogICAgewpAQCAtMTY0NCw3ICsxNzE0LDEyIEBACiAgICAgICAgICAgICAvKiBOZXcgY29kZSBieSBOaXJhdiBDaGhhdHJhcGF0aSAtIEludGVsIENvcnBvcmF0aW9uICovCiAKICNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICkKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisgICAgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UpCisgICAgICAgICAgICAgICAgLyogJiYgX21teF9zdXBwb3J0ZWQgKi8gKQorI2Vsc2UKKyAgICAgICAgICAgIGlmIChfbW14X3N1cHBvcnRlZCkKKyNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgaWYgKHBpeGVsX2J5dGVzID09IDMpCkBAIC0yNDE2LDkgKzI0OTEsOCBAQAogICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIGlzIDgtYnl0ZSBSUkdHQkJBQQogICAgICAgICAgICAgICAgICAgICAgLy8gZGVzdCBpcyAzMi1ieXRlIFJSR0dCQkFBIFJSR0dCQkFBIFJSR0dCQkFBIFJSR0dCQkFBCi0gICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGhfbW14ID0gKCh3aWR0aCA+PiAxKSA8PCAxKSA7Ci0gICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSB3aWR0aF9tbXg7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGhfbW14KQorICAgICAgICAgICAgICAgICAgICAgLy8gKHJlY2FsbCB0aGF0IGV4cGFuc2lvbiBpcyBfaW4gcGxhY2VfOiAgc3B0ciBhbmQgZHAKKyAgICAgICAgICAgICAgICAgICAgIC8vICBib3RoIHBvaW50IGF0IGxvY2F0aW9ucyB3aXRoaW4gc2FtZSByb3cgYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1bW15X3ZhbHVlX2M7ICAvLyBmaXggJ2ZvcmJpZGRlbiByZWdpc3RlciBzcGlsbGVkJwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1bW15X3ZhbHVlX1M7CkBAIC0yNDU3LDkgKzI1MzEsNiBAQAogICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIGlzIDgtYnl0ZSBSUkdHQkJBQQogICAgICAgICAgICAgICAgICAgICAgLy8gZGVzdCBpcyAxNi1ieXRlIFJSR0dCQkFBIFJSR0dCQkFBCi0gICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGhfbW14ID0gKCh3aWR0aCA+PiAxKSA8PCAxKSA7Ci0gICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSB3aWR0aF9tbXg7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGhfbW14KQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1bW15X3ZhbHVlX2M7ICAvLyBmaXggJ2ZvcmJpZGRlbiByZWdpc3RlciBzcGlsbGVkJwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1bW15X3ZhbHVlX1M7CkBAIC0yNTg5LDEyICsyNjYwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcG5nX3Bhc3NfaW5jW3Bhc3NdOyBqKyspCiAgICAgICAgICAgICAgICAgICAgICB7CiAjaWZkZWYgUE5HX0RFQlVHCi0gICAgICAgICAgICAgICBpZiAoZHAgPCByb3cgfHwgZHArMyA+IHJvdytwbmdfcHRyLT5yb3dfYnVmX3NpemUpCi0gICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHByaW50ZigiZHAgb3V0IG9mIGJvdW5kczogcm93PSVkLCBkcD0lZCwgcnA9JWRcbiIscm93LCBkcCwKLSAgICAgICAgICAgICAgICAgICAgcm93K3BuZ19wdHItPnJvd19idWZfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBwcmludGYoInJvd19idWY9JWRcbiIscG5nX3B0ci0+cm93X2J1Zl9zaXplKTsKLSAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRwIDwgcm93IHx8IGRwKzMgPiByb3crcG5nX3B0ci0+cm93X2J1Zl9zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJkcCBvdXQgb2YgYm91bmRzOiByb3c9JWQsIGRwPSVkLCBycD0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LCBkcCwgcm93K3BuZ19wdHItPnJvd19idWZfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoInJvd19idWY9JWRcbiIscG5nX3B0ci0+cm93X2J1Zl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgcG5nX21lbWNweShkcCwgdiwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcCAtPSA0OwpAQCAtMjY2NSw3ICsyNzM2LDcgQEAKIAogCiAKLQorI2lmIGRlZmluZWQoUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfRklMVEVSX1JPVykKICNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCiAKIC8vIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXRpbGl6ZWQgaW4gdGhlIGZ1bmN0aW9ucyBiZWxvdy4gIFRoZXkgYXJlIGRlY2xhcmVkCkBAIC0yNjc4LDggKzI3NDksNyBAQAogICBfSEJDbGVhck1hc2sgPSB7MHg3ZjdmN2Y3ZjdmN2Y3ZjdmTEx9LAogICBfQWN0aXZlTWFzaywgX0FjdGl2ZU1hc2syLCBfQWN0aXZlTWFza0VuZCwgX1NoaWZ0QnBwLCBfU2hpZnRSZW07CiAKLQotCisjaWZkZWYgUE5HX1RIUkVBRF9VTlNBRkVfT0sKIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ly8KIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KIC8vICAgICAgICAgICBQIE4gRyBfIFIgRSBBIEQgXyBGIEkgTCBUIEUgUiBfIFIgTyBXIF8gTSBNIFggXyBBIFYgRyAgICAgICAgICAgLy8KQEAgLTI4MDIsNTMgKzI4NzIsNzYgQEAKICAgICAgICAgICJhdmdfM2xwOiAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAibW92cSAoJSVlZGksJSVlY3gsKSwgJSVtbTAgICBcblx0IiAvLyBsb2FkIG1tMCB3aXRoIEF2Zyh4KQogICAgICAgICAgICAgIm1vdnEgJSVtbTUsICUlbW0zICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICJwc3JscSBfU2hpZnRSZW0sICUlbW0yICAgICAgIFxuXHQiIC8vIGNvcnJlY3QgcG9zaXRpb24gUmF3KHgtYnBwKSBkYXRhCisgICAgICAgICAgICAicHNybHEgX1NoaWZ0UmVtLCAlJW1tMiAgICAgICBcblx0IiAvLyBjb3JyZWN0IHBvc2l0aW9uIFJhdyh4LWJwcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRhdGEKICAgICAgICAgICAgICJtb3ZxICglJWVzaSwlJWVjeCwpLCAlJW1tMSAgIFxuXHQiIC8vIGxvYWQgbW0xIHdpdGggUHJpb3IoeCkKICAgICAgICAgICAgICJtb3ZxICUlbW03LCAlJW1tNiAgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAicGFuZCAlJW1tMSwgJSVtbTMgICAgICAgICAgICBcblx0IiAvLyBnZXQgbHNiIGZvciBlYWNoIHByZXZfcm93IGJ5dGUKICAgICAgICAgICAgICJwc3JscSAkMSwgJSVtbTEgICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSBwcmV2X3JvdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMCAgICAgICAgICAgXG5cdCIgLy8gYWRkIChQcmV2X3Jvdy8yKSB0byBBdmcgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlCisgICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0wICAgICAgICAgICBcblx0IiAvLyBhZGQgKFByZXZfcm93LzIpIHRvIEF2ZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggYnl0ZQogICAgICAgICAgICAgLy8gYWRkIDFzdCBhY3RpdmUgZ3JvdXAgKFJhdyh4LWJwcCkvMikgdG8gYXZlcmFnZSB3aXRoIExCQ2FycnkKLSAgICAgICAgICAgICJtb3ZxICUlbW0zLCAlJW1tMSAgICAgICAgICAgIFxuXHQiIC8vIG5vdyB1c2UgbW0xIGZvciBnZXR0aW5nIExCQ2FycnlzCi0gICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZSB3aGVyZSBib3RoCisgICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTEJDYXJyeXMKKyAgICAgICAgICAgICJwYW5kICUlbW0yLCAlJW1tMSAgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBib3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkIGZvciBhY3RpdmUgZ3JvdXApCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0yICAgICAgICAgICAgICBcblx0IiAvLyBkaXZpZGUgcmF3IGJ5dGVzIGJ5IDIKLSAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gKFJhdyh4LWJwcCkvMikgZm9yIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMSBieXRlcyB0byBhZGQgdG8gQXZnCi0gICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvIEF2ZyBmb3IgZWFjaCBBY3RpdmUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQorICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAicGFuZCAlJW1tNiwgJSVtbTIgICAgICAgICAgICBcblx0IiAvLyBsZWF2ZSBvbmx5IEFjdGl2ZSBHcm91cCAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdmcgZm9yIGVhY2ggQWN0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIGJ5dGUKICAgICAgICAgICAgIC8vIGFkZCAybmQgYWN0aXZlIGdyb3VwIChSYXcoeC1icHApLzIpIHRvIGF2ZXJhZ2Ugd2l0aCBfTEJDYXJyeQotICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTYgICAgICAgXG5cdCIgLy8gc2hpZnQgdGhlIG1tNiBtYXNrIHRvIGNvdmVyIGJ5dGVzIDMtNQorICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTYgICAgICAgXG5cdCIgLy8gc2hpZnQgdGhlIG1tNiBtYXNrIHRvIGNvdmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyAzLTUKICAgICAgICAgICAgICJtb3ZxICUlbW0wLCAlJW1tMiAgICAgICAgICAgIFxuXHQiIC8vIG1vdiB1cGRhdGVkIFJhd3MgdG8gbW0yCiAgICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tMiAgICAgICBcblx0IiAvLyBzaGlmdCBkYXRhIHRvIHBvcy4gY29ycmVjdGx5Ci0gICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZyBMQkNhcnJ5cwotICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUgd2hlcmUgYm90aAorICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExCQ2FycnlzCisgICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgYm90aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxzYidzIHdlcmUgPT0gMSAob25seSB2YWxpZCBmb3IgYWN0aXZlIGdyb3VwKQogICAgICAgICAgICAgInBzcmxxICQxLCAlJW1tMiAgICAgICAgICAgICAgXG5cdCIgLy8gZGl2aWRlIHJhdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpIGZvciBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYW5kICUlbW02LCAlJW1tMiAgICAgICAgICAgIFxuXHQiIC8vIGxlYXZlIG9ubHkgQWN0aXZlIEdyb3VwIDIgYnl0ZXMgdG8gYWRkIHRvIEF2ZwotICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0byBBdmcgZm9yIGVhY2ggQWN0aXZlCisgICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZXMgdG8gYWRkIHRvIEF2ZworICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZnIGZvciBlYWNoIEFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBieXRlCiAKICAgICAgICAgICAgIC8vIGFkZCAzcmQgYWN0aXZlIGdyb3VwIChSYXcoeC1icHApLzIpIHRvIGF2ZXJhZ2Ugd2l0aCBfTEJDYXJyeQotICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTYgICAgICAgXG5cdCIgLy8gc2hpZnQgbW02IG1hc2sgdG8gY292ZXIgbGFzdCB0d28KKyAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW02ICAgICAgIFxuXHQiIC8vIHNoaWZ0IG1tNiBtYXNrIHRvIGNvdmVyIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR3bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZXMKICAgICAgICAgICAgICJtb3ZxICUlbW0wLCAlJW1tMiAgICAgICAgICAgIFxuXHQiIC8vIG1vdiB1cGRhdGVkIFJhd3MgdG8gbW0yCiAgICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tMiAgICAgICBcblx0IiAvLyBzaGlmdCBkYXRhIHRvIHBvcy4gY29ycmVjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEYXRhIG9ubHkgbmVlZHMgdG8gYmUgc2hpZnRlZCBvbmNlIGhlcmUgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgY29ycmVjdCB4LWJwcCBvZmZzZXQuCi0gICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZyBMQkNhcnJ5cwotICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUgd2hlcmUgYm90aAorICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExCQ2FycnlzCisgICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgYm90aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkIGZvciBhY3RpdmUgZ3JvdXApCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0yICAgICAgICAgICAgICBcblx0IiAvLyBkaXZpZGUgcmF3IGJ5dGVzIGJ5IDIKLSAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gKFJhdyh4LWJwcCkvMikgZm9yIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMiBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZXMgdG8gYWRkIHRvIEF2ZwogICAgICAgICAgICAgImFkZGwgJDgsICUlZWN4ICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMiwgJSVtbTAgICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8gQXZnIGZvciBlYWNoIEFjdGl2ZQorICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZnIGZvciBlYWNoIEFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQogICAgICAgICAgICAgLy8gbm93IHJlYWR5IHRvIHdyaXRlIGJhY2sgdG8gbWVtb3J5CiAgICAgICAgICAgICAibW92cSAlJW1tMCwgLTgoJSVlZGksJSVlY3gsKSBcblx0IgpAQCAtMjg4Niw3ICsyOTc5LDggQEAKICAgICAgICAgICAgICJtb3ZxIF9IQkNsZWFyTWFzaywgJSVtbTQgICAgXG5cdCIKIAogICAgICAgICAgICAgLy8gcmUtaW5pdCBhZGRyZXNzIHBvaW50ZXJzIGFuZCBvZmZzZXQKLSAgICAgICAgICAgICJtb3ZsIF9kaWYsICUlZWN4ICAgICAgICAgICAgXG5cdCIgLy8gZWN4OiAgeCA9IG9mZnNldCB0byBhbGlnbm1lbnQgYm91bmRhcnkKKyAgICAgICAgICAgICJtb3ZsIF9kaWYsICUlZWN4ICAgICAgICAgICAgXG5cdCIgLy8gZWN4OiAgeCA9IG9mZnNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGlnbm1lbnQgYm91bmRhcnkKIAogICAgICAgICAgICAgLy8gbG9hZCBfQWN0aXZlTWFzayBhbmQgY2xlYXIgYWxsIGJ5dGVzIGV4Y2VwdCBmb3IgMXN0IGFjdGl2ZSBncm91cAogICAgICAgICAgICAgIm1vdnEgX0FjdGl2ZU1hc2ssICUlbW03ICAgICBcblx0IgpAQCAtMjg5NSw3ICsyOTg5LDggQEAKIC8vIHByZWxvYWQgICJtb3ZsIHByZXZfcm93LCAlJWVzaSAgICAgICAgXG5cdCIgLy8gZXNpOiAgUHJpb3IoeCkKICAgICAgICAgICAgICJtb3ZxICUlbW03LCAlJW1tNiAgICAgICAgICAgXG5cdCIKICAgICAgICAgICAgICJtb3ZxIF9MQkNhcnJ5TWFzaywgJSVtbTUgICAgXG5cdCIKLSAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW02ICAgICAgXG5cdCIgLy8gY3JlYXRlIG1hc2sgZm9yIDJuZCBhY3RpdmUgZ3JvdXAKKyAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW02ICAgICAgXG5cdCIgLy8gY3JlYXRlIG1hc2sgZm9yIDJuZCBhY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3JvdXAKIAogICAgICAgICAgICAgLy8gcHJpbWUgdGhlIHB1bXA6ICBsb2FkIHRoZSBmaXJzdCBSYXcoeC1icHApIGRhdGEgc2V0CiAgICAgICAgICAgICAibW92cSAtOCglJWVkaSwlJWVjeCwpLCAlJW1tMiBcblx0IiAvLyBsb2FkIHByZXZpb3VzIGFsaWduZWQgOCBieXRlcwpAQCAtMjkwOCwzMCArMzAwMyw0NCBAQAogICAgICAgICAgICAgIm1vdnEgJSVtbTUsICUlbW0zICAgICAgICAgICBcblx0IgogICAgICAgICAgICAgInBhbmQgJSVtbTEsICUlbW0zICAgICAgICAgICBcblx0IiAvLyBnZXQgbHNiIGZvciBlYWNoIHByZXZfcm93IGJ5dGUKICAgICAgICAgICAgICJwc3JscSAkMSwgJSVtbTEgICAgICAgICAgICAgXG5cdCIgLy8gZGl2aWRlIHByZXZfcm93IGJ5dGVzIGJ5IDIKLSAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTEgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChQcmV2X3Jvdy8yKSB0byBBdmcgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQorICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFByZXZfcm93LzIpIHRvIEF2ZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWFjaCBieXRlCiAgICAgICAgICAgICAvLyBhZGQgMXN0IGFjdGl2ZSBncm91cCAoUmF3KHgtYnBwKS8yKSB0byBhdmVyYWdlIHdpdGggX0xCQ2FycnkKLSAgICAgICAgICAgICJtb3ZxICUlbW0zLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcgTEJDYXJyeXMKLSAgICAgICAgICAgICJwYW5kICUlbW0yLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUgd2hlcmUgYm90aAorICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMQkNhcnJ5cworICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBib3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsc2IncyB3ZXJlID09IDEgKG9ubHkgdmFsaWQgZm9yIGFjdGl2ZSBncm91cCkKICAgICAgICAgICAgICJwc3JscSAkMSwgJSVtbTIgICAgICAgICAgICAgXG5cdCIgLy8gZGl2aWRlIHJhdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKSBmb3IgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFuZCAlJW1tNywgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGxlYXZlIG9ubHkgQWN0aXZlIEdyb3VwIDEgYnl0ZXMgdG8gYWRkIHRvIEF2ZwotICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvIEF2ZyBmb3IgZWFjaCBBY3RpdmUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICUlbW03LCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8gQXZnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIEFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQogICAgICAgICAgICAgLy8gYWRkIDJuZCBhY3RpdmUgZ3JvdXAgKFJhdyh4LWJwcCkvMikgdG8gYXZlcmFnZSB3aXRoIF9MQkNhcnJ5CiAgICAgICAgICAgICAibW92cSAlJW1tMCwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIG1vdiB1cGRhdGVkIFJhd3MgdG8gbW0yCiAgICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tMiAgICAgIFxuXHQiIC8vIHNoaWZ0IGRhdGEgdG8gcG9zLiBjb3JyZWN0bHkKICAgICAgICAgICAgICJhZGRsICQ4LCAlJWVjeCAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICJtb3ZxICUlbW0zLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcgTEJDYXJyeXMKLSAgICAgICAgICAgICJwYW5kICUlbW0yLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUgd2hlcmUgYm90aAorICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMQkNhcnJ5cworICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBib3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsc2IncyB3ZXJlID09IDEgKG9ubHkgdmFsaWQgZm9yIGFjdGl2ZSBncm91cCkKICAgICAgICAgICAgICJwc3JscSAkMSwgJSVtbTIgICAgICAgICAgICAgXG5cdCIgLy8gZGl2aWRlIHJhdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKSBmb3IgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFuZCAlJW1tNiwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGxlYXZlIG9ubHkgQWN0aXZlIEdyb3VwIDIgYnl0ZXMgdG8gYWRkIHRvIEF2ZwotICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvIEF2ZyBmb3IgZWFjaCBBY3RpdmUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICUlbW02LCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZnIGZvciBlYWNoIEFjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQogICAgICAgICAgICAgImNtcGwgX01NWExlbmd0aCwgJSVlY3ggICAgICBcblx0IgogICAgICAgICAgICAgLy8gbm93IHJlYWR5IHRvIHdyaXRlIGJhY2sgdG8gbWVtb3J5CkBAIC0yOTY1LDcgKzMwNzQsOCBAQAogICAgICAgICAgICAgLy8gbG9hZCBfQWN0aXZlTWFzawogICAgICAgICAgICAgIm1vdnEgX0FjdGl2ZU1hc2ssICUlbW03ICAgICBcblx0IgogICAgICAgICAgICAgLy8gcmUtaW5pdCBhZGRyZXNzIHBvaW50ZXJzIGFuZCBvZmZzZXQKLSAgICAgICAgICAgICJtb3ZsIF9kaWYsICUlZWN4ICAgICAgICAgICAgXG5cdCIgLy8gZWN4OiAgeCA9IG9mZnNldCB0byBhbGlnbm1lbnQgYm91bmRhcnkKKyAgICAgICAgICAgICJtb3ZsIF9kaWYsICUlZWN4ICAgICAgICAgICAgXG5cdCIgLy8gZWN4OiAgeCA9IG9mZnNldCB0byBhbGlnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm91bmRhcnkKICAgICAgICAgICAgICJtb3ZxIF9MQkNhcnJ5TWFzaywgJSVtbTUgICAgXG5cdCIKIC8vIHByZWxvYWQgICJtb3ZsIHJvdywgJSVlZGkgICAgICAgICAgICAgXG5cdCIgLy8gZWRpOiAgQXZnKHgpCiAgICAgICAgICAgICAibW92cSBfSEJDbGVhck1hc2ssICUlbW00ICAgIFxuXHQiCkBAIC0yOTgyLDU5ICszMDkyLDkxIEBACiAgICAgICAgICAgICAibW92cSAlJW1tNSwgJSVtbTMgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAicGFuZCAlJW1tMSwgJSVtbTMgICAgICAgICAgIFxuXHQiIC8vIGdldCBsc2IgZm9yIGVhY2ggcHJldl9yb3cgYnl0ZQogICAgICAgICAgICAgInBzcmxxICQxLCAlJW1tMSAgICAgICAgICAgICBcblx0IiAvLyBkaXZpZGUgcHJldl9yb3cgYnl0ZXMgYnkgMgotICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQogICAgICAgICAgICAgIm1vdnEgJSVtbTcsICUlbW02ICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFByZXZfcm93LzIpIHRvIEF2ZyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUHJldl9yb3cvMikgdG8gQXZnIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIGJ5dGUKIAogICAgICAgICAgICAgLy8gYWRkIDFzdCBhY3RpdmUgZ3JvdXAgKFJhdyh4LWJwcCkvMikgdG8gYXZlcmFnZSB3aXRoIF9MQkNhcnJ5Ci0gICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIG5vdyB1c2UgbW0xIGZvciBnZXR0aW5nIExCQ2FycnlzCi0gICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlIHdoZXJlIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkIGZvciBhY3RpdmUgZ3JvdXApCisgICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIG5vdyB1c2UgbW0xIGZvciBnZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExCQ2FycnlzCisgICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhY3RpdmUgZ3JvdXApCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0yICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSByYXcgYnl0ZXMgYnkgMgotICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gKFJhdyh4LWJwcCkvMikgZm9yIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBsZWF2ZSBvbmx5IEFjdGl2ZSBHcm91cCAxIGJ5dGVzIHRvIGFkZCB0byBBdmcKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMiwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0byBBdmcgZm9yIGVhY2ggQWN0aXZlIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICUlbW02LCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8gQXZnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIEFjdGl2ZSBieXRlCiAKICAgICAgICAgICAgIC8vIGFkZCAybmQgYWN0aXZlIGdyb3VwIChSYXcoeC1icHApLzIpIHRvIGF2ZXJhZ2Ugd2l0aCBfTEJDYXJyeQotICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTYgICAgICBcblx0IiAvLyBzaGlmdCB0aGUgbW02IG1hc2sgdG8gY292ZXIgYnl0ZXMgMiAmIDMKKyAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW02ICAgICAgXG5cdCIgLy8gc2hpZnQgdGhlIG1tNiBtYXNrIHRvIGNvdmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGVzIDIgJiAzCiAgICAgICAgICAgICAibW92cSAlJW1tMCwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIG1vdiB1cGRhdGVkIFJhd3MgdG8gbW0yCiAgICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tMiAgICAgIFxuXHQiIC8vIHNoaWZ0IGRhdGEgdG8gcG9zLiBjb3JyZWN0bHkKLSAgICAgICAgICAgICJtb3ZxICUlbW0zLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcgTEJDYXJyeXMKLSAgICAgICAgICAgICJwYW5kICUlbW0yLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUgd2hlcmUgYm90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsc2IncyB3ZXJlID09IDEgKG9ubHkgdmFsaWQgZm9yIGFjdGl2ZSBncm91cCkKKyAgICAgICAgICAgICJtb3ZxICUlbW0zLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gbm93IHVzZSBtbTEgZm9yIGdldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTEJDYXJyeXMKKyAgICAgICAgICAgICJwYW5kICUlbW0yLCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gZ2V0IExCQ2FycnlzIGZvciBlYWNoIGJ5dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgYm90aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsc2IncyB3ZXJlID09IDEgKG9ubHkgdmFsaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGFjdGl2ZSBncm91cCkKICAgICAgICAgICAgICJwc3JscSAkMSwgJSVtbTIgICAgICAgICAgICAgXG5cdCIgLy8gZGl2aWRlIHJhdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKSBmb3IgZWFjaCBieXRlCi0gICAgICAgICAgICAicGFuZCAlJW1tNiwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGxlYXZlIG9ubHkgQWN0aXZlIEdyb3VwIDIgYnl0ZXMgdG8gYWRkIHRvIEF2ZwotICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvIEF2ZyBmb3IgZWFjaCBBY3RpdmUgYnl0ZQorICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQorICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gKFJhdyh4LWJwcCkvMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBsZWF2ZSBvbmx5IEFjdGl2ZSBHcm91cCAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGFkZCB0byBBdmcKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMiwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdmcgZm9yIGVhY2ggQWN0aXZlIGJ5dGUKIAogICAgICAgICAgICAgLy8gYWRkIDNyZCBhY3RpdmUgZ3JvdXAgKFJhdyh4LWJwcCkvMikgdG8gYXZlcmFnZSB3aXRoIF9MQkNhcnJ5Ci0gICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tNiAgICAgIFxuXHQiIC8vIHNoaWZ0IHRoZSBtbTYgbWFzayB0byBjb3ZlciBieXRlcyA0ICYgNQorICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTYgICAgICBcblx0IiAvLyBzaGlmdCB0aGUgbW02IG1hc2sgdG8gY292ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZXMgNCAmIDUKICAgICAgICAgICAgICJtb3ZxICUlbW0wLCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbW92IHVwZGF0ZWQgUmF3cyB0byBtbTIKICAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW0yICAgICAgXG5cdCIgLy8gc2hpZnQgZGF0YSB0byBwb3MuIGNvcnJlY3RseQotICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZyBMQkNhcnJ5cwotICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZSB3aGVyZSBib3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxzYidzIHdlcmUgPT0gMSAob25seSB2YWxpZCBmb3IgYWN0aXZlIGdyb3VwKQorICAgICAgICAgICAgIm1vdnEgJSVtbTMsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBub3cgdXNlIG1tMSBmb3IgZ2V0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMQkNhcnJ5cworICAgICAgICAgICAgInBhbmQgJSVtbTIsICUlbW0xICAgICAgICAgICBcblx0IiAvLyBnZXQgTEJDYXJyeXMgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBib3RoIGxzYidzIHdlcmUgPT0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAob25seSB2YWxpZCBmb3IgYWN0aXZlIGdyb3VwKQogICAgICAgICAgICAgInBzcmxxICQxLCAlJW1tMiAgICAgICAgICAgICBcblx0IiAvLyBkaXZpZGUgcmF3IGJ5dGVzIGJ5IDIKLSAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpIGZvciBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYW5kICUlbW02LCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMiBieXRlcyB0byBhZGQgdG8gQXZnCi0gICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8gQXZnIGZvciBlYWNoIEFjdGl2ZSBieXRlCisgICAgICAgICAgICAicGFuZCAgJSVtbTQsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGNsZWFyIGludmFsaWQgYml0IDcgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlCisgICAgICAgICAgICAicGFkZGIgJSVtbTEsICUlbW0yICAgICAgICAgIFxuXHQiIC8vIGFkZCBMQkNhcnJ5cyB0byAoUmF3KHgtYnBwKS8yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAicGFuZCAlJW1tNiwgJSVtbTIgICAgICAgICAgIFxuXHQiIC8vIGxlYXZlIG9ubHkgQWN0aXZlIEdyb3VwIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZXMgdG8gYWRkIHRvIEF2ZworICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSArIExCQ2FycnlzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF2ZyBmb3IgZWFjaCBBY3RpdmUgYnl0ZQogCiAgICAgICAgICAgICAvLyBhZGQgNHRoIGFjdGl2ZSBncm91cCAoUmF3KHgtYnBwKS8yKSB0byBhdmVyYWdlIHdpdGggX0xCQ2FycnkKLSAgICAgICAgICAgICJwc2xscSBfU2hpZnRCcHAsICUlbW02ICAgICAgXG5cdCIgLy8gc2hpZnQgdGhlIG1tNiBtYXNrIHRvIGNvdmVyIGJ5dGVzIDYgJiA3CisgICAgICAgICAgICAicHNsbHEgX1NoaWZ0QnBwLCAlJW1tNiAgICAgIFxuXHQiIC8vIHNoaWZ0IHRoZSBtbTYgbWFzayB0byBjb3ZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyA2ICYgNwogICAgICAgICAgICAgIm1vdnEgJSVtbTAsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBtb3YgdXBkYXRlZCBSYXdzIHRvIG1tMgogICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTIgICAgICBcblx0IiAvLyBzaGlmdCBkYXRhIHRvIHBvcy4gY29ycmVjdGx5CiAgICAgICAgICAgICAiYWRkbCAkOCwgJSVlY3ggICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIG5vdyB1c2UgbW0xIGZvciBnZXR0aW5nIExCQ2FycnlzCi0gICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlIHdoZXJlIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkIGZvciBhY3RpdmUgZ3JvdXApCisgICAgICAgICAgICAibW92cSAlJW1tMywgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIG5vdyB1c2UgbW0xIGZvciBnZXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExCQ2FycnlzCisgICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxIChvbmx5IHZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhY3RpdmUgZ3JvdXApCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0yICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSByYXcgYnl0ZXMgYnkgMgotICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhZGRiICUlbW0xLCAlJW1tMiAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gKFJhdyh4LWJwcCkvMikgZm9yIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhbmQgJSVtbTYsICUlbW0yICAgICAgICAgICBcblx0IiAvLyBsZWF2ZSBvbmx5IEFjdGl2ZSBHcm91cCAyIGJ5dGVzIHRvIGFkZCB0byBBdmcKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMiwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChSYXcvMikgKyBMQkNhcnJ5cyB0byBBdmcgZm9yIGVhY2ggQWN0aXZlIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gYWRkIExCQ2FycnlzIHRvIChSYXcoeC1icHApLzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICUlbW02LCAlJW1tMiAgICAgICAgICAgXG5cdCIgLy8gbGVhdmUgb25seSBBY3RpdmUgR3JvdXAgMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlcyB0byBhZGQgdG8gQXZnCisgICAgICAgICAgICAicGFkZGIgJSVtbTIsICUlbW0wICAgICAgICAgIFxuXHQiIC8vIGFkZCAoUmF3LzIpICsgTEJDYXJyeXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZnIGZvciBlYWNoIEFjdGl2ZSBieXRlCiAKICAgICAgICAgICAgICJjbXBsIF9NTVhMZW5ndGgsICUlZWN4ICAgICAgXG5cdCIKICAgICAgICAgICAgIC8vIG5vdyByZWFkeSB0byB3cml0ZSBiYWNrIHRvIG1lbW9yeQpAQCAtMzA2NSw3ICszMjA3LDggQEAKICNpZmRlZiBfX1BJQ19fCiAgICAgICAgICAgICAicHVzaGwgJSVlYnggICAgICAgICAgICAgICAgIFxuXHQiIC8vIHNhdmUgR2xvYmFsIE9mZnNldCBUYWJsZSBpbmRleAogI2VuZGlmCi0gICAgICAgICAgICAibW92bCBfZGlmLCAlJWVieCAgICAgICAgICAgIFxuXHQiIC8vIGVieDogIHggPSBvZmZzZXQgdG8gYWxpZ25tZW50IGJvdW5kYXJ5CisgICAgICAgICAgICAibW92bCBfZGlmLCAlJWVieCAgICAgICAgICAgIFxuXHQiIC8vIGVieDogIHggPSBvZmZzZXQgdG8gYWxpZ25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdW5kYXJ5CiAvLyBwcmVsb2FkICAibW92bCByb3csICUlZWRpICAgICAgICAgICAgIFxuXHQiIC8vIGVkaTogIEF2Zyh4KQogICAgICAgICAgICAgImNtcGwgX0Z1bGxMZW5ndGgsICUlZWJ4ICAgICBcblx0IiAvLyB0ZXN0IGlmIG9mZnNldCBhdCBlbmQgb2YgYXJyYXkKICAgICAgICAgICAgICJqbmIgYXZnXzFlbmQgICAgICAgICAgICAgICAgXG5cdCIKQEAgLTMwODQsNyArMzIyNyw4IEBACiAgICAgICAgICAgICAiYWRkdyAlJWN4LCAlJWF4ICAgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAiaW5jbCAlJWVieCAgICAgICAgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAic2hydyAlJWF4ICAgICAgICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSBieSAyCi0gICAgICAgICAgICAiYWRkYiAtMSglJWVkaSwlJWVieCwpLCAlJWFsIFxuXHQiIC8vIGFkZCBBdmcoeCk7IC0xIHRvIG9mZnNldCBpbmMgZWJ4CisgICAgICAgICAgICAiYWRkYiAtMSglJWVkaSwlJWVieCwpLCAlJWFsIFxuXHQiIC8vIGFkZCBBdmcoeCk7IC0xIHRvIG9mZnNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmMgZWJ4CiAgICAgICAgICAgICAiY21wbCBfRnVsbExlbmd0aCwgJSVlYnggICAgIFxuXHQiIC8vIGNoZWNrIGlmIGF0IGVuZCBvZiBhcnJheQogICAgICAgICAgICAgIm1vdmIgJSVhbCwgLTEoJSVlZGksJSVlYngsKSBcblx0IiAvLyB3cml0ZSBiYWNrIFJhdyh4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3YgZG9lcyBub3QgYWZmZWN0IGZsYWdzOyAtMSB0byBvZmZzZXQgaW5jIGVieApAQCAtMzE2MywxNSArMzMwNywxOCBAQAogICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAvLyBicHAgZ3JlYXRlciB0aGFuIDggKCE9IDEsMiwzLDQsWzVdLDYsWzddLDgpCiAgICAgICB7CiAKKyNpZmRlZiBQTkdfREVCVUcKICAgICAgICAgIC8vIEdSUjogIFBSSU5UIEVSUk9SIEhFUkU6ICBTSE9VTEQgTkVWRVIgQkUgUkVBQ0hFRAotICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICJsaWJwbmc6ICBpbnRlcm5hbCBsb2dpYyBlcnJvciAocG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfYXZnKCkpXG4iKTsKKyAgICAgICAgcG5nX2RlYnVnKDEsCisgICAgICAgICJJbnRlcm5hbCBsb2dpYyBlcnJvciBpbiBwbmdnY2NyZCAocG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfYXZnKCkpXG4iKTsKKyNlbmRpZgogCiAjaWYgMAogICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAibW92cSBfTEJDYXJyeU1hc2ssICUlbW01ICAgIFxuXHQiCiAgICAgICAgICAgICAvLyByZS1pbml0IGFkZHJlc3MgcG9pbnRlcnMgYW5kIG9mZnNldAotICAgICAgICAgICAgIm1vdmwgX2RpZiwgJSVlYnggICAgICAgICAgICBcblx0IiAvLyBlYng6ICB4ID0gb2Zmc2V0IHRvIGFsaWdubWVudCBib3VuZGFyeQorICAgICAgICAgICAgIm1vdmwgX2RpZiwgJSVlYnggICAgICAgICAgICBcblx0IiAvLyBlYng6ICB4ID0gb2Zmc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsaWdubWVudCBib3VuZGFyeQogICAgICAgICAgICAgIm1vdmwgcm93LCAlJWVkaSAgICAgICAgICAgICBcblx0IiAvLyBlZGk6ICBBdmcoeCkKICAgICAgICAgICAgICJtb3ZxIF9IQkNsZWFyTWFzaywgJSVtbTQgICAgXG5cdCIKICAgICAgICAgICAgICJtb3ZsICUlZWRpLCAlJWVkeCAgICAgICAgICAgXG5cdCIKQEAgLTMxODQsMTUgKzMzMzEsMjAgQEAKICAgICAgICAgICAgICJwYW5kICUlbW0xLCAlJW1tMyAgICAgICAgICAgXG5cdCIgLy8gZ2V0IGxzYiBmb3IgZWFjaCBwcmV2X3JvdyBieXRlCiAgICAgICAgICAgICAibW92cSAoJSVlZHgsJSVlYngsKSwgJSVtbTIgIFxuXHQiCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0xICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSBwcmV2X3JvdyBieXRlcyBieSAyCi0gICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTMgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlIHdoZXJlIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbHNiJ3Mgd2VyZSA9PSAxCisgICAgICAgICAgICAicGFuZCAlJW1tMiwgJSVtbTMgICAgICAgICAgIFxuXHQiIC8vIGdldCBMQkNhcnJ5cyBmb3IgZWFjaCBieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGJvdGggbHNiJ3Mgd2VyZSA9PSAxCiAgICAgICAgICAgICAicHNybHEgJDEsICUlbW0yICAgICAgICAgICAgIFxuXHQiIC8vIGRpdmlkZSByYXcgYnl0ZXMgYnkgMgotICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2ggYnl0ZQotICAgICAgICAgICAgInBhZGRiICUlbW0zLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gQXZnIGZvciBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoIGJ5dGUKLSAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChQcmV2X3Jvdy8yKSB0byBBdmcgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhbmQgICUlbW00LCAlJW1tMSAgICAgICAgICBcblx0IiAvLyBjbGVhciBpbnZhbGlkIGJpdCA3IG9mIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQorICAgICAgICAgICAgInBhZGRiICUlbW0zLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgTEJDYXJyeXMgdG8gQXZnIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYW5kICAlJW1tNCwgJSVtbTIgICAgICAgICAgXG5cdCIgLy8gY2xlYXIgaW52YWxpZCBiaXQgNyBvZiBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5dGUKKyAgICAgICAgICAgICJwYWRkYiAlJW1tMSwgJSVtbTAgICAgICAgICAgXG5cdCIgLy8gYWRkIChQcmV2X3Jvdy8yKSB0byBBdmcgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggYnl0ZQogICAgICAgICAgICAgImFkZGwgJDgsICUlZWJ4ICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSB0byBBdmcgZm9yIGVhY2ggYnl0ZQorICAgICAgICAgICAgInBhZGRiICUlbW0yLCAlJW1tMCAgICAgICAgICBcblx0IiAvLyBhZGQgKFJhdy8yKSB0byBBdmcgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZQogICAgICAgICAgICAgImNtcGwgX01NWExlbmd0aCwgJSVlYnggICAgICBcblx0IgogICAgICAgICAgICAgIm1vdnEgJSVtbTAsIC04KCUlZWRpLCUlZWJ4LCkgXG5cdCIKICAgICAgICAgICAgICJqYiBhdmdfQWxwICAgICAgICAgICAgICAgICAgXG5cdCIKQEAgLTMyNjEsMTAgKzM0MTMsMTEgQEAKICAgICk7CiAKIH0gLyogZW5kIHBuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X2F2ZygpICovCisjZW5kaWYKIAogCiAKLQorI2lmZGVmIFBOR19USFJFQURfVU5TQUZFX09LCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAvLyAgICAgICAgIFAgTiBHIF8gUiBFIEEgRCBfIEYgSSBMIFQgRSBSIF8gUiBPIFcgXyBNIE0gWCBfIFAgQSBFIFQgSCAgICAgICAgIC8vCkBAIC0zMzEwLDkgKzM0NjMsMTEgQEAKICAgICAgICJtb3ZsICUlZWRpLCBfZGlmICAgICAgICAgICAgXG5cdCIgLy8gdGFrZSBzdGFydCBvZiByb3cKICAgICAgICJhZGRsICUlZWJ4LCBfZGlmICAgICAgICAgICAgXG5cdCIgLy8gYWRkIGJwcAogICAgICAgInhvcmwgJSVlY3gsICUlZWN4ICAgICAgICAgICBcblx0IgotICAgICAgImFkZGwgJDB4ZiwgX2RpZiAgICAgICAgICAgICBcblx0IiAvLyBhZGQgNyArIDggdG8gaW5jciBwYXN0IGFsaWdubWVudCBib3VuZGFyeQorICAgICAgImFkZGwgJDB4ZiwgX2RpZiAgICAgICAgICAgICBcblx0IiAvLyBhZGQgNyArIDggdG8gaW5jciBwYXN0IGFsaWdubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3VuZGFyeQogICAgICAgImFuZGwgJDB4ZmZmZmZmZjgsIF9kaWYgICAgICBcblx0IiAvLyBtYXNrIHRvIGFsaWdubWVudCBib3VuZGFyeQotICAgICAgInN1YmwgJSVlZGksIF9kaWYgICAgICAgICAgICBcblx0IiAvLyBzdWJ0cmFjdCBmcm9tIHN0YXJ0ID09PiB2YWx1ZSBlYnggYXQgYWxpZ25tZW50CisgICAgICAic3VibCAlJWVkaSwgX2RpZiAgICAgICAgICAgIFxuXHQiIC8vIHN1YnRyYWN0IGZyb20gc3RhcnQgPT0+IHZhbHVlIGVieAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBhbGlnbm1lbnQKICAgICAgICJqeiBwYWV0aF9nbyAgICAgICAgICAgICAgICAgXG5cdCIKICAgICAgIC8vIGZpeCBhbGlnbm1lbnQKIApAQCAtMzQzMCwxMiArMzU4NSwxNCBAQAogICAgICAgICAgICAgLy8gcHJpbWUgdGhlIHB1bXA6ICBsb2FkIHRoZSBmaXJzdCBSYXcoeC1icHApIGRhdGEgc2V0CiAgICAgICAgICAgICAibW92cSAtOCglJWVkaSwlJWVjeCwpLCAlJW1tMSBcblx0IgogICAgICAgICAgInBhZXRoXzNscDogICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgInBzcmxxIF9TaGlmdFJlbSwgJSVtbTEgICAgICBcblx0IiAvLyBzaGlmdCBsYXN0IDMgYnl0ZXMgdG8gMXN0IDMgYnl0ZXMKKyAgICAgICAgICAgICJwc3JscSBfU2hpZnRSZW0sICUlbW0xICAgICAgXG5cdCIgLy8gc2hpZnQgbGFzdCAzIGJ5dGVzIHRvIDFzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzIGJ5dGVzCiAgICAgICAgICAgICAibW92cSAoJSVlc2ksJSVlY3gsKSwgJSVtbTIgIFxuXHQiIC8vIGxvYWQgYj1Qcmlvcih4KQogICAgICAgICAgICAgInB1bnBja2xidyAlJW1tMCwgJSVtbTEgICAgICBcblx0IiAvLyB1bnBhY2sgSGlnaCBieXRlcyBvZiBhCiAgICAgICAgICAgICAibW92cSAtOCglJWVzaSwlJWVjeCwpLCAlJW1tMyBcblx0IiAvLyBwcmVwIGM9UHJpb3IoeC1icHApIGJ5dGVzCiAgICAgICAgICAgICAicHVucGNrbGJ3ICUlbW0wLCAlJW1tMiAgICAgIFxuXHQiIC8vIHVucGFjayBIaWdoIGJ5dGVzIG9mIGIKLSAgICAgICAgICAgICJwc3JscSBfU2hpZnRSZW0sICUlbW0zICAgICAgXG5cdCIgLy8gc2hpZnQgbGFzdCAzIGJ5dGVzIHRvIDFzdCAzIGJ5dGVzCisgICAgICAgICAgICAicHNybHEgX1NoaWZ0UmVtLCAlJW1tMyAgICAgIFxuXHQiIC8vIHNoaWZ0IGxhc3QgMyBieXRlcyB0byAxc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMyBieXRlcwogICAgICAgICAgICAgLy8gcGF2ID0gcCAtIGEgPSAoYSArIGIgLSBjKSAtIGEgPSBiIC0gYwogICAgICAgICAgICAgIm1vdnEgJSVtbTIsICUlbW00ICAgICAgICAgICBcblx0IgogICAgICAgICAgICAgInB1bnBja2xidyAlJW1tMCwgJSVtbTMgICAgICBcblx0IiAvLyB1bnBhY2sgSGlnaCBieXRlcyBvZiBjCkBAIC0zNDkwLDcgKzM2NDcsOCBAQAogICAgICAgICAgICAgInBhZGRiICglJWVkaSwlJWVjeCwpLCAlJW1tNyBcblx0IiAvLyBhZGQgUGFldGggcHJlZGljdG9yIHdpdGggUmF3KHgpCiAgICAgICAgICAgICAicHVucGNrbGJ3ICUlbW0wLCAlJW1tMyAgICAgIFxuXHQiIC8vIHVucGFjayBIaWdoIGJ5dGVzIG9mIGMKICAgICAgICAgICAgICJtb3ZxICUlbW03LCAoJSVlZGksJSVlY3gsKSAgXG5cdCIgLy8gd3JpdGUgYmFjayB1cGRhdGVkIHZhbHVlCi0gICAgICAgICAgICAibW92cSAlJW1tNywgJSVtbTEgICAgICAgICAgIFxuXHQiIC8vIG5vdyBtbTEgd2lsbCBiZSB1c2VkIGFzIFJhdyh4LWJwcCkKKyAgICAgICAgICAgICJtb3ZxICUlbW03LCAlJW1tMSAgICAgICAgICAgXG5cdCIgLy8gbm93IG1tMSB3aWxsIGJlIHVzZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmF3KHgtYnBwKQogICAgICAgICAgICAgLy8gbm93IGRvIFBhZXRoIGZvciAybmQgc2V0IG9mIGJ5dGVzICgzLTUpCiAgICAgICAgICAgICAicHNybHEgX1NoaWZ0QnBwLCAlJW1tMiAgICAgIFxuXHQiIC8vIGxvYWQgYj1Qcmlvcih4KSBzdGVwIDIKICAgICAgICAgICAgICJwdW5wY2tsYncgJSVtbTAsICUlbW0xICAgICAgXG5cdCIgLy8gdW5wYWNrIEhpZ2ggYnl0ZXMgb2YgYQpAQCAtMzU0Nyw3ICszNzA1LDggQEAKICAgICAgICAgICAgICJtb3ZxICUlbW0yLCAlJW1tMyAgICAgICAgICAgXG5cdCIgLy8gbG9hZCBjPVByaW9yKHgtYnBwKSBzdGVwIDEKICAgICAgICAgICAgICJwYW5kIF9BY3RpdmVNYXNrLCAlJW1tNyAgICAgXG5cdCIKICAgICAgICAgICAgICJwdW5wY2toYncgJSVtbTAsICUlbW0yICAgICAgXG5cdCIgLy8gdW5wYWNrIEhpZ2ggYnl0ZXMgb2YgYgotICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTcgICAgICBcblx0IiAvLyBzaGlmdCBieXRlcyB0byAybmQgZ3JvdXAgb2YgMyBieXRlcworICAgICAgICAgICAgInBzbGxxIF9TaGlmdEJwcCwgJSVtbTcgICAgICBcblx0IiAvLyBzaGlmdCBieXRlcyB0byAybmQgZ3JvdXAgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMyBieXRlcwogICAgICAgICAgICAgIC8vIHBhdiA9IHAgLSBhID0gKGEgKyBiIC0gYykgLSBhID0gYiAtIGMKICAgICAgICAgICAgICJtb3ZxICUlbW0yLCAlJW1tNCAgICAgICAgICAgXG5cdCIKICAgICAgICAgICAgICJwYWRkYiAoJSVlZGksJSVlY3gsKSwgJSVtbTcgXG5cdCIgLy8gYWRkIFBhZXRoIHByZWRpY3RvciB3aXRoIFJhdyh4KQpAQCAtMzYwNyw3ICszNzY2LDggQEAKICAgICAgICAgICAgIC8vIHN0ZXAgZWN4IHRvIG5leHQgc2V0IG9mIDggYnl0ZXMgYW5kIHJlcGVhdCBsb29wIHRpbCBkb25lCiAgICAgICAgICAgICAiYWRkbCAkOCwgJSVlY3ggICAgICAgICAgICAgIFxuXHQiCiAgICAgICAgICAgICAicGFuZCBfQWN0aXZlTWFza0VuZCwgJSVtbTEgIFxuXHQiCi0gICAgICAgICAgICAicGFkZGIgLTgoJSVlZGksJSVlY3gsKSwgJSVtbTEgXG5cdCIgLy8gYWRkIFBhZXRoIHByZWRpY3RvciB3aXRoIFJhdyh4KQorICAgICAgICAgICAgInBhZGRiIC04KCUlZWRpLCUlZWN4LCksICUlbW0xIFxuXHQiIC8vIGFkZCBQYWV0aCBwcmVkaWN0b3Igd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJhdyh4KQogCiAgICAgICAgICAgICAiY21wbCBfTU1YTGVuZ3RoLCAlJWVjeCAgICAgIFxuXHQiCiAgICAgICAgICAgICAicHhvciAlJW1tMCwgJSVtbTAgICAgICAgICAgIFxuXHQiIC8vIHB4b3IgZG9lcyBub3QgYWZmZWN0IGZsYWdzCkBAIC00MzA3LDEwICs0NDY3LDEyIEBACiAgICApOwogCiB9IC8qIGVuZCBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9wYWV0aCgpICovCisjZW5kaWYKIAogCiAKIAorI2lmZGVmIFBOR19USFJFQURfVU5TQUZFX09LCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAvLyAgICAgICAgICAgUCBOIEcgXyBSIEUgQSBEIF8gRiBJIEwgVCBFIFIgXyBSIE8gVyBfIE0gTSBYIF8gUyBVIEIgICAgICAgICAgIC8vCkBAIC00NzI5LDYgKzQ4OTEsNyBAQAogICAgKTsKIAogfSAvLyBlbmQgb2YgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfc3ViKCkKKyNlbmRpZgogCiAKIApAQCAtNDc1NSw2ICs0OTE4LDkgQEAKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKIC8vcHJlICJtb3ZsIHJvdywgJSVlZGkgICAgICAgICAgICAgIFxuXHQiCiAgICAgICAvLyBnZXQgIyBvZiBieXRlcyB0byBhbGlnbm1lbnQKKyNpZmRlZiBfX1BJQ19fCisgICAgICAicHVzaGwgJSVlYnggICAgICAgICAgICAgICAgICBcblx0IgorI2VuZGlmCiAgICAgICAibW92bCAlJWVkaSwgJSVlY3ggICAgICAgICAgICBcblx0IgogICAgICAgInhvcmwgJSVlYngsICUlZWJ4ICAgICAgICAgICAgXG5cdCIKICAgICAgICJhZGRsICQweDcsICUlZWN4ICAgICAgICAgICAgIFxuXHQiCkBAIC00ODU0LDYgKzUwMjAsOSBAQAogCiAgICAidXBfZW5kOiAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgogICAgICAgIkVNTVMgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIgLy8gY29udmVyc2lvbiBvZiBmaWx0ZXJlZCByb3cgY29tcGxldGUKKyNpZmRlZiBfX1BJQ19fCisgICAgICAicG9wbCAlJWVieCAgICAgICAgICAgICAgICAgICBcblx0IgorI2VuZGlmCiAKICAgICAgIDogIj1kIiAoZHVtbXlfdmFsdWVfZCksICAgLy8gMCAgICAgIC8vIG91dHB1dCByZWdzIChkdW1teSkKICAgICAgICAgIj1TIiAoZHVtbXlfdmFsdWVfUyksICAgLy8gMQpAQCAtNDg4NCw3ICs1MDUzLDYgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAotI2lmIGRlZmluZWQoUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfRklMVEVSX1JPVykKIAogLyogT3B0aW1pemVkIHBuZ19yZWFkX2ZpbHRlcl9yb3cgcm91dGluZXMgKi8KIApAQCAtNDkwNCw2ICs1MDcyLDggQEAKICNkZWZpbmUgVXNlTU1YX3BhZXRoICAxICAgLy8gR1JSOiAgY29udmVydGVkIDIwMDAwODI4CiAKICAgIGlmIChfbW14X3N1cHBvcnRlZCA9PSAyKSB7CisgICAgICAgLyogdGhpcyBzaG91bGQgaGF2ZSBoYXBwZW5lZCBpbiBwbmdfaW5pdF9tbXhfZmxhZ3MoKSBhbHJlYWR5ICovCisgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImFzbV9mbGFncyBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCIpOwogICAgICAgIHBuZ19tbXhfc3VwcG9ydCgpOwogICAgfQogI2VuZGlmIC8qIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KQEAgLTQ5MTQsMTMgKzUwODQsMzcgQEAKICAgIHsKICAgICAgIGNhc2UgMDogc3ByaW50ZihmaWxubSwgIm5vbmUiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxOiBzcHJpbnRmKGZpbG5tLCAic3ViLSVzIiwgIk1NWCIpOworICAgICAgY2FzZSAxOiBzcHJpbnRmKGZpbG5tLCAic3ViLSVzIiwKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1RIUkVBRF9VTlNBRkVfT0spCisjaWYgIWRlZmluZWQoUE5HXzFfMF9YKQorICAgICAgICAocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIpPyAiTU1YIiA6IAorI2VuZGlmCisjZW5kaWYKKyJ4ODYiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAyOiBzcHJpbnRmKGZpbG5tLCAidXAtJXMiLCAiTU1YIik7CisgICAgICBjYXNlIDI6IHNwcmludGYoZmlsbm0sICJ1cC0lcyIsCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVApPyAiTU1YIiA6CisjZW5kaWYKKyNlbmRpZgorICJ4ODYiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAzOiBzcHJpbnRmKGZpbG5tLCAiYXZnLSVzIiwgIk1NWCIpOworICAgICAgY2FzZSAzOiBzcHJpbnRmKGZpbG5tLCAiYXZnLSVzIiwKKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1RIUkVBRF9VTlNBRkVfT0spCisjaWYgIWRlZmluZWQoUE5HXzFfMF9YKQorICAgICAgICAocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcpPyAiTU1YIiA6CisjZW5kaWYKKyNlbmRpZgorICJ4ODYiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA0OiBzcHJpbnRmKGZpbG5tLCAiUGFldGgtJXMiLCAiTU1YIik7CisgICAgICBjYXNlIDQ6IHNwcmludGYoZmlsbm0sICJQYWV0aC0lcyIsCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19USFJFQURfVU5TQUZFX09LKQorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfUEFFVEgpPyAiTU1YIjoKKyNlbmRpZgorI2VuZGlmCisieDg2Iik7CiAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6IHNwcmludGYoZmlsbm0sICJ1bmtudyIpOwogICAgICAgICAgYnJlYWs7CkBAIC00OTM4LDEwICs1MTMyLDE0IEBACiAgICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1NVQjoKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19USFJFQURfVU5TQUZFX09LKQorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIpICYmCisjZWxzZQorICAgICAgICAgaWYgKAorI2VuZGlmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBwbmdfcHRyLT5tbXhfYml0ZGVwdGhfdGhyZXNob2xkKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9zdWIocm93X2luZm8sIHJvdyk7CiAgICAgICAgICB9CkBAIC00OTY0LDkgKzUxNjIsMTMgQEAKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1VQOgogI2lmIGRlZmluZWQoUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCkKLSAgICAgICAgIGlmICggX21teF9zdXBwb3J0ZWQgJiYKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVApICYmCisjZWxzZQorICAgICAgICAgaWYgKAorI2VuZGlmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBwbmdfcHRyLT5tbXhfYml0ZGVwdGhfdGhyZXNob2xkKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF91cChyb3dfaW5mbywgcm93LCBwcmV2X3Jvdyk7CiAgICAgICAgICB9CkBAIC00OTg3LDEwICs1MTg5LDE0IEBACiAgICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX0FWRzoKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19USFJFQURfVU5TQUZFX09LKQorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcpICYmCisjZWxzZQorICAgICAgICAgaWYgKAorI2VuZGlmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBwbmdfcHRyLT5tbXhfYml0ZGVwdGhfdGhyZXNob2xkKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQpAQCAtNTAyMSwxMCArNTIyNywxNCBAQAogICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9QQUVUSDoKLSNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCi0gICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19USFJFQURfVU5TQUZFX09LKQorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCkgJiYKKyNlbHNlCisgICAgICAgICBpZiAoCisjZW5kaWYKKyAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IHBuZ19wdHItPm1teF9iaXRkZXB0aF90aHJlc2hvbGQpICYmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBwbmdfcHRyLT5tbXhfcm93Ynl0ZXNfdGhyZXNob2xkKSkKICAgICAgICAgIHsKICAgICAgICAgICAgIHBuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X3BhZXRoKHJvd19pbmZvLCByb3csIHByZXZfcm93KTsKICAgICAgICAgIH0KQEAgLTUxMzAsNiArNTM0MCw4IEBACiAgICAgICAgICJwb3BmbCAgICAgICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBtb2RpZmllZCB2YWx1ZSB0byBFZmxhZyByZWcKICAgICAgICAgInB1c2hmbCAgICAgICAgICAgICAgIFxuXHQiICAvLyBzYXZlIEVmbGFnIHRvIHN0YWNrCiAgICAgICAgICJwb3BsICUlZWF4ICAgICAgICAgICBcblx0IiAgLy8gZ2V0IEVmbGFnIGZyb20gc3RhY2sKKyAgICAgICAgInB1c2hsICUlZWN4ICAgICAgICAgIFxuXHQiICAvLyBzYXZlIG9yaWdpbmFsIEVmbGFnIHRvIHN0YWNrCisgICAgICAgICJwb3BmbCAgICAgICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBvcmlnaW5hbCBFZmxhZwogICAgICAgICAieG9ybCAlJWVjeCwgJSVlYXggICAgXG5cdCIgIC8vIGNvbXBhcmUgbmV3IEVmbGFnIHdpdGggb3JpZ2luYWwgRWZsYWcKICAgICAgICAgImp6IC5OT1RfU1VQUE9SVEVEICAgIFxuXHQiICAvLyBpZiBzYW1lLCBDUFVJRCBpbnN0ci4gaXMgbm90IHN1cHBvcnRlZAogCkBAIC01MTc3LDQgKzUzODksNSBAQAogICAgIHJldHVybiBfbW14X3N1cHBvcnRlZDsKIH0KIAorCiAjZW5kaWYgLyogUE5HX1VTRV9QTkdHQ0NSRCAqLwpkaWZmIC0tZ2l0IGEvcG5nZ2V0LmMgYi9wbmdnZXQuYwppbmRleCBjNWE2NDQ0Li4wYjc1YzM1IDEwMDY0NAotLS0gYS9wbmdnZXQuYworKysgYi9wbmdnZXQuYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5nZ2V0LmMgLSByZXRyaWV2YWwgb2YgdmFsdWVzIGZyb20gaW5mbyBzdHJ1Y3QKICAqCi0gKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKi8KQEAgLTU0Nyw3ICs1NDcsMTEgQEAKICAgICAgICp3aWR0aCA9IGluZm9fcHRyLT53aWR0aDsKICAgICAgICpoZWlnaHQgPSBpbmZvX3B0ci0+aGVpZ2h0OwogICAgICAgKmJpdF9kZXB0aCA9IGluZm9fcHRyLT5iaXRfZGVwdGg7CisgICAgICBpZiAoaW5mb19wdHItPmJpdF9kZXB0aCA8IDEgfHwgaW5mb19wdHItPmJpdF9kZXB0aCA+IDE2KQorICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIkludmFsaWQgYml0IGRlcHRoIik7CiAgICAgICAqY29sb3JfdHlwZSA9IGluZm9fcHRyLT5jb2xvcl90eXBlOworICAgICAgaWYgKGluZm9fcHRyLT5jb2xvcl90eXBlID4gNikKKyAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJJbnZhbGlkIGNvbG9yIHR5cGUiKTsKICAgICAgIGlmIChjb21wcmVzc2lvbl90eXBlICE9IE5VTEwpCiAgICAgICAgICAqY29tcHJlc3Npb25fdHlwZSA9IGluZm9fcHRyLT5jb21wcmVzc2lvbl90eXBlOwogICAgICAgaWYgKGZpbHRlcl90eXBlICE9IE5VTEwpCkBAIC01NTYsOSArNTYwLDcgQEAKICAgICAgICAgICppbnRlcmxhY2VfdHlwZSA9IGluZm9fcHRyLT5pbnRlcmxhY2VfdHlwZTsKIAogICAgICAgLyogY2hlY2sgZm9yIHBvdGVudGlhbCBvdmVyZmxvdyBvZiByb3dieXRlcyAqLwotICAgICAgaWYgKCpjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCi0gICAgICAgICBjaGFubmVscyA9IDE7Ci0gICAgICBlbHNlIGlmICgqY29sb3JfdHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKQorICAgICAgaWYgKCpjb2xvcl90eXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpCiAgICAgICAgICBjaGFubmVscyA9IDM7CiAgICAgICBlbHNlCiAgICAgICAgICBjaGFubmVscyA9IDE7CkBAIC01NjYsNiArNTY4LDEwIEBACiAgICAgICAgICBjaGFubmVscysrOwogICAgICAgcGl4ZWxfZGVwdGggPSAqYml0X2RlcHRoICogY2hhbm5lbHM7CiAgICAgICByb3dieXRlc19wZXJfcGl4ZWwgPSAocGl4ZWxfZGVwdGggKyA3KSA+PiAzOworICAgICAgaWYgKHdpZHRoID09IDAgfHwgKndpZHRoID4gUE5HX01BWF9VSU5UKQorICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIkludmFsaWQgaW1hZ2Ugd2lkdGgiKTsKKyAgICAgIGlmIChoZWlnaHQgPT0gMCB8fCAqaGVpZ2h0ID4gUE5HX01BWF9VSU5UKQorICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIkludmFsaWQgaW1hZ2UgaGVpZ2h0Iik7CiAgICAgICBpZiAoKCp3aWR0aCA+IFBOR19NQVhfVUlOVC9yb3dieXRlc19wZXJfcGl4ZWwpKQogICAgICAgewogICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKQEAgLTgyNyw2ICs4MzMsNyBAQAogfQogCiAKKyNpZm5kZWYgUE5HXzFfMF9YCiAjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAogLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wIGFuZCBzaG91bGQgZXhpc3QgYnkgZGVmYXVsdCovCiBwbmdfdWludF8zMiBQTkdBUEkKQEAgLTkxNSwzICs5MjIsNCBAQAogICAgIHJldHVybiAocG5nX3VpbnRfMzIpKHBuZ19wdHI/IHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQgOiAwTCk7CiB9CiAjZW5kaWYgLyogUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCAqLworI2VuZGlmIC8qIFBOR18xXzBfWCAqLwpkaWZmIC0tZ2l0IGEvcG5nbWVtLmMgYi9wbmdtZW0uYwppbmRleCAzZDA4NmJhLi42ZTQ2YzBjIDEwMDY0NAotLS0gYS9wbmdtZW0uYworKysgYi9wbmdtZW0uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5nbWVtLmMgLSBzdHViIGZ1bmN0aW9ucyBmb3IgbWVtb3J5IGFsbG9jYXRpb24KICAqCi0gKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKgpAQCAtMjcsNyArMjcsNyBAQAogcG5nX2NyZWF0ZV9zdHJ1Y3QoaW50IHR5cGUpCiB7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgcmV0dXJuIChwbmdfY3JlYXRlX3N0cnVjdF8yKHR5cGUsIE5VTEwsIE5VTEwpKTsKKyAgIHJldHVybiAocG5nX2NyZWF0ZV9zdHJ1Y3RfMih0eXBlLCBwbmdfbWFsbG9jX3B0cl9OVUxMLCBwbmdfdm9pZHBfTlVMTCkpOwogfQogCiAvKiBBbHRlcm5hdGUgdmVyc2lvbiBvZiBwbmdfY3JlYXRlX3N0cnVjdCwgZm9yIHVzZSB3aXRoIHVzZXItZGVmaW5lZCBtYWxsb2MuICovCkBAIC00MywzOSArNDMsMzAgQEAKICAgIGVsc2UgaWYgKHR5cGUgPT0gUE5HX1NUUlVDVF9QTkcpCiAgICAgIHNpemUgPSBzaXplb2YocG5nX3N0cnVjdCk7CiAgICBlbHNlCi0gICAgIHJldHVybiAoKHBuZ192b2lkcClOVUxMKTsKKyAgICAgcmV0dXJuIChwbmdfZ2V0X2NvcHlyaWdodCgpKTsKIAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICAgIGlmKG1hbGxvY19mbiAhPSBOVUxMKQogICAgewotICAgICAgaWYgKG1lbV9wdHIgIT0gTlVMTCkKLSAgICAgIHsKLSAgICAgICAgIHBuZ19zdHJ1Y3QgZHVtbXlfc3RydWN0OwotICAgICAgICAgcG5nX3N0cnVjdHAgcG5nX3B0ciA9ICZkdW1teV9zdHJ1Y3Q7Ci0gICAgICAgICBwbmdfcHRyLT5tZW1fcHRyPW1lbV9wdHI7Ci0gICAgICAgICBzdHJ1Y3RfcHRyID0gKCoobWFsbG9jX2ZuKSkocG5nX3B0ciwgc2l6ZSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICBzdHJ1Y3RfcHRyID0gKCoobWFsbG9jX2ZuKSkoTlVMTCwgc2l6ZSk7Ci0gICAgICBpZiAoc3RydWN0X3B0ciAhPSBOVUxMKQotICAgICAgICAgcG5nX21lbXNldChzdHJ1Y3RfcHRyLCAwLCBzaXplKTsKLSAgICAgIHJldHVybiAoc3RydWN0X3B0cik7CisgICAgICBwbmdfc3RydWN0IGR1bW15X3N0cnVjdDsKKyAgICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSAmZHVtbXlfc3RydWN0OworICAgICAgcG5nX3B0ci0+bWVtX3B0cj1tZW1fcHRyOworICAgICAgc3RydWN0X3B0ciA9ICgqKG1hbGxvY19mbikpKHBuZ19wdHIsIChwbmdfdWludF8zMilzaXplKTsKICAgIH0KKyAgIGVsc2UKICNlbmRpZiAvKiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVEICovCi0gICBpZiAoKHN0cnVjdF9wdHIgPSAocG5nX3ZvaWRwKWZhcm1hbGxvYyhzaXplKSkgIT0gTlVMTCkKLSAgIHsKKyAgICAgIHN0cnVjdF9wdHIgPSAocG5nX3ZvaWRwKWZhcm1hbGxvYyhzaXplKSk7CisgICBpZiAoc3RydWN0X3B0ciAhPSBOVUxMKQogICAgICAgcG5nX21lbXNldChzdHJ1Y3RfcHRyLCAwLCBzaXplKTsKLSAgIH0KICAgIHJldHVybiAoc3RydWN0X3B0cik7CiB9CiAKLQogLyogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGEgcG5nX2NyZWF0ZV9zdHJ1Y3QoKSBjYWxsICovCiB2b2lkIC8qIFBSSVZBVEUgKi8KIHBuZ19kZXN0cm95X3N0cnVjdChwbmdfdm9pZHAgc3RydWN0X3B0cikKIHsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICBwbmdfZGVzdHJveV9zdHJ1Y3RfMihzdHJ1Y3RfcHRyLCAocG5nX2ZyZWVfcHRyKU5VTEwsIChwbmdfdm9pZHApTlVMTCk7CisgICBwbmdfZGVzdHJveV9zdHJ1Y3RfMihzdHJ1Y3RfcHRyLCBwbmdfZnJlZV9wdHJfTlVMTCwgcG5nX3ZvaWRwX05VTEwpOwogfQogCiAvKiBGcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgYSBwbmdfY3JlYXRlX3N0cnVjdCgpIGNhbGwgKi8KQEAgLTEyNiwxMyArMTE3LDEzIEBACiAgICBwbmdfdm9pZHAgcmV0OwogI2VuZGlmCiAgICBpZiAocG5nX3B0ciA9PSBOVUxMIHx8IHNpemUgPT0gMCkKLSAgICAgIHJldHVybiAoKHBuZ192b2lkcClOVUxMKTsKKyAgICAgIHJldHVybiAoTlVMTCk7CiAKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICBpZihwbmdfcHRyLT5tYWxsb2NfZm4gIT0gTlVMTCkKICAgIHsKLSAgICAgICByZXQgPSAoKHBuZ192b2lkcCkoKihwbmdfcHRyLT5tYWxsb2NfZm4pKShwbmdfcHRyLCBzaXplKSk7Ci0gICAgICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgIHJldCA9ICgocG5nX3ZvaWRwKSgqKHBuZ19wdHItPm1hbGxvY19mbikpKHBuZ19wdHIsIChwbmdfc2l6ZV90KXNpemUpKTsKKyAgICAgICBpZiAocmV0ID09IE5VTEwgJiYgKHBuZ19wdHItPmZsYWdzJlBOR19GTEFHX01BTExPQ19OVUxMX01FTV9PSykgPT0gMCkKICAgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBvZiBtZW1vcnkhIik7CiAgICAgICAgcmV0dXJuIChyZXQpOwogICAgfQpAQCAtMTg2LDEyICsxNzcsMjIgQEAKIAogICAgICAgICAgICAgaWYgKHRhYmxlID09IE5VTEwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBPZiBNZW1vcnkuIik7IC8qIE5vdGUgIk8iIGFuZCAiTSIgKi8KKyAgICAgICAgICAgICAgIGlmIChwbmdfcHRyLT5mbGFncyZQTkdfRkxBR19NQUxMT0NfTlVMTF9NRU1fT0spID09IDApCisgICAgICAgICAgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBPZiBNZW1vcnkuIik7IC8qIE5vdGUgIk8iIGFuZCAiTSIgKi8KKyAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJPdXQgT2YgTWVtb3J5LiIpOworICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKChwbmdfc2l6ZV90KXRhYmxlICYgMHhmZmYwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJGYXJtYWxsb2MgZGlkbid0IHJldHVybiBub3JtYWxpemVkIHBvaW50ZXIiKTsKKyAgICAgICAgICAgICAgIGlmIChwbmdfcHRyLT5mbGFncyZQTkdfRkxBR19NQUxMT0NfTlVMTF9NRU1fT0spID09IDApCisgICAgICAgICAgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgIkZhcm1hbGxvYyBkaWRuJ3QgcmV0dXJuIG5vcm1hbGl6ZWQgcG9pbnRlciIpOworICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgIkZhcm1hbGxvYyBkaWRuJ3QgcmV0dXJuIG5vcm1hbGl6ZWQgcG9pbnRlciIpOworICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcG5nX3B0ci0+b2Zmc2V0X3RhYmxlID0gdGFibGU7CkBAIC0yMDAsNyArMjAxLDExIEBACiAKICAgICAgICAgICAgIGlmIChwbmdfcHRyLT5vZmZzZXRfdGFibGVfcHRyID09IE5VTEwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBPZiBtZW1vcnkuIik7CisgICAgICAgICAgICAgICBpZiAocG5nX3B0ci0+ZmxhZ3MmUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKSA9PSAwKQorICAgICAgICAgICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJPdXQgT2YgbWVtb3J5LiIpOyAvKiBOb3RlICJPIiBhbmQgIk0iICovCisgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiT3V0IE9mIG1lbW9yeS4iKTsKKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGhwdHIgPSAocG5nX2J5dGUgaHVnZSAqKXRhYmxlOwpAQCAtMjIyLDcgKzIyNywxMyBAQAogICAgICAgfQogCiAgICAgICBpZiAocG5nX3B0ci0+b2Zmc2V0X3RhYmxlX2NvdW50ID49IHBuZ19wdHItPm9mZnNldF90YWJsZV9udW1iZXIpCi0gICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBvZiBNZW1vcnkuIik7CisgICAgICB7CisgICAgICAgICBpZiAocG5nX3B0ci0+ZmxhZ3MmUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKSA9PSAwKQorICAgICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJPdXQgb2YgTWVtb3J5LiIpOyAvKiBOb3RlICJvIiBhbmQgIk0iICovCisgICAgICAgICBlbHNlCisgICAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiT3V0IG9mIE1lbW9yeS4iKTsKKyAgICAgICAgIHJldHVybiAoTlVMTCk7CisgICAgICB9CiAKICAgICAgIHJldCA9IHBuZ19wdHItPm9mZnNldF90YWJsZV9wdHJbcG5nX3B0ci0+b2Zmc2V0X3RhYmxlX2NvdW50KytdOwogICAgfQpAQCAtMjMxLDcgKzI0MiwxMCBAQAogCiAgICBpZiAocmV0ID09IE5VTEwpCiAgICB7Ci0gICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBvZiBtZW1vcnkuIik7IC8qIE5vdGUgIm8iIGFuZCAibSIgKi8KKyAgICAgIGlmIChwbmdfcHRyLT5mbGFncyZQTkdfRkxBR19NQUxMT0NfTlVMTF9NRU1fT0spID09IDApCisgICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIk91dCBvZiBtZW1vcnkuIik7IC8qIE5vdGUgIm8iIGFuZCAibSIgKi8KKyAgICAgIGVsc2UKKyAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJPdXQgb2YgbWVtb3J5LiIpOyAvKiBOb3RlICJvIiBhbmQgIm0iICovCiAgICB9CiAKICAgIHJldHVybiAocmV0KTsKQEAgLTI5Nyw3ICszMTEsNyBAQAogcG5nX2NyZWF0ZV9zdHJ1Y3QoaW50IHR5cGUpCiB7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgcmV0dXJuIChwbmdfY3JlYXRlX3N0cnVjdF8yKHR5cGUsIE5VTEwsIE5VTEwpKTsKKyAgIHJldHVybiAocG5nX2NyZWF0ZV9zdHJ1Y3RfMih0eXBlLCBwbmdfbWFsbG9jX3B0cl9OVUxMLCBwbmdfdm9pZHBfTlVMTCkpOwogfQogCiAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIGEgcG5nX3N0cnVjdCBvciBhIHBuZ19pbmZvLiAgVGhlIG1hbGxvYyBhbmQKQEAgLTMxNSwyMCArMzI5LDE1IEBACiAgICBlbHNlIGlmICh0eXBlID09IFBOR19TVFJVQ1RfUE5HKQogICAgICAgc2l6ZSA9IHNpemVvZihwbmdfc3RydWN0KTsKICAgIGVsc2UKLSAgICAgIHJldHVybiAoKHBuZ192b2lkcClOVUxMKTsKKyAgICAgIHJldHVybiAoTlVMTCk7CiAKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICBpZihtYWxsb2NfZm4gIT0gTlVMTCkKICAgIHsKLSAgICAgIGlmIChtZW1fcHRyICE9IE5VTEwpCi0gICAgICB7Ci0gICAgICAgICBwbmdfc3RydWN0IGR1bW15X3N0cnVjdDsKLSAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSAmZHVtbXlfc3RydWN0OwotICAgICAgICAgcG5nX3B0ci0+bWVtX3B0cj1tZW1fcHRyOwotICAgICAgICAgc3RydWN0X3B0ciA9ICgqKG1hbGxvY19mbikpKHBuZ19wdHIsIHNpemUpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgc3RydWN0X3B0ciA9ICgqKG1hbGxvY19mbikpKE5VTEwsIHNpemUpOworICAgICAgcG5nX3N0cnVjdCBkdW1teV9zdHJ1Y3Q7CisgICAgICBwbmdfc3RydWN0cCBwbmdfcHRyID0gJmR1bW15X3N0cnVjdDsKKyAgICAgIHBuZ19wdHItPm1lbV9wdHI9bWVtX3B0cjsKKyAgICAgIHN0cnVjdF9wdHIgPSAoKihtYWxsb2NfZm4pKShwbmdfcHRyLCBzaXplKTsKICAgICAgIGlmIChzdHJ1Y3RfcHRyICE9IE5VTEwpCiAgICAgICAgICBwbmdfbWVtc2V0KHN0cnVjdF9wdHIsIDAsIHNpemUpOwogICAgICAgcmV0dXJuIChzdHJ1Y3RfcHRyKTsKQEAgLTM1Nyw3ICszNjYsNyBAQAogcG5nX2Rlc3Ryb3lfc3RydWN0KHBuZ192b2lkcCBzdHJ1Y3RfcHRyKQogewogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKHN0cnVjdF9wdHIsIChwbmdfZnJlZV9wdHIpTlVMTCwgKHBuZ192b2lkcClOVUxMKTsKKyAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKHN0cnVjdF9wdHIsIHBuZ19mcmVlX3B0cl9OVUxMLCBwbmdfdm9pZHBfTlVMTCk7CiB9CiAKIC8qIEZyZWUgbWVtb3J5IGFsbG9jYXRlZCBieSBhIHBuZ19jcmVhdGVfc3RydWN0KCkgY2FsbCAqLwpAQCAtNDAyLDIwICs0MTEsMjAgQEAKIHsKICAgIHBuZ192b2lkcCByZXQ7CiAgICBpZiAocG5nX3B0ciA9PSBOVUxMIHx8IHNpemUgPT0gMCkKLSAgICAgIHJldHVybiAoKHBuZ192b2lkcClOVUxMKTsKKyAgICAgIHJldHVybiAoTlVMTCk7CiAKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICBpZihwbmdfcHRyLT5tYWxsb2NfZm4gIT0gTlVMTCkKICAgIHsKICAgICAgICByZXQgPSAoKHBuZ192b2lkcCkoKihwbmdfcHRyLT5tYWxsb2NfZm4pKShwbmdfcHRyLCBzaXplKSk7Ci0gICAgICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgIGlmIChyZXQgPT0gTlVMTCAmJiAocG5nX3B0ci0+ZmxhZ3MmUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKSA9PSAwKQogICAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiT3V0IG9mIE1lbW9yeSEiKTsKICAgICAgICByZXR1cm4gKHJldCk7CiAgICB9CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIChwbmdfbWFsbG9jX2RlZmF1bHQocG5nX3B0ciwgc2l6ZSkpOwogfQotcG5nX3ZvaWRwIC8qIFBSSVZBVEUgKi8KK3BuZ192b2lkcCBQTkdBUEkKIHBuZ19tYWxsb2NfZGVmYXVsdChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdWludF8zMiBzaXplKQogewogICAgcG5nX3ZvaWRwIHJldDsKQEAgLTQyMyw3ICs0MzIsMTIgQEAKIAogI2lmZGVmIFBOR19NQVhfTUFMTE9DXzY0SwogICAgaWYgKHNpemUgPiAocG5nX3VpbnRfMzIpNjU1MzZMKQotICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJDYW5ub3QgQWxsb2NhdGUgPiA2NEsiKTsKKyAgIHsKKyAgICAgIGlmKHBuZ19wdHItPmZsYWdzJlBOR19GTEFHX01BTExPQ19OVUxMX01FTV9PSykgPT0gMCkKKyAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiQ2Fubm90IEFsbG9jYXRlID4gNjRLIik7CisgICAgICBlbHNlCisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX1RVUkJPQ19fKSAmJiAhZGVmaW5lZChfX0ZMQVRfXykKQEAgLTQzNiw3ICs0NTAsNyBAQAogIyBlbmRpZgogI2VuZGlmCiAKLSAgIGlmIChyZXQgPT0gTlVMTCkKKyAgIGlmIChyZXQgPT0gTlVMTCAmJiAocG5nX3B0ci0+ZmxhZ3MmUE5HX0ZMQUdfTUFMTE9DX05VTExfTUVNX09LKSA9PSAwKQogICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJPdXQgb2YgTWVtb3J5Iik7CiAKICAgIHJldHVybiAocmV0KTsKQEAgLTQ1OCw3ICs0NzIsNyBAQAogICAgfQogICAgZWxzZSBwbmdfZnJlZV9kZWZhdWx0KHBuZ19wdHIsIHB0cik7CiB9Ci12b2lkIC8qIFBSSVZBVEUgKi8KK3ZvaWQgUE5HQVBJCiBwbmdfZnJlZV9kZWZhdWx0KHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ192b2lkcCBwdHIpCiB7CiAgICBpZiAocG5nX3B0ciA9PSBOVUxMIHx8IHB0ciA9PSBOVUxMKQpAQCAtNDc5LDcgKzQ5Myw3IEBACiAKICNlbmRpZiAvKiBOb3QgQm9ybGFuZCBET1Mgc3BlY2lhbCBtZW1vcnkgaGFuZGxlciAqLwogCi1wbmdfdm9pZHAgLyogUFJJVkFURSAqLworcG5nX3ZvaWRwIFBOR0FQSQogcG5nX21lbWNweV9jaGVjayAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHMxLCBwbmdfdm9pZHAgczIsCiAgICBwbmdfdWludF8zMiBsZW5ndGgpCiB7CkBAIC00OTIsNyArNTA2LDcgQEAKICAgIHJldHVybihwbmdfbWVtY3B5IChzMSwgczIsIHNpemUpKTsKIH0KIAotcG5nX3ZvaWRwIC8qIFBSSVZBVEUgKi8KK3BuZ192b2lkcCBQTkdBUEkKIHBuZ19tZW1zZXRfY2hlY2sgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ192b2lkcCBzMSwgaW50IHZhbHVlLAogICAgcG5nX3VpbnRfMzIgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvcG5ncHJlYWQuYyBiL3BuZ3ByZWFkLmMKaW5kZXggMzA5ZmMyOC4uYmU4NTlkYSAxMDA2NDQKLS0tIGEvcG5ncHJlYWQuYworKysgYi9wbmdwcmVhZC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmdwcmVhZC5jIC0gcmVhZCBhIHBuZyBmaWxlIGluIHB1c2ggbW9kZQogICoKLSAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQorICogbGlicG5nIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqLwpAQCAtMjQwLDYgKzI0MCwxMiBAQAogICAgICAgICogaGVhZGVyIGNodW5rcywgYW5kIHdlIGNhbiBzdGFydCByZWFkaW5nIHRoZSBpbWFnZSAob3IgaWYgdGhpcwogICAgICAgICogaXMgY2FsbGVkIGFmdGVyIHRoZSBpbWFnZSBoYXMgYmVlbiByZWFkIC0gd2UgaGF2ZSBhbiBlcnJvcikuCiAgICAgICAgKi8KKyAgICAgaWYgKCEocG5nX3B0ci0+bW9kZSAmIFBOR19IQVZFX0lIRFIpKQorICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiTWlzc2luZyBJSERSIGJlZm9yZSBJREFUIik7CisgICAgIGVsc2UgaWYgKHBuZ19wdHItPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSAmJgorCSAgICAgICEocG5nX3B0ci0+bW9kZSAmIFBOR19IQVZFX1BMVEUpKQorICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiTWlzc2luZyBQTFRFIGJlZm9yZSBJREFUIik7CisKICAgICAgIGlmIChwbmdfcHRyLT5tb2RlICYgUE5HX0hBVkVfSURBVCkKICAgICAgIHsKICAgICAgICAgIGlmIChwbmdfcHRyLT5wdXNoX2xlbmd0aCA9PSAwKQpAQCAtNzkyLDcgKzc5OCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNCAmJiBwbmdfcHRyLT5wYXNzID09IDI7IGkrKykKICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIE5VTEwpOworICAgICAgICAgICAgICAgICAgcG5nX3B1c2hfaGF2ZV9yb3cocG5nX3B0ciwgcG5nX2J5dGVwX05VTEwpOwogICAgICAgICAgICAgICAgICAgcG5nX3JlYWRfcHVzaF9maW5pc2hfcm93KHBuZ19wdHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtODAwLDEzICs4MDYsMTMgQEAKIAkgICAgewogCSAgICAgICAgZm9yIChpID0gMDsgaSA8IDIgJiYgcG5nX3B0ci0+cGFzcyA9PSA0OyBpKyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIE5VTEwpOworICAgICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHBuZ19wdHItPnBhc3MgPT0gNiAmJiBwbmdfcHRyLT5oZWlnaHQgPD0gNCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBwbmdfYnl0ZXBfTlVMTCk7CiAgICAgICAgICAgICAgICAgcG5nX3JlYWRfcHVzaF9maW5pc2hfcm93KHBuZ19wdHIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC04MjMsNyArODI5LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0ICYmIHBuZ19wdHItPnBhc3MgPT0gMjsgaSsrKQogICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcG5nX3B1c2hfaGF2ZV9yb3cocG5nX3B0ciwgTlVMTCk7CisgICAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBwbmdfYnl0ZXBfTlVMTCk7CiAgICAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04MzksMTQgKzg0NSwxNCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgcG5nX3B0ci0+cGFzcyA9PSAyOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChwbmdfcHRyLT5wYXNzID09IDQpIC8qIHBhc3MgMyBtaWdodCBiZSBlbXB0eSAqLwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDIgJiYgcG5nX3B0ci0+cGFzcyA9PSA0OyBpKyspCiAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTg2NCw3ICs4NzAsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDIgJiYgcG5nX3B0ci0+cGFzcyA9PSA0OyBpKyspCiAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTg4MCwxMiArODg2LDEyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMiAmJiBwbmdfcHRyLT5wYXNzID09IDQ7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIE5VTEwpOworICAgICAgICAgICAgICAgcG5nX3B1c2hfaGF2ZV9yb3cocG5nX3B0ciwgcG5nX2J5dGVwX05VTEwpOwogICAgICAgICAgICAgICAgcG5nX3JlYWRfcHVzaF9maW5pc2hfcm93KHBuZ19wdHIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHBuZ19wdHItPnBhc3MgPT0gNikgLyogcGFzcyA1IG1pZ2h0IGJlIGVtcHR5ICovCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTAwLDcgKzkwNiw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSA2KSAvKiBza2lwIHRvcCBnZW5lcmF0ZWQgcm93ICovCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTExLDcgKzkxNyw3IEBACiAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyAhPSA2KQogICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKKyAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgIH0KICAgICAgIH0KQEAgLTEwNzIsOCArMTA3OCw4IEBACiAgICAgICB0ZXh0X3B0ci0+Y29tcHJlc3Npb24gPSBQTkdfVEVYVF9DT01QUkVTU0lPTl9OT05FOwogICAgICAgdGV4dF9wdHItPmtleSA9IGtleTsKICNpZmRlZiBQTkdfaVRYdF9TVVBQT1JURUQKLSAgICAgIHRleHRfcHRyLT5sYW5nID0gKGNoYXIgKilOVUxMOwotICAgICAgdGV4dF9wdHItPmxhbmdfa2V5ID0gKGNoYXIgKilOVUxMOworICAgICAgdGV4dF9wdHItPmxhbmcgPSBOVUxMOworICAgICAgdGV4dF9wdHItPmxhbmdfa2V5ID0gTlVMTDsKICNlbmRpZgogICAgICAgdGV4dF9wdHItPnRleHQgPSB0ZXh0OwogCkBAIC0xMjU3LDggKzEyNjMsOCBAQAogICAgICAgdGV4dF9wdHItPmNvbXByZXNzaW9uID0gUE5HX1RFWFRfQ09NUFJFU1NJT05felRYdDsKICAgICAgIHRleHRfcHRyLT5rZXkgPSBrZXk7CiAjaWZkZWYgUE5HX2lUWHRfU1VQUE9SVEVECi0gICAgICB0ZXh0X3B0ci0+bGFuZyA9IChjaGFyICopTlVMTDsKLSAgICAgIHRleHRfcHRyLT5sYW5nX2tleSA9IChjaGFyICopTlVMTDsKKyAgICAgIHRleHRfcHRyLT5sYW5nID0gTlVMTDsKKyAgICAgIHRleHRfcHRyLT5sYW5nX2tleSA9IE5VTEw7CiAjZW5kaWYKICAgICAgIHRleHRfcHRyLT50ZXh0ID0gdGV4dDsKIApAQCAtMTQ5MSw3ICsxNDk3LDcgQEAKICAgIHBuZ19wdHItPnJvd19mbiA9IHJvd19mbjsKICAgIHBuZ19wdHItPmVuZF9mbiA9IGVuZF9mbjsKIAotICAgcG5nX3NldF9yZWFkX2ZuKHBuZ19wdHIsIHByb2dyZXNzaXZlX3B0ciwgcG5nX3B1c2hfZmlsbF9idWZmZXIpOworICAgcG5nX3NldF9yZWFkX2ZuKHBuZ19wdHIsIHByb2dyZXNzaXZlX3B0ciwgKHBuZ19yd19wdHIpcG5nX3B1c2hfZmlsbF9idWZmZXIpOwogfQogCiBwbmdfdm9pZHAgUE5HQVBJCkBAIC0xNDk5LDYgKzE1MDUsNCBAQAogewogICAgcmV0dXJuIHBuZ19wdHItPmlvX3B0cjsKIH0KLQogI2VuZGlmIC8qIFBOR19QUk9HUkVTU0lWRV9SRUFEX1NVUFBPUlRFRCAqLwotCmRpZmYgLS1naXQgYS9wbmdyZWFkLmMgYi9wbmdyZWFkLmMKaW5kZXggZjQ1NjdjNC4uYzM5NTRlNSAxMDA2NDQKLS0tIGEvcG5ncmVhZC5jCisrKyBiL3BuZ3JlYWQuYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5ncmVhZC5jIC0gcmVhZCBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICAgIHJldHVybiAocG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yKHVzZXJfcG5nX3ZlciwgZXJyb3JfcHRyLCBlcnJvcl9mbiwKLSAgICAgIHdhcm5fZm4sIE5VTEwsIE5VTEwsIE5VTEwpKTsKKyAgICAgIHdhcm5fZm4sIHBuZ192b2lkcF9OVUxMLCBwbmdfbWFsbG9jX3B0cl9OVUxMLCBwbmdfZnJlZV9wdHJfTlVMTCkpOwogfQogCiAvKiBBbHRlcm5hdGUgY3JlYXRlIFBORyBzdHJ1Y3R1cmUgZm9yIHJlYWRpbmcsIGFuZCBhbGxvY2F0ZSBhbnkgbWVtb3J5IG5lZWRlZC4gKi8KQEAgLTQ1LDE0ICs0NSwxOSBAQAogCiAgICBwbmdfZGVidWcoMSwgImluIHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3RcbiIpOwogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIGlmICgocG5nX3B0ciA9IChwbmdfc3RydWN0cClwbmdfY3JlYXRlX3N0cnVjdF8yKFBOR19TVFJVQ1RfUE5HLAotICAgICAgKHBuZ19tYWxsb2NfcHRyKW1hbGxvY19mbiwgKHBuZ192b2lkcCltZW1fcHRyKSkgPT0gTlVMTCkKKyAgIHBuZ19wdHIgPSAocG5nX3N0cnVjdHApcG5nX2NyZWF0ZV9zdHJ1Y3RfMihQTkdfU1RSVUNUX1BORywKKyAgICAgIChwbmdfbWFsbG9jX3B0ciltYWxsb2NfZm4sIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQotICAgaWYgKChwbmdfcHRyID0gKHBuZ19zdHJ1Y3RwKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfUE5HKSkgPT0gTlVMTCkKKyAgIHBuZ19wdHIgPSAocG5nX3N0cnVjdHApcG5nX2NyZWF0ZV9zdHJ1Y3QoUE5HX1NUUlVDVF9QTkcpOwogI2VuZGlmCi0gICB7Ci0gICAgICByZXR1cm4gKHBuZ19zdHJ1Y3RwKU5VTEw7Ci0gICB9CisgICBpZiAocG5nX3B0ciA9PSBOVUxMKQorICAgICAgcmV0dXJuIChOVUxMKTsKKworI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyNpZmRlZiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECisgICBwbmdfaW5pdF9tbXhfZmxhZ3MocG5nX3B0cik7ICAgLyogMS4yLjAgYWRkaXRpb24gKi8KKyNlbmRpZgorI2VuZGlmIC8qIFBOR18xXzBfWCAqLwogCiAjaWZkZWYgUE5HX1NFVEpNUF9TVVBQT1JURUQKICNpZmRlZiBVU0VfRkFSX0tFWVdPUkQKQEAgLTYzLDggKzY4LDE0IEBACiAgICB7CiAgICAgICBwbmdfZnJlZShwbmdfcHRyLCBwbmdfcHRyLT56YnVmKTsKICAgICAgIHBuZ19wdHItPnpidWY9TlVMTDsKLSAgICAgIHBuZ19kZXN0cm95X3N0cnVjdChwbmdfcHRyKTsKLSAgICAgIHJldHVybiAocG5nX3N0cnVjdHApTlVMTDsKKyNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECisgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3RfMigocG5nX3ZvaWRwKXBuZ19wdHIsIAorCQkJICAgKHBuZ19mcmVlX3B0cilmcmVlX2ZuLAorCQkJICAgKHBuZ192b2lkcCltZW1fcHRyKTsKKyNlbHNlCisgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClwbmdfcHRyKTsKKyNlbmRpZgorICAgICAgcmV0dXJuIChOVUxMKTsKICAgIH0KICNpZmRlZiBVU0VfRkFSX0tFWVdPUkQKICAgIHBuZ19tZW1jcHkocG5nX3B0ci0+am1wYnVmLGptcGJ1ZixzaXplb2Yoam1wX2J1ZikpOwpAQCAtOTUsMjMgKzEwNiwyNCBAQAogICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMScgJiYgdXNlcl9wbmdfdmVyWzJdICE9IHBuZ19saWJwbmdfdmVyWzJdKSB8fAogICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMCcgJiYgdXNlcl9wbmdfdmVyWzJdIDwgJzknKSkKICAgICAgeworI2lmICFkZWZpbmVkKFBOR19OT19TVERJTykgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKKyAgICAgICAgY2hhciBtc2dbODBdOworICAgICAgICBpZiAodXNlcl9wbmdfdmVyKQorICAgICAgICB7CisgICAgICAgICAgc3ByaW50Zihtc2csICJBcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBwbmcuaCBmcm9tIGxpYnBuZy0lLjIwcyIsCisgICAgICAgICAgICAgdXNlcl9wbmdfdmVyKTsKKyAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCBtc2cpOworICAgICAgICB9CisgICAgICAgIHNwcmludGYobXNnLCAiQXBwbGljYXRpb24gIGlzICBydW5uaW5nIHdpdGggcG5nLmMgZnJvbSBsaWJwbmctJS4yMHMiLAorICAgICAgICAgICBwbmdfbGlicG5nX3Zlcik7CisgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsIG1zZyk7CisjZW5kaWYKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgICAgICAgcG5nX3B0ci0+ZmxhZ3M9MDsKKyNlbmRpZgogICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKICAgICAgICAgICAgIkluY29tcGF0aWJsZSBsaWJwbmcgdmVyc2lvbiBpbiBhcHBsaWNhdGlvbiBhbmQgbGlicmFyeSIpOwogICAgICB9Ci0KLSAgICAgLyogTGlicG5nIDEuMC42IHdhcyBub3QgYmluYXJ5IGNvbXBhdGlibGUsIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlCi0gICAgICAgIGluZm9fcHRyLT5mcmVlX21lIG1lbWJlci4gIExpYnBuZy0xLjAuMSBhbmQgZWFybGllciB3ZXJlIG5vdAotICAgICAgICBjb21wYXRpYmxlIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlIHVzZXIgdHJhbnNmb3JtIGZ1bmN0aW9uLiBOb3RlCi0gICAgICAgIHRvIG1haW50YWluZXI6IHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHZlcnNpb24gMS4yLjAgYW5kCi0gICAgICAgIGJleW9uZCBiZWNhdXNlIHRoZSBwcmV2aW91cyB0ZXN0IHdvdWxkIGhhdmUgYWxyZWFkeSByZWplY3RlZCBpdC4gKi8KLQotICAgICBpZiAodXNlcl9wbmdfdmVyWzBdID09ICcxJyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCi0gICAgICAgICAodXNlcl9wbmdfdmVyWzRdIDwgICcyJyB8fCB1c2VyX3BuZ192ZXJbNF0gPT0gJzYnKSAmJgotICAgICAgICAgdXNlcl9wbmdfdmVyWzVdID09ICdcMCcpCi0gICAgIHsKLSAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICJBcHBsaWNhdGlvbiBtdXN0IGJlIHJlY29tcGlsZWQ7IHZlcnNpb25zIDw9IDEuMC42IHdlcmUgaW5jb21wYXRpYmxlIik7Ci0gICAgIH0KICAgIH0KIAogICAgLyogaW5pdGlhbGl6ZSB6YnVmIC0gY29tcHJlc3Npb24gYnVmZmVyICovCkBAIC0xMzQsNyArMTQ2LDcgQEAKICAgIHBuZ19wdHItPnpzdHJlYW0ubmV4dF9vdXQgPSBwbmdfcHRyLT56YnVmOwogICAgcG5nX3B0ci0+enN0cmVhbS5hdmFpbF9vdXQgPSAodUludClwbmdfcHRyLT56YnVmX3NpemU7CiAKLSAgIHBuZ19zZXRfcmVhZF9mbihwbmdfcHRyLCBOVUxMLCBOVUxMKTsKKyAgIHBuZ19zZXRfcmVhZF9mbihwbmdfcHRyLCBwbmdfdm9pZHBfTlVMTCwgcG5nX3J3X3B0cl9OVUxMKTsKIAogICAgcmV0dXJuIChwbmdfcHRyKTsKIH0KQEAgLTE0Nyw3ICsxNTksNyBAQAogcG5nX3JlYWRfaW5pdChwbmdfc3RydWN0cCBwbmdfcHRyKQogewogICAgLyogV2Ugb25seSBjb21lIGhlcmUgdmlhIHByZS0xLjAuNy1jb21waWxlZCBhcHBsaWNhdGlvbnMgKi8KLSAgIHBuZ19yZWFkX2luaXRfMihwbmdfcHRyLCAiMS4wLjAiLCAwLCAwKTsKKyAgIHBuZ19yZWFkX2luaXRfMihwbmdfcHRyLCAiMS4wLjYgb3IgZWFybGllciIsIDAsIDApOwogfQogCiAjdW5kZWYgcG5nX3JlYWRfaW5pdF8yCkBAIC0xNTYsMTUgKzE2OCwzNyBAQAogICAgcG5nX3NpemVfdCBwbmdfc3RydWN0X3NpemUsIHBuZ19zaXplX3QgcG5nX2luZm9fc2l6ZSkKIHsKICAgIC8qIFdlIG9ubHkgY29tZSBoZXJlIHZpYSBwcmUtMS4wLjEyLWNvbXBpbGVkIGFwcGxpY2F0aW9ucyAqLworI2lmICFkZWZpbmVkKFBOR19OT19TVERJTykgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKKyAgIGlmKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSB8fCBzaXplb2YocG5nX2luZm8pID4gcG5nX2luZm9fc2l6ZSkKKyAgIHsKKyAgICAgIGNoYXIgbXNnWzgwXTsKKyAgICAgIHBuZ19wdHItPndhcm5pbmdfZm49TlVMTDsKKyAgICAgIGlmICh1c2VyX3BuZ192ZXIpCisgICAgICB7CisgICAgICAgIHNwcmludGYobXNnLCAiQXBwbGljYXRpb24gd2FzIGNvbXBpbGVkIHdpdGggcG5nLmggZnJvbSBsaWJwbmctJS4yMHMiLAorICAgICAgICAgICB1c2VyX3BuZ192ZXIpOworICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCBtc2cpOworICAgICAgfQorICAgICAgc3ByaW50Zihtc2csICJBcHBsaWNhdGlvbiAgaXMgIHJ1bm5pbmcgd2l0aCBwbmcuYyBmcm9tIGxpYnBuZy0lLjIwcyIsCisgICAgICAgICBwbmdfbGlicG5nX3Zlcik7CisgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCBtc2cpOworICAgfQorI2VuZGlmCiAgICBpZihzaXplb2YocG5nX3N0cnVjdCkgPiBwbmdfc3RydWN0X3NpemUpCiAgICAgIHsKLSAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOworICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPU5VTEw7CisjaWZkZWYgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECisgICAgICAgcG5nX3B0ci0+ZmxhZ3M9MDsKKyNlbmRpZgogICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAogICAgICAgICJUaGUgcG5nIHN0cnVjdCBhbGxvY2F0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciByZWFkaW5nIGlzIHRvbyBzbWFsbC4iKTsKICAgICAgfQogICAgaWYoc2l6ZW9mKHBuZ19pbmZvKSA+IHBuZ19pbmZvX3NpemUpCiAgICAgIHsKLSAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOworICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPU5VTEw7CisjaWZkZWYgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECisgICAgICAgcG5nX3B0ci0+ZmxhZ3M9MDsKKyNlbmRpZgogICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAogICAgICAgICAgIlRoZSBpbmZvIHN0cnVjdCBhbGxvY2F0ZWQgYnkgYXBwbGljYXRpb24gZm9yIHJlYWRpbmcgaXMgdG9vIHNtYWxsLiIpOwogICAgICB9CkBAIC0xOTAsNyArMjI0LDcgQEAKICNpZmRlZiBQTkdfTEVHQUNZX1NVUFBPUlRFRAogICAgICAgIHBuZ19wdHItPmZsYWdzIHw9IFBOR19GTEFHX0xJQlJBUllfTUlTTUFUQ0g7CiAjZWxzZQotICAgICAgIHBuZ19wdHItPndhcm5pbmdfZm49KHBuZ19lcnJvcl9wdHIpTlVMTDsKKyAgICAgICBwbmdfcHRyLT53YXJuaW5nX2ZuPU5VTEw7CiAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKICAgICAgICAgIkFwcGxpY2F0aW9uIHVzZXMgZGVwcmVjYXRlZCBwbmdfcmVhZF9pbml0KCkgYW5kIHNob3VsZCBiZSByZWNvbXBpbGVkLiIpOwogICAgICAgIGJyZWFrOwpAQCAtMjQwLDcgKzI3NCw3IEBACiAgICBwbmdfcHRyLT56c3RyZWFtLm5leHRfb3V0ID0gcG5nX3B0ci0+emJ1ZjsKICAgIHBuZ19wdHItPnpzdHJlYW0uYXZhaWxfb3V0ID0gKHVJbnQpcG5nX3B0ci0+emJ1Zl9zaXplOwogCi0gICBwbmdfc2V0X3JlYWRfZm4ocG5nX3B0ciwgTlVMTCwgTlVMTCk7CisgICBwbmdfc2V0X3JlYWRfZm4ocG5nX3B0ciwgcG5nX3ZvaWRwX05VTEwsIHBuZ19yd19wdHJfTlVMTCk7CiB9CiAKIC8qIFJlYWQgdGhlIGluZm9ybWF0aW9uIGJlZm9yZSB0aGUgYWN0dWFsIGltYWdlIGRhdGEuICBUaGlzIGhhcyBiZWVuCkBAIC0zNDgsNiArMzgyLDkgQEAKICAgICAgIHBuZ19kZWJ1ZzIoMCwgIlJlYWRpbmcgJXMgY2h1bmssIGxlbmd0aD0lbHUuXG4iLCBwbmdfcHRyLT5jaHVua19uYW1lLAogICAgICAgICAgbGVuZ3RoKTsKIAorICAgICAgaWYgKGxlbmd0aCA+IFBOR19NQVhfVUlOVCkKKyAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiSW52YWxpZCBjaHVuayBsZW5ndGguIik7CisKICAgICAgIC8qIFRoaXMgc2hvdWxkIGJlIGEgYmluYXJ5IHN1YmRpdmlzaW9uIHNlYXJjaCBvciBhIGhhc2ggZm9yCiAgICAgICAgKiBtYXRjaGluZyB0aGUgY2h1bmsgbmFtZSByYXRoZXIgdGhhbiBhIGxpbmVhciBzZWFyY2guCiAgICAgICAgKi8KQEAgLTYzMSw2ICs2NjgsOSBAQAogICAgICAgICAgICAgcG5nX3JlYWRfZGF0YShwbmdfcHRyLCBjaHVua19sZW5ndGgsIDQpOwogICAgICAgICAgICAgcG5nX3B0ci0+aWRhdF9zaXplID0gcG5nX2dldF91aW50XzMyKGNodW5rX2xlbmd0aCk7CiAKKyAgICAgICAgICAgIGlmIChwbmdfcHRyLT5pZGF0X3NpemUgPiBQTkdfTUFYX1VJTlQpCisgICAgICAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiSW52YWxpZCBjaHVuayBsZW5ndGguIik7CisKICAgICAgICAgICAgIHBuZ19yZXNldF9jcmMocG5nX3B0cik7CiAgICAgICAgICAgICBwbmdfY3JjX3JlYWQocG5nX3B0ciwgcG5nX3B0ci0+Y2h1bmtfbmFtZSwgNCk7CiAgICAgICAgICAgICBpZiAocG5nX21lbWNtcChwbmdfcHRyLT5jaHVua19uYW1lLCBwbmdfSURBVCwgNCkpCkBAIC03NDIsNyArNzgyLDcgQEAKICAqIG5vdCBjYWxsZWQgcG5nX3NldF9pbnRlcmxhY2VfaGFuZGxpbmcoKSwgdGhlIGRpc3BsYXlfcm93IGJ1ZmZlciB3aWxsCiAgKiBiZSBpZ25vcmVkLCBzbyBwYXNzIE5VTEwgdG8gaXQuCiAgKgotICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExCisgKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjEzCiAgKi8KIAogdm9pZCBQTkdBUEkKQEAgLTc2OSwxNCArODA5LDE0IEBACiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3Jvd3M7IGkrKykKICAgICAgIHsKICAgICAgICAgIHBuZ19ieXRlcCBycHRyID0gKnJwOwotICAgICAgICAgcG5nX3JlYWRfcm93KHBuZ19wdHIsIHJwdHIsIE5VTEwpOworICAgICAgICAgcG5nX3JlYWRfcm93KHBuZ19wdHIsIHJwdHIsIHBuZ19ieXRlcF9OVUxMKTsKICAgICAgICAgIHJwKys7CiAgICAgICB9CiAgICBlbHNlIGlmKGRwICE9IE5VTEwpCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3Jvd3M7IGkrKykKICAgICAgIHsKICAgICAgICAgIHBuZ19ieXRlcCBkcHRyID0gKmRwOwotICAgICAgICAgcG5nX3JlYWRfcm93KHBuZ19wdHIsIE5VTEwsIGRwdHIpOworICAgICAgICAgcG5nX3JlYWRfcm93KHBuZ19wdHIsIHBuZ19ieXRlcF9OVUxMLCBkcHRyKTsKICAgICAgICAgIGRwKys7CiAgICAgICB9CiB9CkBAIC03OTEsNyArODMxLDcgQEAKICAqIG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UuICBJZiB5b3UgZGVzaXJlIHRvIGhhdmUgYW4gaW1hZ2UgZm9yCiAgKiBlYWNoIHBhc3Mgb2YgYSBpbnRlcmxhY2VkIGltYWdlLCB1c2UgcG5nX3JlYWRfcm93cygpIGluc3RlYWQuCiAgKgotICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExCisgKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjEzCiAgKi8KIHZvaWQgUE5HQVBJCiBwbmdfcmVhZF9pbWFnZShwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXBwIGltYWdlKQpAQCAtODIxLDcgKzg2MSw3IEBACiAgICAgICBycCA9IGltYWdlOwogICAgICAgZm9yIChpID0gMDsgaSA8IGltYWdlX2hlaWdodDsgaSsrKQogICAgICAgewotICAgICAgICAgcG5nX3JlYWRfcm93KHBuZ19wdHIsICpycCwgTlVMTCk7CisgICAgICAgICBwbmdfcmVhZF9yb3cocG5nX3B0ciwgKnJwLCBwbmdfYnl0ZXBfTlVMTCk7CiAgICAgICAgICBycCsrOwogICAgICAgfQogICAgfQpAQCAtOTA5LDYgKzk0OSw5IEBACiAKICAgICAgIHBuZ19kZWJ1ZzEoMCwgIlJlYWRpbmcgJXMgY2h1bmsuXG4iLCBwbmdfcHRyLT5jaHVua19uYW1lKTsKIAorICAgICAgaWYgKGxlbmd0aCA+IFBOR19NQVhfVUlOVCkKKyAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiSW52YWxpZCBjaHVuayBsZW5ndGguIik7CisKICAgICAgIGlmICghcG5nX21lbWNtcChwbmdfcHRyLT5jaHVua19uYW1lLCBwbmdfSUhEUiwgNCkpCiAgICAgICAgICBwbmdfaGFuZGxlX0lIRFIocG5nX3B0ciwgaW5mb19wdHIsIGxlbmd0aCk7CiAgICAgICBlbHNlIGlmICghcG5nX21lbWNtcChwbmdfcHRyLT5jaHVua19uYW1lLCBwbmdfSUVORCwgNCkpCkBAIC0xMDU0LDcgKzEwOTcsNyBAQAogI2Vsc2UKICAgICAgIHBuZ19kZXN0cm95X3N0cnVjdCgocG5nX3ZvaWRwKWluZm9fcHRyKTsKICNlbmRpZgotICAgICAgKmluZm9fcHRyX3B0ciA9IChwbmdfaW5mb3ApTlVMTDsKKyAgICAgICppbmZvX3B0cl9wdHIgPSBOVUxMOwogICAgfQogCiAgICBpZiAoZW5kX2luZm9fcHRyICE9IE5VTEwpCkBAIC0xMDY4LDcgKzExMTEsNyBAQAogI2Vsc2UKICAgICAgIHBuZ19kZXN0cm95X3N0cnVjdCgocG5nX3ZvaWRwKWVuZF9pbmZvX3B0cik7CiAjZW5kaWYKLSAgICAgICplbmRfaW5mb19wdHJfcHRyID0gKHBuZ19pbmZvcClOVUxMOworICAgICAgKmVuZF9pbmZvX3B0cl9wdHIgPSBOVUxMOwogICAgfQogCiAgICBpZiAocG5nX3B0ciAhPSBOVUxMKQpAQCAtMTA3OSw3ICsxMTIyLDcgQEAKICNlbHNlCiAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClwbmdfcHRyKTsKICNlbmRpZgotICAgICAgKnBuZ19wdHJfcHRyID0gKHBuZ19zdHJ1Y3RwKU5VTEw7CisgICAgICAqcG5nX3B0cl9wdHIgPSBOVUxMOwogICAgfQogfQogCkBAIC0xMTA2LDcgKzExNDksNyBAQAogICAgICAgcG5nX2luZm9fZGVzdHJveShwbmdfcHRyLCBlbmRfaW5mb19wdHIpOwogCiAgICBwbmdfZnJlZShwbmdfcHRyLCBwbmdfcHRyLT56YnVmKTsKLSAgIHBuZ19mcmVlKHBuZ19wdHIsIHBuZ19wdHItPnJvd19idWYpOworICAgcG5nX2ZyZWUocG5nX3B0ciwgcG5nX3B0ci0+YmlnX3Jvd19idWYpOwogICAgcG5nX2ZyZWUocG5nX3B0ciwgcG5nX3B0ci0+cHJldl9yb3cpOwogI2lmIGRlZmluZWQoUE5HX1JFQURfRElUSEVSX1NVUFBPUlRFRCkKICAgIHBuZ19mcmVlKHBuZ19wdHIsIHBuZ19wdHItPnBhbGV0dGVfbG9va3VwKTsKZGlmZiAtLWdpdCBhL3BuZ3Jpby5jIGIvcG5ncmlvLmMKaW5kZXggMDA2ZDcyZS4uOWYwZTllMyAxMDA2NDQKLS0tIGEvcG5ncmlvLmMKKysrIGIvcG5ncmlvLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3Jpby5jIC0gZnVuY3Rpb25zIGZvciBkYXRhIGlucHV0CiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgaWYgKHJlYWRfZGF0YV9mbiAhPSBOVUxMKQogICAgICAgcG5nX3B0ci0+cmVhZF9kYXRhX2ZuID0gcmVhZF9kYXRhX2ZuOwogICAgZWxzZQotICAgICAgcG5nX3B0ci0+cmVhZF9kYXRhX2ZuID0gcG5nX2RlZmF1bHRfcmVhZF9kYXRhOworICAgICAgcG5nX3B0ci0+cmVhZF9kYXRhX2ZuID0gKHBuZ19yd19wdHIpcG5nX2RlZmF1bHRfcmVhZF9kYXRhOwogI2Vsc2UKICAgIHBuZ19wdHItPnJlYWRfZGF0YV9mbiA9IHJlYWRfZGF0YV9mbjsKICNlbmRpZgpAQCAtMTU5LDQgKzE1OSwzIEBACiAgICBwbmdfcHRyLT5vdXRwdXRfZmx1c2hfZm4gPSBOVUxMOwogI2VuZGlmCiB9Ci0KZGlmZiAtLWdpdCBhL3BuZ3J0cmFuLmMgYi9wbmdydHJhbi5jCmluZGV4IGUyZDQ2ZmYuLmM3YTY5M2MgMTAwNjQ0Ci0tLSBhL3BuZ3J0cmFuLmMKKysrIGIvcG5ncnRyYW4uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5ncnRyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyByZWFkZXJzCiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTUxMCwxMyArNTEwLDE5IEBACiAgKiBvbmx5IGRvIHRyYW5zZm9ybWF0aW9ucyBvbiBpbWFnZXMgd2hlcmUgdGhlIGZpbGVfZ2FtbWEgYW5kIHNjcmVlbl9nYW1tYQogICogYXJlIG5vdCBjbG9zZSByZWNpcHJvY2Fscywgb3RoZXJ3aXNlIGl0IHNsb3dzIHRoaW5ncyBkb3duIHNsaWdodGx5LCBhbmQKICAqIGFsc28gbmVlZGxlc3NseSBpbnRyb2R1Y2VzIHNtYWxsIGVycm9ycy4KKyAqCisgKiBXZSB3aWxsIHR1cm4gb2ZmIGdhbW1hIHRyYW5zZm9ybWF0aW9uIGxhdGVyIGlmIG5vIHNlbWl0cmFuc3BhcmVudCBlbnRyaWVzCisgKiBhcmUgcHJlc2VudCBpbiB0aGUgdFJOUyBhcnJheSBmb3IgcGFsZXR0ZSBpbWFnZXMuICBXZSBjYW4ndCBkbyBpdCBoZXJlCisgKiBiZWNhdXNlIHdlIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdGhlIHRSTlMgY2h1bmsgeWV0LgogICovCiB2b2lkIFBOR0FQSQogcG5nX3NldF9nYW1tYShwbmdfc3RydWN0cCBwbmdfcHRyLCBkb3VibGUgc2Nybl9nYW1tYSwgZG91YmxlIGZpbGVfZ2FtbWEpCiB7CiAgICBwbmdfZGVidWcoMSwgImluIHBuZ19zZXRfZ2FtbWFcbiIpOwotICAgaWYgKGZhYnMoc2Nybl9nYW1tYSAqIGZpbGVfZ2FtbWEgLSAxLjApID4gUE5HX0dBTU1BX1RIUkVTSE9MRCkKLSAgICAgIHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucyB8PSBQTkdfR0FNTUE7CisgICBpZiAoKGZhYnMoc2Nybl9nYW1tYSAqIGZpbGVfZ2FtbWEgLSAxLjApID4gUE5HX0dBTU1BX1RIUkVTSE9MRCkgfHwKKyAgICAgICAocG5nX3B0ci0+Y29sb3JfdHlwZSAmIFBOR19DT0xPUl9NQVNLX0FMUEhBKSB8fAorICAgICAgIChwbmdfcHRyLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpKQorICAgICBwbmdfcHRyLT50cmFuc2Zvcm1hdGlvbnMgfD0gUE5HX0dBTU1BOwogICAgcG5nX3B0ci0+Z2FtbWEgPSAoZmxvYXQpZmlsZV9nYW1tYTsKICAgIHBuZ19wdHItPnNjcmVlbl9nYW1tYSA9IChmbG9hdClzY3JuX2dhbW1hOwogfQpAQCAtNjkyLDIzICs2OTgsMjMgQEAKICAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQuZ3JheSAqPSAocG5nX3VpbnRfMTYpMHhmZjsKLSAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQucmVkID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmVlbiA9Ci0gICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLmJsdWUgPSBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyYXk7CisgICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLnJlZCA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JlZW4KKyAgICAgICAgICAgICAgICAgPSAgcG5nX3B0ci0+YmFja2dyb3VuZC5ibHVlID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyYXkgKj0gKHBuZ191aW50XzE2KTB4NTU7Ci0gICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLnJlZCA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JlZW4gPQotICAgICAgICAgICAgICAgcG5nX3B0ci0+YmFja2dyb3VuZC5ibHVlID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5OworICAgICAgICAgICAgICAgcG5nX3B0ci0+YmFja2dyb3VuZC5yZWQgPSBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyZWVuCisgICAgICAgICAgICAgICAgID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ibHVlID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyYXkgKj0gKHBuZ191aW50XzE2KTB4MTE7Ci0gICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kLnJlZCA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JlZW4gPQotICAgICAgICAgICAgICAgcG5nX3B0ci0+YmFja2dyb3VuZC5ibHVlID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5OworICAgICAgICAgICAgICAgcG5nX3B0ci0+YmFja2dyb3VuZC5yZWQgPSBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyZWVuCisgICAgICAgICAgICAgICAgID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ibHVlID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICBjYXNlIDE2OgotICAgICAgICAgICAgICAgcG5nX3B0ci0+YmFja2dyb3VuZC5yZWQgPSBwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyZWVuID0KLSAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQuYmx1ZSA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JheTsKKyAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQucmVkID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmVlbgorICAgICAgICAgICAgICAgICA9IHBuZ19wdHItPmJhY2tncm91bmQuYmx1ZSA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JheTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgfQpAQCAtNzQyLDEwICs3NDgsMjYgQEAKICAgIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChQTkdfUkVBRF9CQUNLR1JPVU5EX1NVUFBPUlRFRCkKKyNpZiBkZWZpbmVkKFBOR19SRUFEX0JBQ0tHUk9VTkRfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKICAgIHBuZ19wdHItPmJhY2tncm91bmRfMSA9IHBuZ19wdHItPmJhY2tncm91bmQ7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVEKQorCisgICBpZiAoKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSAmJiBwbmdfcHRyLT5udW1fdHJhbnMgIT0gMCkKKyAgICAgICAmJiAoZmFicyhwbmdfcHRyLT5zY3JlZW5fZ2FtbWEgKiBwbmdfcHRyLT5nYW1tYSAtIDEuMCkKKyAgICAgICAgIDwgUE5HX0dBTU1BX1RIUkVTSE9MRCkpCisgICB7CisgICAgaW50IGksazsKKyAgICBrPTA7CisgICAgZm9yIChpPTA7IGk8cG5nX3B0ci0+bnVtX3RyYW5zOyBpKyspCisgICAgeworICAgICAgaWYgKHBuZ19wdHItPnRyYW5zW2ldICE9IDAgJiYgcG5nX3B0ci0+dHJhbnNbaV0gIT0gMHhmZikKKyAgICAgICAgaz0xOyAvKiBwYXJ0aWFsIHRyYW5zcGFyZW5jeSBpcyBwcmVzZW50ICovCisgICAgfQorICAgIGlmIChrID09IDApCisgICAgICBwbmdfcHRyLT50cmFuc2Zvcm1hdGlvbnMgJj0gKH5QTkdfR0FNTUEpOworICAgfQorCiAgICBpZiAocG5nX3B0ci0+dHJhbnNmb3JtYXRpb25zICYgKFBOR19HQU1NQSB8IFBOR19SR0JfVE9fR1JBWSkpCiAgICB7CiAgICAgICBwbmdfYnVpbGRfZ2FtbWFfdGFibGUocG5nX3B0cik7CkBAIC03NTQsNiArNzc2LDggQEAKICAgICAgIHsKICAgICAgICAgIGlmIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCiAgICAgICAgICB7CisgICAgICAgICAgIC8qIGNvdWxkIHNraXAgaWYgbm8gdHJhbnNwYXJlbmN5IGFuZCAKKyAgICAgICAgICAgKi8KICAgICAgICAgICAgIHBuZ19jb2xvciBiYWNrLCBiYWNrXzE7CiAgICAgICAgICAgICBwbmdfY29sb3JwIHBhbGV0dGUgPSBwbmdfcHRyLT5wYWxldHRlOwogICAgICAgICAgICAgaW50IG51bV9wYWxldHRlID0gcG5nX3B0ci0+bnVtX3BhbGV0dGU7CkBAIC04NzMsOSArODk3LDE2IEBACiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbG9yX3R5cGUgJiBQTkdfQ09MT1JfTUFTS19DT0xPUikKKyAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmRfMS5ncmF5ID0gKHBuZ191aW50XzE2KShwb3coCisgICAgICAgICAgICAgICAoZG91YmxlKXBuZ19wdHItPmJhY2tncm91bmQuZ3JheSAvIG0sIGcpICogbSArIC41KTsKKyAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQuZ3JheSA9IChwbmdfdWludF8xNikocG93KAorICAgICAgICAgICAgICAgKGRvdWJsZSlwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyYXkgLyBtLCBncykgKiBtICsgLjUpOworCisgICAgICAgICAgICBpZiAoKHBuZ19wdHItPmJhY2tncm91bmQucmVkICE9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JlZW4pIHx8CisgICAgICAgICAgICAgICAgKHBuZ19wdHItPmJhY2tncm91bmQucmVkICE9IHBuZ19wdHItPmJhY2tncm91bmQuYmx1ZSkgfHwKKyAgICAgICAgICAgICAgICAocG5nX3B0ci0+YmFja2dyb3VuZC5yZWQgIT0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmF5KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8qIFJHQiBvciBSR0JBICovCisgICAgICAgICAgICAgICAvKiBSR0Igb3IgUkdCQSB3aXRoIGNvbG9yIGJhY2tncm91bmQgKi8KICAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmRfMS5yZWQgPSAocG5nX3VpbnRfMTYpKHBvdygKICAgICAgICAgICAgICAgICAgIChkb3VibGUpcG5nX3B0ci0+YmFja2dyb3VuZC5yZWQgLyBtLCBnKSAqIG0gKyAuNSk7CiAgICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kXzEuZ3JlZW4gPSAocG5nX3VpbnRfMTYpKHBvdygKQEAgLTg5MSwxNyArOTIyLDE3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvKiBHUkFZIG9yIEdSQVkgQUxQSEEgKi8KLSAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmRfMS5ncmF5ID0gKHBuZ191aW50XzE2KShwb3coCi0gICAgICAgICAgICAgICAgICAoZG91YmxlKXBuZ19wdHItPmJhY2tncm91bmQuZ3JheSAvIG0sIGcpICogbSArIC41KTsKLSAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQuZ3JheSA9IChwbmdfdWludF8xNikocG93KAotICAgICAgICAgICAgICAgICAgKGRvdWJsZSlwbmdfcHRyLT5iYWNrZ3JvdW5kLmdyYXkgLyBtLCBncykgKiBtICsgLjUpOworICAgICAgICAgICAgICAgLyogR1JBWSwgR1JBWSBBTFBIQSwgUkdCLCBvciBSR0JBIHdpdGggZ3JheSBiYWNrZ3JvdW5kICovCisgICAgICAgICAgICAgICBwbmdfcHRyLT5iYWNrZ3JvdW5kXzEucmVkID0gcG5nX3B0ci0+YmFja2dyb3VuZF8xLmdyZWVuCisgICAgICAgICAgICAgICAgID0gcG5nX3B0ci0+YmFja2dyb3VuZF8xLmJsdWUgPSBwbmdfcHRyLT5iYWNrZ3JvdW5kXzEuZ3JheTsKKyAgICAgICAgICAgICAgIHBuZ19wdHItPmJhY2tncm91bmQucmVkID0gcG5nX3B0ci0+YmFja2dyb3VuZC5ncmVlbgorICAgICAgICAgICAgICAgICA9IHBuZ19wdHItPmJhY2tncm91bmQuYmx1ZSA9IHBuZ19wdHItPmJhY2tncm91bmQuZ3JheTsKICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIC8qIHRyYW5zZm9ybWF0aW9uIGRvZXMgbm90IGluY2x1ZGUgUE5HX0JBQ0tHUk9VTkQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIFBOR19SRUFEX0JBQ0tHUk9VTkRfU1VQUE9SVEVEICovCiAgICAgICBpZiAoY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9QQUxFVFRFKQogICAgICAgewogICAgICAgICAgcG5nX2NvbG9ycCBwYWxldHRlID0gcG5nX3B0ci0+cGFsZXR0ZTsKQEAgLTkxOSw3ICs5NTAsNyBAQAogI2lmIGRlZmluZWQoUE5HX1JFQURfQkFDS0dST1VORF9TVVBQT1JURUQpCiAgICBlbHNlCiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8qIFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCAmJiBQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVEICovCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9CQUNLR1JPVU5EX1NVUFBPUlRFRCkKICAgIC8qIE5vIEdBTU1BIHRyYW5zZm9ybWF0aW9uICovCiAgICBpZiAoKHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucyAmIFBOR19CQUNLR1JPVU5EKSAmJgpAQCAtOTUyLDcgKzk4Myw3IEBACiAgICAgICAgICB9CiAgICAgICB9CiAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBQTkdfUkVBRF9CQUNLR1JPVU5EX1NVUFBPUlRFRCAqLwogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9TSElGVF9TVVBQT1JURUQpCiAgICBpZiAoKHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucyAmIFBOR19TSElGVCkgJiYKQEAgLTk3Nyw3ICsxMDA4LDcgQEAKICAgICAgICAgIHBuZ19wdHItPnBhbGV0dGVbaV0uYmx1ZSA+Pj0gc2I7CiAgICAgICB9CiAgICB9Ci0jZW5kaWYKKyNlbmRpZiAgLyogUE5HX1JFQURfU0hJRlRfU1VQUE9SVEVEICovCiAgfQogI2lmICFkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkgJiYgIWRlZmluZWQoUE5HX1JFQURfU0hJRlRfU1VQUE9SVEVEKSBcCiAgJiYgIWRlZmluZWQoUE5HX1JFQURfQkFDS0dST1VORF9TVVBQT1JURUQpCkBAIC0xMjI3LDEyICsxMjU4LDE1IEBACiAgICAgICAoKHBuZ19wdHItPm51bV90cmFucyAhPSAwICkgfHwKICAgICAgIChwbmdfcHRyLT5jb2xvcl90eXBlICYgUE5HX0NPTE9SX01BU0tfQUxQSEEpKSkKICAgICAgIHBuZ19kb19iYWNrZ3JvdW5kKCYocG5nX3B0ci0+cm93X2luZm8pLCBwbmdfcHRyLT5yb3dfYnVmICsgMSwKLSAgICAgICAgICYocG5nX3B0ci0+dHJhbnNfdmFsdWVzKSwgJihwbmdfcHRyLT5iYWNrZ3JvdW5kKSwKLSAgICAgICAgICYocG5nX3B0ci0+YmFja2dyb3VuZF8xKSwKKyAgICAgICAgICYocG5nX3B0ci0+dHJhbnNfdmFsdWVzKSwgJihwbmdfcHRyLT5iYWNrZ3JvdW5kKQorI2lmIGRlZmluZWQoUE5HX1JFQURfR0FNTUFfU1VQUE9SVEVEKQorICAgICAgICAgLCAmKHBuZ19wdHItPmJhY2tncm91bmRfMSksCiAgICAgICAgICBwbmdfcHRyLT5nYW1tYV90YWJsZSwgcG5nX3B0ci0+Z2FtbWFfZnJvbV8xLAogICAgICAgICAgcG5nX3B0ci0+Z2FtbWFfdG9fMSwgcG5nX3B0ci0+Z2FtbWFfMTZfdGFibGUsCiAgICAgICAgICBwbmdfcHRyLT5nYW1tYV8xNl9mcm9tXzEsIHBuZ19wdHItPmdhbW1hXzE2X3RvXzEsCi0gICAgICAgICBwbmdfcHRyLT5nYW1tYV9zaGlmdCk7CisgICAgICAgICBwbmdfcHRyLT5nYW1tYV9zaGlmdAorI2VuZGlmCispOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKQEAgLTIzMTIsNyArMjM0Niw3IEBACiAgKiBwYWxldHRlZC4gIE1vc3QgdXNlZnVsIGZvciBnYW1tYSBjb3JyZWN0aW9uIGFuZCBzaW1wbGlmaWNhdGlvbgogICogb2YgY29kZS4KICAqLwotdm9pZCAvKiBQUklWQVRFICovCit2b2lkIFBOR0FQSQogcG5nX2J1aWxkX2dyYXlzY2FsZV9wYWxldHRlKGludCBiaXRfZGVwdGgsIHBuZ19jb2xvcnAgcGFsZXR0ZSkKIHsKICAgIGludCBudW1fcGFsZXR0ZTsKQEAgLTI1NDUsMTEgKzI1NzksMTQgQEAKICAqLwogdm9pZCAvKiBQUklWQVRFICovCiBwbmdfZG9fYmFja2dyb3VuZChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotICAgcG5nX2NvbG9yXzE2cCB0cmFuc192YWx1ZXMsIHBuZ19jb2xvcl8xNnAgYmFja2dyb3VuZCwKLSAgIHBuZ19jb2xvcl8xNnAgYmFja2dyb3VuZF8xLAorICAgcG5nX2NvbG9yXzE2cCB0cmFuc192YWx1ZXMsIHBuZ19jb2xvcl8xNnAgYmFja2dyb3VuZAorI2lmIGRlZmluZWQoUE5HX1JFQURfR0FNTUFfU1VQUE9SVEVEKQorICAgLCBwbmdfY29sb3JfMTZwIGJhY2tncm91bmRfMSwKICAgIHBuZ19ieXRlcCBnYW1tYV90YWJsZSwgcG5nX2J5dGVwIGdhbW1hX2Zyb21fMSwgcG5nX2J5dGVwIGdhbW1hX3RvXzEsCiAgICBwbmdfdWludF8xNnBwIGdhbW1hXzE2LCBwbmdfdWludF8xNnBwIGdhbW1hXzE2X2Zyb21fMSwKLSAgIHBuZ191aW50XzE2cHAgZ2FtbWFfMTZfdG9fMSwgaW50IGdhbW1hX3NoaWZ0KQorICAgcG5nX3VpbnRfMTZwcCBnYW1tYV8xNl90b18xLCBpbnQgZ2FtbWFfc2hpZnQKKyNlbmRpZgorICAgKQogewogICAgcG5nX2J5dGVwIHNwLCBkcDsKICAgIHBuZ191aW50XzMyIGk7CkBAIC0yOTMyLDYgKzI5NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgKmRwID0gKnNwOwogICAgICAgICAgICAgICAgICAgICAgfQorI2lmIGRlZmluZWQoUE5HX1JFQURfR0FNTUFfU1VQUE9SVEVEKQogICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgKmRwID0gKHBuZ19ieXRlKWJhY2tncm91bmQtPmdyYXk7CkBAIC0yOTQwLDYgKzI5NzgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbXBvc2l0ZSgqZHAsICpzcCwgYSwgYmFja2dyb3VuZF8xLT5ncmF5KTsKICAgICAgICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAqZHAgPSAocG5nX2J5dGUpYmFja2dyb3VuZC0+Z3JheTsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjk2MywxMiArMzAwNCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKmRwID0gKHBuZ19ieXRlKSgodiA+PiA4KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgKihkcCArIDEpID0gKHBuZ19ieXRlKSh2ICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICB9CisjaWYgZGVmaW5lZChQTkdfUkVBRF9HQU1NQV9TVVBQT1JURUQpCiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhID09IDApCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiYWNrZ3JvdW5kIGlzIGFscmVhZHkgaW4gc2NyZWVuIGdhbW1hICovCiAgICAgICAgICAgICAgICAgICAgICAgICAqZHAgPSAocG5nX2J5dGUpKChiYWNrZ3JvdW5kLT5ncmF5ID4+IDgpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAqKGRwICsgMSkgPSAocG5nX2J5dGUpKGJhY2tncm91bmQtPmdyYXkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgIH0KKyNpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ191aW50XzE2IGcsIHYsIHc7CkBAIC0yOTc5LDYgKzMwMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKmRwID0gKHBuZ19ieXRlKSgodyA+PiA4KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgKihkcCArIDEpID0gKHBuZ19ieXRlKSh3ICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKQEAgLTI5OTMsMTEgKzMwNDAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHAsIHNwLCAyKTsKICAgICAgICAgICAgICAgICAgICAgIH0KKyNpZiBkZWZpbmVkKFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRCkKICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEgPT0gMCkKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpkcCA9IChwbmdfYnl0ZSkoKGJhY2tncm91bmQtPmdyYXkgPj4gOCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICooZHAgKyAxKSA9IChwbmdfYnl0ZSkoYmFja2dyb3VuZC0+Z3JheSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgfQorI2lmIGRlZmluZWQoUE5HX1JFQURfR0FNTUFfU1VQUE9SVEVEKQogICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgcG5nX3VpbnRfMTYgZywgdjsKQEAgLTMwMDcsNiArMzA1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqZHAgPSAocG5nX2J5dGUpKCh2ID4+IDgpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAqKGRwICsgMSkgPSAocG5nX2J5dGUpKHYgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzEyOCwxNyArMzE4MSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcG5nX3VpbnRfMTYgdiwgdywgeDsKIAogICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGdhbW1hXzE2X3RvXzFbKihzcCArIDEpID4+IGdhbW1hX3NoaWZ0XVsqc3BdOwotICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbXBvc2l0ZV8xNih3LCB2LCBhLCBiYWNrZ3JvdW5kLT5yZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbXBvc2l0ZV8xNih3LCB2LCBhLCBiYWNrZ3JvdW5kXzEtPnJlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ2FtbWFfMTZfZnJvbV8xWygodyYweGZmKSA+PiBnYW1tYV9zaGlmdCldW3cgPj4gOF07CiAgICAgICAgICAgICAgICAgICAgICAgICAqZHAgPSAocG5nX2J5dGUpKCh4ID4+IDgpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAqKGRwICsgMSkgPSAocG5nX2J5dGUpKHggJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBnYW1tYV8xNl90b18xWyooc3AgKyAzKSA+PiBnYW1tYV9zaGlmdF1bKihzcCArIDIpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb21wb3NpdGVfMTYodywgdiwgYSwgYmFja2dyb3VuZC0+Z3JlZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbXBvc2l0ZV8xNih3LCB2LCBhLCBiYWNrZ3JvdW5kXzEtPmdyZWVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBnYW1tYV8xNl9mcm9tXzFbKCh3JjB4ZmYpID4+IGdhbW1hX3NoaWZ0KV1bdyA+PiA4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICooZHAgKyAyKSA9IChwbmdfYnl0ZSkoKHggPj4gOCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICooZHAgKyAzKSA9IChwbmdfYnl0ZSkoeCAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGdhbW1hXzE2X3RvXzFbKihzcCArIDUpID4+IGdhbW1hX3NoaWZ0XVsqKHNwICsgNCldOwotICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbXBvc2l0ZV8xNih3LCB2LCBhLCBiYWNrZ3JvdW5kLT5ibHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb21wb3NpdGVfMTYodywgdiwgYSwgYmFja2dyb3VuZF8xLT5ibHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBnYW1tYV8xNl9mcm9tXzFbKHcgJiAweGZmKSA+PiBnYW1tYV9zaGlmdF1bdyA+PiA4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICooZHAgKyA0KSA9IChwbmdfYnl0ZSkoKHggPj4gOCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICooZHAgKyA1KSA9IChwbmdfYnl0ZSkoeCAmIDB4ZmYpOwpkaWZmIC0tZ2l0IGEvcG5ncnV0aWwuYyBiL3BuZ3J1dGlsLmMKaW5kZXggMzExZjgxZS4uMWYzYmFiMiAxMDA2NDQKLS0tIGEvcG5ncnV0aWwuYworKysgYi9wbmdydXRpbC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmdydXRpbC5jIC0gdXRpbGl0aWVzIHRvIHJlYWQgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQorICogbGlicG5nIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC02OTEsNiArNjkxLDggQEAKICAgIHBuZ19maXhlZF9wb2ludCBpbnRfeF93aGl0ZSwgaW50X3lfd2hpdGUsIGludF94X3JlZCwgaW50X3lfcmVkLCBpbnRfeF9ncmVlbiwKICAgICAgIGludF95X2dyZWVuLCBpbnRfeF9ibHVlLCBpbnRfeV9ibHVlOwogCisgICBwbmdfdWludF8zMiB1aW50X3gsIHVpbnRfeTsKKwogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfaGFuZGxlX2NIUk1cbiIpOwogCiAgICBpZiAoIShwbmdfcHRyLT5tb2RlICYgUE5HX0hBVkVfSUhEUikpCkBAIC03MjQsNjAgKzcyNiw2OSBAQAogICAgfQogCiAgICBwbmdfY3JjX3JlYWQocG5nX3B0ciwgYnVmLCA0KTsKLSAgIGludF94X3doaXRlID0gKHBuZ19maXhlZF9wb2ludClwbmdfZ2V0X3VpbnRfMzIoYnVmKTsKKyAgIHVpbnRfeCA9IHBuZ19nZXRfdWludF8zMihidWYpOwogCiAgICBwbmdfY3JjX3JlYWQocG5nX3B0ciwgYnVmLCA0KTsKLSAgIGludF95X3doaXRlID0gKHBuZ19maXhlZF9wb2ludClwbmdfZ2V0X3VpbnRfMzIoYnVmKTsKKyAgIHVpbnRfeSA9IHBuZ19nZXRfdWludF8zMihidWYpOwogCi0gICBpZiAoaW50X3hfd2hpdGUgPiA4MDAwMEwgfHwgaW50X3lfd2hpdGUgPiA4MDAwMEwgfHwKLSAgICAgIGludF94X3doaXRlICsgaW50X3lfd2hpdGUgPiAxMDAwMDBMKQorICAgaWYgKHVpbnRfeCA+IDgwMDAwTCB8fCB1aW50X3kgPiA4MDAwMEwgfHwKKyAgICAgIHVpbnRfeCArIHVpbnRfeSA+IDEwMDAwMEwpCiAgICB7CiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSW52YWxpZCBjSFJNIHdoaXRlIHBvaW50Iik7CiAgICAgICBwbmdfY3JjX2ZpbmlzaChwbmdfcHRyLCAyNCk7CiAgICAgICByZXR1cm47CiAgICB9CisgICBpbnRfeF93aGl0ZSA9IChwbmdfZml4ZWRfcG9pbnQpdWludF94OworICAgaW50X3lfd2hpdGUgPSAocG5nX2ZpeGVkX3BvaW50KXVpbnRfeTsKIAogICAgcG5nX2NyY19yZWFkKHBuZ19wdHIsIGJ1ZiwgNCk7Ci0gICBpbnRfeF9yZWQgPSAocG5nX2ZpeGVkX3BvaW50KXBuZ19nZXRfdWludF8zMihidWYpOworICAgdWludF94ID0gcG5nX2dldF91aW50XzMyKGJ1Zik7CiAKICAgIHBuZ19jcmNfcmVhZChwbmdfcHRyLCBidWYsIDQpOwotICAgaW50X3lfcmVkID0gKHBuZ19maXhlZF9wb2ludClwbmdfZ2V0X3VpbnRfMzIoYnVmKTsKKyAgIHVpbnRfeSA9IHBuZ19nZXRfdWludF8zMihidWYpOwogCi0gICBpZiAoaW50X3hfcmVkID4gODAwMDBMIHx8IGludF95X3JlZCA+IDgwMDAwTCB8fAotICAgICAgaW50X3hfcmVkICsgaW50X3lfcmVkID4gMTAwMDAwTCkKKyAgIGlmICh1aW50X3ggPiA4MDAwMEwgfHwgdWludF95ID4gODAwMDBMIHx8CisgICAgICB1aW50X3ggKyB1aW50X3kgPiAxMDAwMDBMKQogICAgewogICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIkludmFsaWQgY0hSTSByZWQgcG9pbnQiKTsKICAgICAgIHBuZ19jcmNfZmluaXNoKHBuZ19wdHIsIDE2KTsKICAgICAgIHJldHVybjsKICAgIH0KKyAgIGludF94X3JlZCA9IChwbmdfZml4ZWRfcG9pbnQpdWludF94OworICAgaW50X3lfcmVkID0gKHBuZ19maXhlZF9wb2ludCl1aW50X3k7CiAKICAgIHBuZ19jcmNfcmVhZChwbmdfcHRyLCBidWYsIDQpOwotICAgaW50X3hfZ3JlZW4gPSAocG5nX2ZpeGVkX3BvaW50KXBuZ19nZXRfdWludF8zMihidWYpOworICAgdWludF94ID0gcG5nX2dldF91aW50XzMyKGJ1Zik7CiAKICAgIHBuZ19jcmNfcmVhZChwbmdfcHRyLCBidWYsIDQpOwotICAgaW50X3lfZ3JlZW4gPSAocG5nX2ZpeGVkX3BvaW50KXBuZ19nZXRfdWludF8zMihidWYpOworICAgdWludF95ID0gcG5nX2dldF91aW50XzMyKGJ1Zik7CiAKLSAgIGlmIChpbnRfeF9ncmVlbiA+IDgwMDAwTCB8fCBpbnRfeV9ncmVlbiA+IDgwMDAwTCB8fAotICAgICAgaW50X3hfZ3JlZW4gKyBpbnRfeV9ncmVlbiA+IDEwMDAwMEwpCisgICBpZiAodWludF94ID4gODAwMDBMIHx8IHVpbnRfeSA+IDgwMDAwTCB8fAorICAgICAgdWludF94ICsgdWludF95ID4gMTAwMDAwTCkKICAgIHsKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJJbnZhbGlkIGNIUk0gZ3JlZW4gcG9pbnQiKTsKICAgICAgIHBuZ19jcmNfZmluaXNoKHBuZ19wdHIsIDgpOwogICAgICAgcmV0dXJuOwogICAgfQorICAgaW50X3hfZ3JlZW4gPSAocG5nX2ZpeGVkX3BvaW50KXVpbnRfeDsKKyAgIGludF95X2dyZWVuID0gKHBuZ19maXhlZF9wb2ludCl1aW50X3k7CiAKICAgIHBuZ19jcmNfcmVhZChwbmdfcHRyLCBidWYsIDQpOwotICAgaW50X3hfYmx1ZSA9IChwbmdfZml4ZWRfcG9pbnQpcG5nX2dldF91aW50XzMyKGJ1Zik7CisgICB1aW50X3ggPSBwbmdfZ2V0X3VpbnRfMzIoYnVmKTsKIAogICAgcG5nX2NyY19yZWFkKHBuZ19wdHIsIGJ1ZiwgNCk7Ci0gICBpbnRfeV9ibHVlID0gKHBuZ19maXhlZF9wb2ludClwbmdfZ2V0X3VpbnRfMzIoYnVmKTsKKyAgIHVpbnRfeSA9IHBuZ19nZXRfdWludF8zMihidWYpOwogCi0gICBpZiAoaW50X3hfYmx1ZSA+IDgwMDAwTCB8fCBpbnRfeV9ibHVlID4gODAwMDBMIHx8Ci0gICAgICBpbnRfeF9ibHVlICsgaW50X3lfYmx1ZSA+IDEwMDAwMEwpCisgICBpZiAodWludF94ID4gODAwMDBMIHx8IHVpbnRfeSA+IDgwMDAwTCB8fAorICAgICAgdWludF94ICsgdWludF95ID4gMTAwMDAwTCkKICAgIHsKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJJbnZhbGlkIGNIUk0gYmx1ZSBwb2ludCIpOwogICAgICAgcG5nX2NyY19maW5pc2gocG5nX3B0ciwgMCk7CiAgICAgICByZXR1cm47CiAgICB9CisgICBpbnRfeF9ibHVlID0gKHBuZ19maXhlZF9wb2ludCl1aW50X3g7CisgICBpbnRfeV9ibHVlID0gKHBuZ19maXhlZF9wb2ludCl1aW50X3k7CisKICNpZmRlZiBQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVECiAgICB3aGl0ZV94ID0gKGZsb2F0KWludF94X3doaXRlIC8gKGZsb2F0KTEwMDAwMC4wOwogICAgd2hpdGVfeSA9IChmbG9hdClpbnRfeV93aGl0ZSAvIChmbG9hdCkxMDAwMDAuMDsKQEAgLTc5NCwxMiArODA1LDEyIEBACiAgICAgICB7CiAgICAgICBpZiAoYWJzKGludF94X3doaXRlIC0gMzEyNzBMKSA+IDEwMDAgfHwKICAgICAgICAgICBhYnMoaW50X3lfd2hpdGUgLSAzMjkwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggIGludF94X3JlZCAtIDY0MDAwTCkgPiAxMDAwIHx8Ci0gICAgICAgICAgYWJzKCAgaW50X3lfcmVkIC0gMzMwMDBMKSA+IDEwMDAgfHwKKyAgICAgICAgICBhYnMoaW50X3hfcmVkICAgLSA2NDAwMEwpID4gMTAwMCB8fAorICAgICAgICAgIGFicyhpbnRfeV9yZWQgICAtIDMzMDAwTCkgPiAxMDAwIHx8CiAgICAgICAgICAgYWJzKGludF94X2dyZWVuIC0gMzAwMDBMKSA+IDEwMDAgfHwKICAgICAgICAgICBhYnMoaW50X3lfZ3JlZW4gLSA2MDAwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggaW50X3hfYmx1ZSAtIDE1MDAwTCkgPiAxMDAwIHx8Ci0gICAgICAgICAgYWJzKCBpbnRfeV9ibHVlIC0gIDYwMDBMKSA+IDEwMDApCisgICAgICAgICAgYWJzKGludF94X2JsdWUgIC0gMTUwMDBMKSA+IDEwMDAgfHwKKyAgICAgICAgICBhYnMoaW50X3lfYmx1ZSAgLSAgNjAwMEwpID4gMTAwMCkKICAgICAgICAgIHsKIAogICAgICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKQEAgLTg5NSwxNyArOTA2LDYgQEAKICAgICAgIGlnYW1tYT0oaW50KShpbmZvX3B0ci0+Z2FtbWEgKiAxMDAwMDAuKTsKICMgIGVuZGlmCiAjZW5kaWYKLSNpZiAwICYmIGRlZmluZWQoUE5HX2NIUk1fU1VQUE9SVEVEKSAmJiAhZGVmaW5lZChQTkdfRklYRURfUE9JTlRfU1VQUE9SVEVEKQotLyogV2UgbmVlZCB0byBkZWZpbmUgdGhlc2UgaGVyZSBiZWNhdXNlIHRoZXkgYXJlbid0IGluIHBuZy5oICovCi0gICBwbmdfZml4ZWRfcG9pbnQgaW50X3hfd2hpdGU7Ci0gICBwbmdfZml4ZWRfcG9pbnQgaW50X3lfd2hpdGU7Ci0gICBwbmdfZml4ZWRfcG9pbnQgaW50X3hfcmVkOwotICAgcG5nX2ZpeGVkX3BvaW50IGludF95X3JlZDsKLSAgIHBuZ19maXhlZF9wb2ludCBpbnRfeF9ncmVlbjsKLSAgIHBuZ19maXhlZF9wb2ludCBpbnRfeV9ncmVlbjsKLSAgIHBuZ19maXhlZF9wb2ludCBpbnRfeF9ibHVlOwotICAgcG5nX2ZpeGVkX3BvaW50IGludF95X2JsdWU7Ci0jZW5kaWYKICAgICAgIGlmKGlnYW1tYSA8IDQ1MDAwTCB8fCBpZ2FtbWEgPiA0NjAwMEwpCiAgICAgICB7CiAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLApAQCAtOTI4LDEyICs5MjgsMTIgQEAKICAgIGlmIChpbmZvX3B0ci0+dmFsaWQgJiBQTkdfSU5GT19jSFJNKQogICAgICAgaWYgKGFicyhpbmZvX3B0ci0+aW50X3hfd2hpdGUgLSAzMTI3MEwpID4gMTAwMCB8fAogICAgICAgICAgIGFicyhpbmZvX3B0ci0+aW50X3lfd2hpdGUgLSAzMjkwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggIGluZm9fcHRyLT5pbnRfeF9yZWQgLSA2NDAwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggIGluZm9fcHRyLT5pbnRfeV9yZWQgLSAzMzAwMEwpID4gMTAwMCB8fAorICAgICAgICAgIGFicyhpbmZvX3B0ci0+aW50X3hfcmVkICAgLSA2NDAwMEwpID4gMTAwMCB8fAorICAgICAgICAgIGFicyhpbmZvX3B0ci0+aW50X3lfcmVkICAgLSAzMzAwMEwpID4gMTAwMCB8fAogICAgICAgICAgIGFicyhpbmZvX3B0ci0+aW50X3hfZ3JlZW4gLSAzMDAwMEwpID4gMTAwMCB8fAogICAgICAgICAgIGFicyhpbmZvX3B0ci0+aW50X3lfZ3JlZW4gLSA2MDAwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggaW5mb19wdHItPmludF94X2JsdWUgLSAxNTAwMEwpID4gMTAwMCB8fAotICAgICAgICAgIGFicyggaW5mb19wdHItPmludF95X2JsdWUgLSAgNjAwMEwpID4gMTAwMCkKKyAgICAgICAgICBhYnMoaW5mb19wdHItPmludF94X2JsdWUgIC0gMTUwMDBMKSA+IDEwMDAgfHwKKyAgICAgICAgICBhYnMoaW5mb19wdHItPmludF95X2JsdWUgIC0gIDYwMDBMKSA+IDEwMDApCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLAogICAgICAgICAgICAgICAiSWdub3JpbmcgaW5jb3JyZWN0IGNIUk0gdmFsdWUgd2hlbiBzUkdCIGlzIGFsc28gcHJlc2VudCIpOwpAQCAtOTUyLDYgKzk1Miw3IEBACiB7CiAgICBwbmdfY2hhcnAgY2h1bmtkYXRhOwogICAgcG5nX2J5dGUgY29tcHJlc3Npb25fdHlwZTsKKyAgIHBuZ19ieXRlcCBwQzsKICAgIHBuZ19jaGFycCBwcm9maWxlOwogICAgcG5nX3VpbnRfMzIgc2tpcCA9IDA7CiAgICBwbmdfdWludF8zMiBwcm9maWxlX3NpemUgPSAwOwpAQCAtMTAyOSwxNyArMTAzMCwyNiBAQAogCiAgICBwcm9maWxlX2xlbmd0aCA9IGRhdGFfbGVuZ3RoIC0gcHJlZml4X2xlbmd0aDsKIAorICAgaWYgKCBwcmVmaXhfbGVuZ3RoID4gZGF0YV9sZW5ndGggfHwgcHJvZmlsZV9sZW5ndGggPCA0KQorICAgeworICAgICAgcG5nX2ZyZWUocG5nX3B0ciwgY2h1bmtkYXRhKTsKKyAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJQcm9maWxlIHNpemUgZmllbGQgbWlzc2luZyBmcm9tIGlDQ1AgY2h1bmsiKTsKKyAgICAgIHJldHVybjsKKyAgIH0KKwogICAgLyogQ2hlY2sgdGhlIHByb2ZpbGVfc2l6ZSByZWNvcmRlZCBpbiB0aGUgZmlyc3QgMzIgYml0cyBvZiB0aGUgSUNDIHByb2ZpbGUgKi8KLSAgIHByb2ZpbGVfc2l6ZSA9ICgoKihjaHVua2RhdGErcHJlZml4X2xlbmd0aCkpPDwyNCkgfAotICAgICAgICAgICAgICAgICAgKCgqKGNodW5rZGF0YStwcmVmaXhfbGVuZ3RoKzEpKTw8MTYpIHwKLSAgICAgICAgICAgICAgICAgICgoKihjaHVua2RhdGErcHJlZml4X2xlbmd0aCsyKSk8PCA4KSB8Ci0gICAgICAgICAgICAgICAgICAoKCooY2h1bmtkYXRhK3ByZWZpeF9sZW5ndGgrMykpICAgICk7CisgICBwQyA9IChwbmdfYnl0ZXApKGNodW5rZGF0YStwcmVmaXhfbGVuZ3RoKTsKKyAgIHByb2ZpbGVfc2l6ZSA9ICgoKihwQyAgKSk8PDI0KSB8CisgICAgICAgICAgICAgICAgICAoKCoocEMrMSkpPDwxNikgfAorICAgICAgICAgICAgICAgICAgKCgqKHBDKzIpKTw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICgoKihwQyszKSkgICAgKTsKIAogICAgaWYocHJvZmlsZV9zaXplIDwgcHJvZmlsZV9sZW5ndGgpCiAgICAgICBwcm9maWxlX2xlbmd0aCA9IHByb2ZpbGVfc2l6ZTsKIAogICAgaWYocHJvZmlsZV9zaXplID4gcHJvZmlsZV9sZW5ndGgpCiAgICB7CisgICAgICBwbmdfZnJlZShwbmdfcHRyLCBjaHVua2RhdGEpOwogICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIklnbm9yaW5nIHRydW5jYXRlZCBpQ0NQIHByb2ZpbGUuXG4iKTsKICAgICAgIHJldHVybjsKICAgIH0KQEAgLTI5NjcsNyArMjk3Nyw4IEBACiAgICBpZiAocm93X2J5dGVzID4gKHBuZ191aW50XzMyKTY1NTM2TCkKICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiVGhpcyBpbWFnZSByZXF1aXJlcyBhIHJvdyBncmVhdGVyIHRoYW4gNjRLQiIpOwogI2VuZGlmCi0gICBwbmdfcHRyLT5yb3dfYnVmID0gKHBuZ19ieXRlcClwbmdfbWFsbG9jKHBuZ19wdHIsIHJvd19ieXRlcyk7CisgICBwbmdfcHRyLT5iaWdfcm93X2J1ZiA9IChwbmdfYnl0ZXApcG5nX21hbGxvYyhwbmdfcHRyLCByb3dfYnl0ZXMrNjQpOworICAgcG5nX3B0ci0+cm93X2J1ZiA9IHBuZ19wdHItPmJpZ19yb3dfYnVmKzMyOwogI2lmIGRlZmluZWQoUE5HX0RFQlVHKSAmJiBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpCiAgICBwbmdfcHRyLT5yb3dfYnVmX3NpemUgPSByb3dfYnl0ZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BuZ3NldC5jIGIvcG5nc2V0LmMKaW5kZXggNGZiNmMwZS4uY2M0MGJkYyAxMDA2NDQKLS0tIGEvcG5nc2V0LmMKKysrIGIvcG5nc2V0LmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3NldC5jIC0gc3RvcmFnZSBvZiBpbWFnZSBpbmZvcm1hdGlvbiBpbnRvIGluZm8gc3RydWN0CiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTQwLDYgKzQwLDI1IEBACiAgICBpZiAocG5nX3B0ciA9PSBOVUxMIHx8IGluZm9fcHRyID09IE5VTEwpCiAgICAgICByZXR1cm47CiAKKyAgIGlmICh3aGl0ZV94IDwgMC4wIHx8IHdoaXRlX3kgPCAwLjAgfHwKKyAgICAgICAgIHJlZF94IDwgMC4wIHx8ICAgcmVkX3kgPCAwLjAgfHwKKyAgICAgICBncmVlbl94IDwgMC4wIHx8IGdyZWVuX3kgPCAwLjAgfHwKKyAgICAgICAgYmx1ZV94IDwgMC4wIHx8ICBibHVlX3kgPCAwLjApCisgICB7CisgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLAorICAgICAgICAiSWdub3JpbmcgYXR0ZW1wdCB0byBzZXQgbmVnYXRpdmUgY2hyb21hdGljaXR5IHZhbHVlIik7CisgICAgICByZXR1cm47CisgICB9CisgICBpZiAod2hpdGVfeCA+IDIxNDc0LjgzIHx8IHdoaXRlX3kgPiAyMTQ3NC44MyB8fAorICAgICAgICAgcmVkX3ggPiAyMTQ3NC44MyB8fCAgIHJlZF95ID4gMjE0NzQuODMgfHwKKyAgICAgICBncmVlbl94ID4gMjE0NzQuODMgfHwgZ3JlZW5feSA+IDIxNDc0LjgzIHx8CisgICAgICAgIGJsdWVfeCA+IDIxNDc0LjgzIHx8ICBibHVlX3kgPiAyMTQ3NC44MykKKyAgIHsKKyAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsCisgICAgICAgICJJZ25vcmluZyBhdHRlbXB0IHRvIHNldCBjaHJvbWF0aWNpdHkgdmFsdWUgZXhjZWVkaW5nIDIxNDc0LjgzIik7CisgICAgICByZXR1cm47CisgICB9CisKICAgIGluZm9fcHRyLT54X3doaXRlID0gKGZsb2F0KXdoaXRlX3g7CiAgICBpbmZvX3B0ci0+eV93aGl0ZSA9IChmbG9hdCl3aGl0ZV95OwogICAgaW5mb19wdHItPnhfcmVkICAgPSAoZmxvYXQpcmVkX3g7CkBAIC01MSwxMiArNzAsMTIgQEAKICNpZmRlZiBQTkdfRklYRURfUE9JTlRfU1VQUE9SVEVECiAgICBpbmZvX3B0ci0+aW50X3hfd2hpdGUgPSAocG5nX2ZpeGVkX3BvaW50KSh3aGl0ZV94KjEwMDAwMC4rMC41KTsKICAgIGluZm9fcHRyLT5pbnRfeV93aGl0ZSA9IChwbmdfZml4ZWRfcG9pbnQpKHdoaXRlX3kqMTAwMDAwLiswLjUpOwotICAgaW5mb19wdHItPmludF94X3JlZCAgID0gKHBuZ19maXhlZF9wb2ludCkocmVkX3gqMTAwMDAwLiswLjUpOwotICAgaW5mb19wdHItPmludF95X3JlZCAgID0gKHBuZ19maXhlZF9wb2ludCkocmVkX3kqMTAwMDAwLiswLjUpOworICAgaW5mb19wdHItPmludF94X3JlZCAgID0gKHBuZ19maXhlZF9wb2ludCkoICByZWRfeCoxMDAwMDAuKzAuNSk7CisgICBpbmZvX3B0ci0+aW50X3lfcmVkICAgPSAocG5nX2ZpeGVkX3BvaW50KSggIHJlZF95KjEwMDAwMC4rMC41KTsKICAgIGluZm9fcHRyLT5pbnRfeF9ncmVlbiA9IChwbmdfZml4ZWRfcG9pbnQpKGdyZWVuX3gqMTAwMDAwLiswLjUpOwogICAgaW5mb19wdHItPmludF95X2dyZWVuID0gKHBuZ19maXhlZF9wb2ludCkoZ3JlZW5feSoxMDAwMDAuKzAuNSk7Ci0gICBpbmZvX3B0ci0+aW50X3hfYmx1ZSAgPSAocG5nX2ZpeGVkX3BvaW50KShibHVlX3gqMTAwMDAwLiswLjUpOwotICAgaW5mb19wdHItPmludF95X2JsdWUgID0gKHBuZ19maXhlZF9wb2ludCkoYmx1ZV95KjEwMDAwMC4rMC41KTsKKyAgIGluZm9fcHRyLT5pbnRfeF9ibHVlICA9IChwbmdfZml4ZWRfcG9pbnQpKCBibHVlX3gqMTAwMDAwLiswLjUpOworICAgaW5mb19wdHItPmludF95X2JsdWUgID0gKHBuZ19maXhlZF9wb2ludCkoIGJsdWVfeSoxMDAwMDAuKzAuNSk7CiAjZW5kaWYKICAgIGluZm9fcHRyLT52YWxpZCB8PSBQTkdfSU5GT19jSFJNOwogfQpAQCAtNzIsNiArOTEsMjQgQEAKICAgIGlmIChwbmdfcHRyID09IE5VTEwgfHwgaW5mb19wdHIgPT0gTlVMTCkKICAgICAgIHJldHVybjsKIAorICAgaWYgKHdoaXRlX3ggPCAwIHx8IHdoaXRlX3kgPCAwIHx8CisgICAgICAgICByZWRfeCA8IDAgfHwgICByZWRfeSA8IDAgfHwKKyAgICAgICBncmVlbl94IDwgMCB8fCBncmVlbl95IDwgMCB8fAorICAgICAgICBibHVlX3ggPCAwIHx8ICBibHVlX3kgPCAwKQorICAgeworICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgICAgIklnbm9yaW5nIGF0dGVtcHQgdG8gc2V0IG5lZ2F0aXZlIGNocm9tYXRpY2l0eSB2YWx1ZSIpOworICAgICAgcmV0dXJuOworICAgfQorICAgaWYgKHdoaXRlX3ggPiAoZG91YmxlKSBQTkdfTUFYX1VJTlQgfHwgd2hpdGVfeSA+IChkb3VibGUpIFBOR19NQVhfVUlOVCB8fAorICAgICAgICAgcmVkX3ggPiAoZG91YmxlKSBQTkdfTUFYX1VJTlQgfHwgICByZWRfeSA+IChkb3VibGUpIFBOR19NQVhfVUlOVCB8fAorICAgICAgIGdyZWVuX3ggPiAoZG91YmxlKSBQTkdfTUFYX1VJTlQgfHwgZ3JlZW5feSA+IChkb3VibGUpIFBOR19NQVhfVUlOVCB8fAorICAgICAgICBibHVlX3ggPiAoZG91YmxlKSBQTkdfTUFYX1VJTlQgfHwgIGJsdWVfeSA+IChkb3VibGUpIFBOR19NQVhfVUlOVCkKKyAgIHsKKyAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsCisgICAgICAgICJJZ25vcmluZyBhdHRlbXB0IHRvIHNldCBjaHJvbWF0aWNpdHkgdmFsdWUgZXhjZWVkaW5nIDIxNDc0LjgzIik7CisgICAgICByZXR1cm47CisgICB9CiAgICBpbmZvX3B0ci0+aW50X3hfd2hpdGUgPSB3aGl0ZV94OwogICAgaW5mb19wdHItPmludF95X3doaXRlID0gd2hpdGVfeTsKICAgIGluZm9fcHRyLT5pbnRfeF9yZWQgICA9IHJlZF94OwpAQCAtODMsMTIgKzEyMCwxMiBAQAogI2lmZGVmIFBOR19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQKICAgIGluZm9fcHRyLT54X3doaXRlID0gKGZsb2F0KSh3aGl0ZV94LzEwMDAwMC4pOwogICAgaW5mb19wdHItPnlfd2hpdGUgPSAoZmxvYXQpKHdoaXRlX3kvMTAwMDAwLik7Ci0gICBpbmZvX3B0ci0+eF9yZWQgICA9IChmbG9hdCkocmVkX3gvMTAwMDAwLik7Ci0gICBpbmZvX3B0ci0+eV9yZWQgICA9IChmbG9hdCkocmVkX3kvMTAwMDAwLik7CisgICBpbmZvX3B0ci0+eF9yZWQgICA9IChmbG9hdCkoICByZWRfeC8xMDAwMDAuKTsKKyAgIGluZm9fcHRyLT55X3JlZCAgID0gKGZsb2F0KSggIHJlZF95LzEwMDAwMC4pOwogICAgaW5mb19wdHItPnhfZ3JlZW4gPSAoZmxvYXQpKGdyZWVuX3gvMTAwMDAwLik7CiAgICBpbmZvX3B0ci0+eV9ncmVlbiA9IChmbG9hdCkoZ3JlZW5feS8xMDAwMDAuKTsKLSAgIGluZm9fcHRyLT54X2JsdWUgID0gKGZsb2F0KShibHVlX3gvMTAwMDAwLik7Ci0gICBpbmZvX3B0ci0+eV9ibHVlICA9IChmbG9hdCkoYmx1ZV95LzEwMDAwMC4pOworICAgaW5mb19wdHItPnhfYmx1ZSAgPSAoZmxvYXQpKCBibHVlX3gvMTAwMDAwLik7CisgICBpbmZvX3B0ci0+eV9ibHVlICA9IChmbG9hdCkoIGJsdWVfeS8xMDAwMDAuKTsKICNlbmRpZgogICAgaW5mb19wdHItPnZhbGlkIHw9IFBOR19JTkZPX2NIUk07CiB9CkBAIC0xMDAsMTYgKzEzNywyNSBAQAogdm9pZCBQTkdBUEkKIHBuZ19zZXRfZ0FNQShwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIGRvdWJsZSBmaWxlX2dhbW1hKQogeworICAgZG91YmxlIGdhbW1hOwogICAgcG5nX2RlYnVnMSgxLCAiaW4gJXMgc3RvcmFnZSBmdW5jdGlvblxuIiwgImdBTUEiKTsKICAgIGlmIChwbmdfcHRyID09IE5VTEwgfHwgaW5mb19wdHIgPT0gTlVMTCkKICAgICAgIHJldHVybjsKIAotICAgaW5mb19wdHItPmdhbW1hID0gKGZsb2F0KWZpbGVfZ2FtbWE7CisgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgIGlmIChmaWxlX2dhbW1hID4gMjE0NzQuODMpCisgICB7CisgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiTGltaXRpbmcgZ2FtbWEgdG8gMjE0NzQuODMiKTsKKyAgICAgIGdhbW1hPTIxNDc0LjgzOworICAgfQorICAgZWxzZQorICAgICAgZ2FtbWE9ZmlsZV9nYW1tYTsKKyAgIGluZm9fcHRyLT5nYW1tYSA9IChmbG9hdClnYW1tYTsKICNpZmRlZiBQTkdfRklYRURfUE9JTlRfU1VQUE9SVEVECi0gICBpbmZvX3B0ci0+aW50X2dhbW1hID0gKGludCkoZmlsZV9nYW1tYSoxMDAwMDAuKy41KTsKKyAgIGluZm9fcHRyLT5pbnRfZ2FtbWEgPSAoaW50KShnYW1tYSoxMDAwMDAuKy41KTsKICNlbmRpZgogICAgaW5mb19wdHItPnZhbGlkIHw9IFBOR19JTkZPX2dBTUE7Ci0gICBpZihmaWxlX2dhbW1hID09IDAuMCkKKyAgIGlmKGdhbW1hID09IDAuMCkKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJTZXR0aW5nIGdhbW1hPTAiKTsKIH0KICNlbmRpZgpAQCAtMTE3LDE4ICsxNjMsMzUgQEAKIHBuZ19zZXRfZ0FNQV9maXhlZChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ19maXhlZF9wb2ludAogICAgaW50X2dhbW1hKQogeworICAgcG5nX2ZpeGVkX3BvaW50IGdhbW1hOworCiAgICBwbmdfZGVidWcxKDEsICJpbiAlcyBzdG9yYWdlIGZ1bmN0aW9uXG4iLCAiZ0FNQSIpOwogICAgaWYgKHBuZ19wdHIgPT0gTlVMTCB8fCBpbmZvX3B0ciA9PSBOVUxMKQogICAgICAgcmV0dXJuOwogCisgICBpZiAoaW50X2dhbW1hID4gKHBuZ19maXhlZF9wb2ludCkgUE5HX01BWF9VSU5UKQorICAgeworICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiTGltaXRpbmcgZ2FtbWEgdG8gMjE0NzQuODMiKTsKKyAgICAgZ2FtbWE9UE5HX01BWF9VSU5UOworICAgfQorICAgZWxzZQorICAgeworICAgICBpZiAoaW50X2dhbW1hIDwgMCkKKyAgICAgeworICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJTZXR0aW5nIG5lZ2F0aXZlIGdhbW1hIHRvIHplcm8iKTsKKyAgICAgICBnYW1tYT0wOworICAgICB9CisgICAgIGVsc2UKKyAgICAgICBnYW1tYT1pbnRfZ2FtbWE7CisgICB9CiAjaWZkZWYgUE5HX0ZMT0FUSU5HX1BPSU5UX1NVUFBPUlRFRAotICAgaW5mb19wdHItPmdhbW1hID0gKGZsb2F0KShpbnRfZ2FtbWEvMTAwMDAwLik7CisgICBpbmZvX3B0ci0+Z2FtbWEgPSAoZmxvYXQpKGdhbW1hLzEwMDAwMC4pOwogI2VuZGlmCiAjaWZkZWYgUE5HX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRAotICAgaW5mb19wdHItPmludF9nYW1tYSA9IGludF9nYW1tYTsKKyAgIGluZm9fcHRyLT5pbnRfZ2FtbWEgPSBnYW1tYTsKICNlbmRpZgogICAgaW5mb19wdHItPnZhbGlkIHw9IFBOR19JTkZPX2dBTUE7Ci0gICBpZihpbnRfZ2FtbWEgPT0gMCkKKyAgIGlmKGdhbW1hID09IDApCiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiU2V0dGluZyBnYW1tYT0wIik7CiB9CiAjZW5kaWYKQEAgLTE1Miw4ICsyMTUsOSBAQAogI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAogICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfSElTVCwgMCk7CiAjZW5kaWYKKyAgIC8qIENoYW5nZWQgZnJvbSBpbmZvLT5udW1fcGFsZXR0ZSB0byAyNTYgaW4gdmVyc2lvbiAxLjIuMSAqLwogICAgcG5nX3B0ci0+aGlzdCA9IChwbmdfdWludF8xNnApcG5nX21hbGxvYyhwbmdfcHRyLAotICAgICAgKHBuZ191aW50XzMyKShpbmZvX3B0ci0+bnVtX3BhbGV0dGUgKiBzaXplb2YgKHBuZ191aW50XzE2KSkpOworICAgICAgKHBuZ191aW50XzMyKSgyNTYgKiBzaXplb2YgKHBuZ191aW50XzE2KSkpOwogCiAgICBmb3IgKGkgPSAwOyBpIDwgaW5mb19wdHItPm51bV9wYWxldHRlOyBpKyspCiAgICAgICAgcG5nX3B0ci0+aGlzdFtpXSA9IGhpc3RbaV07CkBAIC0yNDEsOSArMzA1LDcgQEAKICAgIGluZm9fcHRyLT5jb21wcmVzc2lvbl90eXBlID0gKHBuZ19ieXRlKWNvbXByZXNzaW9uX3R5cGU7CiAgICBpbmZvX3B0ci0+ZmlsdGVyX3R5cGUgPSAocG5nX2J5dGUpZmlsdGVyX3R5cGU7CiAgICBpbmZvX3B0ci0+aW50ZXJsYWNlX3R5cGUgPSAocG5nX2J5dGUpaW50ZXJsYWNlX3R5cGU7Ci0gICBpZiAoaW5mb19wdHItPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSkKLSAgICAgIGluZm9fcHRyLT5jaGFubmVscyA9IDE7Ci0gICBlbHNlIGlmIChpbmZvX3B0ci0+Y29sb3JfdHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKQorICAgaWYgKGluZm9fcHRyLT5jb2xvcl90eXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpCiAgICAgICBpbmZvX3B0ci0+Y2hhbm5lbHMgPSAzOwogICAgZWxzZQogICAgICAgaW5mb19wdHItPmNoYW5uZWxzID0gMTsKQEAgLTQxMCw4ICs0NzIsMTIgQEAKICNpZmRlZiBQTkdfRlJFRV9NRV9TVVBQT1JURUQKICAgIHBuZ19mcmVlX2RhdGEocG5nX3B0ciwgaW5mb19wdHIsIFBOR19GUkVFX1BMVEUsIDApOwogI2VuZGlmCi0gICBwbmdfcHRyLT5wYWxldHRlID0gKHBuZ19jb2xvcnApcG5nX3phbGxvYyhwbmdfcHRyLCAodUludCludW1fcGFsZXR0ZSwKKyAgIC8qIENoYW5nZWQgaW4gbGlicG5nLTEuMi4xIHRvIGFsbG9jYXRlIDI1NiBpbnN0ZWFkIG9mIG51bV9wYWxldHRlIGVudHJpZXMsCisgICAgICBpbiBjYXNlIG9mIGFuIGludmFsaWQgUE5HIGZpbGUgdGhhdCBoYXMgdG9vLWxhcmdlIHNhbXBsZSB2YWx1ZXMuICovCisgICBwbmdfcHRyLT5wYWxldHRlID0gKHBuZ19jb2xvcnApcG5nX3phbGxvYyhwbmdfcHRyLCAodUludCkyNTYsCiAgICAgICBzaXplb2YgKHBuZ19jb2xvcikpOworICAgaWYgKHBuZ19wdHItPnBhbGV0dGUgPT0gTlVMTCkKKyAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiVW5hYmxlIHRvIG1hbGxvYyBwYWxldHRlIik7CiAgICBwbmdfbWVtY3B5KHBuZ19wdHItPnBhbGV0dGUsIHBhbGV0dGUsIG51bV9wYWxldHRlICogc2l6ZW9mIChwbmdfY29sb3IpKTsKICAgIGluZm9fcHRyLT5wYWxldHRlID0gcG5nX3B0ci0+cGFsZXR0ZTsKICAgIGluZm9fcHRyLT5udW1fcGFsZXR0ZSA9IHBuZ19wdHItPm51bV9wYWxldHRlID0gKHBuZ191aW50XzE2KW51bV9wYWxldHRlOwpAQCAtNjIwLDcgKzY4Niw3IEBACiAjaWZkZWYgUE5HX2lUWHRfU1VQUE9SVEVECiAgICAgICB7CiAgICAgICAgIC8qIHNldCBpVFh0IGRhdGEgKi8KLSAgICAgICAgaWYgKHRleHRfcHRyW2ldLmtleSAhPSBOVUxMKQorICAgICAgICBpZiAodGV4dF9wdHJbaV0ubGFuZyAhPSBOVUxMKQogICAgICAgICAgIGxhbmdfbGVuID0gcG5nX3N0cmxlbih0ZXh0X3B0cltpXS5sYW5nKTsKICAgICAgICAgZWxzZQogICAgICAgICAgIGxhbmdfbGVuID0gMDsKQEAgLTY3Niw4ICs3NDIsOCBAQAogI2VuZGlmCiAgICAgICB7CiAjaWZkZWYgUE5HX2lUWHRfU1VQUE9SVEVECi0gICAgICAgICB0ZXh0cC0+bGFuZz0ocG5nX2NoYXJwKU5VTEw7Ci0gICAgICAgICB0ZXh0cC0+bGFuZ19rZXk9KHBuZ19jaGFycClOVUxMOworICAgICAgICAgdGV4dHAtPmxhbmc9TlVMTDsKKyAgICAgICAgIHRleHRwLT5sYW5nX2tleT1OVUxMOwogI2VuZGlmCiAgICAgICAgICB0ZXh0cC0+dGV4dD10ZXh0cC0+a2V5ICsga2V5X2xlbiArIDE7CiAgICAgICB9CkBAIC03NDAsOSArODA2LDEwIEBACiAjaWZkZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECiAgICAgICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfVFJOUywgMCk7CiAjZW5kaWYKKyAgICAgICAvKiBDaGFuZ2VkIGZyb20gbnVtX3RyYW5zIHRvIDI1NiBpbiB2ZXJzaW9uIDEuMi4xICovCiAgICAgICAgcG5nX3B0ci0+dHJhbnMgPSBpbmZvX3B0ci0+dHJhbnMgPSAocG5nX2J5dGVwKXBuZ19tYWxsb2MocG5nX3B0ciwKLSAgICAgICAgICAgbnVtX3RyYW5zKTsKLSAgICAgICBwbmdfbWVtY3B5KGluZm9fcHRyLT50cmFucywgdHJhbnMsIG51bV90cmFucyk7CisgICAgICAgICAgIChwbmdfdWludF8zMikyNTYpOworICAgICAgIHBuZ19tZW1jcHkoaW5mb19wdHItPnRyYW5zLCB0cmFucywgKHBuZ19zaXplX3QpbnVtX3RyYW5zKTsKICNpZmRlZiBQTkdfRlJFRV9NRV9TVVBQT1JURUQKICAgICAgICBpbmZvX3B0ci0+ZnJlZV9tZSB8PSBQTkdfRlJFRV9UUk5TOwogI2Vsc2UKQEAgLTkwNSwxNCArOTcyLDE3IEBACiAgICAgaWYgKGNodW5rX2xpc3QgPT0gTlVMTCkKICAgICAgIHJldHVybjsKICAgICBvbGRfbnVtX2NodW5rcz1wbmdfcHRyLT5udW1fY2h1bmtfbGlzdDsKLSAgICBuZXdfbGlzdD0ocG5nX2J5dGVwKXBuZ19tYWxsb2MocG5nX3B0ciw1KihudW1fY2h1bmtzK29sZF9udW1fY2h1bmtzKSk7CisgICAgbmV3X2xpc3Q9KHBuZ19ieXRlcClwbmdfbWFsbG9jKHBuZ19wdHIsCisgICAgICAgKHBuZ191aW50XzMyKSg1KihudW1fY2h1bmtzK29sZF9udW1fY2h1bmtzKSkpOwogICAgIGlmKHBuZ19wdHItPmNodW5rX2xpc3QgIT0gTlVMTCkKICAgICB7Ci0gICAgICAgcG5nX21lbWNweShuZXdfbGlzdCwgcG5nX3B0ci0+Y2h1bmtfbGlzdCwgNSpvbGRfbnVtX2NodW5rcyk7CisgICAgICAgcG5nX21lbWNweShuZXdfbGlzdCwgcG5nX3B0ci0+Y2h1bmtfbGlzdCwKKyAgICAgICAgICAocG5nX3NpemVfdCkoNSpvbGRfbnVtX2NodW5rcykpOwogICAgICAgIHBuZ19mcmVlKHBuZ19wdHIsIHBuZ19wdHItPmNodW5rX2xpc3QpOwogICAgICAgIHBuZ19wdHItPmNodW5rX2xpc3Q9TlVMTDsKICAgICB9Ci0gICAgcG5nX21lbWNweShuZXdfbGlzdCs1Km9sZF9udW1fY2h1bmtzLCBjaHVua19saXN0LCA1Km51bV9jaHVua3MpOworICAgIHBuZ19tZW1jcHkobmV3X2xpc3QrNSpvbGRfbnVtX2NodW5rcywgY2h1bmtfbGlzdCwKKyAgICAgICAocG5nX3NpemVfdCkoNSpudW1fY2h1bmtzKSk7CiAgICAgZm9yIChwPW5ld19saXN0KzUqb2xkX251bV9jaHVua3MrNCwgaT0wOyBpPG51bV9jaHVua3M7IGkrKywgcCs9NSkKICAgICAgICAqcD0ocG5nX2J5dGUpa2VlcDsKICAgICBwbmdfcHRyLT5udW1fY2h1bmtfbGlzdD1vbGRfbnVtX2NodW5rcytudW1fY2h1bmtzOwpAQCAtOTcwLDYgKzEwNDAsNyBAQAogfQogCiAKKyNpZm5kZWYgUE5HXzFfMF9YCiAjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAogLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wIGFuZCBzaG91bGQgYWx3YXlzIGV4aXN0IGJ5IGRlZmF1bHQgKi8KIHZvaWQgUE5HQVBJCkBAIC0xMDI0LDMgKzEwOTUsNCBAQAogICAgIHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQgPSBtbXhfcm93Ynl0ZXNfdGhyZXNob2xkOwogfQogI2VuZGlmIC8qID9QTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICovCisjZW5kaWYgLyogP1BOR18xXzBfWCAqLwpkaWZmIC0tZ2l0IGEvcG5ndGVzdC5jIGIvcG5ndGVzdC5jCmluZGV4IGRhYWE2YjguLjBjNTNiN2QgMTAwNjQ0Ci0tLSBhL3BuZ3Rlc3QuYworKysgYi9wbmd0ZXN0LmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3Rlc3QuYyAtIGEgc2ltcGxlIHRlc3QgcHJvZ3JhbSB0byB0ZXN0IGxpYnBuZwogICoKLSAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQorICogbGlicG5nIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC00NzAsMTAgKzQ3MCw4IEBACiBzdGF0aWMgaW50IHRvdGFsX2FsbG9jYXRpb24gPSAwOwogc3RhdGljIGludCBudW1fYWxsb2NhdGlvbnMgPSAwOwogCi1leHRlcm4gUE5HX0VYUE9SVChwbmdfdm9pZHAscG5nX2RlYnVnX21hbGxvYykgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAotICAgcG5nX3VpbnRfMzIgc2l6ZSkpOwotZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfZGVidWdfZnJlZSkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAotICAgcG5nX3ZvaWRwIHB0cikpOworcG5nX3ZvaWRwIHBuZ19kZWJ1Z19tYWxsb2MgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdWludF8zMiBzaXplKSk7Cit2b2lkIHBuZ19kZWJ1Z19mcmVlIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3ZvaWRwIHB0cikpOwogCiBwbmdfdm9pZHAKIHBuZ19kZWJ1Z19tYWxsb2MocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc2l6ZSkKQEAgLTQ4MywxMyArNDgxLDEzIEBACiAgICAgICBwbmdfZGVidWdfbWFsbG9jIGRpcmVjdGx5LCB3aXRoIHBuZ19wdHIgPT0gTlVMTCB3aGljaCBpcyBPSyAqLwogCiAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgcmV0dXJuIChwbmdfdm9pZHApKE5VTEwpOworICAgICAgcmV0dXJuIChOVUxMKTsKIAogICAgLyogVGhpcyBjYWxscyB0aGUgbGlicmFyeSBhbGxvY2F0b3IgdHdpY2UsIG9uY2UgdG8gZ2V0IHRoZSByZXF1ZXN0ZWQKICAgICAgIGJ1ZmZlciBhbmQgb25jZSB0byBnZXQgYSBuZXcgZnJlZSBsaXN0IGVudHJ5LiAqLwogICAgewogICAgICAgbWVtb3J5X2luZm9wIHBpbmZvID0gKG1lbW9yeV9pbmZvcClwbmdfbWFsbG9jX2RlZmF1bHQocG5nX3B0ciwKLSAgICAgICAgIHNpemVvZiAqcGluZm8pOworICAgICAgICAgKHBuZ191aW50XzMyKXNpemVvZiAqcGluZm8pOwogICAgICAgcGluZm8tPnNpemUgPSBzaXplOwogICAgICAgY3VycmVudF9hbGxvY2F0aW9uICs9IHNpemU7CiAgICAgICB0b3RhbF9hbGxvY2F0aW9uICs9IHNpemU7CkBAIC01MDMsNyArNTAxLDcgQEAKICAgICAgIHBuZ19tZW1zZXQocGluZm8tPnBvaW50ZXIsIDB4ZGQsIHBpbmZvLT5zaXplKTsKICNpZiBQTkdfREVCVUcKICAgICAgIGlmKHZlcmJvc2UpCi0gICAgICAgICBwcmludGYoInBuZ19tYWxsb2MgJWQgYnl0ZXMgYXQgJXhcbiIsc2l6ZSxwaW5mby0+cG9pbnRlcik7CisgICAgICAgICBwcmludGYoInBuZ19tYWxsb2MgJWx1IGJ5dGVzIGF0ICV4XG4iLHNpemUscGluZm8tPnBvaW50ZXIpOwogI2VuZGlmCiAgICAgICBhc3NlcnQocGluZm8tPnNpemUgIT0gMTIzNDU2NzgpOwogICAgICAgcmV0dXJuIChwbmdfdm9pZHApKHBpbmZvLT5wb2ludGVyKTsKQEAgLTU0NSw3ICs1NDMsNyBAQAogICAgICAgICAgfQogICAgICAgICAgaWYgKHBpbmZvLT5uZXh0ID09IE5VTEwpCiAgICAgICAgICB7Ci0gICAgICAgICAgICBmcHJpbnRmKFNUREVSUiwgIlBvaW50ZXIgJXggbm90IGZvdW5kXG4iLCBwdHIpOworICAgICAgICAgICAgZnByaW50ZihTVERFUlIsICJQb2ludGVyICV4IG5vdCBmb3VuZFxuIiwgKHVuc2lnbmVkIGludClwdHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBwcGluZm8gPSAmcGluZm8tPm5leHQ7CkBAIC01OTYsNyArNTk0LDcgQEAKICNlbmRpZgogICAgY2hhciBpbmJ1ZlsyNTZdLCBvdXRidWZbMjU2XTsKIAotICAgcm93X2J1ZiA9IChwbmdfYnl0ZXApTlVMTDsKKyAgIHJvd19idWYgPSBOVUxMOwogCiAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQogICAgTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIGlubmFtZSwgLTEsIHBhdGgsIE1BWF9QQVRIKTsKQEAgLTYyMywxMiArNjIxLDEyIEBACiAKICAgIHBuZ19kZWJ1ZygwLCAiQWxsb2NhdGluZyByZWFkIGFuZCB3cml0ZSBzdHJ1Y3R1cmVzXG4iKTsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICByZWFkX3B0ciA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3RfMihQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIChwbmdfdm9pZHApTlVMTCwKLSAgICAgIChwbmdfZXJyb3JfcHRyKU5VTEwsIChwbmdfZXJyb3JfcHRyKU5VTEwsIChwbmdfdm9pZHApTlVMTCwKKyAgIHJlYWRfcHRyID0gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yKFBOR19MSUJQTkdfVkVSX1NUUklORywgcG5nX3ZvaWRwX05VTEwsCisgICAgICBwbmdfZXJyb3JfcHRyX05VTEwsIHBuZ19lcnJvcl9wdHJfTlVMTCwgcG5nX3ZvaWRwX05VTEwsCiAgICAgICAocG5nX21hbGxvY19wdHIpcG5nX2RlYnVnX21hbGxvYywgKHBuZ19mcmVlX3B0cilwbmdfZGVidWdfZnJlZSk7CiAjZWxzZQotICAgcmVhZF9wdHIgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KFBOR19MSUJQTkdfVkVSX1NUUklORywgKHBuZ192b2lkcClOVUxMLAotICAgICAgKHBuZ19lcnJvcl9wdHIpTlVMTCwgKHBuZ19lcnJvcl9wdHIpTlVMTCk7CisgICByZWFkX3B0ciA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCBwbmdfdm9pZHBfTlVMTCwKKyAgICAgIHBuZ19lcnJvcl9wdHJfTlVMTCwgcG5nX2Vycm9yX3B0cl9OVUxMKTsKICNlbmRpZgogI2lmIGRlZmluZWQoUE5HX05PX1NURElPKQogICAgcG5nX3NldF9lcnJvcl9mbihyZWFkX3B0ciwgKHBuZ192b2lkcClpbm5hbWUsIHBuZ3Rlc3RfZXJyb3IsCkBAIC02MzYsMTIgKzYzNCwxMiBAQAogI2VuZGlmCiAjaWZkZWYgUE5HX1dSSVRFX1NVUFBPUlRFRAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIHdyaXRlX3B0ciA9IHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0XzIoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAocG5nX3ZvaWRwKU5VTEwsCi0gICAgICAocG5nX2Vycm9yX3B0cilOVUxMLCAocG5nX2Vycm9yX3B0cilOVUxMLCAocG5nX3ZvaWRwKU5VTEwsCisgICB3cml0ZV9wdHIgPSBwbmdfY3JlYXRlX3dyaXRlX3N0cnVjdF8yKFBOR19MSUJQTkdfVkVSX1NUUklORywgcG5nX3ZvaWRwX05VTEwsCisgICAgICBwbmdfZXJyb3JfcHRyX05VTEwsIHBuZ19lcnJvcl9wdHJfTlVMTCwgcG5nX3ZvaWRwX05VTEwsCiAgICAgICAocG5nX21hbGxvY19wdHIpcG5nX2RlYnVnX21hbGxvYywgKHBuZ19mcmVlX3B0cilwbmdfZGVidWdfZnJlZSk7CiAjZWxzZQotICAgd3JpdGVfcHRyID0gcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAocG5nX3ZvaWRwKU5VTEwsCi0gICAgICAocG5nX2Vycm9yX3B0cilOVUxMLCAocG5nX2Vycm9yX3B0cilOVUxMKTsKKyAgIHdyaXRlX3B0ciA9IHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0KFBOR19MSUJQTkdfVkVSX1NUUklORywgcG5nX3ZvaWRwX05VTEwsCisgICAgICBwbmdfZXJyb3JfcHRyX05VTEwsIHBuZ19lcnJvcl9wdHJfTlVMTCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFBOR19OT19TVERJTykKICAgIHBuZ19zZXRfZXJyb3JfZm4od3JpdGVfcHRyLCAocG5nX3ZvaWRwKWlubmFtZSwgcG5ndGVzdF9lcnJvciwKQEAgLTcyOSw5ICs3MjcsOSBAQAogICAgZWxzZQogICAgewogI2lmZGVmIFBOR19XUklURV9TVVBQT1JURUQKLSAgICAgIHBuZ19zZXRfd3JpdGVfc3RhdHVzX2ZuKHdyaXRlX3B0ciwgTlVMTCk7CisgICAgICBwbmdfc2V0X3dyaXRlX3N0YXR1c19mbih3cml0ZV9wdHIsIHBuZ193cml0ZV9zdGF0dXNfcHRyX05VTEwpOwogI2VuZGlmCi0gICAgICBwbmdfc2V0X3JlYWRfc3RhdHVzX2ZuKHJlYWRfcHRyLCBOVUxMKTsKKyAgICAgIHBuZ19zZXRfcmVhZF9zdGF0dXNfZm4ocmVhZF9wdHIsIHBuZ19yZWFkX3N0YXR1c19wdHJfTlVMTCk7CiAgICB9CiAKICNpZiBkZWZpbmVkKFBOR19SRUFEX1VTRVJfVFJBTlNGT1JNX1NVUFBPUlRFRCkKQEAgLTc1MCwxMCArNzQ4LDEyIEBACiAjZGVmaW5lIEhBTkRMRV9DSFVOS19JRl9TQUZFICAgICAgMgogI2RlZmluZSBIQU5ETEVfQ0hVTktfQUxXQVlTICAgICAgIDMKICNpZiBkZWZpbmVkKFBOR19SRUFEX1VOS05PV05fQ0hVTktTX1NVUFBPUlRFRCkKLSAgIHBuZ19zZXRfa2VlcF91bmtub3duX2NodW5rcyhyZWFkX3B0ciwgSEFORExFX0NIVU5LX0FMV0FZUywgTlVMTCwgMCk7CisgICBwbmdfc2V0X2tlZXBfdW5rbm93bl9jaHVua3MocmVhZF9wdHIsIEhBTkRMRV9DSFVOS19BTFdBWVMsCisgICAgICBwbmdfYnl0ZXBfTlVMTCwgMCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFBOR19XUklURV9VTktOT1dOX0NIVU5LU19TVVBQT1JURUQpCi0gICBwbmdfc2V0X2tlZXBfdW5rbm93bl9jaHVua3Mod3JpdGVfcHRyLCBIQU5ETEVfQ0hVTktfSUZfU0FGRSwgTlVMTCwgMCk7CisgICBwbmdfc2V0X2tlZXBfdW5rbm93bl9jaHVua3Mod3JpdGVfcHRyLCBIQU5ETEVfQ0hVTktfSUZfU0FGRSwKKyAgICAgIHBuZ19ieXRlcF9OVUxMLCAwKTsKICNlbmRpZgogCiAgICBwbmdfZGVidWcoMCwgIlJlYWRpbmcgaW5mbyBzdHJ1Y3RcbiIpOwpAQCAtMTA1OCw3ICsxMDU4LDcgQEAKICAgICAgICAgIHBuZ19kZWJ1ZzIoMCwgIjB4JTA4bHggKCVsZCBieXRlcylcbiIsICh1bnNpZ25lZCBsb25nKXJvd19idWYsCiAgICAgICAgICAgICBwbmdfZ2V0X3Jvd2J5dGVzKHJlYWRfcHRyLCByZWFkX2luZm9fcHRyKSk7CiAjZW5kaWYgLyogIVNJTkdMRV9ST1dCVUZfQUxMT0MgKi8KLSAgICAgICAgIHBuZ19yZWFkX3Jvd3MocmVhZF9wdHIsIChwbmdfYnl0ZXBwKSZyb3dfYnVmLCAocG5nX2J5dGVwcClOVUxMLCAxKTsKKyAgICAgICAgIHBuZ19yZWFkX3Jvd3MocmVhZF9wdHIsIChwbmdfYnl0ZXBwKSZyb3dfYnVmLCBwbmdfYnl0ZXBwX05VTEwsIDEpOwogCiAjaWZkZWYgUE5HX1dSSVRFX1NVUFBPUlRFRAogI2lmZGVmIFBOR1RFU1RfVElNSU5HCkBAIC0xMjgwLDggKzEyODAsOCBAQAogICAgLyogU2hvdyB0aGUgdmVyc2lvbiBvZiBsaWJwbmcgdXNlZCBpbiBidWlsZGluZyB0aGUgYXBwbGljYXRpb24gKi8KICAgIGZwcmludGYoU1RERVJSLCIgcG5ndGVzdCAoJWx1KTolcyIsICh1bnNpZ25lZCBsb25nKVBOR19MSUJQTkdfVkVSLAogICAgICAgUE5HX0hFQURFUl9WRVJTSU9OX1NUUklORyk7Ci0gICBmcHJpbnRmKFNUREVSUiwiIHNpemVvZihwbmdfc3RydWN0KT0lZCwgc2l6ZW9mKHBuZ19pbmZvKT0lZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBuZ19zdHJ1Y3QpLCBzaXplb2YocG5nX2luZm8pKTsKKyAgIGZwcmludGYoU1RERVJSLCIgc2l6ZW9mKHBuZ19zdHJ1Y3QpPSVsZCwgc2l6ZW9mKHBuZ19pbmZvKT0lbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIChsb25nKXNpemVvZihwbmdfc3RydWN0KSwgKGxvbmcpc2l6ZW9mKHBuZ19pbmZvKSk7CiAKICAgIC8qIERvIHNvbWUgY29uc2lzdGVuY3kgY2hlY2tpbmcgb24gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHNldHRpbmdzLCBJJ20KICAgICAgIG5vdCBzdXJlIHRoaXMgbWF0dGVycywgYnV0IGl0IGlzIG5pY2UgdG8ga25vdywgdGhlIGZpcnN0IG9mIHRoZXNlCkBAIC0xMzk2LDcgKzEzOTYsOCBAQAogICAgICAgICAgICAgICAgY3VycmVudF9hbGxvY2F0aW9uKTsKICAgICAgICAgICAgIHdoaWxlIChwaW5mbyAhPSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZnByaW50ZihTVERFUlIsICIgJWQgYnl0ZXMgYXQgJXhcbiIsIHBpbmZvLT5zaXplLCBwaW5mby0+cG9pbnRlcik7CisgICAgICAgICAgICAgICBmcHJpbnRmKFNUREVSUiwgIiAlbHUgYnl0ZXMgYXQgJXhcbiIsIHBpbmZvLT5zaXplLCAKKyAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgcGluZm8tPnBvaW50ZXIpOwogICAgICAgICAgICAgICAgcGluZm8gPSBwaW5mby0+bmV4dDsKICAgICAgICAgICAgIH0KICAgICAgICAgIH0KQEAgLTE0NzAsOCArMTQ3MSw4IEBACiAgICAgICAgICAgICAgICAgY3VycmVudF9hbGxvY2F0aW9uKTsKICAgICAgICAgICAgICB3aGlsZSAocGluZm8gIT0gTlVMTCkKICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihTVERFUlIsIiAlZCBieXRlcyBhdCAleFxuIiwKLSAgICAgICAgICAgICAgICAgICBwaW5mby0+c2l6ZSwgcGluZm8tPnBvaW50ZXIpOworICAgICAgICAgICAgICAgIGZwcmludGYoU1RERVJSLCIgJWx1IGJ5dGVzIGF0ICV4XG4iLAorICAgICAgICAgICAgICAgICAgIHBpbmZvLT5zaXplLCAodW5zaWduZWQgaW50KXBpbmZvLT5wb2ludGVyKTsKICAgICAgICAgICAgICAgICBwaW5mbyA9IHBpbmZvLT5uZXh0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICB9CkBAIC0xNTExLDQgKzE1MTIsNCBAQAogfQogCiAvKiBHZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIGlmIHRoZXJlIGlzIGFuIG9sZCBwbmcuaCBpbiB0aGUgc2VhcmNoIHBhdGguICovCi10eXBlZGVmIHZlcnNpb25fMV8wXzEyYmV0YTEgeW91cl9wbmdfaF9pc19ub3RfdmVyc2lvbl8xXzBfMTJiZXRhMTsKK3R5cGVkZWYgdmVyc2lvbl8xXzBfMTMgeW91cl9wbmdfaF9pc19ub3RfdmVyc2lvbl8xXzBfMTM7CmRpZmYgLS1naXQgYS9wbmd0cmFucy5jIGIvcG5ndHJhbnMuYwppbmRleCA4NWQyNzU1Li42M2E2NjcyIDEwMDY0NAotLS0gYS9wbmd0cmFucy5jCisrKyBiL3BuZ3RyYW5zLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3RyYW5zLmMgLSB0cmFuc2Zvcm1zIHRoZSBkYXRhIGluIGEgcm93ICh1c2VkIGJ5IGJvdGggcmVhZGVycyBhbmQgd3JpdGVycykKICAqCi0gKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyAxLjAuMTMgLSBBcHJpbCAxNSwgMjAwMgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKi8KQEAgLTE1MywxMSArMTUzLDE0IEBACiBwbmdfZG9faW52ZXJ0KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3cpCiB7CiAgICBwbmdfZGVidWcoMSwgImluIHBuZ19kb19pbnZlcnRcbiIpOwotICAgaWYgKHJvd19pbmZvLT5iaXRfZGVwdGggPT0gMSAmJgorICAvKiBUaGlzIHRlc3QgcmVtb3ZlZCBmcm9tIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMyBhbmQgMS4yLjA6CisgICAqICAgaWYgKHJvd19pbmZvLT5iaXRfZGVwdGggPT0gMSAmJgorICAgKi8KICNpZiBkZWZpbmVkKFBOR19VU0VMRVNTX1RFU1RTX1NVUFBPUlRFRCkKLSAgICAgICByb3cgIT0gTlVMTCAmJiByb3dfaW5mbyAhPSBOVUxMICYmCisgICBpZiAocm93ID09IE5VTEwgfHwgcm93X2luZm8gPT0gTlVMTCkKKyAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgICAgcm93X2luZm8tPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSkKKyAgIGlmIChyb3dfaW5mby0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZKQogICAgewogICAgICAgcG5nX2J5dGVwIHJwID0gcm93OwogICAgICAgcG5nX3VpbnRfMzIgaTsKQEAgLTE2OSw2ICsxNzIsMzMgQEAKICAgICAgICAgIHJwKys7CiAgICAgICB9CiAgICB9CisgICBlbHNlIGlmIChyb3dfaW5mby0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZX0FMUEhBICYmCisgICAgICByb3dfaW5mby0+Yml0X2RlcHRoID09IDgpCisgICB7CisgICAgICBwbmdfYnl0ZXAgcnAgPSByb3c7CisgICAgICBwbmdfdWludF8zMiBpOworICAgICAgcG5nX3VpbnRfMzIgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSs9MikKKyAgICAgIHsKKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkofigqcnApKTsKKyAgICAgICAgIHJwKz0yOworICAgICAgfQorICAgfQorICAgZWxzZSBpZiAocm93X2luZm8tPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQSAmJgorICAgICAgcm93X2luZm8tPmJpdF9kZXB0aCA9PSAxNikKKyAgIHsKKyAgICAgIHBuZ19ieXRlcCBycCA9IHJvdzsKKyAgICAgIHBuZ191aW50XzMyIGk7CisgICAgICBwbmdfdWludF8zMiBpc3RvcCA9IHJvd19pbmZvLT5yb3dieXRlczsKKworICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wOyBpKz00KQorICAgICAgeworICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSh+KCpycCkpOworICAgICAgICAgKihycCsxKSA9IChwbmdfYnl0ZSkofigqKHJwKzEpKSk7CisgICAgICAgICBycCs9NDsKKyAgICAgIH0KKyAgIH0KIH0KICNlbmRpZgogCkBAIC02MDgsNCArNjM4LDMgQEAKICAgIHJldHVybiAoTlVMTCk7CiAjZW5kaWYKIH0KLQpkaWZmIC0tZ2l0IGEvcG5ndmNyZC5jIGIvcG5ndmNyZC5jCmluZGV4IDc1Y2M5YjUuLjJmMzQzYWYgMTAwNjQ0Ci0tLSBhL3BuZ3ZjcmQuYworKysgYi9wbmd2Y3JkLmMKQEAgLTIsMTQgKzIsMTQgQEAKICAqCiAgKiBGb3IgSW50ZWwgeDg2IENQVSBhbmQgTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXIKICAqCi0gKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKKyAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIEludGVsIENvcnBvcmF0aW9uCiAgKgogICogQ29udHJpYnV0ZWQgYnkgTmlyYXYgQ2hoYXRyYXBhdGksIEludGVsIENvcnBvcmF0aW9uLCAxOTk4CiAgKiBJbnRlcmZhY2UgdG8gbGlicG5nIGNvbnRyaWJ1dGVkIGJ5IEdpbGxlcyBWb2xsYW50LCAxOTk5Ci0gKiBEZWJ1Z2dpbmcgYW5kIGNsZWFudXAgYnkgR3JlZyBSb2Vsb2ZzLCAyMDAwLCAyMDAxCisgKgogICoKICAqIEluIHBuZ19kb19yZWFkX2ludGVybGFjZSgpIGluIGxpYnBuZyB2ZXJzaW9ucyAxLjAuM2EgdGhyb3VnaCAxLjAuNGQsCiAgKiBhIHNpZ24gZXJyb3IgaW4gdGhlIHBvc3QtTU1YIGNsZWFudXAgY29kZSBmb3IgZWFjaCBwaXhlbF9kZXB0aCByZXN1bHRlZApAQCAtMTksNiArMTksOCBAQAogICoKICAqIFtwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcoKSBicHAgPT0gMiBidWdmaXgsIEdSUiAyMDAwMDkxNl0KICAqCisgKiBbcnVudGltZSBNTVggY29uZmlndXJhdGlvbiwgR1JSIDIwMDEwMTAyXQorICoKICAqLwogCiAjZGVmaW5lIFBOR19JTlRFUk5BTApAQCAtMzcsNiArMzksNyBAQAogICAgIHB1c2ggZWJ4ICAgICAgICAgIC8vQ1BVSUQgd2lsbCB0cmFzaCB0aGVzZQogICAgIHB1c2ggZWN4CiAgICAgcHVzaCBlZHgKKwogICAgIHB1c2hmZCAgICAgICAgICAgIC8vU2F2ZSBFZmxhZyB0byBzdGFjawogICAgIHBvcCBlYXggICAgICAgICAgIC8vR2V0IEVmbGFnIGZyb20gc3RhY2sgaW50byBlYXgKICAgICBtb3YgZWN4LCBlYXggICAgICAvL01ha2UgYW5vdGhlciBjb3B5IG9mIEVmbGFnIGluIGVjeApAQCAtNDYsNiArNDksOCBAQAogICAgIHBvcGZkICAgICAgICAgICAgIC8vUmVzdG9yZWQgbW9kaWZpZWQgdmFsdWUgYmFjayB0byBFZmxhZyByZWcKICAgICBwdXNoZmQgICAgICAgICAgICAvL1NhdmUgRWZsYWcgdG8gc3RhY2sKICAgICBwb3AgZWF4ICAgICAgICAgICAvL0dldCBFZmxhZyBmcm9tIHN0YWNrCisgICAgcHVzaCBlY3ggICAgICAgICAgLy8gc2F2ZSBvcmlnaW5hbCBFZmxhZyB0byBzdGFjaworICAgIHBvcGZkICAgICAgICAgICAgIC8vIHJlc3RvcmUgb3JpZ2luYWwgRWZsYWcKICAgICB4b3IgZWF4LCBlY3ggICAgICAvL0NvbXBhcmUgdGhlIG5ldyBFZmxhZyB3aXRoIHRoZSBvcmlnaW5hbCBFZmxhZwogICAgIGp6IE5PVF9TVVBQT1JURUQgIC8vSWYgdGhlIHNhbWUsIENQVUlEIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgLy9za2lwIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMgYW5kIGp1bXAgdG8KQEAgLTExMCw2ICsxMTUsOCBAQAogICAgcG5nX2RlYnVnKDEsImluIHBuZ19jb21iaW5lX3Jvd19hc21cbiIpOwogCiAgICBpZiAobW14X3N1cHBvcnRlZCA9PSAyKSB7CisgICAgICAgLyogdGhpcyBzaG91bGQgaGF2ZSBoYXBwZW5lZCBpbiBwbmdfaW5pdF9tbXhfZmxhZ3MoKSBhbHJlYWR5ICovCisgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImFzbV9mbGFncyBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCIpOwogICAgICAgIHBuZ19tbXhfc3VwcG9ydCgpOwogICAgfQogCkBAIC0zMDAsNyArMzA3LDggQEAKIAogICAgICAgICAgICAgX19pbnQ2NCBtYXNrMD0weDAxMDIwNDA4MTAyMDQwODA7CiAKLSAgICAgICAgICAgIGlmICggbW14X3N1cHBvcnRlZCApCisgICAgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVykKKyAgICAgICAgICAgICAgICAvKiAmJiBtbXhfc3VwcG9ydGVkICovICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNyY3B0ciA9IHBuZ19wdHItPnJvd19idWYgKyAxOwogICAgICAgICAgICAgICAgZHN0cHRyID0gcm93OwpAQCAtMzgyLDggKzM5MCw2IEBACiAgICAgICAgICAgICAgICBpbmNyMSA9IChkaXNwKSpwaXhlbF9ieXRlczsKICAgICAgICAgICAgICAgIGZvciAoaSA9IGluaXRpYWxfdmFsOyBpIDwgZmluYWxfdmFsOyBpICs9IGluY3IxKQogICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsX2J5dGVzID4gKHBuZ19zaXplX3QpKGZpbmFsX3ZhbC1pKSkKLSAgICAgICAgICAgICAgICAgICAgcGl4ZWxfYnl0ZXMgPSAocG5nX3NpemVfdCkoZmluYWxfdmFsLWkpOwogICAgICAgICAgICAgICAgICAgcG5nX21lbWNweShkc3RwdHIsIHNyY3B0ciwgcGl4ZWxfYnl0ZXMpOwogICAgICAgICAgICAgICAgICAgc3JjcHRyICs9IGluY3IxOwogICAgICAgICAgICAgICAgICAgZHN0cHRyICs9IGluY3IxOwpAQCAtNDAyLDcgKzQwOCw4IEBACiAgICAgICAgICAgICBfX2ludDY0IG1hc2sxPTB4MDEwMTAyMDIwNDA0MDgwOCwKICAgICAgICAgICAgICAgICAgICAgbWFzazA9MHgxMDEwMjAyMDQwNDA4MDgwOwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cpCisgICAgICAgICAgICAgICAgLyogJiYgbW14X3N1cHBvcnRlZCAqLyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzcmNwdHIgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKICAgICAgICAgICAgICAgIGRzdHB0ciA9IHJvdzsKQEAgLTQ5NSw4ICs1MDIsNiBAQAogICAgICAgICAgICAgICAgaW5jcjEgPSAoZGlzcCkqcGl4ZWxfYnl0ZXM7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSBpbml0aWFsX3ZhbDsgaSA8IGZpbmFsX3ZhbDsgaSArPSBpbmNyMSkKICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA+IChwbmdfc2l6ZV90KShmaW5hbF92YWwtaSkpCi0gICAgICAgICAgICAgICAgICAgIHBpeGVsX2J5dGVzID0gKHBuZ19zaXplX3QpKGZpbmFsX3ZhbC1pKTsKICAgICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHN0cHRyLCBzcmNwdHIsIHBpeGVsX2J5dGVzKTsKICAgICAgICAgICAgICAgICAgIHNyY3B0ciArPSBpbmNyMTsKICAgICAgICAgICAgICAgICAgIGRzdHB0ciArPSBpbmNyMTsKQEAgLTUyNCw3ICs1MjksOCBAQAogICAgICAgICAgICAgbGVuICAgICA9IChwbmdfcHRyLT53aWR0aCkmfjc7CiAgICAgICAgICAgICBkaWZmID0gKHBuZ19wdHItPndpZHRoKSY3OwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cpCisgICAgICAgICAgICAgICAgLyogJiYgbW14X3N1cHBvcnRlZCAqLyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBfYXNtCiAgICAgICAgICAgICAgICB7CkBAIC02MjcsOCArNjMzLDYgQEAKICAgICAgICAgICAgICAgIGluY3IxID0gKGRpc3ApKnBpeGVsX2J5dGVzOwogICAgICAgICAgICAgICAgZm9yIChpID0gaW5pdGlhbF92YWw7IGkgPCBmaW5hbF92YWw7IGkgKz0gaW5jcjEpCiAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAocGl4ZWxfYnl0ZXMgPiAocG5nX3NpemVfdCkoZmluYWxfdmFsLWkpKQotICAgICAgICAgICAgICAgICAgICBwaXhlbF9ieXRlcyA9IChwbmdfc2l6ZV90KShmaW5hbF92YWwtaSk7CiAgICAgICAgICAgICAgICAgICBwbmdfbWVtY3B5KGRzdHB0ciwgc3JjcHRyLCBwaXhlbF9ieXRlcyk7CiAgICAgICAgICAgICAgICAgICBzcmNwdHIgKz0gaW5jcjE7CiAgICAgICAgICAgICAgICAgICBkc3RwdHIgKz0gaW5jcjE7CkBAIC02NTcsNyArNjYxLDggQEAKICAgICAgICAgICAgIGxlbiAgICAgPSAocG5nX3B0ci0+d2lkdGgpJn43OwogICAgICAgICAgICAgZGlmZiA9IChwbmdfcHRyLT53aWR0aCkmNzsKIAotICAgICAgICAgICAgaWYgKCBtbXhfc3VwcG9ydGVkICkKKyAgICAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XKQorICAgICAgICAgICAgICAgIC8qICYmIG1teF9zdXBwb3J0ZWQgKi8gKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgX2FzbQogICAgICAgICAgICAgICAgewpAQCAtNzY4LDggKzc3Myw2IEBACiAgICAgICAgICAgICAgICBpbmNyMSA9IChkaXNwKSpwaXhlbF9ieXRlczsKICAgICAgICAgICAgICAgIGZvciAoaSA9IGluaXRpYWxfdmFsOyBpIDwgZmluYWxfdmFsOyBpICs9IGluY3IxKQogICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsX2J5dGVzID4gKHBuZ19zaXplX3QpKGZpbmFsX3ZhbC1pKSkKLSAgICAgICAgICAgICAgICAgICAgcGl4ZWxfYnl0ZXMgPSAocG5nX3NpemVfdCkoZmluYWxfdmFsLWkpOwogICAgICAgICAgICAgICAgICAgcG5nX21lbWNweShkc3RwdHIsIHNyY3B0ciwgcGl4ZWxfYnl0ZXMpOwogICAgICAgICAgICAgICAgICAgc3JjcHRyICs9IGluY3IxOwogICAgICAgICAgICAgICAgICAgZHN0cHRyICs9IGluY3IxOwpAQCAtNzkzLDcgKzc5Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIG1hc2sxPTB4MjAyMDIwMjA0MDQwNDA0MCwKICAgICAgICAgICAgICAgICAgICAgbWFzazA9MHg0MDQwODA4MDgwODA4MDgwOwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfQ09NQklORV9ST1cpCisgICAgICAgICAgICAgICAgLyogJiYgbW14X3N1cHBvcnRlZCAqLyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzcmNwdHIgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKICAgICAgICAgICAgICAgIGRzdHB0ciA9IHJvdzsKQEAgLTkyNyw4ICs5MzEsNiBAQAogICAgICAgICAgICAgICAgaW5jcjEgPSAoZGlzcCkqcGl4ZWxfYnl0ZXM7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSBpbml0aWFsX3ZhbDsgaSA8IGZpbmFsX3ZhbDsgaSArPSBpbmNyMSkKICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA+IChwbmdfc2l6ZV90KShmaW5hbF92YWwtaSkpCi0gICAgICAgICAgICAgICAgICAgIHBpeGVsX2J5dGVzID0gKHBuZ19zaXplX3QpKGZpbmFsX3ZhbC1pKTsKICAgICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHN0cHRyLCBzcmNwdHIsIHBpeGVsX2J5dGVzKTsKICAgICAgICAgICAgICAgICAgIHNyY3B0ciArPSBpbmNyMTsKICAgICAgICAgICAgICAgICAgIGRzdHB0ciArPSBpbmNyMTsKQEAgLTk1Nyw4ICs5NTksNiBAQAogICAgICAgICAgICAgaW5jcjEgPSAoZGlzcCkqcGl4ZWxfYnl0ZXM7CiAgICAgICAgICAgICBmb3IgKGkgPSBpbml0aWFsX3ZhbDsgaSA8IGZpbmFsX3ZhbDsgaSArPSBpbmNyMSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA+IChwbmdfc2l6ZV90KShmaW5hbF92YWwtaSkpCi0gICAgICAgICAgICAgICAgIHBpeGVsX2J5dGVzID0gKHBuZ19zaXplX3QpKGZpbmFsX3ZhbC1pKTsKICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHAsIHNwdHIsIHBpeGVsX2J5dGVzKTsKICAgICAgICAgICAgICAgIHNwdHIgKz0gaW5jcjE7CiAgICAgICAgICAgICAgICBkcCArPSBpbmNyMTsKQEAgLTk4Nyw2ICs5ODcsOCBAQAogICAgcG5nX2RlYnVnKDEsImluIHBuZ19kb19yZWFkX2ludGVybGFjZVxuIik7CiAKICAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpIHsKKyAgICAgICAvKiB0aGlzIHNob3VsZCBoYXZlIGhhcHBlbmVkIGluIHBuZ19pbml0X21teF9mbGFncygpIGFscmVhZHkgKi8KKyAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiYXNtX2ZsYWdzIG1heSBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIik7CiAgICAgICAgcG5nX21teF9zdXBwb3J0KCk7CiAgICB9CiAKQEAgLTExODcsNyArMTE4OSw4IEBACiAgICAgICAgICAgICAvLyBOT1RFOiAgdGhlcmUgaXMgTk8gTU1YIGNvZGUgZm9yIDQ4LWJpdCBhbmQgNjQtYml0IGltYWdlcwogCiAgICAgICAgICAgICAvLyB1c2UgTU1YIHJvdXRpbmUgaWYgbWFjaGluZSBzdXBwb3J0cyBpdAotICAgICAgICAgICAgaWYgKCBtbXhfc3VwcG9ydGVkICkKKyAgICAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRSkKKyAgICAgICAgICAgICAgICAvKiAmJiBtbXhfc3VwcG9ydGVkICovICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA9PSAzKQogICAgICAgICAgICAgICAgewpAQCAtMTc3Nyw3ICsxNzgwLDcgQEAKICAgICAgICAgICAgIH0gLyogZW5kIG9mIG1teF9zdXBwb3J0ZWQgKi8KIAogICAgICAgICAgICAgZWxzZSAvKiBNTVggbm90IHN1cHBvcnRlZDogIHVzZSBtb2RpZmllZCBDIGNvZGUgLSB0YWtlcyBhZHZhbnRhZ2UKLSAgICAgICAgICAgICAgICAgICogb2YgaW5saW5pbmcgb2YgcG5nX21lbWNweSBmb3IgYSBjb25zdGFudCAqLworICAgICAgICAgICAgICAgICAgKiBvZiBpbmxpbmluZyBvZiBtZW1jcHkgZm9yIGEgY29uc3RhbnQgKi8KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA9PSAxKQogICAgICAgICAgICAgICAgewpAQCAtMzY0OSw2ICszNjUyLDggQEAKICNlbmRpZgogCiAgICBpZiAobW14X3N1cHBvcnRlZCA9PSAyKSB7CisgICAgICAgLyogdGhpcyBzaG91bGQgaGF2ZSBoYXBwZW5lZCBpbiBwbmdfaW5pdF9tbXhfZmxhZ3MoKSBhbHJlYWR5ICovCisgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImFzbV9mbGFncyBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCIpOwogICAgICAgIHBuZ19tbXhfc3VwcG9ydCgpOwogICAgfQogCkBAIC0zNjU4LDEzICszNjYzLDE3IEBACiAgICB7CiAgICAgICBjYXNlIDA6IHNwcmludGYoZmlsbm0sICJub25lIik7CiAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTogc3ByaW50ZihmaWxubSwgInN1Yi0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgMTogc3ByaW50ZihmaWxubSwgInN1Yi0lcyIsCisgICAgICAgIChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1NVQik/ICJNTVgiIDogIng4NiIpOwogICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDI6IHNwcmludGYoZmlsbm0sICJ1cC0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgMjogc3ByaW50ZihmaWxubSwgInVwLSVzIiwKKyAgICAgICAgKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVApPyAiTU1YIiA6ICJ4ODYiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAzOiBzcHJpbnRmKGZpbG5tLCAiYXZnLSVzIiwgIk1NWCIpOworICAgICAgY2FzZSAzOiBzcHJpbnRmKGZpbG5tLCAiYXZnLSVzIiwKKyAgICAgICAgKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHKT8gIk1NWCIgOiAieDg2Iik7CiAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNDogc3ByaW50ZihmaWxubSwgIlBhZXRoLSVzIiwgIk1NWCIpOworICAgICAgY2FzZSA0OiBzcHJpbnRmKGZpbG5tLCAiUGFldGgtJXMiLAorICAgICAgICAocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCk/ICJNTVgiOiJ4ODYiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDogc3ByaW50ZihmaWxubSwgInVua253Iik7CiAgICAgICAgICBicmVhazsKQEAgLTM2ODIsOSArMzY5MSw5IEBACiAKICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9TVUI6CiAgICAgICB7Ci0gICAgICAgICBpZiAoCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisgICAgICAgICBpZiAoKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfU1VCKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gcG5nX3B0ci0+bW14X2JpdGRlcHRoX3RocmVzaG9sZCkgJiYKKyAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQpKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfc3ViKHJvd19pbmZvLCByb3cpOwogICAgICAgICAgfQpAQCAtMzcwNyw5ICszNzE2LDkgQEAKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1VQOgogICAgICAgewotICAgICAgICAgaWYgKAotICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gUE5HX01NWF9CSVRERVBUSF9USFJFU0hPTERfREVGQVVMVCkgJiYKLSAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IFBOR19NTVhfUk9XQllURVNfVEhSRVNIT0xEX0RFRkFVTFQpKQorICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1VQKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gcG5nX3B0ci0+bW14X2JpdGRlcHRoX3RocmVzaG9sZCkgJiYKKyAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQpKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfdXAocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQpAQCAtMzczMSw5ICszNzQwLDkgQEAKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX0FWRzoKICAgICAgIHsKLSAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyAgICAgICAgIGlmICgocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcpICYmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBwbmdfcHRyLT5tbXhfYml0ZGVwdGhfdGhyZXNob2xkKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQpAQCAtMzc2NSw5ICszNzc0LDkgQEAKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1BBRVRIOgogICAgICAgewotICAgICAgICAgaWYgKAotICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gUE5HX01NWF9CSVRERVBUSF9USFJFU0hPTERfREVGQVVMVCkgJiYKLSAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IFBOR19NTVhfUk9XQllURVNfVEhSRVNIT0xEX0RFRkFVTFQpKQorICAgICAgICAgaWYgKChwbmdfcHRyLT5hc21fZmxhZ3MgJiBQTkdfQVNNX0ZMQUdfTU1YX1JFQURfRklMVEVSX1BBRVRIKSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gcG5nX3B0ci0+bW14X2JpdGRlcHRoX3RocmVzaG9sZCkgJiYKKyAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQpKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfcGFldGgocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcG5nd2lvLmMgYi9wbmd3aW8uYwppbmRleCAxYjRlMjY2Li42ZWY5N2JiIDEwMDY0NAotLS0gYS9wbmd3aW8uYworKysgYi9wbmd3aW8uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5nd2lvLmMgLSBmdW5jdGlvbnMgZm9yIGRhdGEgb3V0cHV0CiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgaWYgKHdyaXRlX2RhdGFfZm4gIT0gTlVMTCkKICAgICAgIHBuZ19wdHItPndyaXRlX2RhdGFfZm4gPSB3cml0ZV9kYXRhX2ZuOwogICAgZWxzZQotICAgICAgcG5nX3B0ci0+d3JpdGVfZGF0YV9mbiA9IHBuZ19kZWZhdWx0X3dyaXRlX2RhdGE7CisgICAgICBwbmdfcHRyLT53cml0ZV9kYXRhX2ZuID0gKHBuZ19yd19wdHIpcG5nX2RlZmF1bHRfd3JpdGVfZGF0YTsKICNlbHNlCiAgICBwbmdfcHRyLT53cml0ZV9kYXRhX2ZuID0gd3JpdGVfZGF0YV9mbjsKICNlbmRpZgpAQCAtMTgxLDcgKzE4MSw3IEBACiAgICBpZiAob3V0cHV0X2ZsdXNoX2ZuICE9IE5VTEwpCiAgICAgICBwbmdfcHRyLT5vdXRwdXRfZmx1c2hfZm4gPSBvdXRwdXRfZmx1c2hfZm47CiAgICBlbHNlCi0gICAgICBwbmdfcHRyLT5vdXRwdXRfZmx1c2hfZm4gPSBwbmdfZGVmYXVsdF9mbHVzaDsKKyAgICAgIHBuZ19wdHItPm91dHB1dF9mbHVzaF9mbiA9IChwbmdfZmx1c2hfcHRyKXBuZ19kZWZhdWx0X2ZsdXNoOwogI2Vsc2UKICAgIHBuZ19wdHItPm91dHB1dF9mbHVzaF9mbiA9IG91dHB1dF9mbHVzaF9mbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG5nd3JpdGUuYyBiL3BuZ3dyaXRlLmMKaW5kZXggODY4MjljNC4uMjM4YWMwYSAxMDA2NDQKLS0tIGEvcG5nd3JpdGUuYworKysgYi9wbmd3cml0ZS5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmd3cml0ZS5jIC0gZ2VuZXJhbCByb3V0aW5lcyB0byB3cml0ZSBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCkBAIC00MjQsNyArNDI0LDcgQEAKIHsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICByZXR1cm4gKHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0XzIodXNlcl9wbmdfdmVyLCBlcnJvcl9wdHIsIGVycm9yX2ZuLAotICAgICAgd2Fybl9mbiwgTlVMTCwgTlVMTCwgTlVMTCkpOworICAgICAgd2Fybl9mbiwgcG5nX3ZvaWRwX05VTEwsIHBuZ19tYWxsb2NfcHRyX05VTEwsIHBuZ19mcmVlX3B0cl9OVUxMKSk7CiB9CiAKIC8qIEFsdGVybmF0ZSBpbml0aWFsaXplIHBuZ19wdHIgc3RydWN0dXJlLCBhbmQgYWxsb2NhdGUgYW55IG1lbW9yeSBuZWVkZWQgKi8KQEAgLTQ0MywxNCArNDQzLDE5IEBACiAgICBpbnQgaTsKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3RcbiIpOwogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIGlmICgocG5nX3B0ciA9IChwbmdfc3RydWN0cClwbmdfY3JlYXRlX3N0cnVjdF8yKFBOR19TVFJVQ1RfUE5HLAotICAgICAgKHBuZ19tYWxsb2NfcHRyKW1hbGxvY19mbiwgKHBuZ192b2lkcCltZW1fcHRyKSkgPT0gTlVMTCkKKyAgIHBuZ19wdHIgPSAocG5nX3N0cnVjdHApcG5nX2NyZWF0ZV9zdHJ1Y3RfMihQTkdfU1RSVUNUX1BORywKKyAgICAgIChwbmdfbWFsbG9jX3B0ciltYWxsb2NfZm4sIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQotICAgaWYgKChwbmdfcHRyID0gKHBuZ19zdHJ1Y3RwKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfUE5HKSkgPT0gTlVMTCkKKyAgIHBuZ19wdHIgPSAocG5nX3N0cnVjdHApcG5nX2NyZWF0ZV9zdHJ1Y3QoUE5HX1NUUlVDVF9QTkcpOwogI2VuZGlmIC8qIFBOR19VU0VSX01FTV9TVVBQT1JURUQgKi8KLSAgIHsKLSAgICAgIHJldHVybiAoKHBuZ19zdHJ1Y3RwKU5VTEwpOwotICAgfQorICAgaWYgKHBuZ19wdHIgPT0gTlVMTCkKKyAgICAgIHJldHVybiAoTlVMTCk7CisKKyNpZiAhZGVmaW5lZChQTkdfMV8wX1gpCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorICAgcG5nX2luaXRfbW14X2ZsYWdzKHBuZ19wdHIpOyAgIC8qIDEuMi4wIGFkZGl0aW9uICovCisjZW5kaWYKKyNlbmRpZiAvKiBQTkdfMV8wX1ggKi8KIAogI2lmZGVmIFBOR19TRVRKTVBfU1VQUE9SVEVECiAjaWZkZWYgVVNFX0ZBUl9LRVlXT1JECkBAIC00NjIsNyArNDY3LDcgQEAKICAgICAgIHBuZ19mcmVlKHBuZ19wdHIsIHBuZ19wdHItPnpidWYpOwogICAgICAgcG5nX3B0ci0+emJ1Zj1OVUxMOwogICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0KHBuZ19wdHIpOwotICAgICAgcmV0dXJuICgocG5nX3N0cnVjdHApTlVMTCk7CisgICAgICByZXR1cm4gKE5VTEwpOwogICAgfQogI2lmZGVmIFVTRV9GQVJfS0VZV09SRAogICAgcG5nX21lbWNweShwbmdfcHRyLT5qbXBidWYsam1wYnVmLHNpemVvZihqbXBfYnVmKSk7CkBAIC00OTIsMjMgKzQ5NywyNCBAQAogICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMScgJiYgdXNlcl9wbmdfdmVyWzJdICE9IHBuZ19saWJwbmdfdmVyWzJdKSB8fAogICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMCcgJiYgdXNlcl9wbmdfdmVyWzJdIDwgJzknKSkKICAgICAgeworI2lmICFkZWZpbmVkKFBOR19OT19TVERJTykgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKKyAgICAgICAgY2hhciBtc2dbODBdOworICAgICAgICBpZiAodXNlcl9wbmdfdmVyKQorICAgICAgICB7CisgICAgICAgICAgc3ByaW50Zihtc2csICJBcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBwbmcuaCBmcm9tIGxpYnBuZy0lLjIwcyIsCisgICAgICAgICAgICAgdXNlcl9wbmdfdmVyKTsKKyAgICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCBtc2cpOworICAgICAgICB9CisgICAgICAgIHNwcmludGYobXNnLCAiQXBwbGljYXRpb24gIGlzICBydW5uaW5nIHdpdGggcG5nLmMgZnJvbSBsaWJwbmctJS4yMHMiLAorICAgICAgICAgICBwbmdfbGlicG5nX3Zlcik7CisgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsIG1zZyk7CisjZW5kaWYKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgICAgICAgcG5nX3B0ci0+ZmxhZ3M9MDsKKyNlbmRpZgogICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKICAgICAgICAgICAgIkluY29tcGF0aWJsZSBsaWJwbmcgdmVyc2lvbiBpbiBhcHBsaWNhdGlvbiBhbmQgbGlicmFyeSIpOwogICAgICB9Ci0KLSAgICAgLyogTGlicG5nIDEuMC42IHdhcyBub3QgYmluYXJ5IGNvbXBhdGlibGUsIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlCi0gICAgICAgIGluZm9fcHRyLT5mcmVlX21lIG1lbWJlci4gIExpYnBuZy0xLjAuMSBhbmQgZWFybGllciB3ZXJlIG5vdAotICAgICAgICBjb21wYXRpYmxlIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlIHVzZXIgdHJhbnNmb3JtIGZ1bmN0aW9uLiBOb3RlCi0gICAgICAgIHRvIG1haW50YWluZXI6IHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHZlcnNpb24gMS4yLjAgYW5kCi0gICAgICAgIGJleW9uZCBiZWNhdXNlIHRoZSBwcmV2aW91cyB0ZXN0IHdvdWxkIGhhdmUgYWxyZWFkeSByZWplY3RlZCBpdC4gKi8KLQotICAgICBpZiAodXNlcl9wbmdfdmVyWzBdID09ICcxJyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCi0gICAgICAgICAodXNlcl9wbmdfdmVyWzRdIDwgICcyJyB8fCB1c2VyX3BuZ192ZXJbNF0gPT0gJzYnKSAmJgotICAgICAgICAgdXNlcl9wbmdfdmVyWzVdID09ICdcMCcpCi0gICAgIHsKLSAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICJBcHBsaWNhdGlvbiBtdXN0IGJlIHJlY29tcGlsZWQ7IHZlcnNpb25zIDw9IDEuMC42IHdlcmUgaW5jb21wYXRpYmxlIik7Ci0gICAgIH0KICAgIH0KIAogICAgLyogaW5pdGlhbGl6ZSB6YnVmIC0gY29tcHJlc3Npb24gYnVmZmVyICovCkBAIC01MTYsMTEgKzUyMiwxMiBAQAogICAgcG5nX3B0ci0+emJ1ZiA9IChwbmdfYnl0ZXApcG5nX21hbGxvYyhwbmdfcHRyLAogICAgICAgKHBuZ191aW50XzMyKXBuZ19wdHItPnpidWZfc2l6ZSk7CiAKLSAgIHBuZ19zZXRfd3JpdGVfZm4ocG5nX3B0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICBwbmdfc2V0X3dyaXRlX2ZuKHBuZ19wdHIsIHBuZ192b2lkcF9OVUxMLCBwbmdfcndfcHRyX05VTEwsCisgICAgICBwbmdfZmx1c2hfcHRyX05VTEwpOwogCiAjaWYgZGVmaW5lZChQTkdfV1JJVEVfV0VJR0hURURfRklMVEVSX1NVUFBPUlRFRCkKICAgIHBuZ19zZXRfZmlsdGVyX2hldXJpc3RpY3MocG5nX3B0ciwgUE5HX0ZJTFRFUl9IRVVSSVNUSUNfREVGQVVMVCwKLSAgICAgIDEsIE5VTEwsIE5VTEwpOworICAgICAgMSwgcG5nX2RvdWJsZXBfTlVMTCwgcG5nX2RvdWJsZXBfTlVMTCk7CiAjZW5kaWYKIAogICAgcmV0dXJuICgocG5nX3N0cnVjdHApcG5nX3B0cik7CkBAIC01MzIsNyArNTM5LDcgQEAKIHBuZ193cml0ZV9pbml0KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCiB7CiAgICAvKiBXZSBvbmx5IGNvbWUgaGVyZSB2aWEgcHJlLTEuMC43LWNvbXBpbGVkIGFwcGxpY2F0aW9ucyAqLwotICAgcG5nX3dyaXRlX2luaXRfMihwbmdfcHRyLCAiMS4wLjAiLCAwLCAwKTsKKyAgIHBuZ193cml0ZV9pbml0XzIocG5nX3B0ciwgIjEuMC42IG9yIGVhcmxpZXIiLCAwLCAwKTsKIH0KIAogI3VuZGVmIHBuZ193cml0ZV9pbml0XzIKQEAgLTU0MSwxNyArNTQ4LDM5IEBACiAgICBwbmdfc2l6ZV90IHBuZ19zdHJ1Y3Rfc2l6ZSwgcG5nX3NpemVfdCBwbmdfaW5mb19zaXplKQogewogICAgLyogV2Ugb25seSBjb21lIGhlcmUgdmlhIHByZS0xLjAuMTItY29tcGlsZWQgYXBwbGljYXRpb25zICovCisjaWYgIWRlZmluZWQoUE5HX05PX1NURElPKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQorICAgaWYoc2l6ZW9mKHBuZ19zdHJ1Y3QpID4gcG5nX3N0cnVjdF9zaXplIHx8IHNpemVvZihwbmdfaW5mbykgPiBwbmdfaW5mb19zaXplKQorICAgeworICAgICAgY2hhciBtc2dbODBdOworICAgICAgcG5nX3B0ci0+d2FybmluZ19mbj1OVUxMOworICAgICAgaWYgKHVzZXJfcG5nX3ZlcikKKyAgICAgIHsKKyAgICAgICAgc3ByaW50Zihtc2csICJBcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBwbmcuaCBmcm9tIGxpYnBuZy0lLjIwcyIsCisgICAgICAgICAgIHVzZXJfcG5nX3Zlcik7CisgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsIG1zZyk7CisgICAgICB9CisgICAgICBzcHJpbnRmKG1zZywgIkFwcGxpY2F0aW9uICBpcyAgcnVubmluZyB3aXRoIHBuZy5jIGZyb20gbGlicG5nLSUuMjBzIiwKKyAgICAgICAgIHBuZ19saWJwbmdfdmVyKTsKKyAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsIG1zZyk7CisgICB9CisjZW5kaWYKICAgIGlmKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSkKICAgICAgewotICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPShwbmdfZXJyb3JfcHRyKU5VTEw7CisgICAgICAgcG5nX3B0ci0+ZXJyb3JfZm49TlVMTDsKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgICAgICBwbmdfcHRyLT5mbGFncz0wOworI2VuZGlmCiAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICAiVGhlIHBuZyBzdHJ1Y3QgYWxsb2NhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpcyB0b28gc21hbGwuIik7CisgICAgICAgIlRoZSBwbmcgc3RydWN0IGFsbG9jYXRlZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIHdyaXRpbmcgaXMgdG9vIHNtYWxsLiIpOwogICAgICB9CiAgICBpZihzaXplb2YocG5nX2luZm8pID4gcG5nX2luZm9fc2l6ZSkKICAgICAgewotICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPShwbmdfZXJyb3JfcHRyKU5VTEw7CisgICAgICAgcG5nX3B0ci0+ZXJyb3JfZm49TlVMTDsKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgICAgICBwbmdfcHRyLT5mbGFncz0wOworI2VuZGlmCiAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICAiVGhlIGluZm8gc3RydWN0IGFsbG9jYXRlZCBieSB0aGUgYXBwbGljYXRpb24gaXMgdG9vIHNtYWxsLiIpOworICAgICAgICJUaGUgaW5mbyBzdHJ1Y3QgYWxsb2NhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3Igd3JpdGluZyBpcyB0b28gc21hbGwuIik7CiAgICAgIH0KICAgIHBuZ193cml0ZV9pbml0XzMoJnBuZ19wdHIsIHVzZXJfcG5nX3ZlciwgcG5nX3N0cnVjdF9zaXplKTsKIH0KQEAgLTU3Myw3ICs2MDIsNyBAQAogI2lmZGVmIFBOR19MRUdBQ1lfU1VQUE9SVEVECiAgICAgICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfTElCUkFSWV9NSVNNQVRDSDsKICNlbHNlCi0gICAgICAgcG5nX3B0ci0+d2FybmluZ19mbj0ocG5nX2Vycm9yX3B0cilOVUxMOworICAgICAgIHBuZ19wdHItPndhcm5pbmdfZm49TlVMTDsKICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLAogICAgICAiQXBwbGljYXRpb24gdXNlcyBkZXByZWNhdGVkIHBuZ193cml0ZV9pbml0KCkgYW5kIHNob3VsZCBiZSByZWNvbXBpbGVkLiIpOwogICAgICAgIGJyZWFrOwpAQCAtNTk4LDEyICs2MjcsMTkgQEAKICAgIC8qIHJlc2V0IGFsbCB2YXJpYWJsZXMgdG8gMCAqLwogICAgcG5nX21lbXNldChwbmdfcHRyLCAwLCBzaXplb2YgKHBuZ19zdHJ1Y3QpKTsKIAorI2lmICFkZWZpbmVkKFBOR18xXzBfWCkKKyNpZmRlZiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECisgICBwbmdfaW5pdF9tbXhfZmxhZ3MocG5nX3B0cik7ICAgLyogMS4yLjAgYWRkaXRpb24gKi8KKyNlbmRpZgorI2VuZGlmIC8qIFBOR18xXzBfWCAqLworCiAjaWZkZWYgUE5HX1NFVEpNUF9TVVBQT1JURUQKICAgIC8qIHJlc3RvcmUganVtcCBidWZmZXIgKi8KICAgIHBuZ19tZW1jcHkocG5nX3B0ci0+am1wYnVmLCB0bXBfam1wLCBzaXplb2YgKGptcF9idWYpKTsKICNlbmRpZgogCi0gICBwbmdfc2V0X3dyaXRlX2ZuKHBuZ19wdHIsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgcG5nX3NldF93cml0ZV9mbihwbmdfcHRyLCBwbmdfdm9pZHBfTlVMTCwgcG5nX3J3X3B0cl9OVUxMLAorICAgICAgcG5nX2ZsdXNoX3B0cl9OVUxMKTsKIAogICAgLyogaW5pdGlhbGl6ZSB6YnVmIC0gY29tcHJlc3Npb24gYnVmZmVyICovCiAgICBwbmdfcHRyLT56YnVmX3NpemUgPSBQTkdfWkJVRl9TSVpFOwpAQCAtNjEyLDcgKzY0OCw3IEBACiAKICNpZiBkZWZpbmVkKFBOR19XUklURV9XRUlHSFRFRF9GSUxURVJfU1VQUE9SVEVEKQogICAgcG5nX3NldF9maWx0ZXJfaGV1cmlzdGljcyhwbmdfcHRyLCBQTkdfRklMVEVSX0hFVVJJU1RJQ19ERUZBVUxULAotICAgICAgMSwgTlVMTCwgTlVMTCk7CisgICAgICAxLCBwbmdfZG91YmxlcF9OVUxMLCBwbmdfZG91YmxlcF9OVUxMKTsKICNlbmRpZgogfQogCkBAIC02NzQsNiArNzEwLDExIEBACiAgICAvKiBpbml0aWFsaXplIHRyYW5zZm9ybWF0aW9ucyBhbmQgb3RoZXIgc3R1ZmYgaWYgZmlyc3QgdGltZSAqLwogICAgaWYgKHBuZ19wdHItPnJvd19udW1iZXIgPT0gMCAmJiBwbmdfcHRyLT5wYXNzID09IDApCiAgICB7CisgICAvKiBtYWtlIHN1cmUgd2Ugd3JvdGUgdGhlIGhlYWRlciBpbmZvICovCisgICBpZiAoIShwbmdfcHRyLT5tb2RlICYgUE5HX1dST1RFX0lORk9fQkVGT1JFX1BMVEUpKQorICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCisgICAgICAgICAicG5nX3dyaXRlX2luZm8gd2FzIG5ldmVyIGNhbGxlZCBiZWZvcmUgcG5nX3dyaXRlX3Jvdy4iKTsKKwogICAgLyogY2hlY2sgZm9yIHRyYW5zZm9ybXMgdGhhdCBoYXZlIGJlZW4gc2V0IGJ1dCB3ZXJlIGRlZmluZWQgb3V0ICovCiAjaWYgIWRlZmluZWQoUE5HX1dSSVRFX0lOVkVSVF9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1JFQURfSU5WRVJUX1NVUFBPUlRFRCkKICAgIGlmIChwbmdfcHRyLT50cmFuc2Zvcm1hdGlvbnMgJiBQTkdfSU5WRVJUX01PTk8pCkBAIC05MTIsNiArOTUzLDcgQEAKICAgICAgIHBuZ19wdHIgPSAqcG5nX3B0cl9wdHI7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogICAgICAgZnJlZV9mbiA9IHBuZ19wdHItPmZyZWVfZm47CisgICAgICBtZW1fcHRyID0gcG5nX3B0ci0+bWVtX3B0cjsKICNlbmRpZgogICAgfQogCkBAIC05MzcsNyArOTc5LDcgQEAKICNlbHNlCiAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClpbmZvX3B0cik7CiAjZW5kaWYKLSAgICAgICppbmZvX3B0cl9wdHIgPSAocG5nX2luZm9wKU5VTEw7CisgICAgICAqaW5mb19wdHJfcHRyID0gTlVMTDsKICAgIH0KIAogICAgaWYgKHBuZ19wdHIgIT0gTlVMTCkKQEAgLTk0OSw3ICs5OTEsNyBAQAogI2Vsc2UKICAgICAgIHBuZ19kZXN0cm95X3N0cnVjdCgocG5nX3ZvaWRwKXBuZ19wdHIpOwogI2VuZGlmCi0gICAgICAqcG5nX3B0cl9wdHIgPSAocG5nX3N0cnVjdHApTlVMTDsKKyAgICAgICpwbmdfcHRyX3B0ciA9IE5VTEw7CiAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3BuZ3d0cmFuLmMgYi9wbmd3dHJhbi5jCmluZGV4IDg3NDBiODMuLmRkOTAwMzEgMTAwNjQ0Ci0tLSBhL3BuZ3d0cmFuLmMKKysrIGIvcG5nd3RyYW4uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5nd3RyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyB3cml0ZXJzCiAgKgotICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEzIC0gQXByaWwgMTUsIDIwMDIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCmRpZmYgLS1naXQgYS9wbmd3dXRpbC5jIGIvcG5nd3V0aWwuYwppbmRleCBlZDk2NGNlLi45YzY1Zjk1IDEwMDY0NAotLS0gYS9wbmd3dXRpbC5jCisrKyBiL3BuZ3d1dGlsLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3d1dGlsLmMgLSB1dGlsaXRpZXMgdG8gd3JpdGUgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQorICogbGlicG5nIDEuMC4xMyAtIEFwcmlsIDE1LCAyMDAyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqLwpAQCAtMjUsNyArMjUsNyBAQAogICAgYnVmWzNdID0gKHBuZ19ieXRlKShpICYgMHhmZik7CiB9CiAKLSNpZiBkZWZpbmVkKFBOR19XUklURV9wQ0FMX1NVUFBPUlRFRCkKKyNpZiBkZWZpbmVkKFBOR19XUklURV9wQ0FMX1NVUFBPUlRFRCkgfHwgZGVmaW5lZChQTkdfV1JJVEVfb0ZGc19TVVBQT1JURUQpCiAvKiBUaGUgcG5nX3NhdmVfaW50XzMyIGZ1bmN0aW9uIGFzc3VtZXMgaW50ZWdlcnMgYXJlIHN0b3JlZCBpbiB0d28ncwogICogY29tcGxlbWVudCBmb3JtYXQuICBJZiB0aGlzIGlzbid0IHRoZSBjYXNlLCB0aGVuIHRoaXMgcm91dGluZSBuZWVkcyB0bwogICogYmUgbW9kaWZpZWQgdG8gd3JpdGUgZGF0YSBpbiB0d28ncyBjb21wbGVtZW50IGZvcm1hdC4KQEAgLTMzMiw3ICszMzIsOCBAQAogICAgLyogaGFuZGxlIHRoZSBuby1jb21wcmVzc2lvbiBjYXNlICovCiAgICBpZiAoY29tcC0+aW5wdXQpCiAgICB7Ci0gICAgICAgcG5nX3dyaXRlX2NodW5rX2RhdGEocG5nX3B0ciwgKHBuZ19ieXRlcCljb21wLT5pbnB1dCwgY29tcC0+aW5wdXRfbGVuKTsKKyAgICAgICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAocG5nX2J5dGVwKWNvbXAtPmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbmdfc2l6ZV90KWNvbXAtPmlucHV0X2xlbik7CiAgICAgICAgcmV0dXJuOwogICAgfQogCkBAIC01MzcsOCArNTM4LDcgQEAKIAogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfd3JpdGVfUExURVxuIik7CiAgICBpZiAoKAotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpIHx8IFwKLSAgICBkZWZpbmVkKFBOR19XUklURV9FTVBUWV9QTFRFX1BFUk1JVFRFRCkKKyNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQogICAgICAgICAhKHBuZ19wdHItPm1uZ19mZWF0dXJlc19wZXJtaXR0ZWQgJiBQTkdfRkxBR19NTkdfRU1QVFlfUExURSkgJiYKICNlbmRpZgogICAgICAgICBudW1fcGFsID09IDApIHx8IG51bV9wYWwgPiAyNTYpCkBAIC02MDgsNyArNjA4LDggQEAKICAgIFBOR19JRU5EOwogI2VuZGlmCiAgICBwbmdfZGVidWcoMSwgImluIHBuZ193cml0ZV9JRU5EXG4iKTsKLSAgIHBuZ193cml0ZV9jaHVuayhwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ19JRU5ELCBOVUxMLCAocG5nX3NpemVfdCkwKTsKKyAgIHBuZ193cml0ZV9jaHVuayhwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ19JRU5ELCBwbmdfYnl0ZXBfTlVMTCwKKyAgICAgKHBuZ19zaXplX3QpMCk7CiAgICBwbmdfcHRyLT5tb2RlIHw9IFBOR19IQVZFX0lFTkQ7CiB9CiAKQEAgLTY0Miw3ICs2NDMsNyBAQAogCiAgICBwbmdfZGVidWcoMSwgImluIHBuZ193cml0ZV9nQU1BXG4iKTsKICAgIC8qIGZpbGVfZ2FtbWEgaXMgc2F2ZWQgaW4gMS8xMDAsMDAwdGhzICovCi0gICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiwgZmlsZV9nYW1tYSk7CisgICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiwgKHBuZ191aW50XzMyKWZpbGVfZ2FtbWEpOwogICAgcG5nX3dyaXRlX2NodW5rKHBuZ19wdHIsIChwbmdfYnl0ZXApcG5nX2dBTUEsIGJ1ZiwgKHBuZ19zaXplX3QpNCk7CiB9CiAjZW5kaWYKQEAgLTc2NCw3ICs3NjUsNyBAQAogICAgICAgICAgICBwbmdfc2F2ZV91aW50XzE2KGVudHJ5YnVmICsgNiwgZXAtPmFscGhhKTsKICAgICAgICAgICAgcG5nX3NhdmVfdWludF8xNihlbnRyeWJ1ZiArIDgsIGVwLT5mcmVxdWVuY3kpOwogICAgICAgIH0KLSAgICAgICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCBlbnRyeWJ1ZiwgZW50cnlfc2l6ZSk7CisgICAgICAgcG5nX3dyaXRlX2NodW5rX2RhdGEocG5nX3B0ciwgZW50cnlidWYsIChwbmdfc2l6ZV90KWVudHJ5X3NpemUpOwogICAgfQogI2Vsc2UKICAgIGVwPXNwYWxldHRlLT5lbnRyaWVzOwpAQCAtOTM5LDMyICs5NDAsMzIgQEAKICNlbmRpZgogICAgICAgcmV0dXJuOwogICAgfQotICAgcG5nX3NhdmVfdWludF8zMihidWYsIHdoaXRlX3gpOwotICAgcG5nX3NhdmVfdWludF8zMihidWYgKyA0LCB3aGl0ZV95KTsKKyAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmLCAocG5nX3VpbnRfMzIpd2hpdGVfeCk7CisgICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDQsIChwbmdfdWludF8zMil3aGl0ZV95KTsKIAogICAgaWYgKHJlZF94ID4gODAwMDBMIHx8IHJlZF95ID4gODAwMDBMIHx8IHJlZF94ICsgcmVkX3kgPiAxMDAwMDBMKQogICAgewogICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIkludmFsaWQgY0hSTSBmaXhlZCByZWQgcG9pbnQgc3BlY2lmaWVkIik7CiAgICAgICByZXR1cm47CiAgICB9Ci0gICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDgsIHJlZF94KTsKLSAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmICsgMTIsIHJlZF95KTsKKyAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmICsgOCwgKHBuZ191aW50XzMyKXJlZF94KTsKKyAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmICsgMTIsIChwbmdfdWludF8zMilyZWRfeSk7CiAKICAgIGlmIChncmVlbl94ID4gODAwMDBMIHx8IGdyZWVuX3kgPiA4MDAwMEwgfHwgZ3JlZW5feCArIGdyZWVuX3kgPiAxMDAwMDBMKQogICAgewogICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIkludmFsaWQgZml4ZWQgY0hSTSBncmVlbiBwb2ludCBzcGVjaWZpZWQiKTsKICAgICAgIHJldHVybjsKICAgIH0KLSAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmICsgMTYsIGdyZWVuX3gpOwotICAgcG5nX3NhdmVfdWludF8zMihidWYgKyAyMCwgZ3JlZW5feSk7CisgICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDE2LCAocG5nX3VpbnRfMzIpZ3JlZW5feCk7CisgICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDIwLCAocG5nX3VpbnRfMzIpZ3JlZW5feSk7CiAKICAgIGlmIChibHVlX3ggPiA4MDAwMEwgfHwgYmx1ZV95ID4gODAwMDBMIHx8IGJsdWVfeCArIGJsdWVfeSA+IDEwMDAwMEwpCiAgICB7CiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSW52YWxpZCBmaXhlZCBjSFJNIGJsdWUgcG9pbnQgc3BlY2lmaWVkIik7CiAgICAgICByZXR1cm47CiAgICB9Ci0gICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDI0LCBibHVlX3gpOwotICAgcG5nX3NhdmVfdWludF8zMihidWYgKyAyOCwgYmx1ZV95KTsKKyAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmICsgMjQsIChwbmdfdWludF8zMilibHVlX3gpOworICAgcG5nX3NhdmVfdWludF8zMihidWYgKyAyOCwgKHBuZ191aW50XzMyKWJsdWVfeSk7CiAKICAgIHBuZ193cml0ZV9jaHVuayhwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ19jSFJNLCBidWYsIChwbmdfc2l6ZV90KTMyKTsKIH0KQEAgLTk5Niw2ICs5OTcsMTIgQEAKICAgIGVsc2UgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfR1JBWSkKICAgIHsKICAgICAgIC8qIG9uZSAxNiBiaXQgdmFsdWUgKi8KKyAgICAgIGlmKHRyYW4tPmdyYXkgPj0gKDEgPDwgcG5nX3B0ci0+Yml0X2RlcHRoKSkKKyAgICAgIHsKKyAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsCisgICAgICAgICAgICJJZ25vcmluZyBhdHRlbXB0IHRvIHdyaXRlIHRSTlMgY2h1bmsgb3V0LW9mLXJhbmdlIGZvciBiaXRfZGVwdGgiKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgIH0KICAgICAgIHBuZ19zYXZlX3VpbnRfMTYoYnVmLCB0cmFuLT5ncmF5KTsKICAgICAgIHBuZ193cml0ZV9jaHVuayhwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ190Uk5TLCBidWYsIChwbmdfc2l6ZV90KTIpOwogICAgfQpAQCAtMTAwNSw2ICsxMDEyLDEyIEBACiAgICAgICBwbmdfc2F2ZV91aW50XzE2KGJ1ZiwgdHJhbi0+cmVkKTsKICAgICAgIHBuZ19zYXZlX3VpbnRfMTYoYnVmICsgMiwgdHJhbi0+Z3JlZW4pOwogICAgICAgcG5nX3NhdmVfdWludF8xNihidWYgKyA0LCB0cmFuLT5ibHVlKTsKKyAgICAgIGlmKHBuZ19wdHItPmJpdF9kZXB0aCA9PSA4ICYmIChidWZbMF0gfCBidWZbMl0gfCBidWZbNF0pKQorICAgICAgICAgeworICAgICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgICAgICAgICAgIklnbm9yaW5nIGF0dGVtcHQgdG8gd3JpdGUgMTYtYml0IHRSTlMgY2h1bmsgd2hlbiBiaXRfZGVwdGggaXMgOCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQogICAgICAgcG5nX3dyaXRlX2NodW5rKHBuZ19wdHIsIChwbmdfYnl0ZXApcG5nX3RSTlMsIGJ1ZiwgKHBuZ19zaXplX3QpNik7CiAgICB9CiAgICBlbHNlCkBAIC0xMDI4LDggKzEwNDEsNyBAQAogICAgaWYgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSkKICAgIHsKICAgICAgIGlmICgKLSNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKSB8fCBcCi0gICAgZGVmaW5lZChQTkdfV1JJVEVfRU1QVFlfUExURV9QRVJNSVRURUQpCisjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkKICAgICAgICAgICAocG5nX3B0ci0+bnVtX3BhbGV0dGUgfHwKICAgICAgICAgICAoIShwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0VNUFRZX1BMVEUpKSkgJiYKICNlbmRpZgpAQCAtMTA0NiwxMCArMTA1OCwyMiBAQAogICAgICAgcG5nX3NhdmVfdWludF8xNihidWYsIGJhY2stPnJlZCk7CiAgICAgICBwbmdfc2F2ZV91aW50XzE2KGJ1ZiArIDIsIGJhY2stPmdyZWVuKTsKICAgICAgIHBuZ19zYXZlX3VpbnRfMTYoYnVmICsgNCwgYmFjay0+Ymx1ZSk7CisgICAgICBpZihwbmdfcHRyLT5iaXRfZGVwdGggPT0gOCAmJiAoYnVmWzBdIHwgYnVmWzJdIHwgYnVmWzRdKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsCisgICAgICAgICAgICAgICJJZ25vcmluZyBhdHRlbXB0IHRvIHdyaXRlIDE2LWJpdCBiS0dEIGNodW5rIHdoZW4gYml0X2RlcHRoIGlzIDgiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KICAgICAgIHBuZ193cml0ZV9jaHVuayhwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ19iS0dELCBidWYsIChwbmdfc2l6ZV90KTYpOwogICAgfQogICAgZWxzZQogICAgeworICAgICAgaWYoYmFjay0+Z3JheSA+PSAoMSA8PCBwbmdfcHRyLT5iaXRfZGVwdGgpKQorICAgICAgeworICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgICAgICAgIklnbm9yaW5nIGF0dGVtcHQgdG8gd3JpdGUgYktHRCBjaHVuayBvdXQtb2YtcmFuZ2UgZm9yIGJpdF9kZXB0aCIpOworICAgICAgICAgcmV0dXJuOworICAgICAgfQogICAgICAgcG5nX3NhdmVfdWludF8xNihidWYsIGJhY2stPmdyYXkpOwogICAgICAgcG5nX3dyaXRlX2NodW5rKHBuZ19wdHIsIChwbmdfYnl0ZXApcG5nX2JLR0QsIGJ1ZiwgKHBuZ19zaXplX3QpMik7CiAgICB9CkBAIC0xMzI1LDIyICsxMzQ5LDI4IEBACiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiRW1wdHkga2V5d29yZCBpbiBpVFh0IGNodW5rIik7CiAgICAgICByZXR1cm47CiAgICB9Ci0gICBpZiAobGFuZyA9PSBOVUxMIHx8IChsYW5nX2xlbiA9IHBuZ19jaGVja19rZXl3b3JkKHBuZ19wdHIsIGxhbmcsCi0gICAgICAmbmV3X2xhbmcpKT09MCkKKyAgIGlmIChsYW5nID09IE5VTEwgfHwgKGxhbmdfbGVuID0gcG5nX2NoZWNrX2tleXdvcmQocG5nX3B0ciwgbGFuZywgJm5ld19sYW5nKSk9PTApCiAgICB7CiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiRW1wdHkgbGFuZ3VhZ2UgZmllbGQgaW4gaVRYdCBjaHVuayIpOwotICAgICAgcmV0dXJuOworICAgICAgbmV3X2xhbmcgPSBOVUxMOworICAgICAgbGFuZ19sZW4gPSAwOyAgICAgIAogICAgfQotICAgbGFuZ19rZXlfbGVuID0gcG5nX3N0cmxlbihsYW5nX2tleSk7Ci0gICB0ZXh0X2xlbiA9IHBuZ19zdHJsZW4odGV4dCk7CiAKLSAgIGlmICh0ZXh0ID09IE5VTEwgfHwgKnRleHQgPT0gJ1wwJykKKyAgIGlmIChsYW5nX2tleSA9PSBOVUxMKQorICAgICBsYW5nX2tleV9sZW4gPSAwOworICAgZWxzZQorICAgICBsYW5nX2tleV9sZW4gPSBwbmdfc3RybGVuKGxhbmdfa2V5KTsKKworICAgaWYgKHRleHQgPT0gTlVMTCkKICAgICAgIHRleHRfbGVuID0gMDsKKyAgIGVsc2UKKyAgICAgdGV4dF9sZW4gPSBwbmdfc3RybGVuKHRleHQpOwogCiAgICAvKiBjb21wdXRlIHRoZSBjb21wcmVzc2VkIGRhdGE7IGRvIGl0IG5vdyBmb3IgdGhlIGxlbmd0aCAqLwogICAgdGV4dF9sZW4gPSBwbmdfdGV4dF9jb21wcmVzcyhwbmdfcHRyLCB0ZXh0LCB0ZXh0X2xlbiwgY29tcHJlc3Npb24tMiwKICAgICAgICZjb21wKTsKIAorCiAgICAvKiBtYWtlIHN1cmUgd2UgaW5jbHVkZSB0aGUgY29tcHJlc3Npb24gZmxhZywgdGhlIGNvbXByZXNzaW9uIGJ5dGUsCiAgICAgKiBhbmQgdGhlIE5VTHMgYWZ0ZXIgdGhlIGtleSwgbGFuZywgYW5kIGxhbmdfa2V5IHBhcnRzICovCiAKQEAgLTEzNzAsMjMgKzE0MDAsMjIgQEAKICAgIGNidWZbMV0gPSAwOwogICAgcG5nX3dyaXRlX2NodW5rX2RhdGEocG5nX3B0ciwgY2J1ZiwgMik7CiAKLSAgIHBuZ193cml0ZV9jaHVua19kYXRhKHBuZ19wdHIsIChwbmdfYnl0ZXApbmV3X2xhbmcsIGxhbmdfbGVuICsgMSk7Ci0gICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAocG5nX2J5dGVwKWxhbmdfa2V5LCBsYW5nX2tleV9sZW4rMSk7Ci0gICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAnXDAnLCAxKTsKLQorICAgY2J1ZlswXSA9IDA7CisgICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAobmV3X2xhbmcgPyAocG5nX2J5dGVwKW5ld19sYW5nIDogY2J1ZiksIGxhbmdfbGVuICsgMSk7CisgICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAobGFuZ19rZXkgPyAocG5nX2J5dGVwKWxhbmdfa2V5IDogY2J1ZiksIGxhbmdfa2V5X2xlbiArIDEpOwogICAgcG5nX3dyaXRlX2NvbXByZXNzZWRfZGF0YV9vdXQocG5nX3B0ciwgJmNvbXApOwogCiAgICBwbmdfd3JpdGVfY2h1bmtfZW5kKHBuZ19wdHIpOwogICAgcG5nX2ZyZWUocG5nX3B0ciwgbmV3X2tleSk7Ci0gICBwbmdfZnJlZShwbmdfcHRyLCBuZXdfbGFuZyk7CisgICBpZiAobmV3X2xhbmcpCisgICAgIHBuZ19mcmVlKHBuZ19wdHIsIG5ld19sYW5nKTsKIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZChQTkdfV1JJVEVfb0ZGc19TVVBQT1JURUQpCiAvKiB3cml0ZSB0aGUgb0ZGcyBjaHVuayAqLwogdm9pZCAvKiBQUklWQVRFICovCi1wbmdfd3JpdGVfb0ZGcyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfdWludF8zMiB4X29mZnNldCwKLSAgIHBuZ191aW50XzMyIHlfb2Zmc2V0LAorcG5nX3dyaXRlX29GRnMocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2ludF8zMiB4X29mZnNldCwgcG5nX2ludF8zMiB5X29mZnNldCwKICAgIGludCB1bml0X3R5cGUpCiB7CiAjaWZkZWYgUE5HX1VTRV9MT0NBTF9BUlJBWVMKQEAgLTEzOTgsOCArMTQyNyw4IEBACiAgICBpZiAodW5pdF90eXBlID49IFBOR19PRkZTRVRfTEFTVCkKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJVbnJlY29nbml6ZWQgdW5pdCB0eXBlIGZvciBvRkZzIGNodW5rIik7CiAKLSAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmLCB4X29mZnNldCk7Ci0gICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiArIDQsIHlfb2Zmc2V0KTsKKyAgIHBuZ19zYXZlX2ludF8zMihidWYsIHhfb2Zmc2V0KTsKKyAgIHBuZ19zYXZlX2ludF8zMihidWYgKyA0LCB5X29mZnNldCk7CiAgICBidWZbOF0gPSAocG5nX2J5dGUpdW5pdF90eXBlOwogCiAgICBwbmdfd3JpdGVfY2h1bmsocG5nX3B0ciwgKHBuZ19ieXRlcClwbmdfb0ZGcywgYnVmLCAocG5nX3NpemVfdCk5KTsKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dCBiL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dAppbmRleCBiMDhkYjdkLi5jMDQzNmY1IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9tc3ZjL1JFQURNRS50eHQKKysrIGIvcHJvamVjdHMvbXN2Yy9SRUFETUUudHh0CkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMCBmb3IKLWxpYnBuZyAxLjAuMTJiZXRhMSAoTWF5IDE0LCAyMDAxKSBhbmQgemxpYgorbGlicG5nIDEuMC4xMyAoQXByaWwgMTUsIDIwMDIpIGFuZCB6bGliCiAKIENvcHlyaWdodCAoQykgMjAwMCBTaW1vbi1QaWVycmUgQ2FkaWV1eAogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCkBAIC0yNCwxMiArMjQsMTIgQEAKIFRoaXMgcHJvamVjdCB3aWxsIGJ1aWxkIHRoZSBQTkcgRGV2ZWxvcG1lbnQgR3JvdXAncyAib2ZmaWNpYWwiIHZlcnNpb25zIG9mCiBsaWJwbmcgYW5kIHpsaWIgbGlicmFyaWVzOgogCi0gICBsaWJwbmcyLmRsbCAgICAgICAgICAoZGVmYXVsdCB2ZXJzaW9uLCBjdXJyZW50bHkgQyBjb2RlIG9ubHkpCi0gICBsaWJwbmcyLmRsbCAgICAgICAgIChDICsgQXNzZW1ibGVyIHZlcnNpb24pCi0gICBsaWJwbmcyLmRsbCAgICAgICAgIChDICsgQXNzZW1ibGVyIGRlYnVnIHZlcnNpb24pCi0gICBsaWJwbmcyLmRsbCAgICAgICAgIChDIGNvZGUgZGVidWcgdmVyc2lvbikKLSAgIGxpYnBuZzJbYyxlLW1dLmRsbCAgIChyZXNlcnZlZCBmb3Igb2ZmaWNpYWwgdmVyc2lvbnMpIAotICAgbGlicG5nMltuLXpdLmRsbCAgICAgKGF2YWlsYWJsZSBmb3IgcHJpdmF0ZSB2ZXJzaW9ucykKKyAgIGxpYnBuZzEwLmRsbCAgICAgICAgICAoZGVmYXVsdCB2ZXJzaW9uLCBjdXJyZW50bHkgQyBjb2RlIG9ubHkpCisgICBsaWJwbmcxMC5kbGwgICAgICAgICAoQyArIEFzc2VtYmxlciB2ZXJzaW9uKQorICAgbGlicG5nMTAuZGxsICAgICAgICAgKEMgKyBBc3NlbWJsZXIgZGVidWcgdmVyc2lvbikKKyAgIGxpYnBuZzEwLmRsbCAgICAgICAgIChDIGNvZGUgZGVidWcgdmVyc2lvbikKKyAgIGxpYnBuZzEwW2MsZS1tXS5kbGwgICAocmVzZXJ2ZWQgZm9yIG9mZmljaWFsIHZlcnNpb25zKSAKKyAgIGxpYnBuZzEwW24tel0uZGxsICAgICAoYXZhaWxhYmxlIGZvciBwcml2YXRlIHZlcnNpb25zKQogICAgemxpYi5kbGwgICAgICAgICAgICAgKGRlZmF1bHQgdmVyc2lvbiwgY3VycmVudGx5IEMgY29kZSBvbmx5KQogICAgemxpYmQuZGxsICAgICAgICAgICAgKGRlYnVnIHZlcnNpb24pCiAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvbGlicG5nLmRzcCBiL3Byb2plY3RzL21zdmMvbGlicG5nLmRzcAppbmRleCA4MmY2NmRiLi40YjZkZDAzIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9tc3ZjL2xpYnBuZy5kc3AKKysrIGIvcHJvamVjdHMvbXN2Yy9saWJwbmcuZHNwCkBAIC01Niw3ICs1Niw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKICMgQUREIEJBU0UgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2Ci0jIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiLlx3aW4zMlxsaWJwbmdcZGxsXGxpYnBuZzIuZGxsIgorIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbFxsaWJwbmcxMC5kbGwiCiAjIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUKIAogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYnBuZyAtIFdpbjMyIERMTCBEZWJ1ZyIKQEAgLTg0LDcgKzg0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQogIyBBREQgQkFTRSBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKLSMgQUREIExJTkszMiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLlx3aW4zMlxsaWJwbmdcZGxsX2RiZ1xsaWJwbmcyZC5kbGwiCisjIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9kYmdcbGlicG5nMTBkLmRsbCIKIAogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYnBuZyAtIFdpbjMyIERMTCBBU00iCiAKQEAgLTExMSw3ICsxMTEsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NgotIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMmEuZGxsIgorIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMTBhLmRsbCIKICMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQogCiAhRUxTRUlGICAiJChDRkcpIiA9PSAibGlicG5nIC0gV2luMzIgRExMIERlYnVnIEFTTSIKQEAgLTEzOSw3ICsxMzksNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAotIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuXHdpbjMyXGxpYnBuZ1xkbGxfZGJnYVxsaWJwbmcyYi5kbGwiCisjIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9kYmdhXGxpYnBuZzEwYi5kbGwiCiAKICFFTFNFSUYgICIkKENGRykiID09ICJsaWJwbmcgLSBXaW4zMiBMSUIiCiAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvcG5nLnJjIGIvcHJvamVjdHMvbXN2Yy9wbmcucmMKaW5kZXggYjllZjJkNi4uOTkxMjQ3MSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvbXN2Yy9wbmcucmMKKysrIGIvcHJvamVjdHMvbXN2Yy9wbmcucmMKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUE5HIGltYWdlIGNvbXByZXNzaW9uIGxpYnJhcnlcMDAwIgogICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUE5HX0xJQlBOR19WRVJfU1RSSU5HICJcMDAwIgogICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsIFBOR19MSUJQTkdfRExMRk5BTUUgUVVPVEUoUE5HX0xJQlBOR19WRVJfTUFKT1IpIERMTEZOQU1FX1BPU1RGSVggIiAoV2luZG93cyAzMiBiaXQpXDAwMCIKLSAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJcMjUxIDE5OTgtMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb25cMDAwIgorICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIlwyNTEgMTk5OC0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvblwwMDAiCiAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsIFBOR19MSUJQTkdfRExMRk5BTUUgUVVPVEUoUE5HX0xJQlBOR19WRVJfTUFKT1IpIERMTEZOQU1FX1BPU1RGSVggIi5ETExcMDAwIgogI2lmZGVmIFBSSVZBVEVCVUlMRAogICAgICAgVkFMVUUgIlByaXZhdGVCdWlsZCIsIFBSSVZBVEVCVUlMRApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZiBiL3Byb2plY3RzL21zdmMvcG5nMzJtcy5kZWYKaW5kZXggMzg4ZmRhZC4uNTJkMjczMSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZgorKysgYi9wcm9qZWN0cy9tc3ZjL3BuZzMybXMuZGVmCkBAIC02LDcgKzYsNyBAQAogREVTQ1JJUFRJT04gIlBORyBpbWFnZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGZvciBXaW5kb3dzIgogCiBFWFBPUlRTCi07VmVyc2lvbiAxLjAuMTJiZXRhMQorO1ZlcnNpb24gMS4wLjEzCiAgIHBuZ19idWlsZF9ncmF5c2NhbGVfcGFsZXR0ZSAgQDEKICAgcG5nX2NoZWNrX3NpZyAgICAgICAgQDIKICAgcG5nX2NodW5rX2Vycm9yICAgICAgQDMKQEAgLTE5MSw3ICsxOTEsNyBAQAogICBwbmdfd3JpdGVfaW5pdF8zICAgIEAxNzYKICAgcG5nX2luZm9faW5pdF8zIEAxNzcKICAgcG5nX2Rlc3Ryb3lfc3RydWN0ICBAMTc4Ci07IFRvIGJlIGFkZGVkIGF0IHZlcnNpb24gMS4yLjAKKzsgQWRkZWQgYXQgdmVyc2lvbiAxLjIuMAogOyBGb3IgdXNlIHdpdGggUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogOyBwbmdfZGVzdHJveV9zdHJ1Y3RfMiAgQDE3OQogOyBwbmdfY3JlYXRlX3JlYWRfc3RydWN0XzIgQDE4MApAQCAtMjExLDMgKzIxMSwxMCBAQAogOyBwbmdfaW5pdF9tbXhfZmxhZ3MgIEAxOTIKIDsgU3RyaXAgZXJyb3IgbnVtYmVycwogOyBwbmdfc2V0X3N0cmlwX2Vycm9yX251bWJlcnMgQDE5MworOyBBZGRlZCBhdCB2ZXJzaW9uIDEuMi4yCisgIHBuZ19oYW5kbGVfYXNfdW5rbm93biBAMTc5CisgIHBuZ196YWxsb2MgQDE4MAorICBwbmdfemZyZWUgQDE4MQorOyBwbmdfaGFuZGxlX2FzX3Vua25vd24gQDE5NAorOyBwbmdfemFsbG9jIEAxOTUKKzsgcG5nX3pmcmVlIEAxOTYKZGlmZiAtLWdpdCBhL3Byb2plY3RzL25ldHdhcmUudHh0IGIvcHJvamVjdHMvbmV0d2FyZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY5MzA0MgotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL25ldHdhcmUudHh0CkBAIC0wLDAgKzEsNiBAQAorQSBzZXQgb2YgcHJvamVjdCBmaWxlcyBpcyBhdmFpbGFibGUgZm9yIE5ldHdhcmUuICBHZXQKK2xpYnBuZy0xLjAuMTMtcHJvamVjdC1uZXR3YXJlLnppcCBmcm9tIGEgbGlicG5nIGRpc3RyaWJ1dGlvbgorc2l0ZSBzdWNoIGFzIGh0dHA6Ly9saWJwbmcuc291cmNlZm9yZ2UubmV0CisKK1B1dCB0aGUgemlwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgKHByb2plY3RzKSBhbmQgdGhlbiBydW4KKyJ1bnppcCAtYSBsaWJwbmctMS4wLjEzLXByb2plY3QtbmV0d2FyZS56aXAiCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS50eHQgYi9wcm9qZWN0cy93aW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ4OTUzMwotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL3dpbmNlLnR4dApAQCAtMCwwICsxLDYgQEAKK0Egc2V0IG9mIHByb2plY3QgZmlsZXMgaXMgYXZhaWxhYmxlIGZvciBXaW5DRS4gIEdldAorbGlicG5nLTEuMC4xMy1wcm9qZWN0LXdpbmNlLnppcCBmcm9tIGEgbGlicG5nIGRpc3RyaWJ1dGlvbgorc2l0ZSBzdWNoIGFzIGh0dHA6Ly9saWJwbmcuc291cmNlZm9yZ2UubmV0CisKK1B1dCB0aGUgemlwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgKHByb2plY3RzKSBhbmQgdGhlbiBydW4KKyJ1bnppcCAtYSBsaWJwbmctMS4wLjEzLXByb2plY3Qtd2luY2UuemlwIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvUkVBRE1FRS5XQ0UgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIxMWNmMS4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLWxpYnBuZyBmb3IgV2luZG93c0NFIFJlbC4xLjAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBDb3B5cmlnaHQgKGMpIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCi0gQ29weXJpZ2h0IChjKSAyMDAwIFRlbmlrIENvLixMdGQuCi0KLSBQb3J0aW5nIGZvciBXaW5kb3dzQ0UgYnkgVGVuaWsgQ28uLEx0ZC4oS2F6dW8gQWRhY2hpKQotCi0KLUludHJvZHVjdGlvbgotPT09PT09PT09PT09Ci1UaGlzIGlzIGxpYnBuZyAxLjAuMTJiZXRhMSBwb3J0ZWQgdG8gV2luZG93c0NFIDIuMCBhbmQgMi4xMS4KLWxpYnBuZyAxLjAuMTJiZXRhMSBpcyBhIFBORyByZWZlcmVuY2UgbGlicmFyeS4KLVNlZSBSRUFETUUsIGEgZG9jdW1lbnQgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC4xMmJldGExLgotCi16bGliIGZvciBXaW5kb3dzQ0UKLT09PT09PT09PT09PT09PT09PQotVGhpcyBsaWJyYXJ5IHJlcXVpcmVzIHpsaWIgZm9yIFdpbmRvd3NDRS4gIFlvdSBjYW4gdXNlIHRoZSBzdXBwbGllZAotemxpYi5kaWZmIGFuZCB6bGliY2UuZGVmIGZpbGVzIHRvIGFkZCBXaW5kb3dzQ0Ugc3VwcG9ydCB0byBsaWJwbmctMS4xLjMuCi0KLUNvcHlyaWdodCBub3RpY2UKLT09PT09PT09PT09PT09PT0KLVRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi13YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi1hcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgotCi1TZWUgUkVBRE1FIGFuZCBMSUNFTlNFLCBkb2N1bWVudHMgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC4xMmJldGExLCBmb3IgY29uZGl0aW9ucwotb2YgdXNlIGFuZCBkaXN0cmlidXRpb24uCi0KLUZpbGVzCi09PT09PQotCi0gUkVBRE1FRS5XQ0UgLSB0aGlzIGZpbGUoaW4gRW5nbGlzaCkKLSBSRUFETUVKLldDRSAtIHRoaXMgZmlsZShpbiBKYXBhbmVzZSkKLSBwbmczMmNlLmRlZiAtIG1vZHVsZSBkZWZpbml0aW9uIGZpbGUgdG8gbWFrZSBETExzCi0KLVNhbXBsZSBwcm9ncmFtcyguLi8uLi9wbmd0ZXN0LmMgYW5kIC4uLy4uL2NvbnRyaWIvKikgY2FuIGJ1aWxkIG9uIFdpbmRvd3NDRQotMi4xMS4gIFdpbmRvd3NDRSAyLjAgYW5kIGJlbG93IGRvIG5vdCBzdXBwb3J0ICdjb25zb2xlJyBmdW5jdGlvbnMuCi0KLUF1dGhvcgotPT09PT09Ci1UZW5payBDby4sTHRkLgotS2F6dW8gQWRhY2hpCi1hZGFjaGlAdGVuaWsuY28uanAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL1JFQURNRUouV0NFIGIvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMmUyYzMuLjAwMDAwMDAKLS0tIGEvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1saWJwbmcgZm9yIFdpbmRvd3NDRSBSZWwuMS4wCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gQ29weXJpZ2h0IChjKSAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgotIENvcHlyaWdodCAoYykgMjAwMCBUZW5payBDby4sTHRkLgotCi0gUG9ydGluZyBmb3IgV2luZG93c0NFIGJ5IFRlbmlrIENvLixMdGQuKEthenVvIEFkYWNoaSkKLQotCi2CzYK2gt+CyQotPT09PT09PT0KLWxpYnBuZyBmb3IgV2luZG93c0NFgs0gUE5HjGCOroLMieaRnINmgVuDXoOJg0ODdYOJg4ogbGlicG5ngsxXaW5kb3dzQ0UKLZTFgsWCt4FCbGlicG5ngsmCwoKigsSCzI/agrWCopDglr6CzYFBlXSRroLMIFJFQURNRSCC8IKok8eC3YKtgr6Cs4KigUIKLQotemxpYiBmb3IgV2luZG93c0NFCi09PT09PT09PT09PT09PT09PT0KLWxpYnBuZ4LFgs2BQYNmgVuDXoizj2uDiYNDg3WDiYOKgsaCtYLEIHpsaWKC8I5nl3CCtYLEgqKC3IK3gUJsaWJwbmeC8Aotl5iXcIK3gumCvYLfgsmCzYFBlcqTciB6bGligvCXcIjTgreC6ZVLl3aCqoKgguiC3IK3gUIKLQotgsiCqIFBgrGCzINwg2KDUIFbg1eCxZeYl3CCxYKrgukgemxpYoLNjoSCzI3skKyCtYK9IHpsaWJjZS5kbGyCxYK3gUIKLQotjmeXcI/wjI8KLT09PT09PT09Ci2CsYLMg1yDdINng0WDRoNBgs2Ws5Xbj9iCxYK3gUKCsYLMg1yDdINng0WDRoNBgqqMtIj2gsWXmJdwjtKCqpTtgumCsYLGCi2CyYLIgsGCvYKigqmCyILplO2KUYLJgsKCooLEguCBQY3sjtKBQZR6lXqO0oFBgruCzJG8l5iXcI7SiMiKT4LMkGyVqIFBCi2SY5HMgsmQ05RDgvCCxoLpi2CWsYLNgsiCooLggsyCxoK1gtyCt4FCCi0KLYK7gsyRvIFBgrGCzINcg3SDZ4NFg0aDQYLMl5iXcI/wjI+CyYLCgqKCxILNgUGMtJTFgsWCoILpIGxpYnBuZyAxLjAuMTJiZXRhMYLJCi2PgIuSgreC6YLggsyCxoK1gtyCt4FCj9qCtYKtgs2BQZV0ka6CzCBSRUFETUUsTElDRU5TRSCC8IKok8eC3YKtgr6Cs4KigUIKLQotjvuYXpPgl2UKLT09PT09PT09Ci0KLSBSRUFETUVKLldDRSAtIIKxgsyDdINAg0ODiwotIFJFQURNRUUuV0NFIC0ggrGCzIN0g0CDQ4OLKIlwjOopCi0gcG5nMzJjZS5kZWYgLSBETEyN7JCsl3AgkuiLYIN0g0CDQ4OLCi0KLZV0ka6DVIOTg3aDi4FFg3aDjYNPg4mDgILNgUGDgYNig1qBW4NXj2+XzYLMk3ONh4/jgUFXaW5kb3dzQ0UgMi4xMYjIjX4KLYLFgsyC3Y5nl3CJwpRcgsWCt4FCCi0KLZR6lXqO0gotPT09PT09Ci2DZYNqg2KDToqUjq6J747QIIpKlK2VlAotkauXpyCYYZdZCi1hZGFjaGlAdGVuaWsuY28uanAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL1JFQURNRVpFLldDRSBiL3Byb2plY3RzL3dpbmNlL1JFQURNRVpFLldDRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwNjRiZC4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS9SRUFETUVaRS5XQ0UKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi16bGliIGZvciBXaW5kb3dzQ0UgUmVsLjEuMAotPT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAoQykgMTk5NS0xOTk4IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLSAoQykgMjAwMCAgICAgIFRlbmlrIENvLixMdGQuCi0KLSBQb3J0aW5nIGZvciBXaW5kb3dzQ0UgYnkgVGVuaWsgQ28uLEx0ZC4oS2F6dW8gQWRhY2hpKQotCi0KLUludHJvZHVjdGlvbgotPT09PT09PT09PT09Ci1UaGlzIGlzIHpsaWIgMS4xLjMgcG9ydGVkIHRvIFdpbmRvd3NDRSAyLjAgYW5kIDIuMTEuCi16bGliIDEuMS4zIGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeS4KLVNlZSBSRUFETUUsIGEgZG9jdW1lbnQgb2Ygb3JpZ2luYWwgemxpYiAxLjEuMy4KLQotQ29weXJpZ2h0IG5vdGljZQotPT09PT09PT09PT09PT09PQotVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLXdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLWFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0KLVNlZSBSRUFETUUsIGEgZG9jdW1lbnQgb2Ygb3JpZ2luYWwgemxpYiAxLjEuMywgZm9yIGNvbmRpdGlvbnMgb2YgdXNlIGFuZAotZGlzdHJpYnV0aW9uLgotCi1GaWxlcwotPT09PT0KLQotIFJFQURNRUUuV0NFIC0gdGhpcyBmaWxlKGluIEVuZ2xpc2gpCi0gUkVBRE1FSi5XQ0UgLSB0aGlzIGZpbGUoaW4gSmFwYW5lc2UpCi0gemxpYmNlLmRlZiAgLSBtb2R1bGUgZGVmaW5pdGlvbiBmaWxlIHRvIG1ha2UgRExMcwotIHpsaWJjZS5kaWZmIC0gcGF0Y2ggZmlsZSBmb3Igc291cmNlIGNvZGUKLQotU2FtcGxlIHByb2dyYW1zKG1pbmlnemlwLmMgYW5kIGV4YW1wbGUuYykgY2FuIGJ1aWxkIG9uIFdpbmRvd3NDRSAyLjExLgotV2luZG93c0NFIDIuMCBhbmQgYmVsb3cgaXMgbm90IHN1cHBvcnQgJ2NvbnNvbGUnIGZ1bmN0aW9ucy4KLQotQXV0aG9yCi09PT09PT0KLVRlbmlrIENvLixMdGQuCi1LYXp1byBBZGFjaGkKLWFkYWNoaUB0ZW5pay5jby5qcApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvUkVBRE1FWkouV0NFIGIvcHJvamVjdHMvd2luY2UvUkVBRE1FWkouV0NFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWY0MDhmLi4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL3dpbmNlL1JFQURNRVpKLldDRQorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXpsaWIgZm9yIFdpbmRvd3NDRSBSZWwuMS4wCi09PT09PT09PT09PT09PT09PT09PT09PT09PQotIChDKSAxOTk1LTE5OTggSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgotIChDKSAyMDAwICAgICAgVGVuaWsgQ28uLEx0ZC4KLQotIFBvcnRpbmcgZm9yIFdpbmRvd3NDRSBieSBUZW5payBDby4sTHRkLihLYXp1byBBZGFjaGkpCi0KLQotgs2CtoLfgskKLT09PT09PT09Ci16bGliIGZvciBXaW5kb3dzQ0WCzZTEl3CCzINmgVuDXoizj2uDiYNDg3WDiYOKIHpsaWKCzCBXaW5kb3dzQ0WUxYLFgreBQgotemxpYoLJgsKCooLEgsyP2oK1gqKQ4Ja+gs2BQZV0ka6CzCBSRUFETUUggvCCqJPHgt2CrYK+grOCooFCCi0KLY5nl3CP8IyPCi09PT09PT09PQotgrGCzINcg3SDZ4NFg0aDQYLNlrOV24/YgsWCt4FCgrGCzINcg3SDZ4NFg0aDQYKqjLSI9oLFl5iXcI7SgqqU7YLpgrGCxgotgsmCyILBgr2CooKpgsiC6ZTtilGCyYLCgqKCxILggUGN7I7SgUGUepV6jtKBQYK7gsyRvJeYl3CO0ojIik+CzJBslaiBQQotkmORzILJkNOUQ4LwgsaC6YtglrGCzYLIgqKC4ILMgsaCtYLcgreBQgotCi2Cu4LMkbyBQYKxgsyDXIN0g2eDRYNGg0GCzJeYl3CP8IyPgsmCwoKigsSCzYFBjLSUxYLFgqCC6SB6bGliIDEuMS4zgskKLY+Ai5KCt4LpguCCzILGgrWC3IK3gUKP2oK1gq2CzYFBlXSRroLMIFJFQURNRSCC8IKok8eC3YKtgr6Cs4KigUIKLQotjvuYXpPgl2UKLT09PT09PT09Ci0KLSBSRUFETUVKLldDRSAtIIKxgsyDdINAg0ODiwotIFJFQURNRUUuV0NFIC0ggrGCzIN0g0CDQ4OLKIlwjOopCi0gemxpYmNlLmRpZmYgLSCDXIFbg1iDUoFbg2iNt5Wqg3SDQINDg4sKLSB6bGliY2UuZGVmICAtIERMTI3skKyXcCCS6Itgg3SDQINDg4sKLQotjLSUxYLMIHpsaWIgMS4xLjOCxoLMjcWR5YLMiOGCooLNgUFnemlvLmOCzINSgVuDaILFgreBQldpbmRvd3NDRYLJgs0KLXN0ZGlvLmgob3BlbpOZgsyK1pCUKYKqkbaN3YK1gsiCooK9gt+BQZPGjqmCzCBnemlvd2NlLmOC8I3skKyCtYLcgrWCvYFCCi0KLW1pbmlnemlwLmOCxiBleGFtcGxlLmOCzJV0ka6DVIOTg3aDi4FFg3aDjYNPg4mDgILNgUGDgYNig1qBW4NXj2+XzYLMCi2Tc42Hj+OBQVdpbmRvd3NDRSAyLjExiMiNfoLFgsyC3Y5nl3CJwpRcgsWCt4FCCi0KLZR6lXqO0gotPT09PT09Ci2DZYNqg2KDToqUjq6J747QIIpKlK2VlAotkauXpyCYYZdZCi1hZGFjaGlAdGVuaWsuY28uanAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3AgYi9wcm9qZWN0cy93aW5jZS9scG5nY2UuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTI0YmNmLi4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzNzMxICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ibHBuZ2NlIiAtIFBhY2thZ2UgT3duZXI9PDQ+Ci0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCi0jICoqIERPIE5PVCBFRElUICoqCi0KLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgeDg2ZW0pIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDdmMDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgU0gzKSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHg4MTAyCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODQwMgotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSB4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDgzMDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQU0ZQKSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHg4NzAyCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIEFSTSkgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODUwMgotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDg2MDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQUykgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODIwMgotCi1DRkc9bHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZwotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCi0hTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJscG5nY2UubWFrIi4KLSFNRVNTQUdFIAotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6Ci0hTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJscG5nY2UubWFrIiBDRkc9ImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0hTUVTU0FHRSAKLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOgotIU1FU1NBR0UgCi0hTUVTU0FHRSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQUykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNIMykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNIMykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTRlApIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTRlApIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSB4ODZlbSkgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2ZW0pIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgCi0KLSMgQmVnaW4gUHJvamVjdAotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKLSMgUFJPUCBTY2NfUHJvak5hbWUgIiIKLSMgUFJPUCBTY2NfTG9jYWxQYXRoICJIL1BDIFZlci4gMi4wMCIKLSMgUFJPUCBXQ0VfRm9ybWF0VmVyc2lvbiAiNi4wIgotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU1JlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIE91dHB1dF9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbG1pcHMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvUU1SV0NFIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvTzIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJOREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19CVUlMRF9ETEwiIC9RTVJXQ0UgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpNSVBTIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpNSVBTIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldNSVBTRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV01JUFNEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxQTkdDRV9FWFBPUlRTIiAvWVggL1FNUldDRSAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX0JVSUxEX0RMTCIgL1FNUldDRSAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVNINFJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVNINFJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VTSDRSZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFU0g0UmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1zaGNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvUXNoNCAvTUMgL1czIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxQTkdDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9Rc2g0IC9NQyAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDQiIC9EICJfU0g0XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpTSDQgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDREYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDREYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0g0RGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNINERiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FzaDQgL01DIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIlNIeCIgL0QgIlNINCIgL0QgIl9TSDRfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMUE5HQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvUXNoNCAvTUMgL1czIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX0JVSUxEX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0gzUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNIM1JlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0KSAvVzMgL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0KSAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpTSDMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDNEYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0gzRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNIM0RiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIlNIeCIgL0QgIlNIMyIgL0QgIl9TSDNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMUE5HQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnREZWJ1ZykgL1czIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0gzIiAvRCAiX1NIM18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX0JVSUxEX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNIMyIgL2QgIl9TSDNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VBUk1SZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VBUk1SZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFQVJNUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTVJlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2xhcm0uZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NQyAvVzMgL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01DIC9XMyAvTzIgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19CVUlMRF9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpBUk0gL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb3JlZGxsLmxpYiBjb21tY3RybC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkFSTSAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VBUk1EYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFQVJNRGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbGFybS5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01DIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMUE5HQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUMgL1czIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX0JVSUxEX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU0ZQUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNGUFJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXTUlQU0ZQUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRlBSZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9PMiAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU0ZQRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNGUERiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXTUlQU0ZQRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRlBEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VYODZSZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFWDg2UmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01MIC9XMyAvTzIgL0QgIng4NiIgL0QgIl9pMzg2XyIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJOREVCVUciIC9EICJpXzM4Nl8iIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMUE5HQ0VfRVhQT1JUUyIgL0dzODE5MiAvR0YgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NTCAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgIk5ERUJVRyIgL0QgImlfMzg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvR3M4MTkyIC9HRiAvYwotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIng4NiIgL2QgIl9pMzg2XyIgL2QgIl94ODZfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIng4NiIgL2QgIl9pMzg2XyIgL2QgIl94ODZfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvZGxsIC9tYWNoaW5lOklYODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvZGxsIC9tYWNoaW5lOklYODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VYODZEYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VYODZEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFWDg2RGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NkRiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NTGQgL1czIC9aaSAvT2QgL0QgIng4NiIgL0QgIl9pMzg2XyIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJERUJVRyIgL0QgImlfMzg2XyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxQTkdDRV9FWFBPUlRTIiAvR3M4MTkyIC9HRiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01MZCAvVzMgL1ppIC9PZCAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAieDg2IiAvRCAiX2kzODZfIiAvRCAiX3g4Nl8iIC9EICJERUJVRyIgL0QgImlfMzg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvR3M4MTkyIC9HRiAvYwotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIng4NiIgL2QgIl9pMzg2XyIgL2QgIl94ODZfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAieDg2IiAvZCAiX2kzODZfIiAvZCAiX3g4Nl8iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvYmFzZToiMHgwMDAxMDAwMCIgL2RsbCAvZGVidWcgL21hY2hpbmU6SVg4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9kbGwgL2RlYnVnIC9tYWNoaW5lOklYODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAieDg2ZW1SZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ4ODZlbVJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJ4ODZlbVJlbCIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODZlbVJlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NTCAvVzMgL08yIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiTkRFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01MIC9XMyAvTzIgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiTkRFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19CVUlMRF9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiV0lOMzIiIC9kICJTVFJJQ1QiIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL2QgIklOVEVSTkFUSU9OQUwiIC9kICJVU0EiIC9kICJJTlRMTVNHX0NPREVQQUdFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiV0lOMzIiIC9kICJTVFJJQ1QiIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL2QgIklOVEVSTkFUSU9OQUwiIC9kICJVU0EiIC9kICJJTlRMTVNHX0NPREVQQUdFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2RsbCAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvd2luZG93c2NlOmVtdWxhdGlvbgotIyBBREQgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9kbGwgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAieDg2ZW1EYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ4ODZlbURiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJ4ODZlbURiZyIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODZlbURiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NTGQgL1czIC9HbSAvWmkgL09kIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiX0RFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTFBOR0NFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01MZCAvVzMgL0dtIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiX0RFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19CVUlMRF9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiV0lOMzIiIC9kICJTVFJJQ1QiIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL2QgIklOVEVSTkFUSU9OQUwiIC9kICJVU0EiIC9kICJJTlRMTVNHX0NPREVQQUdFIiAvZCAiX0RFQlVHIiAvZCAieDg2IiAvZCAiaTQ4NiIgL2QgIl94ODZfIgotIyBBREQgUlNDIC9sIDB4NDExIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIl9VTklDT0RFIiAvZCAiV0lOMzIiIC9kICJTVFJJQ1QiIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL2QgIklOVEVSTkFUSU9OQUwiIC9kICJVU0EiIC9kICJJTlRMTVNHX0NPREVQQUdFIiAvZCAiX0RFQlVHIiAvZCAieDg2IiAvZCAiaTQ4NiIgL2QgIl94ODZfIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLSMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvd2luZG93c2NlOmVtdWxhdGlvbgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VQUENSZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VQUENSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFUFBDUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVBQQ1JlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2xwcGMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxQTkdDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9PMiAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX0JVSUxEX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgInBwYyIgL2QgIl9wcGNfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgInBwYyIgL2QgIl9wcGNfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOlBQQyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6UFBDIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiV0NFUFBDRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV0NFUFBDRGJnIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIE91dHB1dF9EaXIgIldDRVBQQ0RiZyIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXQ0VQUENEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNscHBjLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTSQoQ0VDcnREZWJ1ZykgL1czIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxQTkdDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL1ppIC9PZCAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJQUEMiIC9EICJfUFBDXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfQlVJTERfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAicHBjIiAvZCAiX3BwY18iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJwcGMiIC9kICJfcHBjXyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpQUEMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpQUEMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTkRJRiAKLQotIyBCZWdpbiBUYXJnZXQKLQotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0jIE5hbWUgImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotIyBOYW1lICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLSMgTmFtZSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIgotCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlxwbmcuYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdfQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HX0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR19DPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9LlxwbmczMmNlLmRlZgotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ2Vycm9yLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HRVI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0VSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdFUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ2djY3JkLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0M9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ2dldC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR0dFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdHRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HR0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlxwbmdtZW0uYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdNRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HTUU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR01FPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5ncHJlYWQuYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdQUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1BSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5ncmVhZC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlxwbmdyaW8uYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUkk9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5ncnRyYW4uYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlQ9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5ncnV0aWwuYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdSVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HUlU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1JVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5nc2V0LmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HU0U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1NFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdTRT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ3RyYW5zLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVFI9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdUUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ3ZjcmQuYwotCi0hSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdWQz1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVkM9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1ZDPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5nd2lvLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV0k9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dJPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXST1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ3dyaXRlLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1I9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dSPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXUj1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ3d0cmFuLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1Q9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dUPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVD1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZ3d1dGlsLmMKLQotIUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HV1U9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibHBuZ2NlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJscG5nY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1dVPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxwbmdjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdXVT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgRW5kIEdyb3VwCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiCi0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCIKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXHBuZy5oCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5ccG5nY29uZi5oCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBFbmQgR3JvdXAKLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgotCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKLSMgRW5kIEdyb3VwCi0jIEVuZCBUYXJnZXQKLSMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3cgYi9wcm9qZWN0cy93aW5jZS9scG5nY2UuZHN3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U0OGUzLi4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3cKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBXb3Jrc3BhY2UgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSEKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1Qcm9qZWN0OiAibHBuZ2NlIj0uXGxwbmdjZS5kc3AgLSBQYWNrYWdlIE93bmVyPTw0PgotCi1QYWNrYWdlPTw1Pgote3t7Ci19fX0KLQotUGFja2FnZT08ND4KLXt7ewotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQotICAgIFByb2plY3RfRGVwX05hbWUgemxpYmNlCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQotfX19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotUHJvamVjdDogInpsaWJjZSI9Llx6bGliY2UuZHNwIC0gUGFja2FnZSBPd25lcj08ND4KLQotUGFja2FnZT08NT4KLXt7ewotfX19Ci0KLVBhY2thZ2U9PDQ+Ci17e3sKLX19fQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLUdsb2JhbDoKLQotUGFja2FnZT08NT4KLXt7ewotfX19Ci0KLVBhY2thZ2U9PDM+Ci17e3sKLX19fQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3BuZzMyY2UuZGVmIGIvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NzA2MWYuLjAwMDAwMDAKLS0tIGEvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotOyBMSUJQTkcgbW9kdWxlIGRlZmluaXRpb24gZmlsZSBmb3IgV2luZG93cwotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1MSUJSQVJZIGxwbmdjZQotCi1FWFBPUlRTCi07VmVyc2lvbiAxLjAuMTJiZXRhMQotICBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUgIEAxCi0gIHBuZ19jaGVja19zaWcgICAgICAgIEAyCi0gIHBuZ19jaHVua19lcnJvciAgICAgIEAzCi0gIHBuZ19jaHVua193YXJuaW5nICAgICAgQDQKLTsgIHBuZ19jb252ZXJ0X2Zyb21fc3RydWN0X3RtICAgQDUKLTsgIHBuZ19jb252ZXJ0X2Zyb21fdGltZV90ICAgIEA2Ci0gIHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QgICAgIEA3Ci0gIHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QgICAgIEA4Ci0gIHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0ICAgIEA5Ci0gIHBuZ19kYXRhX2ZyZWVyICAgIEAxMAotICBwbmdfZGVzdHJveV9pbmZvX3N0cnVjdCAgQDExCi0gIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0ICBAMTIKLSAgcG5nX2Rlc3Ryb3lfd3JpdGVfc3RydWN0ICBAMTMKLSAgcG5nX2Vycm9yICAgIEAxNAotICBwbmdfZnJlZSAgICAgIEAxNQotICBwbmdfZnJlZV9kYXRhICAgIEAxNgotICBwbmdfZ2V0X0lIRFIgICAgQDE3Ci0gIHBuZ19nZXRfUExURSAgICBAMTgKLSAgcG5nX2dldF9iS0dEICAgIEAxOQotICBwbmdfZ2V0X2JpdF9kZXB0aCAgICBAMjAKLSAgcG5nX2dldF9jSFJNICAgIEAyMQotICBwbmdfZ2V0X2NIUk1fZml4ZWQgIEAyMgotICBwbmdfZ2V0X2NoYW5uZWxzICAgIEAyMwotICBwbmdfZ2V0X2NvbG9yX3R5cGUgIEAyNAotICBwbmdfZ2V0X2NvbXByZXNzaW9uX2J1ZmZlcl9zaXplICBAMjUKLSAgcG5nX2dldF9jb21wcmVzc2lvbl90eXBlICBAMjYKLSAgcG5nX2dldF9jb3B5cmlnaHQgICAgQDI3Ci0gIHBuZ19nZXRfZXJyb3JfcHRyICAgIEAyOAotICBwbmdfZ2V0X2ZpbHRlcl90eXBlICBAMjkKLSAgcG5nX2dldF9nQU1BICAgIEAzMAotICBwbmdfZ2V0X2dBTUFfZml4ZWQgIEAzMQotICBwbmdfZ2V0X2hJU1QgICAgQDMyCi0gIHBuZ19nZXRfaGVhZGVyX3ZlciAgQDMzCi0gIHBuZ19nZXRfaGVhZGVyX3ZlcnNpb24gIEAzNAotICBwbmdfZ2V0X2lDQ1AgICAgQDM1Ci0gIHBuZ19nZXRfaW1hZ2VfaGVpZ2h0ICBAMzYKLSAgcG5nX2dldF9pbWFnZV93aWR0aCAgQDM3Ci0gIHBuZ19nZXRfaW50ZXJsYWNlX3R5cGUgIEAzOAotICBwbmdfZ2V0X2lvX3B0ciAgICBAMzkKLSAgcG5nX2dldF9saWJwbmdfdmVyICBANDAKLSAgcG5nX2dldF9vRkZzICAgIEA0MQotICBwbmdfZ2V0X3BDQUwgICAgQDQyCi0gIHBuZ19nZXRfcEhZcyAgICBANDMKLSAgcG5nX2dldF9waXhlbF9hc3BlY3RfcmF0aW8gIEA0NAotICBwbmdfZ2V0X3BpeGVsc19wZXJfbWV0ZXIgIEA0NQotICBwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0ciAgQDQ2Ci0gIHBuZ19nZXRfcmdiX3RvX2dyYXlfc3RhdHVzICBANDcKLSAgcG5nX2dldF9yb3dieXRlcyAgICBANDgKLSAgcG5nX2dldF9yb3dzICAgIEA0OQotICBwbmdfZ2V0X3NCSVQgICAgQDUwCi0gIHBuZ19nZXRfc0NBTCAgICBANTEKLSAgcG5nX2dldF9zUExUICAgIEA1MgotICBwbmdfZ2V0X3NSR0IgICAgQDUzCi0gIHBuZ19nZXRfc2lnbmF0dXJlICAgIEA1NAotICBwbmdfZ2V0X3RJTUUgICAgQDU1Ci0gIHBuZ19nZXRfdFJOUyAgICBANTYKLSAgcG5nX2dldF90ZXh0ICAgIEA1NwotICBwbmdfZ2V0X3Vua25vd25fY2h1bmtzICBANTgKLSAgcG5nX2dldF91c2VyX2NodW5rX3B0ciAgQDU5Ci0gIHBuZ19nZXRfdXNlcl90cmFuc2Zvcm1fcHRyICBANjAKLSAgcG5nX2dldF92YWxpZCAgICBANjEKLSAgcG5nX2dldF94X29mZnNldF9taWNyb25zICBANjIKLSAgcG5nX2dldF94X29mZnNldF9waXhlbHMgIEA2MwotICBwbmdfZ2V0X3hfcGl4ZWxzX3Blcl9tZXRlciAgQDY0Ci0gIHBuZ19nZXRfeV9vZmZzZXRfbWljcm9ucyAgQDY1Ci0gIHBuZ19nZXRfeV9vZmZzZXRfcGl4ZWxzICBANjYKLSAgcG5nX2dldF95X3BpeGVsc19wZXJfbWV0ZXIgIEA2NwotICBwbmdfbWFsbG9jICAgIEA2OAotICBwbmdfbWVtY3B5X2NoZWNrICAgIEA2OQotICBwbmdfbWVtc2V0X2NoZWNrICAgIEA3MAotOyBwbmdfcGVybWl0X2VtcHR5X3BsdGUgaXMgZGVwcmVjYXRlZAotICBwbmdfcGVybWl0X2VtcHR5X3BsdGUgIEA3MQotICBwbmdfcHJvY2Vzc19kYXRhICAgIEA3MgotICBwbmdfcHJvZ3Jlc3NpdmVfY29tYmluZV9yb3cgIEA3MwotICBwbmdfcmVhZF9lbmQgICAgQDc0Ci0gIHBuZ19yZWFkX2ltYWdlICAgIEA3NQotICBwbmdfcmVhZF9pbmZvICAgIEA3NgotOyBwbmdfcmVhZF9pbml0IGlzIGRlcHJlY2F0ZWQKLSAgcG5nX3JlYWRfaW5pdCAgICBANzcKLSAgcG5nX3JlYWRfcG5nICAgIEA3OAotICBwbmdfcmVhZF9yb3cgICAgQDc5Ci0gIHBuZ19yZWFkX3Jvd3MgICAgQDgwCi0gIHBuZ19yZWFkX3VwZGF0ZV9pbmZvICBAODEKLSAgcG5nX3Jlc2V0X3pzdHJlYW0gICAgQDgyCi0gIHBuZ19zZXRfSUhEUiAgICBAODMKLSAgcG5nX3NldF9QTFRFICAgIEA4NAotICBwbmdfc2V0X2JLR0QgICAgQDg1Ci0gIHBuZ19zZXRfYmFja2dyb3VuZCAgQDg2Ci0gIHBuZ19zZXRfYmdyICAgIEA4NwotICBwbmdfc2V0X2NIUk0gICAgQDg4Ci0gIHBuZ19zZXRfY0hSTV9maXhlZCAgQDg5Ci0gIHBuZ19zZXRfY29tcHJlc3Npb25fYnVmZmVyX3NpemUgIEA5MAotICBwbmdfc2V0X2NvbXByZXNzaW9uX2xldmVsICBAOTEKLSAgcG5nX3NldF9jb21wcmVzc2lvbl9tZW1fbGV2ZWwgIEA5MgotICBwbmdfc2V0X2NvbXByZXNzaW9uX21ldGhvZCAgQDkzCi0gIHBuZ19zZXRfY29tcHJlc3Npb25fc3RyYXRlZ3kgIEA5NAotICBwbmdfc2V0X2NvbXByZXNzaW9uX3dpbmRvd19iaXRzICBAOTUKLSAgcG5nX3NldF9jcmNfYWN0aW9uICBAOTYKLSAgcG5nX3NldF9kaXRoZXIgICAgQDk3Ci0gIHBuZ19zZXRfZXJyb3JfZm4gICAgQDk4Ci0gIHBuZ19zZXRfZXhwYW5kICAgIEA5OQotICBwbmdfc2V0X2ZpbGxlciAgICBAMTAwCi0gIHBuZ19zZXRfZmlsdGVyICAgIEAxMDEKLSAgcG5nX3NldF9maWx0ZXJfaGV1cmlzdGljcyAgQDEwMgotICBwbmdfc2V0X2ZsdXNoICAgIEAxMDMKLSAgcG5nX3NldF9nQU1BICAgIEAxMDQKLSAgcG5nX3NldF9nQU1BX2ZpeGVkICBAMTA1Ci0gIHBuZ19zZXRfZ2FtbWEgICAgQDEwNgotICBwbmdfc2V0X2dyYXlfMV8yXzRfdG9fOCAgQDEwNwotICBwbmdfc2V0X2dyYXlfdG9fcmdiICBAMTA4Ci0gIHBuZ19zZXRfaElTVCAgICBAMTA5Ci0gIHBuZ19zZXRfaUNDUCAgICBAMTEwCi0gIHBuZ19zZXRfaW50ZXJsYWNlX2hhbmRsaW5nICBAMTExCi0gIHBuZ19zZXRfaW52ZXJ0X2FscGhhICBAMTEyCi0gIHBuZ19zZXRfaW52ZXJ0X21vbm8gIEAxMTMKLSAgcG5nX3NldF9rZWVwX3Vua25vd25fY2h1bmtzICBAMTE0Ci0gIHBuZ19zZXRfb0ZGcyAgICBAMTE1Ci0gIHBuZ19zZXRfcENBTCAgICBAMTE2Ci0gIHBuZ19zZXRfcEhZcyAgICBAMTE3Ci0gIHBuZ19zZXRfcGFja2luZyAgICBAMTE4Ci0gIHBuZ19zZXRfcGFja3N3YXAgICAgQDExOQotICBwbmdfc2V0X3BhbGV0dGVfdG9fcmdiICBAMTIwCi0gIHBuZ19zZXRfcHJvZ3Jlc3NpdmVfcmVhZF9mbiAgQDEyMQotICBwbmdfc2V0X3JlYWRfZm4gICAgQDEyMgotICBwbmdfc2V0X3JlYWRfc3RhdHVzX2ZuICBAMTIzCi0gIHBuZ19zZXRfcmVhZF91c2VyX2NodW5rX2ZuICBAMTI0Ci0gIHBuZ19zZXRfcmVhZF91c2VyX3RyYW5zZm9ybV9mbiAgQDEyNQotICBwbmdfc2V0X3JnYl90b19ncmF5ICBAMTI2Ci0gIHBuZ19zZXRfcmdiX3RvX2dyYXlfZml4ZWQgIEAxMjcKLSAgcG5nX3NldF9yb3dzICAgIEAxMjgKLSAgcG5nX3NldF9zQklUICAgIEAxMjkKLSAgcG5nX3NldF9zQ0FMICAgIEAxMzAKLSAgcG5nX3NldF9zUExUICAgIEAxMzEKLSAgcG5nX3NldF9zUkdCICAgIEAxMzIKLSAgcG5nX3NldF9zUkdCX2dBTUFfYW5kX2NIUk0gIEAxMzMKLSAgcG5nX3NldF9zaGlmdCAgICBAMTM0Ci0gIHBuZ19zZXRfc2lnX2J5dGVzICAgIEAxMzUKLSAgcG5nX3NldF9zdHJpcF8xNiAgICBAMTM2Ci0gIHBuZ19zZXRfc3RyaXBfYWxwaGEgIEAxMzcKLSAgcG5nX3NldF9zd2FwICAgIEAxMzgKLSAgcG5nX3NldF9zd2FwX2FscGhhICBAMTM5Ci0gIHBuZ19zZXRfdElNRSAgICBAMTQwCi0gIHBuZ19zZXRfdFJOUyAgICBAMTQxCi0gIHBuZ19zZXRfdFJOU190b19hbHBoYSAgQDE0MgotICBwbmdfc2V0X3RleHQgICAgQDE0MwotICBwbmdfc2V0X3Vua25vd25fY2h1bmtfbG9jYXRpb24gIEAxNDQKLSAgcG5nX3NldF91bmtub3duX2NodW5rcyAgQDE0NQotICBwbmdfc2V0X3VzZXJfdHJhbnNmb3JtX2luZm8gIEAxNDYKLSAgcG5nX3NldF93cml0ZV9mbiAgICBAMTQ3Ci0gIHBuZ19zZXRfd3JpdGVfc3RhdHVzX2ZuICBAMTQ4Ci0gIHBuZ19zZXRfd3JpdGVfdXNlcl90cmFuc2Zvcm1fZm4gIEAxNDkKLSAgcG5nX3NpZ19jbXAgICAgQDE1MAotICBwbmdfc3RhcnRfcmVhZF9pbWFnZSAgQDE1MQotICBwbmdfd2FybmluZyAgICBAMTUyCi0gIHBuZ193cml0ZV9jaHVuayAgICBAMTUzCi0gIHBuZ193cml0ZV9jaHVua19kYXRhICBAMTU0Ci0gIHBuZ193cml0ZV9jaHVua19lbmQgIEAxNTUKLSAgcG5nX3dyaXRlX2NodW5rX3N0YXJ0ICBAMTU2Ci0gIHBuZ193cml0ZV9lbmQgICAgQDE1NwotICBwbmdfd3JpdGVfZmx1c2ggICAgQDE1OAotICBwbmdfd3JpdGVfaW1hZ2UgICAgQDE1OQotICBwbmdfd3JpdGVfaW5mbyAgICBAMTYwCi0gIHBuZ193cml0ZV9pbmZvX2JlZm9yZV9QTFRFICBAMTYxCi07IHBuZ193cml0ZV9pbml0IGlzIGRlcHJlY2F0ZWQKLSAgcG5nX3dyaXRlX2luaXQgICAgQDE2MgotICBwbmdfd3JpdGVfcG5nICAgIEAxNjMKLSAgcG5nX3dyaXRlX3JvdyAgICBAMTY0Ci0gIHBuZ193cml0ZV9yb3dzICAgIEAxNjUKLTsgcG5nX3JlYWRfaW5pdF8yIGFuZCBwbmdfd3JpdGVfaW5pdF8yIGFyZSBkZXByZWNhdGVkLgotICBwbmdfcmVhZF9pbml0XzIgICAgQDE2NgotICBwbmdfd3JpdGVfaW5pdF8yICAgIEAxNjcKLSAgcG5nX2FjY2Vzc192ZXJzaW9uX251bWJlciAgQDE2OAotOyAgcG5nX3NpZ19ieXRlcyAgICBAMTY5Ci07ICBwbmdfbGlicG5nX3ZlciAgICBAMTcwCi0gIHBuZ19pbml0X2lvICAgIEAxNzEKLSAgcG5nX2NvbnZlcnRfdG9fcmZjMTEyMyAgICAgQDE3MgotICBwbmdfc2V0X2ludmFsaWQgIEAxNzMKLTsgQWRkZWQgYXQgdmVyc2lvbiAxLjAuMTIKLTsgRm9yIGNvbXBhdGlibGl0eSB3aXRoIDEuMC43LTEuMC4xMQotICBwbmdfaW5mb19pbml0IEAxNzQKLSAgcG5nX3JlYWRfaW5pdF8zICAgIEAxNzUKLSAgcG5nX3dyaXRlX2luaXRfMyAgICBAMTc2Ci0gIHBuZ19pbmZvX2luaXRfMyBAMTc3Ci0gIHBuZ19kZXN0cm95X3N0cnVjdCAgQDE3OAotOyBUbyBiZSBhZGRlZCBhdCB2ZXJzaW9uIDEuMi4wCi07IEZvciB1c2Ugd2l0aCBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi07IHBuZ19kZXN0cm95X3N0cnVjdF8yICBAMTc5Ci07IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3RfMiBAMTgwCi07IHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0XzIgQDE4MQotOyBwbmdfbWFsbG9jX2RlZmF1bHQgQDE4MgotOyBwbmdfZnJlZV9kZWZhdWx0IEAxODMKLTsgTU5HIGZlYXR1cmVzCi07IHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzICBAMTg0Ci07IE1NWCBzdXBwb3J0Ci07IHBuZ19tbXhfc3VwcG9ydCAgQDE4NQotOyBwbmdfZ2V0X21teF9mbGFnbWFzayAgQDE4NgotOyBwbmdfZ2V0X2FzbV9mbGFnbWFzayAgQDE4NwotOyBwbmdfZ2V0X2FzbV9mbGFncyAgQDE4OAotOyBwbmdfZ2V0X21teF9iaXRkZXB0aF90aHJlc2hvbGQgIEAxODkKLTsgcG5nX2dldF9tbXhfcm93Ynl0ZXNfdGhyZXNob2xkICBAMTkwCi07IHBuZ19zZXRfYXNtX2ZsYWdzICBAMTkxCi07IHBuZ19pbml0X21teF9mbGFncyAgQDE5MgotOyBTdHJpcCBlcnJvciBudW1iZXJzCi07IHBuZ19zZXRfc3RyaXBfZXJyb3JfbnVtYmVycyBAMTkzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS9wbmd0ZXN0LmRzcCBiL3Byb2plY3RzL3dpbmNlL3BuZ3Rlc3QuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWRlNTAwLi4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL3dpbmNlL3BuZ3Rlc3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsODEyICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0icG5ndGVzdCIgLSBQYWNrYWdlIE93bmVyPTw0PgotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAotIyAqKiBETyBOT1QgRURJVCAqKgotCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIHg4NikgQXBwbGljYXRpb24iIDB4ODMwMQotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBBUk0pIEFwcGxpY2F0aW9uIiAweDg1MDEKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgUFBDKSBBcHBsaWNhdGlvbiIgMHg4NDAxCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIHg4NmVtKSBBcHBsaWNhdGlvbiIgMHg3ZjAxCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIFNIMykgQXBwbGljYXRpb24iIDB4ODEwMQotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBTSDQpIEFwcGxpY2F0aW9uIiAweDg2MDEKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQUykgQXBwbGljYXRpb24iIDB4ODIwMQotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBNSVBTRlApIEFwcGxpY2F0aW9uIiAweDg3MDEKLQotQ0ZHPXBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4KLSFNRVNTQUdFIAotIU1FU1NBR0UgTk1BS0UgL2YgInBuZ3Rlc3QubWFrIi4KLSFNRVNTQUdFIAotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6Ci0hTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJwbmd0ZXN0Lm1hayIgQ0ZHPSJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLSFNRVNTQUdFIAotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6Ci0hTUVTU0FHRSAKLSFNRVNTQUdFICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQUykgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQUykgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNINCkgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDMpIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgU0gzKSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNKSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIEFSTSkgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIE1JUFNGUCkgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTRlApIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSB4ODYpIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2KSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSB4ODZlbSkgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIHg4NmVtKSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgUFBDKSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFBQQykgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgCi0KLSMgQmVnaW4gUHJvamVjdAotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKLSMgUFJPUCBTY2NfUHJvak5hbWUgIiIKLSMgUFJPUCBTY2NfTG9jYWxQYXRoICJIL1BDIFBybyAyLjExIgotIyBQUk9QIFdDRV9Gb3JtYXRWZXJzaW9uICI2LjAiCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU1JlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIE91dHB1dF9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbG1pcHMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiTUlQUyIgL0QgIl9NSVBTXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9ZWCAvUU1SV0NFIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvTzIgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9RTVJXQ0UgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldNSVBTRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV01JUFNEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvWVggL1FNUldDRSAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9RTVJXQ0UgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kZWJ1ZyAvbWFjaGluZTpNSVBTIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDRSZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDRSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0g0UmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNINFJlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FzaDQgL01DIC9XMyAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIlNIeCIgL0QgIlNINCIgL0QgIl9TSDRfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvUXNoNCAvTUMgL1czIC9PMiAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJTSHgiIC9kICJTSDQiIC9kICJfU0g0XyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJTSHgiIC9kICJTSDQiIC9kICJfU0g0XyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVNINERiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVNINERiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VTSDREYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFU0g0RGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1zaGNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvUXNoNCAvTUMgL1czIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9Rc2g0IC9NQyAvVzMgL1ppIC9PZCAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJTSHgiIC9EICJTSDQiIC9EICJfU0g0XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfVVNFX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOlNINCAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kZWJ1ZyAvbWFjaGluZTpTSDQgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0gzUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNIM1JlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0KSAvVzMgL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0KSAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfVVNFX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNIMyIgL2QgIl9TSDNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNIMyIgL2QgIl9TSDNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvbWFjaGluZTpTSDMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvbWFjaGluZTpTSDMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiV0NFU0gzRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV0NFU0gzRGJnIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIE91dHB1dF9EaXIgIldDRVNIM0RiZyIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPXNoY2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL1ppIC9PZCAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJERUJVRyIgL0QgIlNIeCIgL0QgIlNIMyIgL0QgIl9TSDNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19VU0VfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJTSHgiIC9kICJTSDMiIC9kICJfU0gzXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOlNIMyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRUFSTVJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTVJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VBUk1SZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFQVJNUmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbGFybS5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01DIC9XMyAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUMgL1czIC9PMiAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VBUk1EYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFQVJNRGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbGFybS5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01DIC9XMyAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUMgL1czIC9aaSAvT2QgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvcmVkbGwubGliIGNvbW1jdHJsLmxpYiAvbm9sb2dvIC9kZWJ1ZyAvbWFjaGluZTpBUk0gL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb3JlZGxsLmxpYiBjb21tY3RybC5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiV01JUFNGUFJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRlBSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV01JUFNGUFJlbCIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXTUlQU0ZQUmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbG1pcHMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9RTUZXQ0UgL01DIC9XMyAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9RTUZXQ0UgL01DIC9XMyAvTzIgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiUE5HX1VTRV9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvbWFjaGluZTpNSVBTIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldNSVBTRlBEYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXTUlQU0ZQRGJnIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIE91dHB1dF9EaXIgIldNSVBTRlBEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNGUERiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2xtaXBzLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvUU1GV0NFIC9NQyAvVzMgL1ppIC9PZCAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvUU1GV0NFIC9NQyAvVzMgL1ppIC9PZCAvSSAiLi5cLi4iIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19VU0VfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VYODZSZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFWDg2UmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01MIC9XMyAvTzIgL0QgIng4NiIgL0QgIl9pMzg2XyIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJOREVCVUciIC9EICJpXzM4Nl8iIC9EICJfTUJDUyIgL0dzODE5MiAvR0YgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NTCAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgIk5ERUJVRyIgL0QgImlfMzg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfVVNFX0RMTCIgL0dzODE5MiAvR0YgL2MKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJ4ODYiIC9kICJfaTM4Nl8iIC9kICJfeDg2XyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJ4ODYiIC9kICJfaTM4Nl8iIC9kICJfeDg2XyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvbWFjaGluZTpJWDg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvbWFjaGluZTpJWDg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVg4NkRiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NkRiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VYODZEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFWDg2RGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01MZCAvVzMgL1ppIC9PZCAvRCAieDg2IiAvRCAiX2kzODZfIiAvRCAiX3g4Nl8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIkRFQlVHIiAvRCAiaV8zODZfIiAvRCAiX01CQ1MiIC9HczgxOTIgL0dGIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUxkIC9XMyAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgIkRFQlVHIiAvRCAiaV8zODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19VU0VfRExMIiAvR3M4MTkyIC9HRiAvYwotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIng4NiIgL2QgIl9pMzg2XyIgL2QgIl94ODZfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAieDg2IiAvZCAiX2kzODZfIiAvZCAiX3g4Nl8iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6SVg4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOklYODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIng4NmVtUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1SZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAieDg2ZW1SZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1SZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUwgL1czIC9PMiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIldJTjMyIiAvRCAiU1RSSUNUIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9EICJJTlRFUk5BVElPTkFMIiAvRCAiVVNBIiAvRCAiSU5UTE1TR19DT0RFUEFHRSIgL0QgIk5ERUJVRyIgL0QgIng4NiIgL0QgImk0ODYiIC9EICJfeDg2XyIgL0QgIl9NQkNTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NTCAvVzMgL08yIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJfVU5JQ09ERSIgL0QgIldJTjMyIiAvRCAiU1RSSUNUIiAvRCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9EICJJTlRFUk5BVElPTkFMIiAvRCAiVVNBIiAvRCAiSU5UTE1TR19DT0RFUEFHRSIgL0QgIk5ERUJVRyIgL0QgIng4NiIgL0QgImk0ODYiIC9EICJfeDg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfVVNFX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJXSU4zMiIgL2QgIlNUUklDVCIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIl9XSU4zMl9XQ0VfRU1VTEFUSU9OIiAvZCAiSU5URVJOQVRJT05BTCIgL2QgIlVTQSIgL2QgIklOVExNU0dfQ09ERVBBR0UiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJXSU4zMiIgL2QgIlNUUklDVCIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIl9XSU4zMl9XQ0VfRU1VTEFUSU9OIiAvZCAiSU5URVJOQVRJT05BTCIgL2QgIlVTQSIgL2QgIklOVExNU0dfQ09ERVBBR0UiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLSMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIng4NmVtRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1EYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAieDg2ZW1EYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1EYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUxkIC9XMyAvR20gL1ppIC9PZCAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfVU5JQ09ERSIgL0QgIldJTjMyIiAvRCAiU1RSSUNUIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9EICJJTlRFUk5BVElPTkFMIiAvRCAiVVNBIiAvRCAiSU5UTE1TR19DT0RFUEFHRSIgL0QgIl9ERUJVRyIgL0QgIng4NiIgL0QgImk0ODYiIC9EICJfeDg2XyIgL0QgIl9NQkNTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NTGQgL1czIC9HbSAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJfVU5JQ09ERSIgL0QgIldJTjMyIiAvRCAiU1RSSUNUIiAvRCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9EICJJTlRFUk5BVElPTkFMIiAvRCAiVVNBIiAvRCAiSU5UTE1TR19DT0RFUEFHRSIgL0QgIl9ERUJVRyIgL0QgIng4NiIgL0QgImk0ODYiIC9EICJfeDg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJQTkdfVVNFX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJXSU4zMiIgL2QgIlNUUklDVCIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIl9XSU4zMl9XQ0VfRU1VTEFUSU9OIiAvZCAiSU5URVJOQVRJT05BTCIgL2QgIlVTQSIgL2QgIklOVExNU0dfQ09ERVBBR0UiIC9kICJfREVCVUciIC9kICJ4ODYiIC9kICJpNDg2IiAvZCAiX3g4Nl8iCi0jIEFERCBSU0MgL2wgMHg0MTEgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiX1VOSUNPREUiIC9kICJXSU4zMiIgL2QgIlNUUklDVCIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIl9XSU4zMl9XQ0VfRU1VTEFUSU9OIiAvZCAiSU5URVJOQVRJT05BTCIgL2QgIlVTQSIgL2QgIklOVExNU0dfQ09ERVBBR0UiIC9kICJfREVCVUciIC9kICJ4ODYiIC9kICJpNDg2IiAvZCAiX3g4Nl8iCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC93aW5kb3dzY2U6ZW11bGF0aW9uCi0jIEFERCBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvd2luZG93c2NlOmVtdWxhdGlvbgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiV0NFUFBDUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV0NFUFBDUmVsIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIE91dHB1dF9EaXIgIldDRVBQQ1JlbCIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXQ0VQUENSZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNscHBjLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIlBQQyIgL0QgIl9QUENfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvTzIgL0kgIi4uXC4uIiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIlBQQyIgL0QgIl9QUENfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19VU0VfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAicHBjIiAvZCAiX3BwY18iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAicHBjIiAvZCAiX3BwY18iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9tYWNoaW5lOlBQQyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9tYWNoaW5lOlBQQyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VQUENEYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VQUENEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFUFBDRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVBQQ0RiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2xwcGMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL1ppIC9PZCAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiREVCVUciIC9EICJQUEMiIC9EICJfUFBDXyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvWmkgL09kIC9JICIuLlwuLiIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJERUJVRyIgL0QgIlBQQyIgL0QgIl9QUENfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlBOR19VU0VfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAicHBjIiAvZCAiX3BwY18iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJwcGMiIC9kICJfcHBjXyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6UFBDIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RlYnVnIC9tYWNoaW5lOlBQQyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVORElGIAotCi0jIEJlZ2luIFRhcmdldAotCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotIyBOYW1lICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLSMgTmFtZSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLSMgTmFtZSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotIyBOYW1lICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotIyBOYW1lICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLSMgTmFtZSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLSMgTmFtZSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0jIE5hbWUgInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLSMgTmFtZSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotIyBOYW1lICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIgotCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlxwbmd0ZXN0LmMKLQotIUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5ccG5nLmgiXAotCSIuLlwuLlxwbmdjb25mLmgiXAotCQotTk9ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cYWxsb2MuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1BOR1RFPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlxwbmcuaCJcCi0JIi4uXC4uXHBuZ2NvbmYuaCJcCi0JCi1OT0RFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlxhbGxvYy5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfUE5HVEU9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXHBuZy5oIlwKLQkiLi5cLi5ccG5nY29uZi5oIlwKLQkKLU5PREVQX0NQUF9QTkdURT1cCi0JIi4uXC4uXGFsbG9jLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uXHdpbm1haW4uYwotCi0hSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJwbmd0ZXN0IC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInBuZ3Rlc3QgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicG5ndGVzdCAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBFbmQgR3JvdXAKLSMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKLQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgotIyBFbmQgR3JvdXAKLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgotCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKLSMgRW5kIEdyb3VwCi0jIEVuZCBUYXJnZXQKLSMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3BuZ3Rlc3QuZHN3IGIvcHJvamVjdHMvd2luY2UvcG5ndGVzdC5kc3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmY2QwZDYuLjAwMDAwMDAKLS0tIGEvcHJvamVjdHMvd2luY2UvcG5ndGVzdC5kc3cKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBXb3Jrc3BhY2UgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSEKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1Qcm9qZWN0OiAibHBuZ2NlIj0uXGxwbmdjZS5kc3AgLSBQYWNrYWdlIE93bmVyPTw0PgotCi1QYWNrYWdlPTw1Pgote3t7Ci19fX0KLQotUGFja2FnZT08ND4KLXt7ewotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQotICAgIFByb2plY3RfRGVwX05hbWUgemxpYmNlCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQotfX19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotUHJvamVjdDogInBuZ3Rlc3QiPS5ccG5ndGVzdC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0PgotCi1QYWNrYWdlPTw1Pgote3t7Ci19fX0KLQotUGFja2FnZT08ND4KLXt7ewotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQotICAgIFByb2plY3RfRGVwX05hbWUgbHBuZ2NlCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQotfX19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotUHJvamVjdDogInpsaWJjZSI9Llx6bGliY2UuZHNwIC0gUGFja2FnZSBPd25lcj08ND4KLQotUGFja2FnZT08NT4KLXt7ewotfX19Ci0KLVBhY2thZ2U9PDQ+Ci17e3sKLX19fQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLUdsb2JhbDoKLQotUGFja2FnZT08NT4KLXt7ewotfX19Ci0KLVBhY2thZ2U9PDM+Ci17e3sKLX19fQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3dpbm1haW4uYyBiL3Byb2plY3RzL3dpbmNlL3dpbm1haW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2OTBlMi4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS93aW5tYWluLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0KLS8qIHdpbm1haW4uYyAtIGEgc2ltcGxlIGVudHJ5IHBvaW50IGZvciBXaW5kb3dzQ0UKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAgVGVuaWsgQ28uLEx0ZC4KLSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHRjaGFyLmg+Ci0KLWV4dGVybiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKTsKLQotaW50IFdJTkFQSSBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdCwgSElOU1RBTkNFIGhQcmV2SW5zdCwgTFBXU1RSIGxwc3pDbWRMaW5lLCBpbnQgbkNtZFNob3cpCi17Ci0jZGVmaW5lIFNJWkVfQVJHViAgICgzMikKLQotICAgIFRDSEFSIHBhdGhbTUFYX1BBVEhdOwotICAgIExQVFNUUiBmaWxlOwotICAgIGNoYXIgcHJvZ1tNQVhfUEFUSF07Ci0gICAgaW50IGFyZ2M7Ci0gICAgY2hhciAqYXJndltTSVpFX0FSR1ZdOwotICAgIGludCBzaXplOwotICAgIGNoYXIgKmJ1ZmY7Ci0gICAgY2hhciAqYXJncDsKLSAgICBjaGFyICphcmdzOwotICAgIGNoYXIgcXVvdGU7Ci0KLSAgICAvLyBnZXQgcHJvZ3JhbSBuYW1lCi0gICAgYXJnYyA9IDA7Ci0gICAgR2V0TW9kdWxlRmlsZU5hbWUoR2V0Q3VycmVudFByb2Nlc3MoKSwgcGF0aCwgTUFYX1BBVEgpOwotICAgIGZpbGUgPSBfdGNzcmNocihwYXRoLCBURVhUKCdcXCcpKTsKLSAgICBpZiAoTlVMTCA9PSBmaWxlKSB7Ci0gICAgICAgIGZpbGUgPSBwYXRoOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZmlsZSsrOwotICAgIH0KLSAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgZmlsZSwgLTEsIHByb2csIE1BWF9QQVRILCBOVUxMLCBOVUxMKTsKLSAgICBhcmd2W2FyZ2MrK10gPSBwcm9nOwotCi0gICAgLy8gYW5hbHl6ZSBwYXJhbWV0ZXJzCi0gICAgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBscHN6Q21kTGluZSwgLTEsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOwotICAgIGJ1ZmYgPSAoY2hhciAqKW1hbGxvYyhzaXplKTsKLSAgICBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGxwc3pDbWRMaW5lLCAtMSwgYnVmZiwgc2l6ZSwgTlVMTCwgTlVMTCk7Ci0gICAgcXVvdGUgPSAweDAwOwotICAgIGFyZ3MgPSBhcmdwID0gYnVmZjsKLSAgICBpZiAoYXJncCAmJiAqYXJncCAmJiBzaXplKSB7Ci0gICAgICAgIGFyZ3ZbYXJnYysrXSA9IGFyZ3M7Ci0gICAgICAgIHdoaWxlICgqYXJncCkgewotICAgICAgICAgICAgaWYgKHF1b3RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCphcmdwID09IHF1b3RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3ArKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCphcmdwICE9IHF1b3RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IDB4MDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAqYXJncysrID0gKmFyZ3ArKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKmFyZ3MrKyA9ICphcmdwKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCphcmdwID09ICcgJykgewotICAgICAgICAgICAgICAgICAgICAqYXJncysrID0gKmFyZ3ArKyA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICgqYXJncCAmJiAqYXJncCA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ArKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoKmFyZ3AgJiYgYXJnYyA8IFNJWkVfQVJHVikgewotICAgICAgICAgICAgICAgICAgICAgICAgYXJndlthcmdjKytdID0gYXJnczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCphcmdwID09ICdcIicpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlID0gKmFyZ3ArKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICphcmdzKysgPSAqYXJncCsrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgICphcmdzID0gJ1wwJzsKLSAgICByZXR1cm4gbWFpbihhcmdjLCBhcmd2KTsKLX0KZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3psaWIuZGlmZiBiL3Byb2plY3RzL3dpbmNlL3psaWIuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZlZDI5Zi4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS96bGliLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwyMTY4ICswLDAgQEAKLWRpZmYgLWFjIHpsaWIxMTMvZGVmbGF0ZS5jIHpsaWJ3Y2UvZGVmbGF0ZS5jCi0qKiogemxpYjExMy9kZWZsYXRlLmMJRnJpIEp1bCAxMCAwMTowNjoxMiAxOTk4Ci0tLS0gemxpYndjZS9kZWZsYXRlLmMJVGh1IE1heSAyNSAxNjo0MjoxOCAyMDAwCi0qKioqKioqKioqKioqKioKLSoqKiA5MjEsOTI2ICoqKioKLS0tLSA5MjEsOTMwIC0tLS0KLSAgI2VuZGlmIC8qIEFTTVYgKi8KLSAgCi0gICNpZmRlZiBERUJVRwotKyAjaWZkZWYgX1dJTjMyX1dDRQotKyAvKiBXaW5kb3dzIENFIGlzIG5vdCBzdXBwb3J0IERFQlVHIHZlcnNpb24ncyB6bGliICovCi0rICMgIGRlZmluZSBjaGVja19tYXRjaChzLCBzdGFydCwgbWF0Y2gsIGxlbmd0aCkKLSsgI2Vsc2UKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAqIENoZWNrIHRoYXQgdGhlIG1hdGNoIGF0IG1hdGNoX3N0YXJ0IGlzIGluZGVlZCBhIG1hdGNoLgotICAgKi8KLSoqKioqKioqKioqKioqKgotKioqIDk0NCw5NDkgKioqKgotLS0tIDk0OCw5NTQgLS0tLQotICAgICAgICAgIGRvIHsgcHV0YyhzLT53aW5kb3dbc3RhcnQrK10sIHN0ZGVycik7IH0gd2hpbGUgKC0tbGVuZ3RoICE9IDApOwotICAgICAgfQotICB9Ci0rICNlbmRpZgotICAjZWxzZQotICAjICBkZWZpbmUgY2hlY2tfbWF0Y2gocywgc3RhcnQsIG1hdGNoLCBsZW5ndGgpCi0gICNlbmRpZgotZGlmZiAtYWMgemxpYjExMy90cmVlcy5jIHpsaWJ3Y2UvdHJlZXMuYwotKioqIHpsaWIxMTMvdHJlZXMuYwlUaHUgSnVsIDA5IDAxOjMyOjU4IDE5OTgKLS0tLSB6bGlid2NlL3RyZWVzLmMJVGh1IE1heSAyNSAxNjo0Mjo1MCAyMDAwCi0qKioqKioqKioqKioqKioKLSoqKiAxNjgsMTc2ICoqKioKLS0tLSAxNjgsMTgyIC0tLS0KLSAgICAgLyogU2VuZCBhIGNvZGUgb2YgdGhlIGdpdmVuIHRyZWUuIGMgYW5kIHRyZWUgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMgKi8KLSAgCi0gICNlbHNlIC8qIERFQlVHICovCi0rICNpZmRlZiBfV0lOMzJfV0NFCi0rIC8qIFdpbmRvd3MgQ0UgaXMgbm90IHN1cHBvcnQgREVCVUcgdmVyc2lvbidzIHpsaWIgKi8KLSsgIyAgZGVmaW5lIHNlbmRfY29kZShzLCBjLCB0cmVlKSBzZW5kX2JpdHMocywgdHJlZVtjXS5Db2RlLCB0cmVlW2NdLkxlbikKLSsgCi0rICNlbHNlCi0gICMgIGRlZmluZSBzZW5kX2NvZGUocywgYywgdHJlZSkgXAotICAgICAgIHsgaWYgKHpfdmVyYm9zZT4yKSBmcHJpbnRmKHN0ZGVyciwiXG5jZCAlM2QgIiwoYykpOyBcCi0gICAgICAgICBzZW5kX2JpdHMocywgdHJlZVtjXS5Db2RlLCB0cmVlW2NdLkxlbik7IH0KLSsgI2VuZGlmCi0gICNlbmRpZgotICAKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1kaWZmIC1hYyB6bGliMTEzL3pjb25mLmggemxpYndjZS96Y29uZi5oCi0qKiogemxpYjExMy96Y29uZi5oCVRodSBKdWwgMDkgMDI6NTU6MjggMTk5OAotLS0tIHpsaWJ3Y2UvemNvbmYuaAlUaHUgTWF5IDI1IDE2OjM2OjE2IDIwMDAKLSoqKioqKioqKioqKioqKgotKioqIDk2LDEwMSAqKioqCi0tLS0gOTYsMTA2IC0tLS0KLSAgIyAgZGVmaW5lIE5FRURfRFVNTVlfUkVUVVJOCi0gICNlbmRpZgotICAKLSsgLyogV2luZG93cyBDRSBpcyBub3QgaGF2ZSBlcnJuby5oIGZpbGU6ICovCi0rICNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rICMgIGRlZmluZSBOT19FUlJOT19ICi0rICNlbmRpZgotKyAKLSAgCi0gIC8qIE1heGltdW0gdmFsdWUgZm9yIG1lbUxldmVsIGluIGRlZmxhdGVJbml0MiAqLwotICAjaWZuZGVmIE1BWF9NRU1fTEVWRUwKLSoqKioqKioqKioqKioqKgotKioqIDE2MiwxNjggKioqKgotICAKLSAgLyogQ29tcGlsZSB3aXRoIC1EWkxJQl9ETEwgZm9yIFdpbmRvd3MgRExMIHN1cHBvcnQgKi8KLSAgI2lmIGRlZmluZWQoWkxJQl9ETEwpCi0hICMgIGlmIGRlZmluZWQoX1dJTkRPV1MpIHx8IGRlZmluZWQoV0lORE9XUykKLSAgIyAgICBpZmRlZiBGQVIKLSAgIyAgICAgIHVuZGVmIEZBUgotICAjICAgIGVuZGlmCi0tLS0gMTY3LDE3MyAtLS0tCi0gIAotICAvKiBDb21waWxlIHdpdGggLURaTElCX0RMTCBmb3IgV2luZG93cyBETEwgc3VwcG9ydCAqLwotICAjaWYgZGVmaW5lZChaTElCX0RMTCkKLSEgIyAgaWYgZGVmaW5lZChfV0lORE9XUykgfHwgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0gICMgICAgaWZkZWYgRkFSCi0gICMgICAgICB1bmRlZiBGQVIKLSAgIyAgICBlbmRpZgotZGlmZiAtYWMgemxpYjExMy96dXRpbC5jIHpsaWJ3Y2UvenV0aWwuYwotKioqIHpsaWIxMTMvenV0aWwuYwlUaHUgSnVsIDA5IDAyOjAxOjQ4IDE5OTgKLS0tLSB6bGlid2NlL3p1dGlsLmMJVGh1IE1heSAyNSAxNjo0MzozNCAyMDAwCi0qKioqKioqKioqKioqKioKLSoqKiAzMiwzNyAqKioqCi0tLS0gMzIsNDAgLS0tLQotICB9Ci0gIAotICAjaWZkZWYgREVCVUcKLSsgI2lmZGVmIF9XSU4zMl9XQ0UKLSsgLyogV2luZG93cyBDRSBpcyBub3Qgc3VwcG9ydCBERUJVRyB2ZXJzaW9uJ3MgemxpYiAqLwotKyAjZWxzZQotICAKLSAgIyAgaWZuZGVmIHZlcmJvc2UKLSAgIyAgICBkZWZpbmUgdmVyYm9zZSAwCi0qKioqKioqKioqKioqKioKLSoqKiA0NSw1MCAqKioqCi0tLS0gNDgsNTQgLS0tLQotICAgICAgZXhpdCgxKTsKLSAgfQotICAjZW5kaWYKLSsgI2VuZGlmCi0gIAotICAvKiBleHBvcnRlZCB0byBhbGxvdyBjb252ZXJzaW9uIG9mIGVycm9yIGNvZGUgdG8gc3RyaW5nIGZvciBjb21wcmVzcygpIGFuZAotICAgKiB1bmNvbXByZXNzKCkKLSoqKioqKioqKioqKioqKgotKioqIDIxMSwyMTcgKioqKgotLS0tIDIxNSwyMjUgLS0tLQotICAgICAgdW5zaWduZWQgc2l6ZTsKLSAgewotICAgICAgaWYgKG9wYXF1ZSkgaXRlbXMgKz0gc2l6ZSAtIHNpemU7IC8qIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KLSsgI2lmZGVmIF9XSU4zMl9XQ0UKLSsgICAgIHJldHVybiAodm9pZHBmKW1hbGxvYyhpdGVtcyAqIHNpemUpOwotKyAjZWxzZQotICAgICAgcmV0dXJuICh2b2lkcGYpY2FsbG9jKGl0ZW1zLCBzaXplKTsKLSsgI2VuZGlmCi0gIH0KLSAgCi0gIHZvaWQgIHpjZnJlZSAob3BhcXVlLCBwdHIpCi1kaWZmIC1hYyB6bGliMTEzL3p1dGlsLmggemxpYndjZS96dXRpbC5oCi0qKiogemxpYjExMy96dXRpbC5oCVRodSBKdWwgMDkgMDI6MDE6NDggMTk5OAotLS0tIHpsaWJ3Y2UvenV0aWwuaAlUaHUgTWF5IDI1IDE2OjQxOjQ0IDIwMDAKLSoqKioqKioqKioqKioqKgotKioqIDE2LDIyICoqKioKLS0tLSAxNiwyNiAtLS0tCi0gICNpbmNsdWRlICJ6bGliLmgiCi0gIAotICAjaWZkZWYgU1REQwotKyAjaWZkZWYgX1dJTjMyX1dDRQotKyAjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsgI2Vsc2UKLSAgIyAgaW5jbHVkZSA8c3RkZGVmLmg+Ci0rICNlbmRpZgotICAjICBpbmNsdWRlIDxzdHJpbmcuaD4KLSAgIyAgaW5jbHVkZSA8c3RkbGliLmg+Ci0gICNlbmRpZgotKioqKioqKioqKioqKioqCi0qKiogMTg4LDE5MyAqKioqCi0tLS0gMTkyLDIwNiAtLS0tCi0gIAotICAvKiBEaWFnbm9zdGljIGZ1bmN0aW9ucyAqLwotICAjaWZkZWYgREVCVUcKLSsgI2lmZGVmIF9XSU4zMl9XQ0UKLSsgLyogV2luZG93cyBDRSBpcyBub3Qgc3VwcG9ydCBERUJVRyB2ZXJzaW9uJ3MgemxpYiAqLwotKyAjICBkZWZpbmUgQXNzZXJ0KGNvbmQsbXNnKQotKyAjICBkZWZpbmUgVHJhY2UoeCkKLSsgIyAgZGVmaW5lIFRyYWNldih4KQotKyAjICBkZWZpbmUgVHJhY2V2dih4KQotKyAjICBkZWZpbmUgVHJhY2VjKGMseCkKLSsgIyAgZGVmaW5lIFRyYWNlY3YoYyx4KQotKyAjZWxzZQotICAjICBpbmNsdWRlIDxzdGRpby5oPgotICAgICBleHRlcm4gaW50IHpfdmVyYm9zZTsKLSAgICAgZXh0ZXJuIHZvaWQgel9lcnJvciAgICBPRigoY2hhciAqbSkpOwotKioqKioqKioqKioqKioqCi0qKiogMTk3LDIwMiAqKioqCi0tLS0gMjEwLDIxNiAtLS0tCi0gICMgIGRlZmluZSBUcmFjZXZ2KHgpIHtpZiAoel92ZXJib3NlPjEpIGZwcmludGYgeCA7fQotICAjICBkZWZpbmUgVHJhY2VjKGMseCkge2lmICh6X3ZlcmJvc2U+MCAmJiAoYykpIGZwcmludGYgeCA7fQotICAjICBkZWZpbmUgVHJhY2VjdihjLHgpIHtpZiAoel92ZXJib3NlPjEgJiYgKGMpKSBmcHJpbnRmIHggO30KLSsgI2VuZGlmCi0gICNlbHNlCi0gICMgIGRlZmluZSBBc3NlcnQoY29uZCxtc2cpCi0gICMgIGRlZmluZSBUcmFjZSh4KQotKioqIHpsaWIxMTMvZ3ppby5jCVNhdCBKdWwgIDggMTM6NTk6NDkgMjAwMAotLS0tIHpsaWJ3Y2UvZ3ppby5jCVNhdCBKdWwgIDggMTM6NTg6MjkgMjAwMAotKioqKioqKioqKioqKioqCi0qKiogMSw1ICoqKioKLSEgLyogZ3ppby5jIC0tIElPIG9uIC5neiBmaWxlcwotICAgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBKZWFuLWxvdXAgR2FpbGx5LgotICAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCi0gICAqCi0gICAqIENvbXBpbGUgdGhpcyBmaWxlIHdpdGggLUROT19ERUZMQVRFIHRvIGF2b2lkIHRoZSBjb21wcmVzc2lvbiBjb2RlLgotLS0tIDEsNiAtLS0tCi0hIC8qIGd6aW8uYyAtLSBJTyBvbiAuZ3ogZmlsZXMgZm9yIFdpbmRvd3NDRQotICAgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBKZWFuLWxvdXAgR2FpbGx5LgotKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgICAgICBUZW5payBDby4sTHRkLgotICAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCi0gICAqCi0gICAqIENvbXBpbGUgdGhpcyBmaWxlIHdpdGggLUROT19ERUZMQVRFIHRvIGF2b2lkIHRoZSBjb21wcmVzc2lvbiBjb2RlLgotKioqKioqKioqKioqKioqCi0qKiogNywxMyAqKioqCi0gIAotICAvKiBAKCMpICRJZCQgKi8KLSAgCi0hICNpbmNsdWRlIDxzdGRpby5oPgotICAKLSAgI2luY2x1ZGUgInp1dGlsLmgiCi0gIAotLS0tIDgsMTQgLS0tLQotICAKLSAgLyogQCgjKSAkSWQkICovCi0gIAotISAjaW5jbHVkZSA8d2luZG93cy5oPgotICAKLSAgI2luY2x1ZGUgInp1dGlsLmgiCi0gIAotKioqKioqKioqKioqKioqCi0qKiogNDEsNDcgKioqKgotICAgICAgel9zdHJlYW0gc3RyZWFtOwotICAgICAgaW50ICAgICAgel9lcnI7ICAgLyogZXJyb3IgY29kZSBmb3IgbGFzdCBzdHJlYW0gb3BlcmF0aW9uICovCi0gICAgICBpbnQgICAgICB6X2VvZjsgICAvKiBzZXQgaWYgZW5kIG9mIGlucHV0IGZpbGUgKi8KLSEgICAgIEZJTEUgICAgICpmaWxlOyAgIC8qIC5neiBmaWxlICovCi0gICAgICBCeXRlICAgICAqaW5idWY7ICAvKiBpbnB1dCBidWZmZXIgKi8KLSAgICAgIEJ5dGUgICAgICpvdXRidWY7IC8qIG91dHB1dCBidWZmZXIgKi8KLSAgICAgIHVMb25nICAgIGNyYzsgICAgIC8qIGNyYzMyIG9mIHVuY29tcHJlc3NlZCBkYXRhICovCi0tLS0gNDIsNDggLS0tLQotICAgICAgel9zdHJlYW0gc3RyZWFtOwotICAgICAgaW50ICAgICAgel9lcnI7ICAgLyogZXJyb3IgY29kZSBmb3IgbGFzdCBzdHJlYW0gb3BlcmF0aW9uICovCi0gICAgICBpbnQgICAgICB6X2VvZjsgICAvKiBzZXQgaWYgZW5kIG9mIGlucHV0IGZpbGUgKi8KLSEgICAgIEhBTkRMRSAgIGZpbGU7ICAgIC8qIC5neiBmaWxlICovCi0gICAgICBCeXRlICAgICAqaW5idWY7ICAvKiBpbnB1dCBidWZmZXIgKi8KLSAgICAgIEJ5dGUgICAgICpvdXRidWY7IC8qIG91dHB1dCBidWZmZXIgKi8KLSAgICAgIHVMb25nICAgIGNyYzsgICAgIC8qIGNyYzMyIG9mIHVuY29tcHJlc3NlZCBkYXRhICovCi0qKioqKioqKioqKioqKioKLSoqKiA1OCw2NCAqKioqCi0gIGxvY2FsIGludCAgICBnZXRfYnl0ZSAgICAgT0YoKGd6X3N0cmVhbSAqcykpOwotICBsb2NhbCB2b2lkICAgY2hlY2tfaGVhZGVyIE9GKChnel9zdHJlYW0gKnMpKTsKLSAgbG9jYWwgaW50ICAgIGRlc3Ryb3kgICAgICBPRigoZ3pfc3RyZWFtICpzKSk7Ci0hIGxvY2FsIHZvaWQgICBwdXRMb25nICAgICAgT0YoKEZJTEUgKmZpbGUsIHVMb25nIHgpKTsKLSAgbG9jYWwgdUxvbmcgIGdldExvbmcgICAgICBPRigoZ3pfc3RyZWFtICpzKSk7Ci0gIAotICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSA1OSw2NSAtLS0tCi0gIGxvY2FsIGludCAgICBnZXRfYnl0ZSAgICAgT0YoKGd6X3N0cmVhbSAqcykpOwotICBsb2NhbCB2b2lkICAgY2hlY2tfaGVhZGVyIE9GKChnel9zdHJlYW0gKnMpKTsKLSAgbG9jYWwgaW50ICAgIGRlc3Ryb3kgICAgICBPRigoZ3pfc3RyZWFtICpzKSk7Ci0hIGxvY2FsIHZvaWQgICBwdXRMb25nICAgICAgT0YoKEhBTkRMRSBmaWxlLCB1TG9uZyB4KSk7Ci0gIGxvY2FsIHVMb25nICBnZXRMb25nICAgICAgT0YoKGd6X3N0cmVhbSAqcykpOwotICAKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qKioqKioqKioqKioqKioKLSoqKiA4Miw4NyAqKioqCi0tLS0gODMsOTEgLS0tLQotICAgICAgZ3pfc3RyZWFtICpzOwotICAgICAgY2hhciBmbW9kZVs4MF07IC8qIGNvcHkgb2YgbW9kZSwgd2l0aG91dCB0aGUgY29tcHJlc3Npb24gbGV2ZWwgKi8KLSAgICAgIGNoYXIgKm0gPSBmbW9kZTsKLSsgICAgIGNoYXIgY2J1ZmZbMTBdOwotKyAgICAgRFdPUkQgc2l6ZTsKLSsgICAgIFRDSEFSIGZpbGVbTUFYX1BBVEhdOwotICAKLSAgICAgIGlmICghcGF0aCB8fCAhbW9kZSkgcmV0dXJuIFpfTlVMTDsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA5NCwxMDAgKioqKgotICAgICAgcy0+c3RyZWFtLm5leHRfaW4gPSBzLT5pbmJ1ZiA9IFpfTlVMTDsKLSAgICAgIHMtPnN0cmVhbS5uZXh0X291dCA9IHMtPm91dGJ1ZiA9IFpfTlVMTDsKLSAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbiA9IHMtPnN0cmVhbS5hdmFpbF9vdXQgPSAwOwotISAgICAgcy0+ZmlsZSA9IE5VTEw7Ci0gICAgICBzLT56X2VyciA9IFpfT0s7Ci0gICAgICBzLT56X2VvZiA9IDA7Ci0gICAgICBzLT5jcmMgPSBjcmMzMigwTCwgWl9OVUxMLCAwKTsKLS0tLSA5OCwxMDQgLS0tLQotICAgICAgcy0+c3RyZWFtLm5leHRfaW4gPSBzLT5pbmJ1ZiA9IFpfTlVMTDsKLSAgICAgIHMtPnN0cmVhbS5uZXh0X291dCA9IHMtPm91dGJ1ZiA9IFpfTlVMTDsKLSAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbiA9IHMtPnN0cmVhbS5hdmFpbF9vdXQgPSAwOwotISAgICAgcy0+ZmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgcy0+el9lcnIgPSBaX09LOwotICAgICAgcy0+el9lb2YgPSAwOwotICAgICAgcy0+Y3JjID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7Ci0qKioqKioqKioqKioqKioKLSoqKiAxMTIsMTI1ICoqKioKLSAgICAgICAgICBpZiAoKnAgPT0gJ3InKSBzLT5tb2RlID0gJ3InOwotICAgICAgICAgIGlmICgqcCA9PSAndycgfHwgKnAgPT0gJ2EnKSBzLT5tb2RlID0gJ3cnOwotICAgICAgICAgIGlmICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSB7Ci0hIAkgICAgbGV2ZWwgPSAqcCAtICcwJzsKLSEgCX0gZWxzZSBpZiAoKnAgPT0gJ2YnKSB7Ci0hIAkgIHN0cmF0ZWd5ID0gWl9GSUxURVJFRDsKLSEgCX0gZWxzZSBpZiAoKnAgPT0gJ2gnKSB7Ci0hIAkgIHN0cmF0ZWd5ID0gWl9IVUZGTUFOX09OTFk7Ci0hIAl9IGVsc2UgewotISAJICAgICptKysgPSAqcDsgLyogY29weSB0aGUgbW9kZSAqLwotISAJfQotICAgICAgfSB3aGlsZSAoKnArKyAmJiBtICE9IGZtb2RlICsgc2l6ZW9mKGZtb2RlKSk7Ci0gICAgICBpZiAocy0+bW9kZSA9PSAnXDAnKSByZXR1cm4gZGVzdHJveShzKSwgKGd6RmlsZSlaX05VTEw7Ci0gICAgICAKLS0tLSAxMTYsMTI5IC0tLS0KLSAgICAgICAgICBpZiAoKnAgPT0gJ3InKSBzLT5tb2RlID0gJ3InOwotICAgICAgICAgIGlmICgqcCA9PSAndycgfHwgKnAgPT0gJ2EnKSBzLT5tb2RlID0gJ3cnOwotICAgICAgICAgIGlmICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSB7Ci0hICAgICAgICAgICAgIGxldmVsID0gKnAgLSAnMCc7Ci0hICAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnZicpIHsKLSEgICAgICAgICAgIHN0cmF0ZWd5ID0gWl9GSUxURVJFRDsKLSEgICAgICAgICB9IGVsc2UgaWYgKCpwID09ICdoJykgewotISAgICAgICAgICAgc3RyYXRlZ3kgPSBaX0hVRkZNQU5fT05MWTsKLSEgICAgICAgICB9IGVsc2UgewotISAgICAgICAgICAgICAqbSsrID0gKnA7IC8qIGNvcHkgdGhlIG1vZGUgKi8KLSEgICAgICAgICB9Ci0gICAgICB9IHdoaWxlICgqcCsrICYmIG0gIT0gZm1vZGUgKyBzaXplb2YoZm1vZGUpKTsKLSAgICAgIGlmIChzLT5tb2RlID09ICdcMCcpIHJldHVybiBkZXN0cm95KHMpLCAoZ3pGaWxlKVpfTlVMTDsKLSAgICAgIAotKioqKioqKioqKioqKioqCi0qKiogMTUyLDE3NyAqKioqCi0gICAgICB9Ci0gICAgICBzLT5zdHJlYW0uYXZhaWxfb3V0ID0gWl9CVUZTSVpFOwotICAKLSEgICAgIGVycm5vID0gMDsKLSEgICAgIHMtPmZpbGUgPSBmZCA8IDAgPyBGX09QRU4ocGF0aCwgZm1vZGUpIDogKEZJTEUqKWZkb3BlbihmZCwgZm1vZGUpOwotICAKLSEgICAgIGlmIChzLT5maWxlID09IE5VTEwpIHsKLSAgICAgICAgICByZXR1cm4gZGVzdHJveShzKSwgKGd6RmlsZSlaX05VTEw7Ci0gICAgICB9Ci0gICAgICBpZiAocy0+bW9kZSA9PSAndycpIHsKLSAgICAgICAgICAvKiBXcml0ZSBhIHZlcnkgc2ltcGxlIC5neiBoZWFkZXI6Ci0gICAgICAgICAgICovCi0hICAgICAgICAgZnByaW50ZihzLT5maWxlLCAiJWMlYyVjJWMlYyVjJWMlYyVjJWMiLCBnel9tYWdpY1swXSwgZ3pfbWFnaWNbMV0sCi0hICAgICAgICAgICAgICBaX0RFRkxBVEVELCAwIC8qZmxhZ3MqLywgMCwwLDAsMCAvKnRpbWUqLywgMCAvKnhmbGFncyovLCBPU19DT0RFKTsKLSEgCXMtPnN0YXJ0cG9zID0gMTBMOwotISAJLyogV2UgdXNlIDEwTCBpbnN0ZWFkIG9mIGZ0ZWxsKHMtPmZpbGUpIHRvIGJlY2F1c2UgZnRlbGwgY2F1c2VzIGFuCi0gICAgICAgICAgICogZmZsdXNoIG9uIHNvbWUgc3lzdGVtcy4gVGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGRvZXNuJ3QgdXNlCi0gICAgICAgICAgICogc3RhcnRwb3MgYW55d2F5IGluIHdyaXRlIG1vZGUsIHNvIHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgbm90Ci0gICAgICAgICAgICogbmVjZXNzYXJ5LgotICAgICAgICAgICAqLwotICAgICAgfSBlbHNlIHsKLSEgCWNoZWNrX2hlYWRlcihzKTsgLyogc2tpcCB0aGUgLmd6IGhlYWRlciAqLwotISAJcy0+c3RhcnRwb3MgPSAoZnRlbGwocy0+ZmlsZSkgLSBzLT5zdHJlYW0uYXZhaWxfaW4pOwotICAgICAgfQotICAgICAgCi0gICAgICByZXR1cm4gKGd6RmlsZSlzOwotLS0tIDE1NiwxOTUgLS0tLQotICAgICAgfQotICAgICAgcy0+c3RyZWFtLmF2YWlsX291dCA9IFpfQlVGU0laRTsKLSAgCi0hICAgICBTZXRMYXN0RXJyb3IoTk9fRVJST1IpOwotISAgICAgaWYgKChIQU5ETEUpZmQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSEgICAgICAgICBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgMCwgcGF0aCwgLTEsIGZpbGUsIE1BWF9QQVRIKTsKLSEgICAgICAgICBzLT5maWxlID0gQ3JlYXRlRmlsZShmaWxlLCBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSwgMCwgTlVMTCwgT1BFTl9BTFdBWVMsIDAsIE5VTEwpOwotISAgICAgfSBlbHNlIHsKLSEgICAgICAgICBzLT5maWxlID0gKEhBTkRMRSlmZDsKLSEgICAgIH0KLSAgCi0hICAgICBpZiAocy0+ZmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgIHJldHVybiBkZXN0cm95KHMpLCAoZ3pGaWxlKVpfTlVMTDsKLSAgICAgIH0KLSAgICAgIGlmIChzLT5tb2RlID09ICd3JykgewotICAgICAgICAgIC8qIFdyaXRlIGEgdmVyeSBzaW1wbGUgLmd6IGhlYWRlcjoKLSAgICAgICAgICAgKi8KLSEgICAgICAgICBjYnVmZlswXSA9IGd6X21hZ2ljWzBdOwotISAgICAgICAgIGNidWZmWzFdID0gZ3pfbWFnaWNbMV07Ci0hICAgICAgICAgY2J1ZmZbMl0gPSBaX0RFRkxBVEVEOwotISAgICAgICAgIGNidWZmWzNdID0gMDsgLypmbGFncyovCi0hICAgICAgICAgY2J1ZmZbNF0gPSAwOwotISAgICAgICAgIGNidWZmWzVdID0gMDsKLSEgICAgICAgICBjYnVmZls2XSA9IDA7Ci0hICAgICAgICAgY2J1ZmZbN10gPSAwOyAvKnRpbWUqLzsKLSEgICAgICAgICBjYnVmZls4XSA9IDA7IC8qeGZsYWdzKi87Ci0hICAgICAgICAgY2J1ZmZbOV0gPSBPU19DT0RFOwotISAgICAgICAgIFdyaXRlRmlsZShzLT5maWxlLCBjYnVmZiwgMTAsICZzaXplLCBOVUxMKTsKLSEgICAgICAgICBzLT5zdGFydHBvcyA9IDEwTDsKLSEgICAgICAgICAvKiBXZSB1c2UgMTBMIGluc3RlYWQgb2YgZnRlbGwocy0+ZmlsZSkgdG8gYmVjYXVzZSBmdGVsbCBjYXVzZXMgYW4KLSAgICAgICAgICAgKiBmZmx1c2ggb24gc29tZSBzeXN0ZW1zLiBUaGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgZG9lc24ndCB1c2UKLSAgICAgICAgICAgKiBzdGFydHBvcyBhbnl3YXkgaW4gd3JpdGUgbW9kZSwgc28gdGhpcyBpbml0aWFsaXphdGlvbiBpcyBub3QKLSAgICAgICAgICAgKiBuZWNlc3NhcnkuCi0gICAgICAgICAgICovCi0gICAgICB9IGVsc2UgewotISAgICAgICAgIGNoZWNrX2hlYWRlcihzKTsgLyogc2tpcCB0aGUgLmd6IGhlYWRlciAqLwotISAgICAgICAgIHMtPnN0YXJ0cG9zID0gKFNldEZpbGVQb2ludGVyKHMtPmZpbGUsIDAsIE5VTEwsIEZJTEVfQ1VSUkVOVCkgLSBzLT5zdHJlYW0uYXZhaWxfaW4pOwotICAgICAgfQotICAgICAgCi0gICAgICByZXR1cm4gKGd6RmlsZSlzOwotKioqKioqKioqKioqKioqCi0qKiogMTk3LDIwNSAqKioqCi0gIHsKLSAgICAgIGNoYXIgbmFtZVsyMF07Ci0gIAotISAgICAgaWYgKGZkIDwgMCkgcmV0dXJuIChnekZpbGUpWl9OVUxMOwotISAgICAgc3ByaW50ZihuYW1lLCAiPGZkOiVkPiIsIGZkKTsgLyogZm9yIGRlYnVnZ2luZyAqLwotICAKLSAgICAgIHJldHVybiBnel9vcGVuIChuYW1lLCBtb2RlLCBmZCk7Ci0gIH0KLSAgCi0tLS0gMjE1LDIyNSAtLS0tCi0gIHsKLSAgICAgIGNoYXIgbmFtZVsyMF07Ci0gIAotISAgICAgaWYgKChIQU5ETEUpZmQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0hICAgICAgICAgcmV0dXJuIChnekZpbGUpWl9OVUxMOwotICAKLSsgICAgIHN0cmNweShuYW1lLCAiPGd6ZG9wZW4+Iik7IC8qIGZvciBkZWJ1Z2dpbmcgKi8KLSsgCi0gICAgICByZXR1cm4gZ3pfb3BlbiAobmFtZSwgbW9kZSwgZmQpOwotICB9Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMjEyLDIxNyAqKioqCi0tLS0gMjMyLDIzOCAtLS0tCi0gICAgICBpbnQgc3RyYXRlZ3k7Ci0gIHsKLSAgICAgIGd6X3N0cmVhbSAqcyA9IChnel9zdHJlYW0qKWZpbGU7Ci0rICAgICBEV09SRCBzaXplOwotICAKLSAgICAgIGlmIChzID09IE5VTEwgfHwgcy0+bW9kZSAhPSAndycpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiAyMTgsMjI4ICoqKioKLSAgICAgIC8qIE1ha2Ugcm9vbSB0byBhbGxvdyBmbHVzaGluZyAqLwotICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgewotICAKLSEgCXMtPnN0cmVhbS5uZXh0X291dCA9IHMtPm91dGJ1ZjsKLSEgCWlmIChmd3JpdGUocy0+b3V0YnVmLCAxLCBaX0JVRlNJWkUsIHMtPmZpbGUpICE9IFpfQlVGU0laRSkgewotISAJICAgIHMtPnpfZXJyID0gWl9FUlJOTzsKLSEgCX0KLSEgCXMtPnN0cmVhbS5hdmFpbF9vdXQgPSBaX0JVRlNJWkU7Ci0gICAgICB9Ci0gIAotICAgICAgcmV0dXJuIGRlZmxhdGVQYXJhbXMgKCYocy0+c3RyZWFtKSwgbGV2ZWwsIHN0cmF0ZWd5KTsKLS0tLSAyMzksMjQ5IC0tLS0KLSAgICAgIC8qIE1ha2Ugcm9vbSB0byBhbGxvdyBmbHVzaGluZyAqLwotICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgewotICAKLSEgICAgICAgICBzLT5zdHJlYW0ubmV4dF9vdXQgPSBzLT5vdXRidWY7Ci0hICAgICAgICAgaWYgKCFXcml0ZUZpbGUocy0+ZmlsZSwgcy0+b3V0YnVmLCBaX0JVRlNJWkUsICZzaXplLCBOVUxMKSB8fCBzaXplICE9IFpfQlVGU0laRSkgewotISAgICAgICAgICAgICBzLT56X2VyciA9IFpfRVJSTk87Ci0hICAgICAgICAgfQotISAgICAgICAgIHMtPnN0cmVhbS5hdmFpbF9vdXQgPSBaX0JVRlNJWkU7Ci0gICAgICB9Ci0gIAotICAgICAgcmV0dXJuIGRlZmxhdGVQYXJhbXMgKCYocy0+c3RyZWFtKSwgbGV2ZWwsIHN0cmF0ZWd5KTsKLSoqKioqKioqKioqKioqKgotKioqIDIzNiwyNTEgKioqKgotICBsb2NhbCBpbnQgZ2V0X2J5dGUocykKLSAgICAgIGd6X3N0cmVhbSAqczsKLSAgewotISAgICAgaWYgKHMtPnpfZW9mKSByZXR1cm4gRU9GOwotICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9pbiA9PSAwKSB7Ci0hIAllcnJubyA9IDA7Ci0hIAlzLT5zdHJlYW0uYXZhaWxfaW4gPSBmcmVhZChzLT5pbmJ1ZiwgMSwgWl9CVUZTSVpFLCBzLT5maWxlKTsKLSEgCWlmIChzLT5zdHJlYW0uYXZhaWxfaW4gPT0gMCkgewotISAJICAgIHMtPnpfZW9mID0gMTsKLSEgCSAgICBpZiAoZmVycm9yKHMtPmZpbGUpKSBzLT56X2VyciA9IFpfRVJSTk87Ci0hIAkgICAgcmV0dXJuIEVPRjsKLSEgCX0KLSEgCXMtPnN0cmVhbS5uZXh0X2luID0gcy0+aW5idWY7Ci0gICAgICB9Ci0gICAgICBzLT5zdHJlYW0uYXZhaWxfaW4tLTsKLSAgICAgIHJldHVybiAqKHMtPnN0cmVhbS5uZXh0X2luKSsrOwotLS0tIDI1NywyNzMgLS0tLQotICBsb2NhbCBpbnQgZ2V0X2J5dGUocykKLSAgICAgIGd6X3N0cmVhbSAqczsKLSAgewotISAgICAgaWYgKHMtPnpfZW9mKSByZXR1cm4gLTE7Ci0gICAgICBpZiAocy0+c3RyZWFtLmF2YWlsX2luID09IDApIHsKLSEgICAgICAgICBTZXRMYXN0RXJyb3IoTk9fRVJST1IpOwotISAgICAgICAgIGlmICghUmVhZEZpbGUocy0+ZmlsZSwgcy0+aW5idWYsIFpfQlVGU0laRSwgJnMtPnN0cmVhbS5hdmFpbF9pbiwgTlVMTCkpIHsKLSEgICAgICAgICAgICAgcy0+el9lcnIgPSBaX0VSUk5POwotISAgICAgICAgIH0KLSEgICAgICAgICBpZiAocy0+c3RyZWFtLmF2YWlsX2luID09IDApIHsKLSEgICAgICAgICAgICAgcy0+el9lb2YgPSAxOwotISAgICAgICAgICAgICByZXR1cm4gLTE7Ci0hICAgICAgICAgfQotISAgICAgICAgIHMtPnN0cmVhbS5uZXh0X2luID0gcy0+aW5idWY7Ci0gICAgICB9Ci0gICAgICBzLT5zdHJlYW0uYXZhaWxfaW4tLTsKLSAgICAgIHJldHVybiAqKHMtPnN0cmVhbS5uZXh0X2luKSsrOwotKioqKioqKioqKioqKioqCi0qKiogMjcwLDI5MSAqKioqCi0gIAotICAgICAgLyogQ2hlY2sgdGhlIGd6aXAgbWFnaWMgaGVhZGVyICovCi0gICAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IDI7IGxlbisrKSB7Ci0hIAljID0gZ2V0X2J5dGUocyk7Ci0hIAlpZiAoYyAhPSBnel9tYWdpY1tsZW5dKSB7Ci0hIAkgICAgaWYgKGxlbiAhPSAwKSBzLT5zdHJlYW0uYXZhaWxfaW4rKywgcy0+c3RyZWFtLm5leHRfaW4tLTsKLSEgCSAgICBpZiAoYyAhPSBFT0YpIHsKLSEgCQlzLT5zdHJlYW0uYXZhaWxfaW4rKywgcy0+c3RyZWFtLm5leHRfaW4tLTsKLSEgCQlzLT50cmFuc3BhcmVudCA9IDE7Ci0hIAkgICAgfQotISAJICAgIHMtPnpfZXJyID0gcy0+c3RyZWFtLmF2YWlsX2luICE9IDAgPyBaX09LIDogWl9TVFJFQU1fRU5EOwotISAJICAgIHJldHVybjsKLSEgCX0KLSAgICAgIH0KLSAgICAgIG1ldGhvZCA9IGdldF9ieXRlKHMpOwotICAgICAgZmxhZ3MgPSBnZXRfYnl0ZShzKTsKLSAgICAgIGlmIChtZXRob2QgIT0gWl9ERUZMQVRFRCB8fCAoZmxhZ3MgJiBSRVNFUlZFRCkgIT0gMCkgewotISAJcy0+el9lcnIgPSBaX0RBVEFfRVJST1I7Ci0hIAlyZXR1cm47Ci0gICAgICB9Ci0gIAotICAgICAgLyogRGlzY2FyZCB0aW1lLCB4ZmxhZ3MgYW5kIE9TIGNvZGU6ICovCi0tLS0gMjkyLDMxMyAtLS0tCi0gIAotICAgICAgLyogQ2hlY2sgdGhlIGd6aXAgbWFnaWMgaGVhZGVyICovCi0gICAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IDI7IGxlbisrKSB7Ci0hICAgICAgICAgYyA9IGdldF9ieXRlKHMpOwotISAgICAgICAgIGlmIChjICE9IGd6X21hZ2ljW2xlbl0pIHsKLSEgICAgICAgICAgICAgaWYgKGxlbiAhPSAwKSBzLT5zdHJlYW0uYXZhaWxfaW4rKywgcy0+c3RyZWFtLm5leHRfaW4tLTsKLSEgICAgICAgICAgICAgaWYgKGMgIT0gLTEpIHsKLSEgICAgICAgICAgICAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbisrLCBzLT5zdHJlYW0ubmV4dF9pbi0tOwotISAgICAgICAgICAgICAgICAgcy0+dHJhbnNwYXJlbnQgPSAxOwotISAgICAgICAgICAgICB9Ci0hICAgICAgICAgICAgIHMtPnpfZXJyID0gcy0+c3RyZWFtLmF2YWlsX2luICE9IDAgPyBaX09LIDogWl9TVFJFQU1fRU5EOwotISAgICAgICAgICAgICByZXR1cm47Ci0hICAgICAgICAgfQotICAgICAgfQotICAgICAgbWV0aG9kID0gZ2V0X2J5dGUocyk7Ci0gICAgICBmbGFncyA9IGdldF9ieXRlKHMpOwotICAgICAgaWYgKG1ldGhvZCAhPSBaX0RFRkxBVEVEIHx8IChmbGFncyAmIFJFU0VSVkVEKSAhPSAwKSB7Ci0hICAgICAgICAgcy0+el9lcnIgPSBaX0RBVEFfRVJST1I7Ci0hICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAKLSAgICAgIC8qIERpc2NhcmQgdGltZSwgeGZsYWdzIGFuZCBPUyBjb2RlOiAqLwotKioqKioqKioqKioqKioqCi0qKiogMjkyLDMxMCAqKioqCi0gICAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IDY7IGxlbisrKSAodm9pZClnZXRfYnl0ZShzKTsKLSAgCi0gICAgICBpZiAoKGZsYWdzICYgRVhUUkFfRklFTEQpICE9IDApIHsgLyogc2tpcCB0aGUgZXh0cmEgZmllbGQgKi8KLSEgCWxlbiAgPSAgKHVJbnQpZ2V0X2J5dGUocyk7Ci0hIAlsZW4gKz0gKCh1SW50KWdldF9ieXRlKHMpKTw8ODsKLSEgCS8qIGxlbiBpcyBnYXJiYWdlIGlmIEVPRiBidXQgdGhlIGxvb3AgYmVsb3cgd2lsbCBxdWl0IGFueXdheSAqLwotISAJd2hpbGUgKGxlbi0tICE9IDAgJiYgZ2V0X2J5dGUocykgIT0gRU9GKSA7Ci0gICAgICB9Ci0gICAgICBpZiAoKGZsYWdzICYgT1JJR19OQU1FKSAhPSAwKSB7IC8qIHNraXAgdGhlIG9yaWdpbmFsIGZpbGUgbmFtZSAqLwotISAJd2hpbGUgKChjID0gZ2V0X2J5dGUocykpICE9IDAgJiYgYyAhPSBFT0YpIDsKLSAgICAgIH0KLSAgICAgIGlmICgoZmxhZ3MgJiBDT01NRU5UKSAhPSAwKSB7ICAgLyogc2tpcCB0aGUgLmd6IGZpbGUgY29tbWVudCAqLwotISAJd2hpbGUgKChjID0gZ2V0X2J5dGUocykpICE9IDAgJiYgYyAhPSBFT0YpIDsKLSAgICAgIH0KLSAgICAgIGlmICgoZmxhZ3MgJiBIRUFEX0NSQykgIT0gMCkgeyAgLyogc2tpcCB0aGUgaGVhZGVyIGNyYyAqLwotISAJZm9yIChsZW4gPSAwOyBsZW4gPCAyOyBsZW4rKykgKHZvaWQpZ2V0X2J5dGUocyk7Ci0gICAgICB9Ci0gICAgICBzLT56X2VyciA9IHMtPnpfZW9mID8gWl9EQVRBX0VSUk9SIDogWl9PSzsKLSAgfQotLS0tIDMxNCwzMzIgLS0tLQotICAgICAgZm9yIChsZW4gPSAwOyBsZW4gPCA2OyBsZW4rKykgKHZvaWQpZ2V0X2J5dGUocyk7Ci0gIAotICAgICAgaWYgKChmbGFncyAmIEVYVFJBX0ZJRUxEKSAhPSAwKSB7IC8qIHNraXAgdGhlIGV4dHJhIGZpZWxkICovCi0hICAgICAgICAgbGVuICA9ICAodUludClnZXRfYnl0ZShzKTsKLSEgICAgICAgICBsZW4gKz0gKCh1SW50KWdldF9ieXRlKHMpKTw8ODsKLSEgICAgICAgICAvKiBsZW4gaXMgZ2FyYmFnZSBpZiBFT0YgYnV0IHRoZSBsb29wIGJlbG93IHdpbGwgcXVpdCBhbnl3YXkgKi8KLSEgICAgICAgICB3aGlsZSAobGVuLS0gIT0gMCAmJiBnZXRfYnl0ZShzKSAhPSAtMSkgOwotICAgICAgfQotICAgICAgaWYgKChmbGFncyAmIE9SSUdfTkFNRSkgIT0gMCkgeyAvKiBza2lwIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgKi8KLSEgICAgICAgICB3aGlsZSAoKGMgPSBnZXRfYnl0ZShzKSkgIT0gMCAmJiBjICE9IC0xKSA7Ci0gICAgICB9Ci0gICAgICBpZiAoKGZsYWdzICYgQ09NTUVOVCkgIT0gMCkgeyAgIC8qIHNraXAgdGhlIC5neiBmaWxlIGNvbW1lbnQgKi8KLSEgICAgICAgICB3aGlsZSAoKGMgPSBnZXRfYnl0ZShzKSkgIT0gMCAmJiBjICE9IC0xKSA7Ci0gICAgICB9Ci0gICAgICBpZiAoKGZsYWdzICYgSEVBRF9DUkMpICE9IDApIHsgIC8qIHNraXAgdGhlIGhlYWRlciBjcmMgKi8KLSEgICAgICAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IDI7IGxlbisrKSAodm9pZClnZXRfYnl0ZShzKTsKLSAgICAgIH0KLSAgICAgIHMtPnpfZXJyID0gcy0+el9lb2YgPyBaX0RBVEFfRVJST1IgOiBaX09LOwotICB9Ci0qKioqKioqKioqKioqKioKLSoqKiAzMjMsMzQzICoqKioKLSAgICAgIFRSWUZSRUUocy0+bXNnKTsKLSAgCi0gICAgICBpZiAocy0+c3RyZWFtLnN0YXRlICE9IE5VTEwpIHsKLSEgCWlmIChzLT5tb2RlID09ICd3JykgewotICAjaWZkZWYgTk9fREVGTEFURQotISAJICAgIGVyciA9IFpfU1RSRUFNX0VSUk9SOwotICAjZWxzZQotISAJICAgIGVyciA9IGRlZmxhdGVFbmQoJihzLT5zdHJlYW0pKTsKLSAgI2VuZGlmCi0hIAl9IGVsc2UgaWYgKHMtPm1vZGUgPT0gJ3InKSB7Ci0hIAkgICAgZXJyID0gaW5mbGF0ZUVuZCgmKHMtPnN0cmVhbSkpOwotISAJfQotISAgICAgfQotISAgICAgaWYgKHMtPmZpbGUgIT0gTlVMTCAmJiBmY2xvc2Uocy0+ZmlsZSkpIHsKLSEgI2lmZGVmIEVTUElQRQotISAJaWYgKGVycm5vICE9IEVTUElQRSkgLyogZmNsb3NlIGlzIGJyb2tlbiBmb3IgcGlwZXMgaW4gSFAvVVggKi8KLSEgI2VuZGlmCi0hIAkgICAgZXJyID0gWl9FUlJOTzsKLSAgICAgIH0KLSAgICAgIGlmIChzLT56X2VyciA8IDApIGVyciA9IHMtPnpfZXJyOwotICAKLS0tLSAzNDUsMzYyIC0tLS0KLSAgICAgIFRSWUZSRUUocy0+bXNnKTsKLSAgCi0gICAgICBpZiAocy0+c3RyZWFtLnN0YXRlICE9IE5VTEwpIHsKLSEgICAgICAgICBpZiAocy0+bW9kZSA9PSAndycpIHsKLSAgI2lmZGVmIE5PX0RFRkxBVEUKLSEgICAgICAgICAgICAgZXJyID0gWl9TVFJFQU1fRVJST1I7Ci0gICNlbHNlCi0hICAgICAgICAgICAgIGVyciA9IGRlZmxhdGVFbmQoJihzLT5zdHJlYW0pKTsKLSAgI2VuZGlmCi0hICAgICAgICAgfSBlbHNlIGlmIChzLT5tb2RlID09ICdyJykgewotISAgICAgICAgICAgICBlcnIgPSBpbmZsYXRlRW5kKCYocy0+c3RyZWFtKSk7Ci0hICAgICAgICAgfQotISAgICAgfQotISAgICAgaWYgKHMtPmZpbGUgIT0gTlVMTCAmJiAhQ2xvc2VIYW5kbGUocy0+ZmlsZSkpIHsKLSEgICAgICAgICBlcnIgPSBaX0VSUk5POwotICAgICAgfQotICAgICAgaWYgKHMtPnpfZXJyIDwgMCkgZXJyID0gcy0+el9lcnI7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMzYwLDM2NSAqKioqCi0tLS0gMzc5LDM4NSAtLS0tCi0gICAgICBnel9zdHJlYW0gKnMgPSAoZ3pfc3RyZWFtKilmaWxlOwotICAgICAgQnl0ZWYgKnN0YXJ0ID0gKEJ5dGVmKilidWY7IC8qIHN0YXJ0aW5nIHBvaW50IGZvciBjcmMgY29tcHV0YXRpb24gKi8KLSAgICAgIEJ5dGUgICpuZXh0X291dDsgLyogPT0gc3RyZWFtLm5leHRfb3V0IGJ1dCBub3QgZm9yY2VkIGZhciAoZm9yIE1TRE9TKSAqLwotKyAgICAgRFdPUkQgc2l6ZTsKLSAgCi0gICAgICBpZiAocyA9PSBOVUxMIHx8IHMtPm1vZGUgIT0gJ3InKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMzcyLDQ0MCAqKioqCi0gIAotICAgICAgd2hpbGUgKHMtPnN0cmVhbS5hdmFpbF9vdXQgIT0gMCkgewotICAKLSEgCWlmIChzLT50cmFuc3BhcmVudCkgewotISAJICAgIC8qIENvcHkgZmlyc3QgdGhlIGxvb2thaGVhZCBieXRlczogKi8KLSEgCSAgICB1SW50IG4gPSBzLT5zdHJlYW0uYXZhaWxfaW47Ci0hIAkgICAgaWYgKG4gPiBzLT5zdHJlYW0uYXZhaWxfb3V0KSBuID0gcy0+c3RyZWFtLmF2YWlsX291dDsKLSEgCSAgICBpZiAobiA+IDApIHsKLSEgCQl6bWVtY3B5KHMtPnN0cmVhbS5uZXh0X291dCwgcy0+c3RyZWFtLm5leHRfaW4sIG4pOwotISAJCW5leHRfb3V0ICs9IG47Ci0hIAkJcy0+c3RyZWFtLm5leHRfb3V0ID0gbmV4dF9vdXQ7Ci0hIAkJcy0+c3RyZWFtLm5leHRfaW4gICArPSBuOwotISAJCXMtPnN0cmVhbS5hdmFpbF9vdXQgLT0gbjsKLSEgCQlzLT5zdHJlYW0uYXZhaWxfaW4gIC09IG47Ci0hIAkgICAgfQotISAJICAgIGlmIChzLT5zdHJlYW0uYXZhaWxfb3V0ID4gMCkgewotISAJCXMtPnN0cmVhbS5hdmFpbF9vdXQgLT0gZnJlYWQobmV4dF9vdXQsIDEsIHMtPnN0cmVhbS5hdmFpbF9vdXQsCi0hIAkJCQkJICAgICBzLT5maWxlKTsKLSEgCSAgICB9Ci0hIAkgICAgbGVuIC09IHMtPnN0cmVhbS5hdmFpbF9vdXQ7Ci0hIAkgICAgcy0+c3RyZWFtLnRvdGFsX2luICArPSAodUxvbmcpbGVuOwotISAJICAgIHMtPnN0cmVhbS50b3RhbF9vdXQgKz0gKHVMb25nKWxlbjsKLSAgICAgICAgICAgICAgaWYgKGxlbiA9PSAwKSBzLT56X2VvZiA9IDE7Ci0hIAkgICAgcmV0dXJuIChpbnQpbGVuOwotISAJfQotICAgICAgICAgIGlmIChzLT5zdHJlYW0uYXZhaWxfaW4gPT0gMCAmJiAhcy0+el9lb2YpIHsKLSAgCi0hICAgICAgICAgICAgIGVycm5vID0gMDsKLSEgICAgICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX2luID0gZnJlYWQocy0+aW5idWYsIDEsIFpfQlVGU0laRSwgcy0+ZmlsZSk7Ci0gICAgICAgICAgICAgIGlmIChzLT5zdHJlYW0uYXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgICAgICAgcy0+el9lb2YgPSAxOwotLSAJCWlmIChmZXJyb3Iocy0+ZmlsZSkpIHsKLS0gCQkgICAgcy0+el9lcnIgPSBaX0VSUk5POwotLSAJCSAgICBicmVhazsKLS0gCQl9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcy0+c3RyZWFtLm5leHRfaW4gPSBzLT5pbmJ1ZjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcy0+el9lcnIgPSBpbmZsYXRlKCYocy0+c3RyZWFtKSwgWl9OT19GTFVTSCk7Ci0gIAotISAJaWYgKHMtPnpfZXJyID09IFpfU1RSRUFNX0VORCkgewotISAJICAgIC8qIENoZWNrIENSQyBhbmQgb3JpZ2luYWwgc2l6ZSAqLwotISAJICAgIHMtPmNyYyA9IGNyYzMyKHMtPmNyYywgc3RhcnQsICh1SW50KShzLT5zdHJlYW0ubmV4dF9vdXQgLSBzdGFydCkpOwotISAJICAgIHN0YXJ0ID0gcy0+c3RyZWFtLm5leHRfb3V0OwotISAKLSEgCSAgICBpZiAoZ2V0TG9uZyhzKSAhPSBzLT5jcmMpIHsKLSEgCQlzLT56X2VyciA9IFpfREFUQV9FUlJPUjsKLSEgCSAgICB9IGVsc2UgewotISAJICAgICAgICAodm9pZClnZXRMb25nKHMpOwotICAgICAgICAgICAgICAgICAgLyogVGhlIHVuY29tcHJlc3NlZCBsZW5ndGggcmV0dXJuZWQgYnkgYWJvdmUgZ2V0bG9uZygpIG1heQotICAgICAgICAgICAgICAgICAgICogYmUgZGlmZmVyZW50IGZyb20gcy0+c3RyZWFtLnRvdGFsX291dCkgaW4gY2FzZSBvZgotISAJCSAqIGNvbmNhdGVuYXRlZCAuZ3ogZmlsZXMuIENoZWNrIGZvciBzdWNoIGZpbGVzOgotISAJCSAqLwotISAJCWNoZWNrX2hlYWRlcihzKTsKLSEgCQlpZiAocy0+el9lcnIgPT0gWl9PSykgewotISAJCSAgICB1TG9uZyB0b3RhbF9pbiA9IHMtPnN0cmVhbS50b3RhbF9pbjsKLSEgCQkgICAgdUxvbmcgdG90YWxfb3V0ID0gcy0+c3RyZWFtLnRvdGFsX291dDsKLSEgCi0hIAkJICAgIGluZmxhdGVSZXNldCgmKHMtPnN0cmVhbSkpOwotISAJCSAgICBzLT5zdHJlYW0udG90YWxfaW4gPSB0b3RhbF9pbjsKLSEgCQkgICAgcy0+c3RyZWFtLnRvdGFsX291dCA9IHRvdGFsX291dDsKLSEgCQkgICAgcy0+Y3JjID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7Ci0hIAkJfQotISAJICAgIH0KLSEgCX0KLSEgCWlmIChzLT56X2VyciAhPSBaX09LIHx8IHMtPnpfZW9mKSBicmVhazsKLSAgICAgIH0KLSAgICAgIHMtPmNyYyA9IGNyYzMyKHMtPmNyYywgc3RhcnQsICh1SW50KShzLT5zdHJlYW0ubmV4dF9vdXQgLSBzdGFydCkpOwotICAKLS0tLSAzOTIsNDYxIC0tLS0KLSAgCi0gICAgICB3aGlsZSAocy0+c3RyZWFtLmF2YWlsX291dCAhPSAwKSB7Ci0gIAotISAgICAgICAgIGlmIChzLT50cmFuc3BhcmVudCkgewotISAgICAgICAgICAgICAvKiBDb3B5IGZpcnN0IHRoZSBsb29rYWhlYWQgYnl0ZXM6ICovCi0hICAgICAgICAgICAgIHVJbnQgbiA9IHMtPnN0cmVhbS5hdmFpbF9pbjsKLSEgICAgICAgICAgICAgaWYgKG4gPiBzLT5zdHJlYW0uYXZhaWxfb3V0KSBuID0gcy0+c3RyZWFtLmF2YWlsX291dDsKLSEgICAgICAgICAgICAgaWYgKG4gPiAwKSB7Ci0hICAgICAgICAgICAgICAgICB6bWVtY3B5KHMtPnN0cmVhbS5uZXh0X291dCwgcy0+c3RyZWFtLm5leHRfaW4sIG4pOwotISAgICAgICAgICAgICAgICAgbmV4dF9vdXQgKz0gbjsKLSEgICAgICAgICAgICAgICAgIHMtPnN0cmVhbS5uZXh0X291dCA9IG5leHRfb3V0OwotISAgICAgICAgICAgICAgICAgcy0+c3RyZWFtLm5leHRfaW4gICArPSBuOwotISAgICAgICAgICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX291dCAtPSBuOwotISAgICAgICAgICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX2luICAtPSBuOwotISAgICAgICAgICAgICB9Ci0hICAgICAgICAgICAgIGlmIChzLT5zdHJlYW0uYXZhaWxfb3V0ID4gMCkgewotISAgICAgICAgICAgICAgICAgaWYgKFJlYWRGaWxlKHMtPmZpbGUsIG5leHRfb3V0LCBzLT5zdHJlYW0uYXZhaWxfb3V0LCAmc2l6ZSwgTlVMTCkpIHsKLSEgICAgICAgICAgICAgICAgICAgICBzLT5zdHJlYW0uYXZhaWxfb3V0IC09IHNpemU7Ci0hICAgICAgICAgICAgICAgICB9Ci0hICAgICAgICAgICAgIH0KLSEgICAgICAgICAgICAgbGVuIC09IHMtPnN0cmVhbS5hdmFpbF9vdXQ7Ci0hICAgICAgICAgICAgIHMtPnN0cmVhbS50b3RhbF9pbiAgKz0gKHVMb25nKWxlbjsKLSEgICAgICAgICAgICAgcy0+c3RyZWFtLnRvdGFsX291dCArPSAodUxvbmcpbGVuOwotICAgICAgICAgICAgICBpZiAobGVuID09IDApIHMtPnpfZW9mID0gMTsKLSEgICAgICAgICAgICAgcmV0dXJuIChpbnQpbGVuOwotISAgICAgICAgIH0KLSAgICAgICAgICBpZiAocy0+c3RyZWFtLmF2YWlsX2luID09IDAgJiYgIXMtPnpfZW9mKSB7Ci0gIAotISAgICAgICAgICAgICBTZXRMYXN0RXJyb3IoTk9fRVJST1IpOwotISAgICAgICAgICAgICBpZiAoIVJlYWRGaWxlKHMtPmZpbGUsIHMtPmluYnVmLCBaX0JVRlNJWkUsICZzLT5zdHJlYW0uYXZhaWxfaW4sIE5VTEwpKSB7Ci0hICAgICAgICAgICAgICAgICBzLT56X2VvZiA9IDE7Ci0hICAgICAgICAgICAgICAgICBzLT56X2VyciA9IFpfRVJSTk87Ci0hICAgICAgICAgICAgICAgICBicmVhazsKLSEgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAocy0+c3RyZWFtLmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgICAgICAgIHMtPnpfZW9mID0gMTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwotICAgICAgICAgIH0KLSAgICAgICAgICBzLT56X2VyciA9IGluZmxhdGUoJihzLT5zdHJlYW0pLCBaX05PX0ZMVVNIKTsKLSAgCi0hICAgICAgICAgaWYgKHMtPnpfZXJyID09IFpfU1RSRUFNX0VORCkgewotISAgICAgICAgICAgICAvKiBDaGVjayBDUkMgYW5kIG9yaWdpbmFsIHNpemUgKi8KLSEgICAgICAgICAgICAgcy0+Y3JjID0gY3JjMzIocy0+Y3JjLCBzdGFydCwgKHVJbnQpKHMtPnN0cmVhbS5uZXh0X291dCAtIHN0YXJ0KSk7Ci0hICAgICAgICAgICAgIHN0YXJ0ID0gcy0+c3RyZWFtLm5leHRfb3V0OwotISAKLSEgICAgICAgICAgICAgaWYgKGdldExvbmcocykgIT0gcy0+Y3JjKSB7Ci0hICAgICAgICAgICAgICAgICBzLT56X2VyciA9IFpfREFUQV9FUlJPUjsKLSEgICAgICAgICAgICAgfSBlbHNlIHsKLSEgICAgICAgICAgICAgICAgICh2b2lkKWdldExvbmcocyk7Ci0gICAgICAgICAgICAgICAgICAvKiBUaGUgdW5jb21wcmVzc2VkIGxlbmd0aCByZXR1cm5lZCBieSBhYm92ZSBnZXRsb25nKCkgbWF5Ci0gICAgICAgICAgICAgICAgICAgKiBiZSBkaWZmZXJlbnQgZnJvbSBzLT5zdHJlYW0udG90YWxfb3V0KSBpbiBjYXNlIG9mCi0hICAgICAgICAgICAgICAgICAgKiBjb25jYXRlbmF0ZWQgLmd6IGZpbGVzLiBDaGVjayBmb3Igc3VjaCBmaWxlczoKLSEgICAgICAgICAgICAgICAgICAqLwotISAgICAgICAgICAgICAgICAgY2hlY2tfaGVhZGVyKHMpOwotISAgICAgICAgICAgICAgICAgaWYgKHMtPnpfZXJyID09IFpfT0spIHsKLSEgICAgICAgICAgICAgICAgICAgICB1TG9uZyB0b3RhbF9pbiA9IHMtPnN0cmVhbS50b3RhbF9pbjsKLSEgICAgICAgICAgICAgICAgICAgICB1TG9uZyB0b3RhbF9vdXQgPSBzLT5zdHJlYW0udG90YWxfb3V0OwotISAKLSEgICAgICAgICAgICAgICAgICAgICBpbmZsYXRlUmVzZXQoJihzLT5zdHJlYW0pKTsKLSEgICAgICAgICAgICAgICAgICAgICBzLT5zdHJlYW0udG90YWxfaW4gPSB0b3RhbF9pbjsKLSEgICAgICAgICAgICAgICAgICAgICBzLT5zdHJlYW0udG90YWxfb3V0ID0gdG90YWxfb3V0OwotISAgICAgICAgICAgICAgICAgICAgIHMtPmNyYyA9IGNyYzMyKDBMLCBaX05VTEwsIDApOwotISAgICAgICAgICAgICAgICAgfQotISAgICAgICAgICAgICB9Ci0hICAgICAgICAgfQotISAgICAgICAgIGlmIChzLT56X2VyciAhPSBaX09LIHx8IHMtPnpfZW9mKSBicmVhazsKLSAgICAgIH0KLSAgICAgIHMtPmNyYyA9IGNyYzMyKHMtPmNyYywgc3RhcnQsICh1SW50KShzLT5zdHJlYW0ubmV4dF9vdXQgLSBzdGFydCkpOwotICAKLSoqKioqKioqKioqKioqKgotKioqIDQ4OSw0OTQgKioqKgotLS0tIDUxMCw1MTYgLS0tLQotICAgICAgdW5zaWduZWQgbGVuOwotICB7Ci0gICAgICBnel9zdHJlYW0gKnMgPSAoZ3pfc3RyZWFtKilmaWxlOwotKyAgICAgRFdPUkQgc2l6ZTsKLSAgCi0gICAgICBpZiAocyA9PSBOVUxMIHx8IHMtPm1vZGUgIT0gJ3cnKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNTAwLDUwNiAqKioqCi0gICAgICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgewotICAKLSAgICAgICAgICAgICAgcy0+c3RyZWFtLm5leHRfb3V0ID0gcy0+b3V0YnVmOwotISAgICAgICAgICAgICBpZiAoZndyaXRlKHMtPm91dGJ1ZiwgMSwgWl9CVUZTSVpFLCBzLT5maWxlKSAhPSBaX0JVRlNJWkUpIHsKLSAgICAgICAgICAgICAgICAgIHMtPnpfZXJyID0gWl9FUlJOTzsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0tLS0gNTIyLDUyOCAtLS0tCi0gICAgICAgICAgaWYgKHMtPnN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgewotICAKLSAgICAgICAgICAgICAgcy0+c3RyZWFtLm5leHRfb3V0ID0gcy0+b3V0YnVmOwotISAgICAgICAgICAgICBpZiAoIVdyaXRlRmlsZShzLT5maWxlLCBzLT5vdXRidWYsIFpfQlVGU0laRSwgJnNpemUsIE5VTEwpIHx8IHNpemUgIT0gWl9CVUZTSVpFKSB7Ci0gICAgICAgICAgICAgICAgICBzLT56X2VyciA9IFpfRVJSTk87Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogNTI3LDU0MCAqKioqCi0gICAgICBjaGFyIGJ1ZltaX1BSSU5URl9CVUZTSVpFXTsKLSAgICAgIHZhX2xpc3QgdmE7Ci0gICAgICBpbnQgbGVuOwotICAKLSAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotISAjaWZkZWYgSEFTX3ZzbnByaW50ZgotISAgICAgKHZvaWQpdnNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZvcm1hdCwgdmEpOwotISAjZWxzZQotISAgICAgKHZvaWQpdnNwcmludGYoYnVmLCBmb3JtYXQsIHZhKTsKLSEgI2VuZGlmCi0gICAgICB2YV9lbmQodmEpOwotICAgICAgbGVuID0gc3RybGVuKGJ1Zik7IC8qIHNvbWUgKnNwcmludGYgZG9uJ3QgcmV0dXJuIHRoZSBuYiBvZiBieXRlcyB3cml0dGVuICovCi0gICAgICBpZiAobGVuIDw9IDApIHJldHVybiAwOwotICAKLS0tLSA1NDksNTc0IC0tLS0KLSAgICAgIGNoYXIgYnVmW1pfUFJJTlRGX0JVRlNJWkVdOwotICAgICAgdmFfbGlzdCB2YTsKLSAgICAgIGludCBsZW47Ci0rICAgICBUQ0hBUiBmb3JtW1pfUFJJTlRGX0JVRlNJWkVdOwotKyAgICAgVENIQVIgdGJ1ZltaX1BSSU5URl9CVUZTSVpFXTsKLSsgICAgIGludCBuOwotICAKLSAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotISAgICAgTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIGZvcm1hdCwgLTEsIGZvcm0sIFpfUFJJTlRGX0JVRlNJWkUpOwotISAgICAgbGVuID0gbHN0cmxlbihmb3JtKTsKLSEgICAgIGZvciAoIG4gPSAwOyBuIDwgbGVuOyBuKysgKSB7Ci0hICAgICAgICAgaWYgKCBURVhUKCclJykgPT0gZm9ybVtuXSApIHsKLSEgICAgICAgICAgICAgbisrOwotISAgICAgICAgICAgICBpZiAoIFRFWFQoJ2MnKSA9PSBmb3JtW25dICkgewotISAgICAgICAgICAgICAgICAgZm9ybVtuXSA9IFRFWFQoJ0MnKTsKLSEgICAgICAgICAgICAgfSBlbHNlIGlmICggVEVYVCgncycpID09IGZvcm1bbl0gKSB7Ci0hICAgICAgICAgICAgICAgICBmb3JtW25dID0gVEVYVCgnUycpOwotISAgICAgICAgICAgICB9Ci0hICAgICAgICAgfQotISAgICAgfQotISAgICAgKHZvaWQpdnN3cHJpbnRmKHRidWYsIGZvcm0sIHZhKTsKLSAgICAgIHZhX2VuZCh2YSk7Ci0rICAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgdGJ1ZiwgLTEsIGJ1ZiwgWl9QUklOVEZfQlVGU0laRSwgTlVMTCwgTlVMTCk7Ci0gICAgICBsZW4gPSBzdHJsZW4oYnVmKTsgLyogc29tZSAqc3ByaW50ZiBkb24ndCByZXR1cm4gdGhlIG5iIG9mIGJ5dGVzIHdyaXR0ZW4gKi8KLSAgICAgIGlmIChsZW4gPD0gMCkgcmV0dXJuIDA7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNTQzLDU1MyAqKioqCi0gICNlbHNlIC8qIG5vdCBBTlNJIEMgKi8KLSAgCi0gIGludCBaRVhQT1JUVkEgZ3pwcmludGYgKGZpbGUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLAotISAJICAgICAgICAgICAgICAgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwKQotICAgICAgZ3pGaWxlIGZpbGU7Ci0gICAgICBjb25zdCBjaGFyICpmb3JtYXQ7Ci0gICAgICBpbnQgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLAotISAJYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwOwotICB7Ci0gICAgICBjaGFyIGJ1ZltaX1BSSU5URl9CVUZTSVpFXTsKLSAgICAgIGludCBsZW47Ci0tLS0gNTc3LDU4NyAtLS0tCi0gICNlbHNlIC8qIG5vdCBBTlNJIEMgKi8KLSAgCi0gIGludCBaRVhQT1JUVkEgZ3pwcmludGYgKGZpbGUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLAotISAgICAgICAgICAgICAgICAgICAgICAgIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCkKLSAgICAgIGd6RmlsZSBmaWxlOwotICAgICAgY29uc3QgY2hhciAqZm9ybWF0OwotICAgICAgaW50IGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwKLSEgICAgICAgICBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2LCBhMTcsIGExOCwgYTE5LCBhMjA7Ci0gIHsKLSAgICAgIGNoYXIgYnVmW1pfUFJJTlRGX0JVRlNJWkVdOwotICAgICAgaW50IGxlbjsKLSoqKioqKioqKioqKioqKgotKioqIDU1NCw1NjMgKioqKgotICAKLSAgI2lmZGVmIEhBU19zbnByaW50ZgotICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCi0hIAkgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7Ci0gICNlbHNlCi0gICAgICBzcHJpbnRmKGJ1ZiwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCi0hIAkgICAgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwKTsKLSAgI2VuZGlmCi0gICAgICBsZW4gPSBzdHJsZW4oYnVmKTsgLyogb2xkIHNwcmludGYgZG9lc24ndCByZXR1cm4gdGhlIG5iIG9mIGJ5dGVzIHdyaXR0ZW4gKi8KLSAgICAgIGlmIChsZW4gPD0gMCkgcmV0dXJuIDA7Ci0tLS0gNTg4LDU5NyAtLS0tCi0gIAotICAjaWZkZWYgSEFTX3NucHJpbnRmCi0gICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBmb3JtYXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwKLSEgICAgICAgICAgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7Ci0gICNlbHNlCi0gICAgICBzcHJpbnRmKGJ1ZiwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCi0hICAgICAgICAgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7Ci0gICNlbmRpZgotICAgICAgbGVuID0gc3RybGVuKGJ1Zik7IC8qIG9sZCBzcHJpbnRmIGRvZXNuJ3QgcmV0dXJuIHRoZSBuYiBvZiBieXRlcyB3cml0dGVuICovCi0gICAgICBpZiAobGVuIDw9IDApIHJldHVybiAwOwotKioqKioqKioqKioqKioqCi0qKiogNjA0LDYwOSAqKioqCi0tLS0gNjM4LDY0NCAtLS0tCi0gICAgICB1SW50IGxlbjsKLSAgICAgIGludCBkb25lID0gMDsKLSAgICAgIGd6X3N0cmVhbSAqcyA9IChnel9zdHJlYW0qKWZpbGU7Ci0rICAgICBEV09SRCBzaXplOwotICAKLSAgICAgIGlmIChzID09IE5VTEwgfHwgcy0+bW9kZSAhPSAndycpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA2MTMsNjE5ICoqKioKLSAgICAgICAgICBsZW4gPSBaX0JVRlNJWkUgLSBzLT5zdHJlYW0uYXZhaWxfb3V0OwotICAKLSAgICAgICAgICBpZiAobGVuICE9IDApIHsKLSEgICAgICAgICAgICAgaWYgKCh1SW50KWZ3cml0ZShzLT5vdXRidWYsIDEsIGxlbiwgcy0+ZmlsZSkgIT0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgICBzLT56X2VyciA9IFpfRVJSTk87Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gWl9FUlJOTzsKLSAgICAgICAgICAgICAgfQotLS0tIDY0OCw2NTQgLS0tLQotICAgICAgICAgIGxlbiA9IFpfQlVGU0laRSAtIHMtPnN0cmVhbS5hdmFpbF9vdXQ7Ci0gIAotICAgICAgICAgIGlmIChsZW4gIT0gMCkgewotISAgICAgICAgICAgICBpZiAoIVdyaXRlRmlsZShzLT5maWxlLCBzLT5vdXRidWYsIGxlbiwgJnNpemUsIE5VTEwpIHx8ICh1SW50KXNpemUgIT0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgICBzLT56X2VyciA9IFpfRVJSTk87Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gWl9FUlJOTzsKLSAgICAgICAgICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogNjIzLDYzMCAqKioqCi0gICAgICAgICAgaWYgKGRvbmUpIGJyZWFrOwotICAgICAgICAgIHMtPnpfZXJyID0gZGVmbGF0ZSgmKHMtPnN0cmVhbSksIGZsdXNoKTsKLSAgCi0hIAkvKiBJZ25vcmUgdGhlIHNlY29uZCBvZiB0d28gY29uc2VjdXRpdmUgZmx1c2hlczogKi8KLSEgCWlmIChsZW4gPT0gMCAmJiBzLT56X2VyciA9PSBaX0JVRl9FUlJPUikgcy0+el9lcnIgPSBaX09LOwotICAKLSAgICAgICAgICAvKiBkZWZsYXRlIGhhcyBmaW5pc2hlZCBmbHVzaGluZyBvbmx5IHdoZW4gaXQgaGFzbid0IHVzZWQgdXAKLSAgICAgICAgICAgKiBhbGwgdGhlIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlcjogCi0tLS0gNjU4LDY2NSAtLS0tCi0gICAgICAgICAgaWYgKGRvbmUpIGJyZWFrOwotICAgICAgICAgIHMtPnpfZXJyID0gZGVmbGF0ZSgmKHMtPnN0cmVhbSksIGZsdXNoKTsKLSAgCi0hICAgICAgICAgLyogSWdub3JlIHRoZSBzZWNvbmQgb2YgdHdvIGNvbnNlY3V0aXZlIGZsdXNoZXM6ICovCi0hICAgICAgICAgaWYgKGxlbiA9PSAwICYmIHMtPnpfZXJyID09IFpfQlVGX0VSUk9SKSBzLT56X2VyciA9IFpfT0s7Ci0gIAotICAgICAgICAgIC8qIGRlZmxhdGUgaGFzIGZpbmlzaGVkIGZsdXNoaW5nIG9ubHkgd2hlbiBpdCBoYXNuJ3QgdXNlZCB1cAotICAgICAgICAgICAqIGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBvdXRwdXQgYnVmZmVyOiAKLSoqKioqKioqKioqKioqKgotKioqIDY0NCw2NTAgKioqKgotICAgICAgaW50IGVyciA9IGRvX2ZsdXNoIChmaWxlLCBmbHVzaCk7Ci0gIAotICAgICAgaWYgKGVycikgcmV0dXJuIGVycjsKLSEgICAgIGZmbHVzaChzLT5maWxlKTsKLSAgICAgIHJldHVybiAgcy0+el9lcnIgPT0gWl9TVFJFQU1fRU5EID8gWl9PSyA6IHMtPnpfZXJyOwotICB9Ci0gICNlbmRpZiAvKiBOT19ERUZMQVRFICovCi0tLS0gNjc5LDY4NSAtLS0tCi0gICAgICBpbnQgZXJyID0gZG9fZmx1c2ggKGZpbGUsIGZsdXNoKTsKLSAgCi0gICAgICBpZiAoZXJyKSByZXR1cm4gZXJyOwotISAKLSAgICAgIHJldHVybiAgcy0+el9lcnIgPT0gWl9TVFJFQU1fRU5EID8gWl9PSyA6IHMtPnpfZXJyOwotICB9Ci0gICNlbmRpZiAvKiBOT19ERUZMQVRFICovCi0qKioqKioqKioqKioqKioKLSoqKiA2NjUsNjk4ICoqKioKLSAgICAgIGd6X3N0cmVhbSAqcyA9IChnel9zdHJlYW0qKWZpbGU7Ci0gIAotICAgICAgaWYgKHMgPT0gTlVMTCB8fCB3aGVuY2UgPT0gU0VFS19FTkQgfHwKLSEgCXMtPnpfZXJyID09IFpfRVJSTk8gfHwgcy0+el9lcnIgPT0gWl9EQVRBX0VSUk9SKSB7Ci0hIAlyZXR1cm4gLTFMOwotICAgICAgfQotICAgICAgCi0gICAgICBpZiAocy0+bW9kZSA9PSAndycpIHsKLSAgI2lmZGVmIE5PX0RFRkxBVEUKLSEgCXJldHVybiAtMUw7Ci0gICNlbHNlCi0hIAlpZiAod2hlbmNlID09IFNFRUtfU0VUKSB7Ci0hIAkgICAgb2Zmc2V0IC09IHMtPnN0cmVhbS50b3RhbF9pbjsKLSEgCX0KLSEgCWlmIChvZmZzZXQgPCAwKSByZXR1cm4gLTFMOwotISAKLSEgCS8qIEF0IHRoaXMgcG9pbnQsIG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIHplcm8gYnl0ZXMgdG8gd3JpdGUuICovCi0hIAlpZiAocy0+aW5idWYgPT0gWl9OVUxMKSB7Ci0hIAkgICAgcy0+aW5idWYgPSAoQnl0ZSopQUxMT0MoWl9CVUZTSVpFKTsgLyogZm9yIHNlZWtpbmcgKi8KLSEgCSAgICB6bWVtemVybyhzLT5pbmJ1ZiwgWl9CVUZTSVpFKTsKLSEgCX0KLSEgCXdoaWxlIChvZmZzZXQgPiAwKSAgewotISAJICAgIHVJbnQgc2l6ZSA9IFpfQlVGU0laRTsKLSEgCSAgICBpZiAob2Zmc2V0IDwgWl9CVUZTSVpFKSBzaXplID0gKHVJbnQpb2Zmc2V0OwotISAKLSEgCSAgICBzaXplID0gZ3p3cml0ZShmaWxlLCBzLT5pbmJ1Ziwgc2l6ZSk7Ci0hIAkgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIC0xTDsKLSEgCi0hIAkgICAgb2Zmc2V0IC09IHNpemU7Ci0hIAl9Ci0hIAlyZXR1cm4gKHpfb2ZmX3Qpcy0+c3RyZWFtLnRvdGFsX2luOwotICAjZW5kaWYKLSAgICAgIH0KLSAgICAgIC8qIFJlc3Qgb2YgZnVuY3Rpb24gaXMgZm9yIHJlYWRpbmcgb25seSAqLwotLS0tIDcwMCw3MzMgLS0tLQotICAgICAgZ3pfc3RyZWFtICpzID0gKGd6X3N0cmVhbSopZmlsZTsKLSAgCi0gICAgICBpZiAocyA9PSBOVUxMIHx8IHdoZW5jZSA9PSBTRUVLX0VORCB8fAotISAgICAgICAgIHMtPnpfZXJyID09IFpfRVJSTk8gfHwgcy0+el9lcnIgPT0gWl9EQVRBX0VSUk9SKSB7Ci0hICAgICAgICAgcmV0dXJuIC0xTDsKLSAgICAgIH0KLSAgICAgIAotICAgICAgaWYgKHMtPm1vZGUgPT0gJ3cnKSB7Ci0gICNpZmRlZiBOT19ERUZMQVRFCi0hICAgICAgICAgcmV0dXJuIC0xTDsKLSAgI2Vsc2UKLSEgICAgICAgICBpZiAod2hlbmNlID09IFNFRUtfU0VUKSB7Ci0hICAgICAgICAgICAgIG9mZnNldCAtPSBzLT5zdHJlYW0udG90YWxfaW47Ci0hICAgICAgICAgfQotISAgICAgICAgIGlmIChvZmZzZXQgPCAwKSByZXR1cm4gLTFMOwotISAKLSEgICAgICAgICAvKiBBdCB0aGlzIHBvaW50LCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiB6ZXJvIGJ5dGVzIHRvIHdyaXRlLiAqLwotISAgICAgICAgIGlmIChzLT5pbmJ1ZiA9PSBaX05VTEwpIHsKLSEgICAgICAgICAgICAgcy0+aW5idWYgPSAoQnl0ZSopQUxMT0MoWl9CVUZTSVpFKTsgLyogZm9yIHNlZWtpbmcgKi8KLSEgICAgICAgICAgICAgem1lbXplcm8ocy0+aW5idWYsIFpfQlVGU0laRSk7Ci0hICAgICAgICAgfQotISAgICAgICAgIHdoaWxlIChvZmZzZXQgPiAwKSAgewotISAgICAgICAgICAgICB1SW50IHNpemUgPSBaX0JVRlNJWkU7Ci0hICAgICAgICAgICAgIGlmIChvZmZzZXQgPCBaX0JVRlNJWkUpIHNpemUgPSAodUludClvZmZzZXQ7Ci0hIAotISAgICAgICAgICAgICBzaXplID0gZ3p3cml0ZShmaWxlLCBzLT5pbmJ1Ziwgc2l6ZSk7Ci0hICAgICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiAtMUw7Ci0hIAotISAgICAgICAgICAgICBvZmZzZXQgLT0gc2l6ZTsKLSEgICAgICAgICB9Ci0hICAgICAgICAgcmV0dXJuICh6X29mZl90KXMtPnN0cmVhbS50b3RhbF9pbjsKLSAgI2VuZGlmCi0gICAgICB9Ci0gICAgICAvKiBSZXN0IG9mIGZ1bmN0aW9uIGlzIGZvciByZWFkaW5nIG9ubHkgKi8KLSoqKioqKioqKioqKioqKgotKioqIDY5OSw3MzYgKioqKgotICAKLSAgICAgIC8qIGNvbXB1dGUgYWJzb2x1dGUgcG9zaXRpb24gKi8KLSAgICAgIGlmICh3aGVuY2UgPT0gU0VFS19DVVIpIHsKLSEgCW9mZnNldCArPSBzLT5zdHJlYW0udG90YWxfb3V0OwotICAgICAgfQotICAgICAgaWYgKG9mZnNldCA8IDApIHJldHVybiAtMUw7Ci0gIAotICAgICAgaWYgKHMtPnRyYW5zcGFyZW50KSB7Ci0hIAkvKiBtYXAgdG8gZnNlZWsgKi8KLSEgCXMtPnN0cmVhbS5hdmFpbF9pbiA9IDA7Ci0hIAlzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwotISAgICAgICAgIGlmIChmc2VlayhzLT5maWxlLCBvZmZzZXQsIFNFRUtfU0VUKSA8IDApIHJldHVybiAtMUw7Ci0gIAotISAJcy0+c3RyZWFtLnRvdGFsX2luID0gcy0+c3RyZWFtLnRvdGFsX291dCA9ICh1TG9uZylvZmZzZXQ7Ci0hIAlyZXR1cm4gb2Zmc2V0OwotICAgICAgfQotICAKLSAgICAgIC8qIEZvciBhIG5lZ2F0aXZlIHNlZWssIHJld2luZCBhbmQgdXNlIHBvc2l0aXZlIHNlZWsgKi8KLSAgICAgIGlmICgodUxvbmcpb2Zmc2V0ID49IHMtPnN0cmVhbS50b3RhbF9vdXQpIHsKLSEgCW9mZnNldCAtPSBzLT5zdHJlYW0udG90YWxfb3V0OwotICAgICAgfSBlbHNlIGlmIChnenJld2luZChmaWxlKSA8IDApIHsKLSEgCXJldHVybiAtMUw7Ci0gICAgICB9Ci0gICAgICAvKiBvZmZzZXQgaXMgbm93IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcC4gKi8KLSAgCi0gICAgICBpZiAob2Zmc2V0ICE9IDAgJiYgcy0+b3V0YnVmID09IFpfTlVMTCkgewotISAJcy0+b3V0YnVmID0gKEJ5dGUqKUFMTE9DKFpfQlVGU0laRSk7Ci0gICAgICB9Ci0gICAgICB3aGlsZSAob2Zmc2V0ID4gMCkgIHsKLSEgCWludCBzaXplID0gWl9CVUZTSVpFOwotISAJaWYgKG9mZnNldCA8IFpfQlVGU0laRSkgc2l6ZSA9IChpbnQpb2Zmc2V0OwotICAKLSEgCXNpemUgPSBnenJlYWQoZmlsZSwgcy0+b3V0YnVmLCAodUludClzaXplKTsKLSEgCWlmIChzaXplIDw9IDApIHJldHVybiAtMUw7Ci0hIAlvZmZzZXQgLT0gc2l6ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAoel9vZmZfdClzLT5zdHJlYW0udG90YWxfb3V0OwotICB9Ci0tLS0gNzM0LDc3MSAtLS0tCi0gIAotICAgICAgLyogY29tcHV0ZSBhYnNvbHV0ZSBwb3NpdGlvbiAqLwotICAgICAgaWYgKHdoZW5jZSA9PSBTRUVLX0NVUikgewotISAgICAgICAgIG9mZnNldCArPSBzLT5zdHJlYW0udG90YWxfb3V0OwotICAgICAgfQotICAgICAgaWYgKG9mZnNldCA8IDApIHJldHVybiAtMUw7Ci0gIAotICAgICAgaWYgKHMtPnRyYW5zcGFyZW50KSB7Ci0hICAgICAgICAgLyogbWFwIHRvIGZzZWVrICovCi0hICAgICAgICAgcy0+c3RyZWFtLmF2YWlsX2luID0gMDsKLSEgICAgICAgICBzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwotISAgICAgICAgIGlmIChTZXRGaWxlUG9pbnRlcihzLT5maWxlLCBvZmZzZXQsIE5VTEwsIEZJTEVfQkVHSU4pID09IDB4RkZGRkZGRkYpIHJldHVybiAtMUw7Ci0gIAotISAgICAgICAgIHMtPnN0cmVhbS50b3RhbF9pbiA9IHMtPnN0cmVhbS50b3RhbF9vdXQgPSAodUxvbmcpb2Zmc2V0OwotISAgICAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAgICB9Ci0gIAotICAgICAgLyogRm9yIGEgbmVnYXRpdmUgc2VlaywgcmV3aW5kIGFuZCB1c2UgcG9zaXRpdmUgc2VlayAqLwotICAgICAgaWYgKCh1TG9uZylvZmZzZXQgPj0gcy0+c3RyZWFtLnRvdGFsX291dCkgewotISAgICAgICAgIG9mZnNldCAtPSBzLT5zdHJlYW0udG90YWxfb3V0OwotICAgICAgfSBlbHNlIGlmIChnenJld2luZChmaWxlKSA8IDApIHsKLSEgICAgICAgICByZXR1cm4gLTFMOwotICAgICAgfQotICAgICAgLyogb2Zmc2V0IGlzIG5vdyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAuICovCi0gIAotICAgICAgaWYgKG9mZnNldCAhPSAwICYmIHMtPm91dGJ1ZiA9PSBaX05VTEwpIHsKLSEgICAgICAgICBzLT5vdXRidWYgPSAoQnl0ZSopQUxMT0MoWl9CVUZTSVpFKTsKLSAgICAgIH0KLSAgICAgIHdoaWxlIChvZmZzZXQgPiAwKSAgewotISAgICAgICAgIGludCBzaXplID0gWl9CVUZTSVpFOwotISAgICAgICAgIGlmIChvZmZzZXQgPCBaX0JVRlNJWkUpIHNpemUgPSAoaW50KW9mZnNldDsKLSAgCi0hICAgICAgICAgc2l6ZSA9IGd6cmVhZChmaWxlLCBzLT5vdXRidWYsICh1SW50KXNpemUpOwotISAgICAgICAgIGlmIChzaXplIDw9IDApIHJldHVybiAtMUw7Ci0hICAgICAgICAgb2Zmc2V0IC09IHNpemU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKHpfb2ZmX3Qpcy0+c3RyZWFtLnRvdGFsX291dDsKLSAgfQotKioqKioqKioqKioqKioqCi0qKiogNzQyLDc0OCAqKioqCi0gICAgICBnekZpbGUgZmlsZTsKLSAgewotICAgICAgZ3pfc3RyZWFtICpzID0gKGd6X3N0cmVhbSopZmlsZTsKLSEgICAgIAotICAgICAgaWYgKHMgPT0gTlVMTCB8fCBzLT5tb2RlICE9ICdyJykgcmV0dXJuIC0xOwotICAKLSAgICAgIHMtPnpfZXJyID0gWl9PSzsKLS0tLSA3NzcsNzgzIC0tLS0KLSAgICAgIGd6RmlsZSBmaWxlOwotICB7Ci0gICAgICBnel9zdHJlYW0gKnMgPSAoZ3pfc3RyZWFtKilmaWxlOwotISAKLSAgICAgIGlmIChzID09IE5VTEwgfHwgcy0+bW9kZSAhPSAncicpIHJldHVybiAtMTsKLSAgCi0gICAgICBzLT56X2VyciA9IFpfT0s7Ci0qKioqKioqKioqKioqKioKLSoqKiA3NTAsNzYzICoqKioKLSAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbiA9IDA7Ci0gICAgICBzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwotICAgICAgcy0+Y3JjID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7Ci0hIAkKLSAgICAgIGlmIChzLT5zdGFydHBvcyA9PSAwKSB7IC8qIG5vdCBhIGNvbXByZXNzZWQgZmlsZSAqLwotISAJcmV3aW5kKHMtPmZpbGUpOwotISAJcmV0dXJuIDA7Ci0gICAgICB9Ci0gIAotICAgICAgKHZvaWQpIGluZmxhdGVSZXNldCgmcy0+c3RyZWFtKTsKLSEgICAgIHJldHVybiBmc2VlayhzLT5maWxlLCBzLT5zdGFydHBvcywgU0VFS19TRVQpOwotICB9Ci0gIAotICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSA3ODUsNzk4IC0tLS0KLSAgICAgIHMtPnN0cmVhbS5hdmFpbF9pbiA9IDA7Ci0gICAgICBzLT5zdHJlYW0ubmV4dF9pbiA9IHMtPmluYnVmOwotICAgICAgcy0+Y3JjID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7Ci0hICAgICAgICAgCi0gICAgICBpZiAocy0+c3RhcnRwb3MgPT0gMCkgeyAvKiBub3QgYSBjb21wcmVzc2VkIGZpbGUgKi8KLSEgICAgICAgICBTZXRGaWxlUG9pbnRlcihzLT5maWxlLCAwLCBOVUxMLCBGSUxFX0JFR0lOKTsKLSEgICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgCi0gICAgICAodm9pZCkgaW5mbGF0ZVJlc2V0KCZzLT5zdHJlYW0pOwotISAgICAgcmV0dXJuIFNldEZpbGVQb2ludGVyKHMtPmZpbGUsIHMtPnN0YXJ0cG9zLCBOVUxMLCBGSUxFX0JFR0lOKTsKLSAgfQotICAKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qKioqKioqKioqKioqKioKLSoqKiA3ODcsNzk4ICoqKioKLSAgICAgT3V0cHV0cyBhIGxvbmcgaW4gTFNCIG9yZGVyIHRvIHRoZSBnaXZlbiBmaWxlCi0gICovCi0gIGxvY2FsIHZvaWQgcHV0TG9uZyAoZmlsZSwgeCkKLSEgICAgIEZJTEUgKmZpbGU7Ci0gICAgICB1TG9uZyB4OwotICB7Ci0gICAgICBpbnQgbjsKLSAgICAgIGZvciAobiA9IDA7IG4gPCA0OyBuKyspIHsKLSEgICAgICAgICBmcHV0YygoaW50KSh4ICYgMHhmZiksIGZpbGUpOwotICAgICAgICAgIHggPj49IDg7Ci0gICAgICB9Ci0gIH0KLS0tLSA4MjIsODM2IC0tLS0KLSAgICAgT3V0cHV0cyBhIGxvbmcgaW4gTFNCIG9yZGVyIHRvIHRoZSBnaXZlbiBmaWxlCi0gICovCi0gIGxvY2FsIHZvaWQgcHV0TG9uZyAoZmlsZSwgeCkKLSEgICAgIEhBTkRMRSBmaWxlOwotICAgICAgdUxvbmcgeDsKLSAgewotICAgICAgaW50IG47Ci0rICAgICBjaGFyIGNoWzFdOwotKyAgICAgRFdPUkQgc2l6ZTsKLSAgICAgIGZvciAobiA9IDA7IG4gPCA0OyBuKyspIHsKLSEgICAgICAgICBjaFswXSA9IChpbnQpKHggJiAweGZmKTsKLSEgICAgICAgICBXcml0ZUZpbGUoZmlsZSwgY2gsIDEsICZzaXplLCBOVUxMKTsKLSAgICAgICAgICB4ID4+PSA4OwotICAgICAgfQotICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA4MTAsODE2ICoqKioKLSAgICAgIHggKz0gKCh1TG9uZylnZXRfYnl0ZShzKSk8PDg7Ci0gICAgICB4ICs9ICgodUxvbmcpZ2V0X2J5dGUocykpPDwxNjsKLSAgICAgIGMgPSBnZXRfYnl0ZShzKTsKLSEgICAgIGlmIChjID09IEVPRikgcy0+el9lcnIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICB4ICs9ICgodUxvbmcpYyk8PDI0OwotICAgICAgcmV0dXJuIHg7Ci0gIH0KLS0tLSA4NDgsODU0IC0tLS0KLSAgICAgIHggKz0gKCh1TG9uZylnZXRfYnl0ZShzKSk8PDg7Ci0gICAgICB4ICs9ICgodUxvbmcpZ2V0X2J5dGUocykpPDwxNjsKLSAgICAgIGMgPSBnZXRfYnl0ZShzKTsKLSEgICAgIGlmIChjID09IC0xKSBzLT56X2VyciA9IFpfREFUQV9FUlJPUjsKLSAgICAgIHggKz0gKCh1TG9uZyljKTw8MjQ7Ci0gICAgICByZXR1cm4geDsKLSAgfQotKioqKioqKioqKioqKioqCi0qKiogODI5LDgzNSAqKioqCi0gIAotICAgICAgaWYgKHMtPm1vZGUgPT0gJ3cnKSB7Ci0gICNpZmRlZiBOT19ERUZMQVRFCi0hIAlyZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gICNlbHNlCi0gICAgICAgICAgZXJyID0gZG9fZmx1c2ggKGZpbGUsIFpfRklOSVNIKTsKLSAgICAgICAgICBpZiAoZXJyICE9IFpfT0spIHJldHVybiBkZXN0cm95KChnel9zdHJlYW0qKWZpbGUpOwotLS0tIDg2Nyw4NzMgLS0tLQotICAKLSAgICAgIGlmIChzLT5tb2RlID09ICd3JykgewotICAjaWZkZWYgTk9fREVGTEFURQotISAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgI2Vsc2UKLSAgICAgICAgICBlcnIgPSBkb19mbHVzaCAoZmlsZSwgWl9GSU5JU0gpOwotICAgICAgICAgIGlmIChlcnIgIT0gWl9PSykgcmV0dXJuIGRlc3Ryb3koKGd6X3N0cmVhbSopZmlsZSk7Ci0qKioqKioqKioqKioqKioKLSoqKiA4NjIsODY4ICoqKioKLSAgICAgICplcnJudW0gPSBzLT56X2VycjsKLSAgICAgIGlmICgqZXJybnVtID09IFpfT0spIHJldHVybiAoY29uc3QgY2hhciopIiI7Ci0gIAotISAgICAgbSA9ICAoY2hhciopKCplcnJudW0gPT0gWl9FUlJOTyA/IHpzdHJlcnJvcihlcnJubykgOiBzLT5zdHJlYW0ubXNnKTsKLSAgCi0gICAgICBpZiAobSA9PSBOVUxMIHx8ICptID09ICdcMCcpIG0gPSAoY2hhciopRVJSX01TRyhzLT56X2Vycik7Ci0gIAotLS0tIDkwMCw5MDYgLS0tLQotICAgICAgKmVycm51bSA9IHMtPnpfZXJyOwotICAgICAgaWYgKCplcnJudW0gPT0gWl9PSykgcmV0dXJuIChjb25zdCBjaGFyKikiIjsKLSAgCi0hICAgICBtID0gIChjaGFyKikoKmVycm51bSA9PSBaX0VSUk5PID8genN0cmVycm9yKEdldExhc3RFcnJvcigpKSA6IHMtPnN0cmVhbS5tc2cpOwotICAKLSAgICAgIGlmIChtID09IE5VTEwgfHwgKm0gPT0gJ1wwJykgbSA9IChjaGFyKilFUlJfTVNHKHMtPnpfZXJyKTsKLSAgCi0qKiogemxpYjExMy9taW5pZ3ppcC5jCVNhdCBKdWwgIDggMTM6NTk6NDkgMjAwMAotLS0tIHpsaWJ3Y2UvbWluaWd6aXAuYwlTYXQgSnVsICA4IDEzOjU4OjI5IDIwMDAKLSoqKioqKioqKioqKioqKgotKioqIDEsNSAqKioqCi0tLS0gMSw2IC0tLS0KLSAgLyogbWluaWd6aXAuYyAtLSBzaW11bGF0ZSBnemlwIHVzaW5nIHRoZSB6bGliIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAgICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggSmVhbi1sb3VwIEdhaWxseS4KLSsgICogQ29weXJpZ2h0IChDKSAyMDAwICAgICAgVGVuaWsgQ28uLEx0ZC4KLSAgICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaCAKLSAgICovCi0gIAotKioqKioqKioqKioqKioqCi0qKiogMTUsMjEgKioqKgotLS0tIDE2LDMwIC0tLS0KLSAgCi0gIC8qIEAoIykgJElkJCAqLwotICAKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgI2lmIF9XSU4zMl9XQ0UgPCAyMTEKLSsgI2Vycm9yIChmfHcpcHJpbnRmIGZ1bmN0aW9ucyBpcyBub3Qgc3VwcG9ydCBvbGQgV2luZG93c0NFLgotKyAjZW5kaWYKLSsgI3VuZGVmIFVTRV9NTUFQCi0rICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rICNlbHNlCi0gICNpbmNsdWRlIDxzdGRpby5oPgotKyAjZW5kaWYKLSAgI2luY2x1ZGUgInpsaWIuaCIKLSAgCi0gICNpZmRlZiBTVERDCi0qKioqKioqKioqKioqKioKLSoqKiAzMSwzNyAqKioqCi0gICMgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gICNlbmRpZgotICAKLSEgI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoT1MyKSB8fCBkZWZpbmVkKFdJTjMyKQotICAjICBpbmNsdWRlIDxmY250bC5oPgotICAjICBpbmNsdWRlIDxpby5oPgotICAjICBkZWZpbmUgU0VUX0JJTkFSWV9NT0RFKGZpbGUpIHNldG1vZGUoZmlsZW5vKGZpbGUpLCBPX0JJTkFSWSkKLS0tLSA0MCw0NiAtLS0tCi0gICMgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gICNlbmRpZgotICAKLSEgI2lmIChkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChXSU4zMikpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCi0gICMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0gICMgIGluY2x1ZGUgPGlvLmg+Ci0gICMgIGRlZmluZSBTRVRfQklOQVJZX01PREUoZmlsZSkgc2V0bW9kZShmaWxlbm8oZmlsZSksIE9fQklOQVJZKQotKioqKioqKioqKioqKioqCi0qKiogNzEsODQgKioqKgotICAjICBkZWZpbmUgbG9jYWwKLSAgI2VuZGlmCi0gIAotICBjaGFyICpwcm9nOwotICAKLSAgdm9pZCBlcnJvciAgICAgICAgICAgIE9GKChjb25zdCBjaGFyICptc2cpKTsKLSEgdm9pZCBnel9jb21wcmVzcyAgICAgIE9GKChGSUxFICAgKmluLCBnekZpbGUgb3V0KSk7Ci0gICNpZmRlZiBVU0VfTU1BUAotISBpbnQgIGd6X2NvbXByZXNzX21tYXAgT0YoKEZJTEUgICAqaW4sIGd6RmlsZSBvdXQpKTsKLSAgI2VuZGlmCi0hIHZvaWQgZ3pfdW5jb21wcmVzcyAgICBPRigoZ3pGaWxlIGluLCBGSUxFICAgKm91dCkpOwotICB2b2lkIGZpbGVfY29tcHJlc3MgICAgT0YoKGNoYXIgICpmaWxlLCBjaGFyICptb2RlKSk7Ci0gIHZvaWQgZmlsZV91bmNvbXByZXNzICBPRigoY2hhciAgKmZpbGUpKTsKLSAgaW50ICBtYWluICAgICAgICAgICAgIE9GKChpbnQgYXJnYywgY2hhciAqYXJndltdKSk7Ci0tLS0gODAsMTAzIC0tLS0KLSAgIyAgZGVmaW5lIGxvY2FsCi0gICNlbmRpZgotICAKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgI3VuZGVmICBzdGRlcnIKLSsgI2RlZmluZSBzdGRlcnIgIHN0ZG91dAotKyAjZGVmaW5lIEZfRklMRSAgSEFORExFCi0rICNkZWZpbmUgRl9OVUxMICBJTlZBTElEX0hBTkRMRV9WQUxVRQotKyAjZWxzZQotKyAjZGVmaW5lIEZfRklMRSAgRklMRSoKLSsgI2RlZmluZSBGX05VTEwgIE5VTEwKLSsgI2VuZGlmCi0rIAotICBjaGFyICpwcm9nOwotICAKLSAgdm9pZCBlcnJvciAgICAgICAgICAgIE9GKChjb25zdCBjaGFyICptc2cpKTsKLSEgdm9pZCBnel9jb21wcmVzcyAgICAgIE9GKChGX0ZJTEUgaW4sIGd6RmlsZSBvdXQpKTsKLSAgI2lmZGVmIFVTRV9NTUFQCi0hIGludCAgZ3pfY29tcHJlc3NfbW1hcCBPRigoRl9GSUxFIGluLCBnekZpbGUgb3V0KSk7Ci0gICNlbmRpZgotISB2b2lkIGd6X3VuY29tcHJlc3MgICAgT0YoKGd6RmlsZSBpbiwgRl9GSUxFIG91dCkpOwotICB2b2lkIGZpbGVfY29tcHJlc3MgICAgT0YoKGNoYXIgICpmaWxlLCBjaGFyICptb2RlKSk7Ci0gIHZvaWQgZmlsZV91bmNvbXByZXNzICBPRigoY2hhciAgKmZpbGUpKTsKLSAgaW50ICBtYWluICAgICAgICAgICAgIE9GKChpbnQgYXJnYywgY2hhciAqYXJndltdKSk7Ci0qKioqKioqKioqKioqKioKLSoqKiA5MywxMDQgKioqKgotICAgICAgZXhpdCgxKTsKLSAgfQotICAKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAqIENvbXByZXNzIGlucHV0IHRvIG91dHB1dCB0aGVuIGNsb3NlIGJvdGggZmlsZXMuCi0gICAqLwotICAKLSAgdm9pZCBnel9jb21wcmVzcyhpbiwgb3V0KQotISAgICAgRklMRSAgICppbjsKLSAgICAgIGd6RmlsZSBvdXQ7Ci0gIHsKLSAgICAgIGxvY2FsIGNoYXIgYnVmW0JVRkxFTl07Ci0tLS0gMTEyLDE2MCAtLS0tCi0gICAgICBleGl0KDEpOwotICB9Ci0gIAotKyAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotKyB2b2lkIHBlcnJvcihtc2cpCi0rICAgICBjb25zdCBjaGFyICptc2c7Ci0rIHsKLSsgICAgIERXT1JEIGR3RXJyb3I7Ci0rICAgICBMUFZPSUQgbHBNc2dCdWY7Ci0rIAotKyAgICAgZHdFcnJvciA9IEdldExhc3RFcnJvcigpOwotKyAgICAgaWYgKCBGb3JtYXRNZXNzYWdlKEZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiB8Ci0rICAgICAgICAgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9GUk9NX0hNT0RVTEUgfAotKyAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLAotKyAgICAgICAgIE5VTEwsCi0rICAgICAgICAgZHdFcnJvciwKLSsgICAgICAgICBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFOR19ERUZBVUxUKSwgLy8gRGVmYXVsdCBsYW5ndWFnZQotKyAgICAgICAgIChMUFRTVFIpICZscE1zZ0J1ZiwKLSsgICAgICAgICAwLAotKyAgICAgICAgIE5VTEwpICkKLSsgICAgIHsKLSsgICAgICAgICB3cHJpbnRmKFRFWFQoIiVTOiAlc1xuIiksIG1zZywgKExQVFNUUilscE1zZ0J1Zik7Ci0rICAgICAgICAgTG9jYWxGcmVlKGxwTXNnQnVmKTsKLSsgICAgIH0KLSsgICAgIGVsc2UKLSsgICAgIHsKLSsgICAgICAgICB3cHJpbnRmKFRFWFQoIiVTOiBFcnJvciAjJWRcbiIpLCBtc2csIGR3RXJyb3IpOwotKyAgICAgfQotKyB9Ci0rIAotKyBpbnQgdW5saW5rKGZpbGVuYW1lKQotKyAgICAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0rIHsKLSsgICAgIFRDSEFSIHBhdGhbTUFYX1BBVEhdOwotKyAKLSsgICAgIE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBmaWxlbmFtZSwgLTEsIHBhdGgsIE1BWF9QQVRIKTsKLSsgICAgIHJldHVybiBEZWxldGVGaWxlKHBhdGgpOwotKyB9Ci0rICNlbmRpZgotKyAKLSAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAqIENvbXByZXNzIGlucHV0IHRvIG91dHB1dCB0aGVuIGNsb3NlIGJvdGggZmlsZXMuCi0gICAqLwotICAKLSAgdm9pZCBnel9jb21wcmVzcyhpbiwgb3V0KQotISAgICAgRl9GSUxFIGluOwotICAgICAgZ3pGaWxlIG91dDsKLSAgewotICAgICAgbG9jYWwgY2hhciBidWZbQlVGTEVOXTsKLSoqKioqKioqKioqKioqKgotKioqIDExMiwxMTkgKioqKgotLS0tIDE2OCwxNzkgLS0tLQotICAgICAgaWYgKGd6X2NvbXByZXNzX21tYXAoaW4sIG91dCkgPT0gWl9PSykgcmV0dXJuOwotICAjZW5kaWYKLSAgICAgIGZvciAoOzspIHsKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgICAgICAgICBpZiAoIVJlYWRGaWxlKGluLCBidWYsIHNpemVvZihidWYpLCAmbGVuLCBOVUxMKSkgewotKyAjZWxzZQotICAgICAgICAgIGxlbiA9IGZyZWFkKGJ1ZiwgMSwgc2l6ZW9mKGJ1ZiksIGluKTsKLSAgICAgICAgICBpZiAoZmVycm9yKGluKSkgewotKyAjZW5kaWYKLSAgICAgICAgICAgICAgcGVycm9yKCJmcmVhZCIpOwotICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgIH0KLSoqKioqKioqKioqKioqKgotKioqIDEyMSwxMjcgKioqKgotLS0tIDE4MSwxOTEgLS0tLQotICAKLSAgICAgICAgICBpZiAoZ3p3cml0ZShvdXQsIGJ1ZiwgKHVuc2lnbmVkKWxlbikgIT0gbGVuKSBlcnJvcihnemVycm9yKG91dCwgJmVycikpOwotICAgICAgfQotKyAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotKyAgICAgQ2xvc2VIYW5kbGUoaW4pOwotKyAjZWxzZQotICAgICAgZmNsb3NlKGluKTsKLSsgI2VuZGlmCi0gICAgICBpZiAoZ3pjbG9zZShvdXQpICE9IFpfT0spIGVycm9yKCJmYWlsZWQgZ3pjbG9zZSIpOwotICB9Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMTMxLDEzNyAqKioqCi0gICAqIGlmIHN1Y2Nlc3MsIFpfRVJSTk8gb3RoZXJ3aXNlLgotICAgKi8KLSAgaW50IGd6X2NvbXByZXNzX21tYXAoaW4sIG91dCkKLSEgICAgIEZJTEUgICAqaW47Ci0gICAgICBnekZpbGUgb3V0OwotICB7Ci0gICAgICBpbnQgbGVuOwotLS0tIDE5NSwyMDEgLS0tLQotICAgKiBpZiBzdWNjZXNzLCBaX0VSUk5PIG90aGVyd2lzZS4KLSAgICovCi0gIGludCBnel9jb21wcmVzc19tbWFwKGluLCBvdXQpCi0hICAgICBGX0ZJTEUgaW47Ci0gICAgICBnekZpbGUgb3V0OwotICB7Ci0gICAgICBpbnQgbGVuOwotKioqKioqKioqKioqKioqCi0qKiogMTY3LDE3NyAqKioqCi0gICAqLwotICB2b2lkIGd6X3VuY29tcHJlc3MoaW4sIG91dCkKLSAgICAgIGd6RmlsZSBpbjsKLSEgICAgIEZJTEUgICAqb3V0OwotICB7Ci0gICAgICBsb2NhbCBjaGFyIGJ1ZltCVUZMRU5dOwotICAgICAgaW50IGxlbjsKLSAgICAgIGludCBlcnI7Ci0gIAotICAgICAgZm9yICg7OykgewotICAgICAgICAgIGxlbiA9IGd6cmVhZChpbiwgYnVmLCBzaXplb2YoYnVmKSk7Ci0tLS0gMjMxLDI0NCAtLS0tCi0gICAqLwotICB2b2lkIGd6X3VuY29tcHJlc3MoaW4sIG91dCkKLSAgICAgIGd6RmlsZSBpbjsKLSEgICAgIEZfRklMRSBvdXQ7Ci0gIHsKLSAgICAgIGxvY2FsIGNoYXIgYnVmW0JVRkxFTl07Ci0gICAgICBpbnQgbGVuOwotICAgICAgaW50IGVycjsKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgICAgIGludCBzaXplOwotKyAjZW5kaWYKLSAgCi0gICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgbGVuID0gZ3pyZWFkKGluLCBidWYsIHNpemVvZihidWYpKTsKLSoqKioqKioqKioqKioqKgotKioqIDE3OCwxODggKioqKgotICAgICAgICAgIGlmIChsZW4gPCAwKSBlcnJvciAoZ3plcnJvcihpbiwgJmVycikpOwotICAgICAgICAgIGlmIChsZW4gPT0gMCkgYnJlYWs7Ci0gIAotICAgICAgICAgIGlmICgoaW50KWZ3cml0ZShidWYsIDEsICh1bnNpZ25lZClsZW4sIG91dCkgIT0gbGVuKSB7Ci0hIAkgICAgZXJyb3IoImZhaWxlZCBmd3JpdGUiKTsKLSEgCX0KLSAgICAgIH0KLSAgICAgIGlmIChmY2xvc2Uob3V0KSkgZXJyb3IoImZhaWxlZCBmY2xvc2UiKTsKLSAgCi0gICAgICBpZiAoZ3pjbG9zZShpbikgIT0gWl9PSykgZXJyb3IoImZhaWxlZCBnemNsb3NlIik7Ci0gIH0KLS0tLSAyNDUsMjYzIC0tLS0KLSAgICAgICAgICBpZiAobGVuIDwgMCkgZXJyb3IgKGd6ZXJyb3IoaW4sICZlcnIpKTsKLSAgICAgICAgICBpZiAobGVuID09IDApIGJyZWFrOwotICAKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgICAgICAgICBpZiAoIVdyaXRlRmlsZShvdXQsIGJ1ZiwgKHVuc2lnbmVkKWxlbiwgJnNpemUsIE5VTEwpIHx8IHNpemUgIT0gbGVuKSB7Ci0rICNlbHNlCi0gICAgICAgICAgaWYgKChpbnQpZndyaXRlKGJ1ZiwgMSwgKHVuc2lnbmVkKWxlbiwgb3V0KSAhPSBsZW4pIHsKLSEgI2VuZGlmCi0hICAgICAgICAgICAgIGVycm9yKCJmYWlsZWQgZndyaXRlIik7Ci0hICAgICAgICAgfQotICAgICAgfQotKyAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotKyAgICAgaWYgKCFDbG9zZUhhbmRsZShvdXQpKSBlcnJvcigiZmFpbGVkIGZjbG9zZSIpOwotKyAjZWxzZQotICAgICAgaWYgKGZjbG9zZShvdXQpKSBlcnJvcigiZmFpbGVkIGZjbG9zZSIpOwotKyAjZW5kaWYKLSAgCi0gICAgICBpZiAoZ3pjbG9zZShpbikgIT0gWl9PSykgZXJyb3IoImZhaWxlZCBnemNsb3NlIik7Ci0gIH0KLSoqKioqKioqKioqKioqKgotKioqIDE5NywyMTUgKioqKgotICAgICAgY2hhciAgKm1vZGU7Ci0gIHsKLSAgICAgIGxvY2FsIGNoYXIgb3V0ZmlsZVtNQVhfTkFNRV9MRU5dOwotISAgICAgRklMRSAgKmluOwotICAgICAgZ3pGaWxlIG91dDsKLSAgCi0gICAgICBzdHJjcHkob3V0ZmlsZSwgZmlsZSk7Ci0gICAgICBzdHJjYXQob3V0ZmlsZSwgR1pfU1VGRklYKTsKLSAgCi0gICAgICBpbiA9IGZvcGVuKGZpbGUsICJyYiIpOwotISAgICAgaWYgKGluID09IE5VTEwpIHsKLSAgICAgICAgICBwZXJyb3IoZmlsZSk7Ci0gICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIG91dCA9IGd6b3BlbihvdXRmaWxlLCBtb2RlKTsKLSEgICAgIGlmIChvdXQgPT0gTlVMTCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGd6b3BlbiAlc1xuIiwgcHJvZywgb3V0ZmlsZSk7Ci0gICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLS0tLSAyNzIsMjk4IC0tLS0KLSAgICAgIGNoYXIgICptb2RlOwotICB7Ci0gICAgICBsb2NhbCBjaGFyIG91dGZpbGVbTUFYX05BTUVfTEVOXTsKLSEgICAgIEZfRklMRSBpbjsKLSAgICAgIGd6RmlsZSBvdXQ7Ci0rICNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rICAgICBUQ0hBUiBwYXRoW01BWF9QQVRIXTsKLSsgI2VuZGlmCi0gIAotICAgICAgc3RyY3B5KG91dGZpbGUsIGZpbGUpOwotICAgICAgc3RyY2F0KG91dGZpbGUsIEdaX1NVRkZJWCk7Ci0gIAotKyAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotKyAgICAgTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIGZpbGUsIC0xLCBwYXRoLCBNQVhfUEFUSCk7Ci0rICAgICBpbiA9IENyZWF0ZUZpbGUocGF0aCwgR0VORVJJQ19SRUFELCAwLCBOVUxMLCBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKLSsgI2Vsc2UKLSAgICAgIGluID0gZm9wZW4oZmlsZSwgInJiIik7Ci0hICNlbmRpZgotISAgICAgaWYgKGluID09IEZfTlVMTCkgewotICAgICAgICAgIHBlcnJvcihmaWxlKTsKLSAgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgb3V0ID0gZ3pvcGVuKG91dGZpbGUsIG1vZGUpOwotISAgICAgaWYgKG91dCA9PSBGX05VTEwpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBnem9wZW4gJXNcbiIsIHByb2csIG91dGZpbGUpOwotICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiAyMjcsMjM1ICoqKioKLSAgewotICAgICAgbG9jYWwgY2hhciBidWZbTUFYX05BTUVfTEVOXTsKLSAgICAgIGNoYXIgKmluZmlsZSwgKm91dGZpbGU7Ci0hICAgICBGSUxFICAqb3V0OwotICAgICAgZ3pGaWxlIGluOwotICAgICAgaW50IGxlbiA9IHN0cmxlbihmaWxlKTsKLSAgCi0gICAgICBzdHJjcHkoYnVmLCBmaWxlKTsKLSAgCi0tLS0gMzEwLDMyMSAtLS0tCi0gIHsKLSAgICAgIGxvY2FsIGNoYXIgYnVmW01BWF9OQU1FX0xFTl07Ci0gICAgICBjaGFyICppbmZpbGUsICpvdXRmaWxlOwotISAgICAgRl9GSUxFIG91dDsKLSAgICAgIGd6RmlsZSBpbjsKLSAgICAgIGludCBsZW4gPSBzdHJsZW4oZmlsZSk7Ci0rICNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rICAgICBUQ0hBUiBwYXRoW01BWF9QQVRIXTsKLSsgI2VuZGlmCi0gIAotICAgICAgc3RyY3B5KGJ1ZiwgZmlsZSk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMjQzLDI1NCAqKioqCi0gICAgICAgICAgc3RyY2F0KGluZmlsZSwgR1pfU1VGRklYKTsKLSAgICAgIH0KLSAgICAgIGluID0gZ3pvcGVuKGluZmlsZSwgInJiIik7Ci0hICAgICBpZiAoaW4gPT0gTlVMTCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGd6b3BlbiAlc1xuIiwgcHJvZywgaW5maWxlKTsKLSAgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgb3V0ID0gZm9wZW4ob3V0ZmlsZSwgIndiIik7Ci0hICAgICBpZiAob3V0ID09IE5VTEwpIHsKLSAgICAgICAgICBwZXJyb3IoZmlsZSk7Ci0gICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLS0tLSAzMjksMzQ1IC0tLS0KLSAgICAgICAgICBzdHJjYXQoaW5maWxlLCBHWl9TVUZGSVgpOwotICAgICAgfQotICAgICAgaW4gPSBnem9wZW4oaW5maWxlLCAicmIiKTsKLSEgICAgIGlmIChpbiA9PSBGX05VTEwpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBnem9wZW4gJXNcbiIsIHByb2csIGluZmlsZSk7Ci0gICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgICAgIE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBvdXRmaWxlLCAtMSwgcGF0aCwgTUFYX1BBVEgpOwotKyAgICAgb3V0ID0gQ3JlYXRlRmlsZShwYXRoLCBHRU5FUklDX1dSSVRFLCAwLCBOVUxMLCBDUkVBVEVfQUxXQVlTLCAwLCBOVUxMKTsKLSsgI2Vsc2UKLSAgICAgIG91dCA9IGZvcGVuKG91dGZpbGUsICJ3YiIpOwotISAjZW5kaWYKLSEgICAgIGlmIChvdXQgPT0gRl9OVUxMKSB7Ci0gICAgICAgICAgcGVycm9yKGZpbGUpOwotICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiAyNzIsMjc4ICoqKioKLS0tLSAzNjMsMzcxIC0tLS0KLSAgICAgIGNoYXIgKmFyZ3ZbXTsKLSAgewotICAgICAgaW50IHVuY29tcHIgPSAwOwotKyAjaWYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgICAgIGd6RmlsZSBmaWxlOwotKyAjZW5kaWYKLSAgICAgIGNoYXIgb3V0bW9kZVsyMF07Ci0gIAotICAgICAgc3RyY3B5KG91dG1vZGUsICJ3YjYgIik7Ci0qKioqKioqKioqKioqKioKLSoqKiAyODIsMzAwICoqKioKLSAgCi0gICAgICB3aGlsZSAoYXJnYyA+IDApIHsKLSAgICAgICAgaWYgKHN0cmNtcCgqYXJndiwgIi1kIikgPT0gMCkKLSEgCXVuY29tcHIgPSAxOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItZiIpID09IDApCi0hIAlvdXRtb2RlWzNdID0gJ2YnOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItaCIpID09IDApCi0hIAlvdXRtb2RlWzNdID0gJ2gnOwotICAgICAgICBlbHNlIGlmICgoKmFyZ3YpWzBdID09ICctJyAmJiAoKmFyZ3YpWzFdID49ICcxJyAmJiAoKmFyZ3YpWzFdIDw9ICc5JyAmJgotISAJICAgICAgICgqYXJndilbMl0gPT0gMCkKLSEgCW91dG1vZGVbMl0gPSAoKmFyZ3YpWzFdOwotICAgICAgICBlbHNlCi0hIAlicmVhazsKLSAgICAgICAgYXJnYy0tLCBhcmd2Kys7Ci0gICAgICB9Ci0gICAgICBpZiAoYXJnYyA9PSAwKSB7Ci0gICAgICAgICAgU0VUX0JJTkFSWV9NT0RFKHN0ZGluKTsKLSAgICAgICAgICBTRVRfQklOQVJZX01PREUoc3Rkb3V0KTsKLSAgICAgICAgICBpZiAodW5jb21wcikgewotLS0tIDM3NSw0MDAgLS0tLQotICAKLSAgICAgIHdoaWxlIChhcmdjID4gMCkgewotICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAiLWQiKSA9PSAwKQotISAgICAgICAgIHVuY29tcHIgPSAxOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItZiIpID09IDApCi0hICAgICAgICAgb3V0bW9kZVszXSA9ICdmJzsKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiLWgiKSA9PSAwKQotISAgICAgICAgIG91dG1vZGVbM10gPSAnaCc7Ci0gICAgICAgIGVsc2UgaWYgKCgqYXJndilbMF0gPT0gJy0nICYmICgqYXJndilbMV0gPj0gJzEnICYmICgqYXJndilbMV0gPD0gJzknICYmCi0hICAgICAgICAgICAgICAgICgqYXJndilbMl0gPT0gMCkKLSEgICAgICAgICBvdXRtb2RlWzJdID0gKCphcmd2KVsxXTsKLSAgICAgICAgZWxzZQotISAgICAgICAgIGJyZWFrOwotICAgICAgICBhcmdjLS0sIGFyZ3YrKzsKLSAgICAgIH0KLSAgICAgIGlmIChhcmdjID09IDApIHsKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgICAgICAgICB3cHJpbnRmKFRFWFQoIlVzYWdlOiAgbWluaWd6aXAgWy1kXSBbLWZdIFstaF0gWy0xIHRvIC05XSBbZmlsZXMuLi5dXG4iKSk7Ci0rICAgICAgICAgd3ByaW50ZihURVhUKCIgIC1kIDogZGVjb21wcmVzc1xuIikpOwotKyAgICAgICAgIHdwcmludGYoVEVYVCgiICAtZiA6IGNvbXByZXNzIHdpdGggWl9GSUxURVJFRFxuIikpOwotKyAgICAgICAgIHdwcmludGYoVEVYVCgiICAtaCA6IGNvbXByZXNzIHdpdGggWl9IVUZGTUFOX09OTFlcbiIpKTsKLSsgICAgICAgICB3cHJpbnRmKFRFWFQoIiAgLTEgdG8gLTkgOiBjb21wcmVzc2lvbiBsZXZlbFxuIikpOwotKyAjZWxzZQotICAgICAgICAgIFNFVF9CSU5BUllfTU9ERShzdGRpbik7Ci0gICAgICAgICAgU0VUX0JJTkFSWV9NT0RFKHN0ZG91dCk7Ci0gICAgICAgICAgaWYgKHVuY29tcHIpIHsKLSoqKioqKioqKioqKioqKgotKioqIDMwNiwzMTEgKioqKgotLS0tIDQwNiw0MTIgLS0tLQotICAgICAgICAgICAgICBpZiAoZmlsZSA9PSBOVUxMKSBlcnJvcigiY2FuJ3QgZ3pkb3BlbiBzdGRvdXQiKTsKLSAgICAgICAgICAgICAgZ3pfY29tcHJlc3Moc3RkaW4sIGZpbGUpOwotICAgICAgICAgIH0KLSsgI2VuZGlmCi0gICAgICB9IGVsc2UgewotICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgaWYgKHVuY29tcHIpIHsKLSoqKioqKioqKioqKioqKgotKioqIDMxOCwzMjAgKioqKgotLS0tIDQxOSw0NTcgLS0tLQotICAgICAgZXhpdCgwKTsKLSAgICAgIHJldHVybiAwOyAvKiB0byBhdm9pZCB3YXJuaW5nICovCi0gIH0KLSsgCi0rICNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rIGludCBXSU5BUEkgV2luTWFpbihISU5TVEFOQ0UgaEluc3QsIEhJTlNUQU5DRSBoUHJldkluc3QsIExQV1NUUiBscHN6Q21kTGluZSwgaW50IG5DbWRTaG93KQotKyB7Ci0rICAgICAjZGVmaW5lIFNJWkVfQVJHViAgICgzMikKLSsgICAgIGludCBhcmdjOwotKyAgICAgY2hhciAqYXJndltTSVpFX0FSR1ZdOwotKyAgICAgaW50IHNpemU7Ci0rICAgICBjaGFyICpidWZmOwotKyAgICAgY2hhciAqYXJncDsKLSsgCi0rICAgICBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGxwc3pDbWRMaW5lLCAtMSwgTlVMTCwgMCwgTlVMTCwgTlVMTCk7Ci0rICAgICBidWZmID0gKGNoYXIgKiltYWxsb2Moc2l6ZSk7Ci0rICAgICBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGxwc3pDbWRMaW5lLCAtMSwgYnVmZiwgc2l6ZSwgTlVMTCwgTlVMTCk7Ci0rICAgICBhcmdwID0gYnVmZjsKLSsgICAgIGFyZ2MgPSAwOwotKyAgICAgYXJndlthcmdjKytdID0gIm1pbmlnemlwLmV4ZSI7Ci0rICAgICBpZiAoKmFyZ3ApIHsKLSsgICAgICAgICBhcmd2W2FyZ2MrK10gPSBhcmdwOwotKyAgICAgICAgIHdoaWxlICgqYXJncCkgewotKyAgICAgICAgICAgICBpZiAoKmFyZ3AgPT0gJyAnKSB7Ci0rICAgICAgICAgICAgICAgICAqYXJncCsrID0gJ1wwJzsKLSsgICAgICAgICAgICAgICAgIHdoaWxlICgqYXJncCAmJiAqYXJncCA9PSAnICcpIHsKLSsgICAgICAgICAgICAgICAgICAgICBhcmdwKys7Ci0rICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICBpZiAoKmFyZ3AgJiYgYXJnYyA8IFNJWkVfQVJHVikgewotKyAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbYXJnYysrXSA9IGFyZ3A7Ci0rICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICBhcmdwKys7Ci0rICAgICAgICAgICAgIH0KLSsgICAgICAgICB9Ci0rICAgICB9Ci0rICAgICByZXR1cm4gbWFpbihhcmdjLCBhcmd2KTsKLSsgfQotKyAjZW5kaWYKLSoqKiB6bGliMTEzL2V4YW1wbGUuYwlTYXQgSnVsICA4IDEzOjU5OjQ5IDIwMDAKLS0tLSB6bGlid2NlL2V4YW1wbGUuYwlTYXQgSnVsICA4IDEzOjU4OjI5IDIwMDAKLSoqKioqKioqKioqKioqKgotKioqIDEsMTEgKioqKgotLS0tIDEsMTkgLS0tLQotICAvKiBleGFtcGxlLmMgLS0gdXNhZ2UgZXhhbXBsZSBvZiB0aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gICAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEplYW4tbG91cCBHYWlsbHkuCi0rICAqIENvcHlyaWdodCAoQykgMjAwMCAgICAgIFRlbmlrIENvLixMdGQuCi0gICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmggCi0gICAqLwotICAKLSAgLyogQCgjKSAkSWQkICovCi0gIAotKyAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotKyAjaWYgX1dJTjMyX1dDRSA8IDIxMQotKyAjZXJyb3IgKGZ8dylwcmludGYgZnVuY3Rpb25zIGlzIG5vdCBzdXBwb3J0IG9sZCBXaW5kb3dzQ0UuCi0rICNlbmRpZgotKyAjaW5jbHVkZSA8d2luZG93cy5oPgotKyAjZWxzZQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSsgI2VuZGlmCi0gICNpbmNsdWRlICJ6bGliLmgiCi0gIAotICAjaWZkZWYgU1REQwotKioqKioqKioqKioqKioqCi0qKiogMjEsMjYgKioqKgotLS0tIDI5LDQzIC0tLS0KLSAgIyAgZGVmaW5lIFRFU1RGSUxFICJmb28uZ3oiCi0gICNlbmRpZgotICAKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgI2RlZmluZSBjYWxsb2MoeCx5KSBtYWxsb2MoKHgpKih5KSkKLSsgI3VuZGVmICBzdGRlcnIKLSsgI2RlZmluZSBzdGRlcnIgIHN0ZG91dAotKyAjZGVmaW5lIEZfTlVMTCAgSU5WQUxJRF9IQU5ETEVfVkFMVUUKLSsgI2Vsc2UKLSsgI2RlZmluZSBGX05VTEwgIE5VTEwKLSsgI2VuZGlmCi0rIAotICAjZGVmaW5lIENIRUNLX0VSUihlcnIsIG1zZykgeyBcCi0gICAgICBpZiAoZXJyICE9IFpfT0spIHsgXAotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZXJyb3I6ICVkXG4iLCBtc2csIGVycik7IFwKLSoqKioqKioqKioqKioqKgotKioqIDM3LDU4ICoqKioKLSAgdUxvbmcgZGljdElkOyAvKiBBZGxlcjMyIHZhbHVlIG9mIHRoZSBkaWN0aW9uYXJ5ICovCi0gIAotICB2b2lkIHRlc3RfY29tcHJlc3MgICAgICBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAJCSAgICAgICAgICAgIEJ5dGUgKnVuY29tcHIsIHVMb25nIHVuY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2d6aW8gICAgICAgICAgT0YoKGNvbnN0IGNoYXIgKm91dCwgY29uc3QgY2hhciAqaW4sIAotISAJCSAgICAgICAgICAgIEJ5dGUgKnVuY29tcHIsIGludCB1bmNvbXByTGVuKSk7Ci0gIHZvaWQgdGVzdF9kZWZsYXRlICAgICAgIE9GKChCeXRlICpjb21wciwgdUxvbmcgY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2luZmxhdGUgICAgICAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyBjb21wckxlbiwKLSEgCQkgICAgICAgICAgICBCeXRlICp1bmNvbXByLCB1TG9uZyB1bmNvbXByTGVuKSk7Ci0gIHZvaWQgdGVzdF9sYXJnZV9kZWZsYXRlIE9GKChCeXRlICpjb21wciwgdUxvbmcgY29tcHJMZW4sCi0hIAkJICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgdUxvbmcgdW5jb21wckxlbikpOwotICB2b2lkIHRlc3RfbGFyZ2VfaW5mbGF0ZSBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAJCSAgICAgICAgICAgIEJ5dGUgKnVuY29tcHIsIHVMb25nIHVuY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2ZsdXNoICAgICAgICAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyAqY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X3N5bmMgICAgICAgICAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyBjb21wckxlbiwKLSEgCQkgICAgICAgICAgICBCeXRlICp1bmNvbXByLCB1TG9uZyB1bmNvbXByTGVuKSk7Ci0gIHZvaWQgdGVzdF9kaWN0X2RlZmxhdGUgIE9GKChCeXRlICpjb21wciwgdUxvbmcgY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2RpY3RfaW5mbGF0ZSAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyBjb21wckxlbiwKLSEgCQkgICAgICAgICAgICBCeXRlICp1bmNvbXByLCB1TG9uZyB1bmNvbXByTGVuKSk7Ci0gIGludCAgbWFpbiAgICAgICAgICAgICAgIE9GKChpbnQgYXJnYywgY2hhciAqYXJndltdKSk7Ci0gIAotICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSA1NCw3NSAtLS0tCi0gIHVMb25nIGRpY3RJZDsgLyogQWRsZXIzMiB2YWx1ZSBvZiB0aGUgZGljdGlvbmFyeSAqLwotICAKLSAgdm9pZCB0ZXN0X2NvbXByZXNzICAgICAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyBjb21wckxlbiwKLSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGUgKnVuY29tcHIsIHVMb25nIHVuY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2d6aW8gICAgICAgICAgT0YoKGNvbnN0IGNoYXIgKm91dCwgY29uc3QgY2hhciAqaW4sIAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgaW50IHVuY29tcHJMZW4pKTsKLSAgdm9pZCB0ZXN0X2RlZmxhdGUgICAgICAgT0YoKEJ5dGUgKmNvbXByLCB1TG9uZyBjb21wckxlbikpOwotICB2b2lkIHRlc3RfaW5mbGF0ZSAgICAgICBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgdUxvbmcgdW5jb21wckxlbikpOwotICB2b2lkIHRlc3RfbGFyZ2VfZGVmbGF0ZSBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgdUxvbmcgdW5jb21wckxlbikpOwotICB2b2lkIHRlc3RfbGFyZ2VfaW5mbGF0ZSBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgdUxvbmcgdW5jb21wckxlbikpOwotICB2b2lkIHRlc3RfZmx1c2ggICAgICAgICBPRigoQnl0ZSAqY29tcHIsIHVMb25nICpjb21wckxlbikpOwotICB2b2lkIHRlc3Rfc3luYyAgICAgICAgICBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuLAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZSAqdW5jb21wciwgdUxvbmcgdW5jb21wckxlbikpOwotICB2b2lkIHRlc3RfZGljdF9kZWZsYXRlICBPRigoQnl0ZSAqY29tcHIsIHVMb25nIGNvbXByTGVuKSk7Ci0gIHZvaWQgdGVzdF9kaWN0X2luZmxhdGUgIE9GKChCeXRlICpjb21wciwgdUxvbmcgY29tcHJMZW4sCi0hICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlICp1bmNvbXByLCB1TG9uZyB1bmNvbXByTGVuKSk7Ci0gIGludCAgbWFpbiAgICAgICAgICAgICAgIE9GKChpbnQgYXJnYywgY2hhciAqYXJndltdKSk7Ci0gIAotICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSoqKioqKioqKioqKioqKgotKioqIDc1LDgxICoqKioKLSAgCi0gICAgICBpZiAoc3RyY21wKChjaGFyKil1bmNvbXByLCBoZWxsbykpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCB1bmNvbXByZXNzXG4iKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigidW5jb21wcmVzcygpOiAlc1xuIiwgKGNoYXIgKil1bmNvbXByKTsKLSAgICAgIH0KLS0tLSA5Miw5OCAtLS0tCi0gIAotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8pKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJiYWQgdW5jb21wcmVzc1xuIik7Ci0hICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcHJpbnRmKCJ1bmNvbXByZXNzKCk6ICVzXG4iLCAoY2hhciAqKXVuY29tcHIpOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogOTYsMTAyICoqKioKLSAgICAgIHpfb2ZmX3QgcG9zOwotICAKLSAgICAgIGZpbGUgPSBnem9wZW4ob3V0LCAid2IiKTsKLSEgICAgIGlmIChmaWxlID09IE5VTEwpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6b3BlbiBlcnJvclxuIik7Ci0gICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLS0tLSAxMTMsMTE5IC0tLS0KLSAgICAgIHpfb2ZmX3QgcG9zOwotICAKLSAgICAgIGZpbGUgPSBnem9wZW4ob3V0LCAid2IiKTsKLSEgICAgIGlmIChmaWxlID09IEZfTlVMTCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ3pvcGVuIGVycm9yXG4iKTsKLSAgICAgICAgICBleGl0KDEpOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogMTAzLDExOSAqKioqCi0gICAgICBnenB1dGMoZmlsZSwgJ2gnKTsKLSAgICAgIGlmIChnenB1dHMoZmlsZSwgImVsbG8iKSAhPSA0KSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJnenB1dHMgZXJyOiAlc1xuIiwgZ3plcnJvcihmaWxlLCAmZXJyKSk7Ci0hIAlleGl0KDEpOwotICAgICAgfQotICAgICAgaWYgKGd6cHJpbnRmKGZpbGUsICIsICVzISIsICJoZWxsbyIpICE9IDgpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6cHJpbnRmIGVycjogJXNcbiIsIGd6ZXJyb3IoZmlsZSwgJmVycikpOwotISAJZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGd6c2VlayhmaWxlLCAxTCwgU0VFS19DVVIpOyAvKiBhZGQgb25lIHplcm8gYnl0ZSAqLwotICAgICAgZ3pjbG9zZShmaWxlKTsKLSAgCi0gICAgICBmaWxlID0gZ3pvcGVuKGluLCAicmIiKTsKLSEgICAgIGlmIChmaWxlID09IE5VTEwpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6b3BlbiBlcnJvclxuIik7Ci0gICAgICB9Ci0gICAgICBzdHJjcHkoKGNoYXIqKXVuY29tcHIsICJnYXJiYWdlIik7Ci0tLS0gMTIwLDEzNiAtLS0tCi0gICAgICBnenB1dGMoZmlsZSwgJ2gnKTsKLSAgICAgIGlmIChnenB1dHMoZmlsZSwgImVsbG8iKSAhPSA0KSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJnenB1dHMgZXJyOiAlc1xuIiwgZ3plcnJvcihmaWxlLCAmZXJyKSk7Ci0hICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGlmIChnenByaW50ZihmaWxlLCAiLCAlcyEiLCAiaGVsbG8iKSAhPSA4KSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJnenByaW50ZiBlcnI6ICVzXG4iLCBnemVycm9yKGZpbGUsICZlcnIpKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgZ3pzZWVrKGZpbGUsIDFMLCBTRUVLX0NVUik7IC8qIGFkZCBvbmUgemVybyBieXRlICovCi0gICAgICBnemNsb3NlKGZpbGUpOwotICAKLSAgICAgIGZpbGUgPSBnem9wZW4oaW4sICJyYiIpOwotISAgICAgaWYgKGZpbGUgPT0gRl9OVUxMKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJnem9wZW4gZXJyb3JcbiIpOwotICAgICAgfQotICAgICAgc3RyY3B5KChjaGFyKil1bmNvbXByLCAiZ2FyYmFnZSIpOwotKioqKioqKioqKioqKioqCi0qKiogMTIxLDEzMSAqKioqCi0gICAgICB1bmNvbXByTGVuID0gZ3pyZWFkKGZpbGUsIHVuY29tcHIsICh1bnNpZ25lZCl1bmNvbXByTGVuKTsKLSAgICAgIGlmICh1bmNvbXByTGVuICE9IGxlbikgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ3pyZWFkIGVycjogJXNcbiIsIGd6ZXJyb3IoZmlsZSwgJmVycikpOwotISAJZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGlmIChzdHJjbXAoKGNoYXIqKXVuY29tcHIsIGhlbGxvKSkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiYmFkIGd6cmVhZDogJXNcbiIsIChjaGFyKil1bmNvbXByKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigiZ3pyZWFkKCk6ICVzXG4iLCAoY2hhciAqKXVuY29tcHIpOwotICAgICAgfQotLS0tIDEzOCwxNDggLS0tLQotICAgICAgdW5jb21wckxlbiA9IGd6cmVhZChmaWxlLCB1bmNvbXByLCAodW5zaWduZWQpdW5jb21wckxlbik7Ci0gICAgICBpZiAodW5jb21wckxlbiAhPSBsZW4pIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6cmVhZCBlcnI6ICVzXG4iLCBnemVycm9yKGZpbGUsICZlcnIpKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8pKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJiYWQgZ3pyZWFkOiAlc1xuIiwgKGNoYXIqKXVuY29tcHIpOwotISAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigiZ3pyZWFkKCk6ICVzXG4iLCAoY2hhciAqKXVuY29tcHIpOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogMTMyLDE0NSAqKioqCi0gIAotICAgICAgcG9zID0gZ3pzZWVrKGZpbGUsIC04TCwgU0VFS19DVVIpOwotICAgICAgaWYgKHBvcyAhPSA2IHx8IGd6dGVsbChmaWxlKSAhPSBwb3MpIHsKLSEgCWZwcmludGYoc3RkZXJyLCAiZ3pzZWVrIGVycm9yLCBwb3M9JWxkLCBnenRlbGw9JWxkXG4iLAotISAJCShsb25nKXBvcywgKGxvbmcpZ3p0ZWxsKGZpbGUpKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9Ci0gIAotICAgICAgaWYgKGd6Z2V0YyhmaWxlKSAhPSAnICcpIHsKLSEgCWZwcmludGYoc3RkZXJyLCAiZ3pnZXRjIGVycm9yXG4iKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9Ci0gIAotICAgICAgZ3pnZXRzKGZpbGUsIChjaGFyKil1bmNvbXByLCB1bmNvbXByTGVuKTsKLS0tLSAxNDksMTYyIC0tLS0KLSAgCi0gICAgICBwb3MgPSBnenNlZWsoZmlsZSwgLThMLCBTRUVLX0NVUik7Ci0gICAgICBpZiAocG9zICE9IDYgfHwgZ3p0ZWxsKGZpbGUpICE9IHBvcykgewotISAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ3pzZWVrIGVycm9yLCBwb3M9JWxkLCBnenRlbGw9JWxkXG4iLAotISAgICAgICAgICAgICAgICAgKGxvbmcpcG9zLCAobG9uZylnenRlbGwoZmlsZSkpOwotISAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9Ci0gIAotICAgICAgaWYgKGd6Z2V0YyhmaWxlKSAhPSAnICcpIHsKLSEgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6Z2V0YyBlcnJvclxuIik7Ci0hICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSAgCi0gICAgICBnemdldHMoZmlsZSwgKGNoYXIqKXVuY29tcHIsIHVuY29tcHJMZW4pOwotKioqKioqKioqKioqKioqCi0qKiogMTQ2LDE1NiAqKioqCi0gICAgICB1bmNvbXByTGVuID0gc3RybGVuKChjaGFyKil1bmNvbXByKTsKLSAgICAgIGlmICh1bmNvbXByTGVuICE9IDYpIHsgLyogImhlbGxvISIgKi8KLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImd6Z2V0cyBlcnIgYWZ0ZXIgZ3pzZWVrOiAlc1xuIiwgZ3plcnJvcihmaWxlLCAmZXJyKSk7Ci0hIAlleGl0KDEpOwotICAgICAgfQotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8rNykpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBnemdldHMgYWZ0ZXIgZ3pzZWVrXG4iKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigiZ3pnZXRzKCkgYWZ0ZXIgZ3pzZWVrOiAlc1xuIiwgKGNoYXIgKil1bmNvbXByKTsKLSAgICAgIH0KLS0tLSAxNjMsMTczIC0tLS0KLSAgICAgIHVuY29tcHJMZW4gPSBzdHJsZW4oKGNoYXIqKXVuY29tcHIpOwotICAgICAgaWYgKHVuY29tcHJMZW4gIT0gNikgeyAvKiAiaGVsbG8hIiAqLwotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ3pnZXRzIGVyciBhZnRlciBnenNlZWs6ICVzXG4iLCBnemVycm9yKGZpbGUsICZlcnIpKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8rNykpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBnemdldHMgYWZ0ZXIgZ3pzZWVrXG4iKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwcmludGYoImd6Z2V0cygpIGFmdGVyIGd6c2VlazogJXNcbiIsIChjaGFyICopdW5jb21wcik7Ci0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiAyMzEsMjM3ICoqKioKLSAgCi0gICAgICBpZiAoc3RyY21wKChjaGFyKil1bmNvbXByLCBoZWxsbykpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBpbmZsYXRlXG4iKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigiaW5mbGF0ZSgpOiAlc1xuIiwgKGNoYXIgKil1bmNvbXByKTsKLSAgICAgIH0KLS0tLSAyNDgsMjU0IC0tLS0KLSAgCi0gICAgICBpZiAoc3RyY21wKChjaGFyKil1bmNvbXByLCBoZWxsbykpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBpbmZsYXRlXG4iKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwcmludGYoImluZmxhdGUoKTogJXNcbiIsIChjaGFyICopdW5jb21wcik7Ci0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiAyNjYsMjcyICoqKioKLSAgICAgIENIRUNLX0VSUihlcnIsICJkZWZsYXRlIik7Ci0gICAgICBpZiAoY19zdHJlYW0uYXZhaWxfaW4gIT0gMCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVmbGF0ZSBub3QgZ3JlZWR5XG4iKTsKLSEgCWV4aXQoMSk7Ci0gICAgICB9Ci0gIAotICAgICAgLyogRmVlZCBpbiBhbHJlYWR5IGNvbXByZXNzZWQgZGF0YSBhbmQgc3dpdGNoIHRvIG5vIGNvbXByZXNzaW9uOiAqLwotLS0tIDI4MywyODkgLS0tLQotICAgICAgQ0hFQ0tfRVJSKGVyciwgImRlZmxhdGUiKTsKLSAgICAgIGlmIChjX3N0cmVhbS5hdmFpbF9pbiAhPSAwKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJkZWZsYXRlIG5vdCBncmVlZHlcbiIpOwotISAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9Ci0gIAotICAgICAgLyogRmVlZCBpbiBhbHJlYWR5IGNvbXByZXNzZWQgZGF0YSBhbmQgc3dpdGNoIHRvIG5vIGNvbXByZXNzaW9uOiAqLwotKioqKioqKioqKioqKioqCi0qKiogMjg2LDI5MiAqKioqCi0gICAgICBlcnIgPSBkZWZsYXRlKCZjX3N0cmVhbSwgWl9GSU5JU0gpOwotICAgICAgaWYgKGVyciAhPSBaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImRlZmxhdGUgc2hvdWxkIHJlcG9ydCBaX1NUUkVBTV9FTkRcbiIpOwotISAJZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGVyciA9IGRlZmxhdGVFbmQoJmNfc3RyZWFtKTsKLSAgICAgIENIRUNLX0VSUihlcnIsICJkZWZsYXRlRW5kIik7Ci0tLS0gMzAzLDMwOSAtLS0tCi0gICAgICBlcnIgPSBkZWZsYXRlKCZjX3N0cmVhbSwgWl9GSU5JU0gpOwotICAgICAgaWYgKGVyciAhPSBaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImRlZmxhdGUgc2hvdWxkIHJlcG9ydCBaX1NUUkVBTV9FTkRcbiIpOwotISAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9Ci0gICAgICBlcnIgPSBkZWZsYXRlRW5kKCZjX3N0cmVhbSk7Ci0gICAgICBDSEVDS19FUlIoZXJyLCAiZGVmbGF0ZUVuZCIpOwotKioqKioqKioqKioqKioqCi0qKiogMzE2LDMyMiAqKioqCi0gIAotICAgICAgZm9yICg7OykgewotICAgICAgICAgIGRfc3RyZWFtLm5leHRfb3V0ID0gdW5jb21wcjsgICAgICAgICAgICAvKiBkaXNjYXJkIHRoZSBvdXRwdXQgKi8KLSEgCWRfc3RyZWFtLmF2YWlsX291dCA9ICh1SW50KXVuY29tcHJMZW47Ci0gICAgICAgICAgZXJyID0gaW5mbGF0ZSgmZF9zdHJlYW0sIFpfTk9fRkxVU0gpOwotICAgICAgICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRU5EKSBicmVhazsKLSAgICAgICAgICBDSEVDS19FUlIoZXJyLCAibGFyZ2UgaW5mbGF0ZSIpOwotLS0tIDMzMywzMzkgLS0tLQotICAKLSAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICBkX3N0cmVhbS5uZXh0X291dCA9IHVuY29tcHI7ICAgICAgICAgICAgLyogZGlzY2FyZCB0aGUgb3V0cHV0ICovCi0hICAgICAgICAgZF9zdHJlYW0uYXZhaWxfb3V0ID0gKHVJbnQpdW5jb21wckxlbjsKLSAgICAgICAgICBlcnIgPSBpbmZsYXRlKCZkX3N0cmVhbSwgWl9OT19GTFVTSCk7Ci0gICAgICAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQpIGJyZWFrOwotICAgICAgICAgIENIRUNLX0VSUihlcnIsICJsYXJnZSBpbmZsYXRlIik7Ci0qKioqKioqKioqKioqKioKLSoqKiAzMjcsMzMzICoqKioKLSAgCi0gICAgICBpZiAoZF9zdHJlYW0udG90YWxfb3V0ICE9IDIqdW5jb21wckxlbiArIGNvbXByTGVuLzIpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJhZCBsYXJnZSBpbmZsYXRlOiAlbGRcbiIsIGRfc3RyZWFtLnRvdGFsX291dCk7Ci0hIAlleGl0KDEpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwcmludGYoImxhcmdlX2luZmxhdGUoKTogT0tcbiIpOwotICAgICAgfQotLS0tIDM0NCwzNTAgLS0tLQotICAKLSAgICAgIGlmIChkX3N0cmVhbS50b3RhbF9vdXQgIT0gMip1bmNvbXByTGVuICsgY29tcHJMZW4vMikgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiYmFkIGxhcmdlIGluZmxhdGU6ICVsZFxuIiwgZF9zdHJlYW0udG90YWxfb3V0KTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwcmludGYoImxhcmdlX2luZmxhdGUoKTogT0tcbiIpOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogNDA3LDQxMyAqKioqCi0gICAgICBpZiAoZXJyICE9IFpfREFUQV9FUlJPUikgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW5mbGF0ZSBzaG91bGQgcmVwb3J0IERBVEFfRVJST1JcbiIpOwotICAgICAgICAgIC8qIEJlY2F1c2Ugb2YgaW5jb3JyZWN0IGFkbGVyMzIgKi8KLSEgCWV4aXQoMSk7Ci0gICAgICB9Ci0gICAgICBlcnIgPSBpbmZsYXRlRW5kKCZkX3N0cmVhbSk7Ci0gICAgICBDSEVDS19FUlIoZXJyLCAiaW5mbGF0ZUVuZCIpOwotLS0tIDQyNCw0MzAgLS0tLQotICAgICAgaWYgKGVyciAhPSBaX0RBVEFfRVJST1IpIHsKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImluZmxhdGUgc2hvdWxkIHJlcG9ydCBEQVRBX0VSUk9SXG4iKTsKLSAgICAgICAgICAvKiBCZWNhdXNlIG9mIGluY29ycmVjdCBhZGxlcjMyICovCi0hICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGVyciA9IGluZmxhdGVFbmQoJmRfc3RyZWFtKTsKLSAgICAgIENIRUNLX0VSUihlcnIsICJpbmZsYXRlRW5kIik7Ci0qKioqKioqKioqKioqKioKLSoqKiA0MzMsNDM5ICoqKioKLSAgICAgIENIRUNLX0VSUihlcnIsICJkZWZsYXRlSW5pdCIpOwotICAKLSAgICAgIGVyciA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5KCZjX3N0cmVhbSwKLSEgCQkJICAgICAgIChjb25zdCBCeXRlZiopZGljdGlvbmFyeSwgc2l6ZW9mKGRpY3Rpb25hcnkpKTsKLSAgICAgIENIRUNLX0VSUihlcnIsICJkZWZsYXRlU2V0RGljdGlvbmFyeSIpOwotICAKLSAgICAgIGRpY3RJZCA9IGNfc3RyZWFtLmFkbGVyOwotLS0tIDQ1MCw0NTYgLS0tLQotICAgICAgQ0hFQ0tfRVJSKGVyciwgImRlZmxhdGVJbml0Iik7Ci0gIAotICAgICAgZXJyID0gZGVmbGF0ZVNldERpY3Rpb25hcnkoJmNfc3RyZWFtLAotISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IEJ5dGVmKilkaWN0aW9uYXJ5LCBzaXplb2YoZGljdGlvbmFyeSkpOwotICAgICAgQ0hFQ0tfRVJSKGVyciwgImRlZmxhdGVTZXREaWN0aW9uYXJ5Iik7Ci0gIAotICAgICAgZGljdElkID0gY19zdHJlYW0uYWRsZXI7Ci0qKioqKioqKioqKioqKioKLSoqKiA0NDYsNDUyICoqKioKLSAgICAgIGVyciA9IGRlZmxhdGUoJmNfc3RyZWFtLCBaX0ZJTklTSCk7Ci0gICAgICBpZiAoZXJyICE9IFpfU1RSRUFNX0VORCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVmbGF0ZSBzaG91bGQgcmVwb3J0IFpfU1RSRUFNX0VORFxuIik7Ci0hIAlleGl0KDEpOwotICAgICAgfQotICAgICAgZXJyID0gZGVmbGF0ZUVuZCgmY19zdHJlYW0pOwotICAgICAgQ0hFQ0tfRVJSKGVyciwgImRlZmxhdGVFbmQiKTsKLS0tLSA0NjMsNDY5IC0tLS0KLSAgICAgIGVyciA9IGRlZmxhdGUoJmNfc3RyZWFtLCBaX0ZJTklTSCk7Ci0gICAgICBpZiAoZXJyICE9IFpfU1RSRUFNX0VORCkgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVmbGF0ZSBzaG91bGQgcmVwb3J0IFpfU1RSRUFNX0VORFxuIik7Ci0hICAgICAgICAgZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIGVyciA9IGRlZmxhdGVFbmQoJmNfc3RyZWFtKTsKLSAgICAgIENIRUNLX0VSUihlcnIsICJkZWZsYXRlRW5kIik7Ci0qKioqKioqKioqKioqKioKLSoqKiA0ODAsNDkzICoqKioKLSAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICBlcnIgPSBpbmZsYXRlKCZkX3N0cmVhbSwgWl9OT19GTFVTSCk7Ci0gICAgICAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQpIGJyZWFrOwotISAJaWYgKGVyciA9PSBaX05FRURfRElDVCkgewotISAJICAgIGlmIChkX3N0cmVhbS5hZGxlciAhPSBkaWN0SWQpIHsKLSEgCQlmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgZGljdGlvbmFyeSIpOwotISAJCWV4aXQoMSk7Ci0hIAkgICAgfQotISAJICAgIGVyciA9IGluZmxhdGVTZXREaWN0aW9uYXJ5KCZkX3N0cmVhbSwgKGNvbnN0IEJ5dGVmKilkaWN0aW9uYXJ5LAotISAJCQkJICAgICAgIHNpemVvZihkaWN0aW9uYXJ5KSk7Ci0hIAl9Ci0gICAgICAgICAgQ0hFQ0tfRVJSKGVyciwgImluZmxhdGUgd2l0aCBkaWN0Iik7Ci0gICAgICB9Ci0gIAotLS0tIDQ5Nyw1MTAgLS0tLQotICAgICAgZm9yICg7OykgewotICAgICAgICAgIGVyciA9IGluZmxhdGUoJmRfc3RyZWFtLCBaX05PX0ZMVVNIKTsKLSAgICAgICAgICBpZiAoZXJyID09IFpfU1RSRUFNX0VORCkgYnJlYWs7Ci0hICAgICAgICAgaWYgKGVyciA9PSBaX05FRURfRElDVCkgewotISAgICAgICAgICAgICBpZiAoZF9zdHJlYW0uYWRsZXIgIT0gZGljdElkKSB7Ci0hICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgZGljdGlvbmFyeSIpOwotISAgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSEgICAgICAgICAgICAgfQotISAgICAgICAgICAgICBlcnIgPSBpbmZsYXRlU2V0RGljdGlvbmFyeSgmZF9zdHJlYW0sIChjb25zdCBCeXRlZiopZGljdGlvbmFyeSwKLSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRpY3Rpb25hcnkpKTsKLSEgICAgICAgICB9Ci0gICAgICAgICAgQ0hFQ0tfRVJSKGVyciwgImluZmxhdGUgd2l0aCBkaWN0Iik7Ci0gICAgICB9Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNDk2LDUwMiAqKioqCi0gIAotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8pKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJiYWQgaW5mbGF0ZSB3aXRoIGRpY3RcbiIpOwotISAJZXhpdCgxKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcHJpbnRmKCJpbmZsYXRlIHdpdGggZGljdGlvbmFyeTogJXNcbiIsIChjaGFyICopdW5jb21wcik7Ci0gICAgICB9Ci0tLS0gNTEzLDUxOSAtLS0tCi0gIAotICAgICAgaWYgKHN0cmNtcCgoY2hhciopdW5jb21wciwgaGVsbG8pKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRlcnIsICJiYWQgaW5mbGF0ZSB3aXRoIGRpY3RcbiIpOwotISAgICAgICAgIGV4aXQoMSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAgIHByaW50ZigiaW5mbGF0ZSB3aXRoIGRpY3Rpb25hcnk6ICVzXG4iLCAoY2hhciAqKXVuY29tcHIpOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogNTMwLDU0MiAqKioqCi0gICAgICAgKi8KLSAgICAgIGlmIChjb21wciA9PSBaX05VTEwgfHwgdW5jb21wciA9PSBaX05VTEwpIHsKLSAgICAgICAgICBwcmludGYoIm91dCBvZiBtZW1vcnlcbiIpOwotISAJZXhpdCgxKTsKLSAgICAgIH0KLSAgICAgIHRlc3RfY29tcHJlc3MoY29tcHIsIGNvbXByTGVuLCB1bmNvbXByLCB1bmNvbXByTGVuKTsKLSAgCi0gICAgICB0ZXN0X2d6aW8oKGFyZ2MgPiAxID8gYXJndlsxXSA6IFRFU1RGSUxFKSwKLSAgICAgICAgICAgICAgICAoYXJnYyA+IDIgPyBhcmd2WzJdIDogVEVTVEZJTEUpLAotISAJICAgICAgdW5jb21wciwgKGludCl1bmNvbXByTGVuKTsKLSAgCi0gICAgICB0ZXN0X2RlZmxhdGUoY29tcHIsIGNvbXByTGVuKTsKLSAgICAgIHRlc3RfaW5mbGF0ZShjb21wciwgY29tcHJMZW4sIHVuY29tcHIsIHVuY29tcHJMZW4pOwotLS0tIDU0Nyw1NTkgLS0tLQotICAgICAgICovCi0gICAgICBpZiAoY29tcHIgPT0gWl9OVUxMIHx8IHVuY29tcHIgPT0gWl9OVUxMKSB7Ci0gICAgICAgICAgcHJpbnRmKCJvdXQgb2YgbWVtb3J5XG4iKTsKLSEgICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgICAgdGVzdF9jb21wcmVzcyhjb21wciwgY29tcHJMZW4sIHVuY29tcHIsIHVuY29tcHJMZW4pOwotICAKLSAgICAgIHRlc3RfZ3ppbygoYXJnYyA+IDEgPyBhcmd2WzFdIDogVEVTVEZJTEUpLAotICAgICAgICAgICAgICAgIChhcmdjID4gMiA/IGFyZ3ZbMl0gOiBURVNURklMRSksCi0hICAgICAgICAgICAgICAgdW5jb21wciwgKGludCl1bmNvbXByTGVuKTsKLSAgCi0gICAgICB0ZXN0X2RlZmxhdGUoY29tcHIsIGNvbXByTGVuKTsKLSAgICAgIHRlc3RfaW5mbGF0ZShjb21wciwgY29tcHJMZW4sIHVuY29tcHIsIHVuY29tcHJMZW4pOwotKioqKioqKioqKioqKioqCi0qKiogNTU0LDU1NiAqKioqCi0tLS0gNTcxLDYwOSAtLS0tCi0gICAgICBleGl0KDApOwotICAgICAgcmV0dXJuIDA7IC8qIHRvIGF2b2lkIHdhcm5pbmcgKi8KLSAgfQotKyAKLSsgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSsgaW50IFdJTkFQSSBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdCwgSElOU1RBTkNFIGhQcmV2SW5zdCwgTFBXU1RSIGxwc3pDbWRMaW5lLCBpbnQgbkNtZFNob3cpCi0rIHsKLSsgICAgICNkZWZpbmUgU0laRV9BUkdWICAgKDMyKQotKyAgICAgaW50IGFyZ2M7Ci0rICAgICBjaGFyICphcmd2W1NJWkVfQVJHVl07Ci0rICAgICBpbnQgc2l6ZTsKLSsgICAgIGNoYXIgKmJ1ZmY7Ci0rICAgICBjaGFyICphcmdwOwotKyAKLSsgICAgIHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgbHBzekNtZExpbmUsIC0xLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKLSsgICAgIGJ1ZmYgPSAoY2hhciAqKW1hbGxvYyhzaXplKTsKLSsgICAgIHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgbHBzekNtZExpbmUsIC0xLCBidWZmLCBzaXplLCBOVUxMLCBOVUxMKTsKLSsgICAgIGFyZ3AgPSBidWZmOwotKyAgICAgYXJnYyA9IDA7Ci0rICAgICBhcmd2W2FyZ2MrK10gPSAiZXhhbXBsZS5leGUiOwotKyAgICAgaWYgKCphcmdwKSB7Ci0rICAgICAgICAgYXJndlthcmdjKytdID0gYXJncDsKLSsgICAgICAgICB3aGlsZSAoKmFyZ3ApIHsKLSsgICAgICAgICAgICAgaWYgKCphcmdwID09ICcgJykgewotKyAgICAgICAgICAgICAgICAgKmFyZ3ArKyA9ICdcMCc7Ci0rICAgICAgICAgICAgICAgICB3aGlsZSAoKmFyZ3AgJiYgKmFyZ3AgPT0gJyAnKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgYXJncCsrOwotKyAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgaWYgKCphcmdwICYmIGFyZ2MgPCBTSVpFX0FSR1YpIHsKLSsgICAgICAgICAgICAgICAgICAgICBhcmd2W2FyZ2MrK10gPSBhcmdwOwotKyAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgYXJncCsrOwotKyAgICAgICAgICAgICB9Ci0rICAgICAgICAgfQotKyAgICAgfQotKyAgICAgcmV0dXJuIG1haW4oYXJnYywgYXJndik7Ci0rIH0KLSsgI2VuZGlmCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS96bGliY2UuZGVmIGIvcHJvamVjdHMvd2luY2UvemxpYmNlLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUzNDM3Yy4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS96bGliY2UuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotTElCUkFSWSAgICAgemxpYmNlLmRsbAotCi1FWFBPUlRTCi0gICAgYWRsZXIzMiAgICAgICAgICAgICAgICAgICAgICAgIEAxCi0gICAgY29tcHJlc3MgICAgICAgICAgICAgICAgICAgICAgIEAyCi0gICAgY3JjMzIgICAgICAgICAgICAgICAgICAgICAgICAgIEAzCi0gICAgZGVmbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgIEA0Ci0gICAgZGVmbGF0ZUNvcHkgICAgICAgICAgICAgICAgICAgIEA1Ci0gICAgZGVmbGF0ZUVuZCAgICAgICAgICAgICAgICAgICAgIEA2Ci0gICAgZGVmbGF0ZUluaXQyXyAgICAgICAgICAgICAgICAgIEA3Ci0gICAgZGVmbGF0ZUluaXRfICAgICAgICAgICAgICAgICAgIEA4Ci0gICAgZGVmbGF0ZVBhcmFtcyAgICAgICAgICAgICAgICAgIEA5Ci0gICAgZGVmbGF0ZVJlc2V0ICAgICAgICAgICAgICAgICAgIEAxMAotICAgIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICAgICAgICAgICBAMTEKLSAgICBnemNsb3NlICAgICAgICAgICAgICAgICAgICAgICAgQDEyCi0gICAgZ3pkb3BlbiAgICAgICAgICAgICAgICAgICAgICAgIEAxMwotICAgIGd6ZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICBAMTQKLSAgICBnemZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgQDE1Ci0gICAgZ3pvcGVuICAgICAgICAgICAgICAgICAgICAgICAgIEAxNgotICAgIGd6cmVhZCAgICAgICAgICAgICAgICAgICAgICAgICBAMTcKLSAgICBnendyaXRlICAgICAgICAgICAgICAgICAgICAgICAgQDE4Ci0gICAgaW5mbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgIEAxOQotICAgIGluZmxhdGVFbmQgICAgICAgICAgICAgICAgICAgICBAMjAKLSAgICBpbmZsYXRlSW5pdDJfICAgICAgICAgICAgICAgICAgQDIxCi0gICAgaW5mbGF0ZUluaXRfICAgICAgICAgICAgICAgICAgIEAyMgotICAgIGluZmxhdGVSZXNldCAgICAgICAgICAgICAgICAgICBAMjMKLSAgICBpbmZsYXRlU2V0RGljdGlvbmFyeSAgICAgICAgICAgQDI0Ci0gICAgaW5mbGF0ZVN5bmMgICAgICAgICAgICAgICAgICAgIEAyNQotICAgIHVuY29tcHJlc3MgICAgICAgICAgICAgICAgICAgICBAMjYKLSAgICB6bGliVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgQDI3Ci0gICAgZ3pwcmludGYgICAgICAgICAgICAgICAgICAgICAgIEAyOAotICAgIGd6cHV0YyAgICAgICAgICAgICAgICAgICAgICAgICBAMjkKLSAgICBnemdldGMgICAgICAgICAgICAgICAgICAgICAgICAgQDMwCi0gICAgZ3pzZWVrICAgICAgICAgICAgICAgICAgICAgICAgIEAzMQotICAgIGd6cmV3aW5kICAgICAgICAgICAgICAgICAgICAgICBAMzIKLSAgICBnenRlbGwgICAgICAgICAgICAgICAgICAgICAgICAgQDMzCi0gICAgZ3plb2YgICAgICAgICAgICAgICAgICAgICAgICAgIEAzNAotICAgIGd6c2V0cGFyYW1zICAgICAgICAgICAgICAgICAgICBAMzUKLSAgICB6RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgQDM2Ci0gICAgaW5mbGF0ZVN5bmNQb2ludCAgICAgICAgICAgICAgIEAzNwotICAgIGdldF9jcmNfdGFibGUgICAgICAgICAgICAgICAgICBAMzgKLSAgICBjb21wcmVzczIgICAgICAgICAgICAgICAgICAgICAgQDM5Ci0gICAgZ3pwdXRzICAgICAgICAgICAgICAgICAgICAgICAgIEA0MAotICAgIGd6Z2V0cyAgICAgICAgICAgICAgICAgICAgICAgICBANDEKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3psaWJjZS5kc3AgYi9wcm9qZWN0cy93aW5jZS96bGliY2UuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjc5N2ZmLi4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL3dpbmNlL3psaWJjZS5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwyODMyICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iemxpYmNlIiAtIFBhY2thZ2UgT3duZXI9PDQ+Ci0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCi0jICoqIERPIE5PVCBFRElUICoqCi0KLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgeDg2ZW0pIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDdmMDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgU0gzKSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHg4MTAyCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODQwMgotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSB4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDgzMDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQU0ZQKSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHg4NzAyCi0jIFRBUkdUWVBFICJXaW4zMiAoV0NFIEFSTSkgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODUwMgotIyBUQVJHVFlQRSAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDg2MDIKLSMgVEFSR1RZUEUgIldpbjMyIChXQ0UgTUlQUykgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4ODIwMgotCi1DRkc9emxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZwotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCi0hTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJ6bGliY2UubWFrIi4KLSFNRVNTQUdFIAotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6Ci0hTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJ6bGliY2UubWFrIiBDRkc9InpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0hTUVTU0FHRSAKLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOgotIU1FU1NBR0UgCi0hTUVTU0FHRSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgTUlQUykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBTSDQpIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNIMykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFNIMykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgQVJNKSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCi0hTUVTU0FHRSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTRlApIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKFdDRSBNSVBTRlApIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKFdDRSB4ODZlbSkgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIiAoYmFzZWQgb24gIldpbjMyIChXQ0UgeDg2ZW0pIER5bmFtaWMtTGluayBMaWJyYXJ5IikKLSFNRVNTQUdFICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoV0NFIFBQQykgRHluYW1pYy1MaW5rIExpYnJhcnkiKQotIU1FU1NBR0UgCi0KLSMgQmVnaW4gUHJvamVjdAotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKLSMgUFJPUCBTY2NfUHJvak5hbWUgIiIKLSMgUFJPUCBTY2NfTG9jYWxQYXRoICJIL1BDIFZlci4gMi4wMCIKLSMgUFJPUCBXQ0VfRm9ybWF0VmVyc2lvbiAiNi4wIgotCi0hSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU1JlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIE91dHB1dF9EaXIgIldNSVBTUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTUmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbG1pcHMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9HWC0gL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL1lYIC9RTVJXQ0UgIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvR1gtIC9PMiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiWkxJQl9ETEwiIC9RTVJXQ0UgIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU0RiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRGJnIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQotIyBQUk9QIE91dHB1dF9EaXIgIldNSVBTRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbG1pcHMuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL0dYLSAvWmkgL09kIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJERUJVRyIgL0QgIk1JUFMiIC9EICJfTUlQU18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL1FNUldDRSAgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvUU1SV0NFICAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVNINFJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVNINFJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VTSDRSZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFU0g0UmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1zaGNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvUXNoNCAvTUMgL1czIC9HWC0gL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJTSHgiIC9EICJTSDQiIC9EICJfU0g0XyIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiWkxJQkNFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL1FzaDQgL01DIC9XMyAvR1gtIC9PMiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIlNIeCIgL0QgIlNINCIgL0QgIl9TSDRfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpTSDQgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDREYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDREYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0g0RGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNINERiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FzaDQgL01DIC9XMyAvR1gtIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0g0IiAvRCAiX1NINF8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9Rc2g0IC9NQyAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJTSHgiIC9EICJTSDQiIC9EICJfU0g0XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJaTElCX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNINCIgL2QgIl9TSDRfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0g0IiAvZCAiX1NINF8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0g0IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNSZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0gzUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNIM1JlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0KSAvVzMgL0dYLSAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIlNIeCIgL0QgIlNIMyIgL0QgIl9TSDNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvR1gtIC9PMiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIk5ERUJVRyIgL0QgIlNIeCIgL0QgIlNIMyIgL0QgIl9TSDNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpTSDMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VTSDNEYmciCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VTSDNEYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFU0gzRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRVNIM0RiZyIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9c2hjbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvR1gtIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiU0h4IiAvRCAiU0gzIiAvRCAiX1NIM18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJTSHgiIC9EICJTSDMiIC9EICJfU0gzXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJaTElCX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIlNIeCIgL2QgIlNIMyIgL2QgIl9TSDNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiU0h4IiAvZCAiU0gzIiAvZCAiX1NIM18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6U0gzIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXQ0VBUk1SZWwiCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJXQ0VBUk1SZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAiV0NFQVJNUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTVJlbCIKLSMgUFJPUCBUYXJnZXRfRGlyICIiCi1DUFA9Y2xhcm0uZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NQyAvVzMgL0dYLSAvTzIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIk5ERUJVRyIgL0QgIkFSTSIgL0QgIl9BUk1fIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUMgL1czIC9HWC0gL08yIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiWkxJQl9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJBUk0iIC9kICJfQVJNXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpBUk0gL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb3JlZGxsLmxpYiBjb21tY3RybC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkFSTSAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRUFSTURiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VBUk1EYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFQVJNRGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbGFybS5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01DIC9XMyAvR1gtIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiQVJNIiAvRCAiX0FSTV8iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NQyAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJBUk0iIC9EICJfQVJNXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJaTElCX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgIkFSTSIgL2QgIl9BUk1fIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAiQVJNIiAvZCAiX0FSTV8iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29yZWRsbC5saWIgY29tbWN0cmwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6QVJNIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU0ZQUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNGUFJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXTUlQU0ZQUmVsIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRlBSZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9HWC0gL08yIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJOREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvUU1GV0NFIC9NQyAvVzMgL0dYLSAvTzIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJOREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJNSVBTIiAvZCAiX01JUFNfIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgIlVOSUNPREUiIC9kICJOREVCVUciCi1NVEw9bWlkbC5leGUKLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMgotQlNDMzI9YnNjbWFrZS5leGUKLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwotIyBBREQgQlNDMzIgL25vbG9nbwotTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMAotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJXTUlQU0ZQRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV01JUFNGUERiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXTUlQU0ZQRGJnIgotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIldNSVBTRlBEYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsbWlwcy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1FNRldDRSAvTUMgL1czIC9HWC0gL1ppIC9PZCAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL1lYIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvUU1GV0NFIC9NQyAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJNSVBTIiAvRCAiX01JUFNfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAiTUlQUyIgL2QgIl9NSVBTXyIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIk1JUFMiIC9kICJfTUlQU18iIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6TUlQUyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOk1JUFMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NlJlbCIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VYODZSZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFWDg2UmVsIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01MIC9XMyAvR1gtIC9PMiAvRCAieDg2IiAvRCAiX2kzODZfIiAvRCAiX3g4Nl8iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIk5ERUJVRyIgL0QgImlfMzg2XyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvR3M4MTkyIC9HRiAgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NTCAvVzMgL0dYLSAvTzIgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgIk5ERUJVRyIgL0QgImlfMzg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJaTElCX0RMTCIgL0dzODE5MiAvR0YgIC9jCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvciAvZCAieDg2IiAvZCAiX2kzODZfIiAvZCAiX3g4Nl8iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAieDg2IiAvZCAiX2kzODZfIiAvZCAiX3g4Nl8iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9kbGwgL21hY2hpbmU6SVg4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotIyBBREQgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9kbGwgL21hY2hpbmU6SVg4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVg4NkRiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVg4NkRiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VYODZEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFWDg2RGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01MZCAvVzMgL0dYLSAvWmkgL09kIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiREVCVUciIC9EICJpXzM4Nl8iIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJaTElCQ0VfRVhQT1JUUyIgL0dzODE5MiAvR0YgIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUxkIC9XMyAvR1gtIC9aaSAvT2QgL0kgIi4uXC4uXC4uXHpsaWIiIC9EICJ4ODYiIC9EICJfaTM4Nl8iIC9EICJfeDg2XyIgL0QgIkRFQlVHIiAvRCAiaV8zODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvR3M4MTkyIC9HRiAgL2MKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJ4ODYiIC9kICJfaTM4Nl8iIC9kICJfeDg2XyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiREVCVUciCi0jIEFERCBSU0MgL2wgMHg0MTEgL3IgL2QgIng4NiIgL2QgIl9pMzg2XyIgL2QgIl94ODZfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2Jhc2U6IjB4MDAwMTAwMDAiIC9kbGwgL2RlYnVnIC9tYWNoaW5lOklYODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9iYXNlOiIweDAwMDEwMDAwIiAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJWDg2IC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIng4NmVtUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1SZWwiCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCi0jIFBST1AgT3V0cHV0X0RpciAieDg2ZW1SZWwiCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1SZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUwgL1czIC9HWC0gL08yIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiTkRFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiWkxJQkNFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01MIC9XMyAvR1gtIC9PMiAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiTkRFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIldJTjMyIiAvZCAiU1RSSUNUIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9kICJJTlRFUk5BVElPTkFMIiAvZCAiVVNBIiAvZCAiSU5UTE1TR19DT0RFUEFHRSIgL2QgIk5ERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIldJTjMyIiAvZCAiU1RSSUNUIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9kICJJTlRFUk5BVElPTkFMIiAvZCAiVVNBIiAvZCAiSU5UTE1TR19DT0RFUEFHRSIgL2QgIk5ERUJVRyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9kbGwgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLSMgQUREIExJTkszMiAkKENFeDg2Q29yZWxpYmMpIGNvbW1jdHJsLmxpYiBjb3JlZGxsLmxpYiAvbm9sb2dvIC9zdGFjazoweDEwMDAwLDB4MTAwMCAvZGxsIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC93aW5kb3dzY2U6ZW11bGF0aW9uCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIng4NmVtRGJnIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1EYmciCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCi0jIFBST1AgVXNlX01GQyAwCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCi0jIFBST1AgT3V0cHV0X0RpciAieDg2ZW1EYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2ZW1EYmciCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUxkIC9XMyAvR20gL0dYLSAvWmkgL09kIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiX0RFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiWkxJQkNFX0VYUE9SVFMiIC9ZWCAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01MZCAvVzMgL0dtIC9HWC0gL1ppIC9PZCAvSSAiLi5cLi5cLi5cemxpYiIgL0QgIl9VTklDT0RFIiAvRCAiV0lOMzIiIC9EICJTVFJJQ1QiIC9EICJfV0lOMzJfV0NFX0VNVUxBVElPTiIgL0QgIklOVEVSTkFUSU9OQUwiIC9EICJVU0EiIC9EICJJTlRMTVNHX0NPREVQQUdFIiAvRCAiX0RFQlVHIiAvRCAieDg2IiAvRCAiaTQ4NiIgL0QgIl94ODZfIiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL0QgIlVOSUNPREUiIC9EICJfTUJDUyIgL0QgIlpMSUJfRExMIiAvYwotIyBTVUJUUkFDVCBDUFAgL1lYCi1SU0M9cmMuZXhlCi0jIEFERCBCQVNFIFJTQyAvbCAweDQxMSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIldJTjMyIiAvZCAiU1RSSUNUIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9kICJJTlRFUk5BVElPTkFMIiAvZCAiVVNBIiAvZCAiSU5UTE1TR19DT0RFUEFHRSIgL2QgIl9ERUJVRyIgL2QgIng4NiIgL2QgImk0ODYiIC9kICJfeDg2XyIKLSMgQUREIFJTQyAvbCAweDQxMSAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJfVU5JQ09ERSIgL2QgIldJTjMyIiAvZCAiU1RSSUNUIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCAiX1dJTjMyX1dDRV9FTVVMQVRJT04iIC9kICJJTlRFUk5BVElPTkFMIiAvZCAiVVNBIiAvZCAiSU5UTE1TR19DT0RFUEFHRSIgL2QgIl9ERUJVRyIgL2QgIng4NiIgL2QgImk0ODYiIC9kICJfeDg2XyIKLU1UTD1taWRsLmV4ZQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyCi1CU0MzMj1ic2NtYWtlLmV4ZQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCi0jIEFERCBCU0MzMiAvbm9sb2dvCi1MSU5LMzI9bGluay5leGUKLSMgQUREIEJBU0UgTElOSzMyICQoQ0V4ODZDb3JlbGliYykgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL3N0YWNrOjB4MTAwMDAsMHgxMDAwIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC93aW5kb3dzY2U6ZW11bGF0aW9uCi0jIEFERCBMSU5LMzIgJChDRXg4NkNvcmVsaWJjKSBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvc3RhY2s6MHgxMDAwMCwweDEwMDAgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3dpbmRvd3NjZTplbXVsYXRpb24KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi0jIFBST1AgQkFTRSBVc2VfTUZDIDAKLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiV0NFUFBDUmVsIgotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiV0NFUFBDUmVsIgotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgotIyBQUk9QIFVzZV9NRkMgMAotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAotIyBQUk9QIE91dHB1dF9EaXIgIldDRVBQQ1JlbCIKLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJXQ0VQUENSZWwiCi0jIFBST1AgVGFyZ2V0X0RpciAiIgotQ1BQPWNscHBjLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTSQoQ0VDcnQpIC9XMyAvR1gtIC9PMiAvRCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvRCAiJChDRUNvbmZpZ05hbWUpIiAvRCAiTkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydCkgL1czIC9HWC0gL08yIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiTkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9EICIkKENFQ29uZmlnTmFtZSkiIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiWkxJQl9ETEwiIC9jCi0jIFNVQlRSQUNUIENQUCAvWVgKLVJTQz1yYy5leGUKLSMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9yIC9kICJwcGMiIC9kICJfcHBjXyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotIyBBREQgUlNDIC9sIDB4NDExIC9yIC9kICJwcGMiIC9kICJfcHBjXyIgL2QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL2QgIiQoQ0VDb25maWdOYW1lKSIgL2QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9kICJVTklDT0RFIiAvZCAiTkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpQUEMgL25vZGVmYXVsdGxpYjoiJChDRU5vRGVmYXVsdExpYikiIC9zdWJzeXN0ZW06JChDRVN1YnN5c3RlbSkgL1NUQUNLOjY1NTM2LDQwOTYKLSMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLSMgQUREIExJTkszMiBjb21tY3RybC5saWIgY29yZWRsbC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOlBQQyAvbm9kZWZhdWx0bGliOiIkKENFTm9EZWZhdWx0TGliKSIgL3N1YnN5c3RlbTokKENFU3Vic3lzdGVtKSAvU1RBQ0s6NjU1MzYsNDA5NgotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotIyBQUk9QIEJBU0UgVXNlX01GQyAwCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIldDRVBQQ0RiZyIKLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIldDRVBQQ0RiZyIKLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKLSMgUFJPUCBVc2VfTUZDIDAKLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKLSMgUFJPUCBPdXRwdXRfRGlyICJXQ0VQUENEYmciCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiV0NFUFBDRGJnIgotIyBQUk9QIFRhcmdldF9EaXIgIiIKLUNQUD1jbHBwYy5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL00kKENFQ3J0RGVidWcpIC9XMyAvR1gtIC9aaSAvT2QgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgIkRFQlVHIiAvRCAiUFBDIiAvRCAiX1BQQ18iIC9EIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvRCAiVU5JQ09ERSIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlpMSUJDRV9FWFBPUlRTIiAvWVggL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NJChDRUNydERlYnVnKSAvVzMgL0dYLSAvWmkgL09kIC9JICIuLlwuLlwuLlx6bGliIiAvRCAiREVCVUciIC9EICJQUEMiIC9EICJfUFBDXyIgL0QgX1dJTjMyX1dDRT0kKENFVmVyc2lvbikgL0QgIiQoQ0VDb25maWdOYW1lKSIgL0QgVU5ERVJfQ0U9JChDRVZlcnNpb24pIC9EICJVTklDT0RFIiAvRCAiX01CQ1MiIC9EICJaTElCX0RMTCIgL2MKLSMgU1VCVFJBQ1QgQ1BQIC9ZWAotUlNDPXJjLmV4ZQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL3IgL2QgInBwYyIgL2QgIl9wcGNfIiAvZCBfV0lOMzJfV0NFPSQoQ0VWZXJzaW9uKSAvZCAiJChDRUNvbmZpZ05hbWUpIiAvZCBVTkRFUl9DRT0kKENFVmVyc2lvbikgL2QgIlVOSUNPREUiIC9kICJERUJVRyIKLSMgQUREIFJTQyAvbCAweDQxMSAvciAvZCAicHBjIiAvZCAiX3BwY18iIC9kIF9XSU4zMl9XQ0U9JChDRVZlcnNpb24pIC9kICIkKENFQ29uZmlnTmFtZSkiIC9kIFVOREVSX0NFPSQoQ0VWZXJzaW9uKSAvZCAiVU5JQ09ERSIgL2QgIkRFQlVHIgotTVRMPW1pZGwuZXhlCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIKLUJTQzMyPWJzY21ha2UuZXhlCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KLSMgQUREIEJTQzMyIC9ub2xvZ28KLUxJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6UFBDIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIEJBU0UgTElOSzMyIC9wZGI6bm9uZSAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgY29tbWN0cmwubGliIGNvcmVkbGwubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6UFBDIC9ub2RlZmF1bHRsaWI6IiQoQ0VOb0RlZmF1bHRMaWIpIiAvc3Vic3lzdGVtOiQoQ0VTdWJzeXN0ZW0pIC9TVEFDSzo2NTUzNiw0MDk2Ci0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUgL25vZGVmYXVsdGxpYgotCi0hRU5ESUYgCi0KLSMgQmVnaW4gVGFyZ2V0Ci0KLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotIyBOYW1lICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLSMgTmFtZSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0jIE5hbWUgInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKLQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlxhZGxlcjMyLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9BRExFUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfQURMRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfQURMRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9BRExFUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9BRExFUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfQURMRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfQURMRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0FETEVSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfQURMRVI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9BRExFUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9BRExFUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlxjb21wcmVzcy5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfQ09NUFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0NPTVBSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX0NPTVBSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfQ09NUFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfQ09NUFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0NPTVBSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX0NPTVBSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9DT01QUj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX0NPTVBSPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfQ09NUFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfQ09NUFI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcY3JjMzIuYwotCi0hSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0NSQzMyPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9DUkMzMj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9DUkMzMj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0NSQzMyPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0NSQzMyPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9DUkMzMj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9DUkMzMj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfQ1JDMzI9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9DUkMzMj1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0NSQzMyPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX0NSQzMyPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGRlZmxhdGUuYwotCi0hSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfREVGTEE9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9ERUZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX0RFRkxBPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcZ3ppby5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0daSU9fQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0daSU9fQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfR1pJT19DPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfR1pJT19DPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0daSU9fQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0daSU9fQz1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfR1pJT19DPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9HWklPX0M9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfR1pJT19DPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmJsb2NrLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkJMPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GQkw9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZCTD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmNvZGVzLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgRGVidWciCi0KLURFUF9DUFBfSU5GQ089XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GQ089XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZDTz1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZDTz1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgRGVidWciCi0KLURFUF9DUFBfSU5GQ089XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GQ089XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZDTz1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIERlYnVnIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkNPPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZDTz1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTkRJRiAKLQotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcaW5mZmFzdC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQUykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0lORkZBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkZBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfSU5GRkE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GRkE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0lORkZBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkZBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZmYXN0LmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfSU5GRkE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZGQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mZmFzdC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgRGVidWciCi0KLURFUF9DUFBfSU5GRkE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmZhc3QuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmxhdGUuYwotCi0hSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0lORkxBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkxBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0lORkxBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GTEE9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZMQT1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORkxBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX0lORkxBPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZnRyZWVzLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZUUj1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GVFI9XAotCSIuLlwuLlwuLlx6bGliXGluZmZpeGVkLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfSU5GVFI9XAotCSIuLlwuLlwuLlx6bGliXGluZmZpeGVkLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZUUj1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZUUj1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GVFI9XAotCSIuLlwuLlwuLlx6bGliXGluZmZpeGVkLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfSU5GVFI9XAotCSIuLlwuLlwuLlx6bGliXGluZmZpeGVkLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlRSPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZmaXhlZC5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfSU5GVFI9XAotCSIuLlwuLlwuLlx6bGliXGluZmZpeGVkLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZUUj1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZUUj1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlxpbmZ1dGlsLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX0lORlVUPVwKLQkiLi5cLi5cLi5cemxpYlxpbmZibG9jay5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZjb2Rlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlxpbmZ1dGlsLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfSU5GVVQ9XAotCSIuLlwuLlwuLlx6bGliXGluZmJsb2NrLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZmNvZGVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXGluZnV0aWwuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9JTkZVVD1cCi0JIi4uXC4uXC4uXHpsaWJcaW5mYmxvY2suaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mY29kZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXHRyZWVzLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgUmVsZWFzZSIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgUmVsZWFzZSIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIERlYnVnIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1RSRUVTPVwKLQkiLi5cLi5cLi5cemxpYlxkZWZsYXRlLmgiXAotCSIuLlwuLlwuLlx6bGliXHRyZWVzLmgiXAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIFJlbGVhc2UiCi0KLURFUF9DUFBfVFJFRVM9XAotCSIuLlwuLlwuLlx6bGliXGRlZmxhdGUuaCJcCi0JIi4uXC4uXC4uXHpsaWJcdHJlZXMuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9UUkVFUz1cCi0JIi4uXC4uXC4uXHpsaWJcZGVmbGF0ZS5oIlwKLQkiLi5cLi5cLi5cemxpYlx0cmVlcy5oIlwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXHVuY29tcHIuYwotCi0hSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIFJlbGVhc2UiCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFMpIERlYnVnIgotCi1ERVBfQ1BQX1VOQ09NPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIFJlbGVhc2UiCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNINCkgRGVidWciCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgUmVsZWFzZSIKLQotREVQX0NQUF9VTkNPTT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0gzKSBEZWJ1ZyIKLQotREVQX0NQUF9VTkNPTT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1VOQ09NPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBBUk0pIERlYnVnIgotCi1ERVBfQ1BQX1VOQ09NPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIFJlbGVhc2UiCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIE1JUFNGUCkgRGVidWciCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgUmVsZWFzZSIKLQotREVQX0NQUF9VTkNPTT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2KSBEZWJ1ZyIKLQotREVQX0NQUF9VTkNPTT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgeDg2ZW0pIFJlbGVhc2UiCi0KLURFUF9DUFBfVU5DT009XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBEZWJ1ZyIKLQotREVQX0NQUF9VTkNPTT1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1VOQ09NPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBQUEMpIERlYnVnIgotCi1ERVBfQ1BQX1VOQ09NPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCQotCi0hRU5ESUYgCi0KLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uXHpsaWJjZS5kZWYKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXHp1dGlsLmMKLQotIUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTKSBEZWJ1ZyIKLQotREVQX0NQUF9aVVRJTD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgU0g0KSBSZWxlYXNlIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDQpIERlYnVnIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBTSDMpIFJlbGVhc2UiCi0KLURFUF9DUFBfWlVUSUw9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFNIMykgRGVidWciCi0KLURFUF9DUFBfWlVUSUw9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIEFSTSkgUmVsZWFzZSIKLQotREVQX0NQUF9aVVRJTD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgQVJNKSBEZWJ1ZyIKLQotREVQX0NQUF9aVVRJTD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgTUlQU0ZQKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSBNSVBTRlApIERlYnVnIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODYpIFJlbGVhc2UiCi0KLURFUF9DUFBfWlVUSUw9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NikgRGVidWciCi0KLURFUF9DUFBfWlVUSUw9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIHg4NmVtKSBSZWxlYXNlIgotCi1ERVBfQ1BQX1pVVElMPVwKLQkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAotCSIuLlwuLlwuLlx6bGliXHp1dGlsLmgiXAotCQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiemxpYmNlIC0gV2luMzIgKFdDRSB4ODZlbSkgRGVidWciCi0KLURFUF9DUFBfWlVUSUw9XAotCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAotCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCi0JIi4uXC4uXC4uXHpsaWJcenV0aWwuaCJcCi0JCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJ6bGliY2UgLSBXaW4zMiAoV0NFIFBQQykgUmVsZWFzZSIKLQotREVQX0NQUF9aVVRJTD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInpsaWJjZSAtIFdpbjMyIChXQ0UgUFBDKSBEZWJ1ZyIKLQotREVQX0NQUF9aVVRJTD1cCi0JIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCi0JIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKLQkiLi5cLi5cLi5cemxpYlx6dXRpbC5oIlwKLQkKLQotIUVORElGIAotCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBFbmQgR3JvdXAKLSMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKLQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlxkZWZsYXRlLmgKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmJsb2NrLmgKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmNvZGVzLmgKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXGluZmZhc3QuaAotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcaW5mZml4ZWQuaAotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcaW5mdHJlZXMuaAotIyBFbmQgU291cmNlIEZpbGUKLSMgQmVnaW4gU291cmNlIEZpbGUKLQotU09VUkNFPS4uXC4uXC4uXHpsaWJcaW5mdXRpbC5oCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlx0cmVlcy5oCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlx6Y29uZi5oCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCi1TT1VSQ0U9Li5cLi5cLi5cemxpYlx6bGliLmgKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KLVNPVVJDRT0uLlwuLlwuLlx6bGliXHp1dGlsLmgKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEVuZCBHcm91cAotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCi0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgotIyBFbmQgR3JvdXAKLSMgRW5kIFRhcmdldAotIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9saWJwbmcucGMuaW4gYi9zY3JpcHRzL2xpYnBuZy5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2FhMTU1Ci0tLSAvZGV2L251bGwKKysrIGIvc2NyaXB0cy9saWJwbmcucGMuaW4KQEAgLTAsMCArMSwxMSBAQAorCitwcmVmaXg9QFBSRUZJWEAKK2V4ZWNfcHJlZml4PSR7cHJlZml4fQorbGliZGlyPSR7ZXhlY19wcmVmaXh9L2xpYgoraW5jbHVkZWRpcj0ke2V4ZWNfcHJlZml4fS9pbmNsdWRlCisKK05hbWU6IGxpYnBuZzEwCitEZXNjcmlwdGlvbjogTG9hZHMgYW5kIHNhdmVzIFBORyBmaWxlcworVmVyc2lvbjogMS4wLjEzCitMaWJzOiAtTCR7bGliZGlyfSAtbHBuZzEwCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9saWJwbmcxMApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS4zMnN1bnUgYi9zY3JpcHRzL21ha2VmaWxlLjMyc3VudQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGEzZThmCi0tLSAvZGV2L251bGwKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS4zMnN1bnUKQEAgLTAsMCArMSwxNDcgQEAKKyMgbWFrZWZpbGUgZm9yIGxpYnBuZyBvbiBTb2xhcmlzIDIueCB3aXRoIGdjYworIyBDb250cmlidXRlZCBieSBXaWxsaWFtIEwuIFNlYm9rLCBiYXNlZCBvbiBtYWtlZmlsZS5saW51eAorIyBDb3B5cmlnaHQgKEMpIDIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCisjIENvcHlyaWdodCAoQykgMTk5OCBHcmVnIFJvZWxvZnMKKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyCisjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAorCitDQz1jYworU1VOX0NDX0ZMQUdTPS1mYXN0IC14dGFyZ2V0PXVsdHJhCitTVU5fTERfRkxBR1M9LWZhc3QgLXh0YXJnZXQ9dWx0cmEKKworIyB3aGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAuc28gYW5kIGxpYnBuZzEwL3BuZy5oCitwcmVmaXg9L2EKKworIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCisjIENoYW5naW5nIHRoZXNlIHRvIC4uL3psaWIgcG9zZXMgYSBzZWN1cml0eSByaXNrLiAgSWYgeW91IHdhbnQKKyMgdG8gaGF2ZSB6bGliIGluIGFuIGFkamFjZW50IGRpcmVjdG9yeSwgc3BlY2lmeSB0aGUgZnVsbCBwYXRoIGluc3RlYWQgb2YgIi4uIi4KKyNaTElCTElCPS4uL3psaWIKKyNaTElCSU5DPS4uL3psaWIKKworWkxJQkxJQj0vdXNyL2xpYgorWkxJQklOQz0vdXNyL2luY2x1ZGUKKworV0FSTk1PUkU9LVd3cml0ZS1zdHJpbmdzIC1XcG9pbnRlci1hcml0aCAtV3NoYWRvdyBcCisJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV3RyYWRpdGlvbmFsIC1XY2FzdC1hbGlnbiBcCisJLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAjLVdjb252ZXJzaW9uCitDRkxBR1M9LUkkKFpMSUJJTkMpICQoU1VOX0NDX0ZMQUdTKSBcCisJIyAkKFdBUk5NT1JFKSAtZyAtRFBOR19ERUJVRz01CitMREZMQUdTPS1MLiAtUi4gJChTVU5fTERfRkxBR1MpIC1MJChaTElCTElCKSAtUiQoWkxJQkxJQikgLWxwbmcxMCAtbHogLWxtCisKKyNSQU5MSUI9cmFubGliCitSQU5MSUI9ZWNobworCitMSUJOQU1FPWxpYnBuZzEwCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKK1BOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKKworSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQorTElCUEFUSD0kKHByZWZpeCkvbGliCisKK09CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCisJcG5ncmVhZC5vIHBuZ3Jpby5vIHBuZ3dpby5vIHBuZ3dyaXRlLm8gcG5ncnRyYW4ubyBcCisJcG5nd3RyYW4ubyBwbmdtZW0ubyBwbmdlcnJvci5vIHBuZ3ByZWFkLm8KKworT0JKU0RMTCA9ICQoT0JKUzoubz0ucGljLm8pCisKKy5TVUZGSVhFUzogICAgICAuYyAubyAucGljLm8KKworLmMucGljLm86CisJJChDQykgLWMgJChDRkxBR1MpIC1LUElDIC1vICRAICQqLmMKKworYWxsOiBsaWJwbmcuYSAkKExJQk5BTUUpLnNvIHBuZ3Rlc3QKKworbGlicG5nLmE6ICQoT0JKUykKKwlhciByYyAkQCAkKE9CSlMpCisJJChSQU5MSUIpICRACisKKyQoTElCTkFNRSkuc286ICQoTElCTkFNRSkuc28uJChQTkdNQUopCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbworCiskKExJQk5BTUUpLnNvLiQoUE5HTUFKKTogJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKQorCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTRExMKQorCUBjYXNlICJgdHlwZSBsZGAiIGluICp1Y2IqKSBcCisJZWNobzsgXAorCWVjaG8gJyMjIFdBUk5JTkc6JzsgXAorCWVjaG8gJyMjIFRoZSBjb21tYW5kcyAiQ0MiIGFuZCAiTEQiIG11c3QgTk9UIHJlZmVyIHRvIC91c3IvdWNiL2NjJzsgXAorCWVjaG8gJyMjIGFuZCAvdXNyL3VjYi9sZC4gIElmIHRoZXkgZG8sIHlvdSBuZWVkIHRvIGFkanVzdCB5b3VyIFBBVEgnOyBcCisJZWNobyAnIyMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gcHV0IC91c3IvY2NzL2JpbiBhaGVhZCBvZiAvdXNyL3VjYi4nOyBcCisJZWNobyAnIyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExEX0xJQlJBUllfUEFUSCBzaG91bGQgbm90IGJlIHNldCc7IFwKKwllY2hvICcjIyBhdCBhbGwuICBJZiBpdCBpcywgdGhpbmdzIGFyZSBsaWtlbHkgdG8gYnJlYWsgYmVjYXVzZSBvZic7IFwKKwllY2hvICcjIyB0aGUgbGlidWNiIGRlcGVuZGVuY3kgdGhhdCBpcyBjcmVhdGVkLic7IFwKKwllY2hvOyBcCisJOzsgXAorCWVzYWMKKwkkKExEKSAtRyAtTCQoWkxJQkxJQikgLVIkKFpMSUJMSUIpIC1oICQoTElCTkFNRSkuc28uJChQTkdNQUopIFwKKwkgLW8gJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChPQkpTRExMKSAtbHoKKworcG5ndGVzdDogcG5ndGVzdC5vICQoTElCTkFNRSkuc28KKwkkKENDKSAtbyBwbmd0ZXN0ICQoQ0ZMQUdTKSBwbmd0ZXN0Lm8gJChMREZMQUdTKQorCit0ZXN0OiBwbmd0ZXN0CisJLi9wbmd0ZXN0CisKK2luc3RhbGwtaGVhZGVyczogcG5nLmggcG5nY29uZi5oCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCk7IGZpCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKS8kKExJQk5BTUUpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKS8kKExJQk5BTUUpOyBmaQorCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkKKwljaG1vZCA2NDQgJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZy5oICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAkKElOQ1BBVEgpL2xpYnBuZworCWxuIC1mIC1zICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZworCitpbnN0YWxsLXN0YXRpYzogaW5zdGFsbC1oZWFkZXJzIGxpYnBuZy5hCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1mIC1zICQoTElCUEFUSCkvJChMSUJOQU1FKS5hICQoTElCUEFUSCkvbGlicG5nLmEKKworaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGwtaGVhZGVycyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdNQUopKiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yLioKKwljcCAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCisJY2htb2QgNzU1ICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwkoY2QgJChMSUJQQVRIKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zbzsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjIuJChQTkdNSU4pOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJOQU1FKS5zby4kKFBOR01BSik7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworY2xlYW46CisJL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgJChMSUJOQU1FKS5zbyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogcG5ndGVzdCBwbmdvdXQucG5nCisKK0RPQ1MgPSBBTk5PVU5DRSBDSEFOR0VTIElOU1RBTEwgS05PV05CVUcgTElDRU5TRSBSRUFETUUgVE9ETyBZMktJTkZPCit3cml0ZWxvY2s6CisJY2htb2QgYS13ICouW2NoMzVdICQoRE9DUykgc2NyaXB0cy8qCisKKyMgRE8gTk9UIERFTEVURSBUSElTIExJTkUgLS0gbWFrZSBkZXBlbmQgZGVwZW5kcyBvbiBpdC4KKworcG5nLm8gcG5nLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ2Vycm9yLm8gcG5nZXJyb3IucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncmlvLm8gcG5ncmlvLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3dpby5vIHBuZ3dpby5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdtZW0ubyBwbmdtZW0ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nc2V0Lm8gcG5nc2V0LnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ2dldC5vIHBuZ2dldC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdyZWFkLm8gcG5ncmVhZC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdydHJhbi5vIHBuZ3J0cmFuLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3J1dGlsLm8gcG5ncnV0aWwucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ndHJhbnMubyBwbmd0cmFucy5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd3cml0ZS5vIHBuZ3dyaXRlLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3d0cmFuLm8gcG5nd3RyYW4ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd3V0aWwubyBwbmd3dXRpbC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdwcmVhZC5vIHBuZ3ByZWFkLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKKworcG5ndGVzdC5vOiBwbmcuaCBwbmdjb25mLmgKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuNjRzdW51IGIvc2NyaXB0cy9tYWtlZmlsZS42NHN1bnUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiOGY1MwotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuNjRzdW51CkBAIC0wLDAgKzEsMTQ3IEBACisjIG1ha2VmaWxlIGZvciBsaWJwbmcgb24gU29sYXJpcyAyLnggd2l0aCBnY2MKKyMgQ29udHJpYnV0ZWQgYnkgV2lsbGlhbSBMLiBTZWJvaywgYmFzZWQgb24gbWFrZWZpbGUubGludXgKKyMgQ29weXJpZ2h0IChDKSAyMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorIyBDb3B5cmlnaHQgKEMpIDE5OTggR3JlZyBSb2Vsb2ZzCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcgorIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKKworQ0M9Y2MKK1NVTl9DQ19GTEFHUz0tZmFzdCAteHRhcmdldD11bHRyYSAteGFyY2g9djkKK1NVTl9MRF9GTEFHUz0tZmFzdCAteHRhcmdldD11bHRyYSAteGFyY2g9djkKKworIyB3aGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAuc28gYW5kIGxpYnBuZzEwL3BuZy5oCitwcmVmaXg9L2EKKworIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCisjIENoYW5naW5nIHRoZXNlIHRvIC4uL3psaWIgcG9zZXMgYSBzZWN1cml0eSByaXNrLiAgSWYgeW91IHdhbnQKKyMgdG8gaGF2ZSB6bGliIGluIGFuIGFkamFjZW50IGRpcmVjdG9yeSwgc3BlY2lmeSB0aGUgZnVsbCBwYXRoIGluc3RlYWQgb2YgIi4uIi4KKyNaTElCTElCPS4uL3psaWIKKyNaTElCSU5DPS4uL3psaWIKKworWkxJQkxJQj0vdXNyL2xpYgorWkxJQklOQz0vdXNyL2luY2x1ZGUKKworV0FSTk1PUkU9LVd3cml0ZS1zdHJpbmdzIC1XcG9pbnRlci1hcml0aCAtV3NoYWRvdyBcCisJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV3RyYWRpdGlvbmFsIC1XY2FzdC1hbGlnbiBcCisJLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAjLVdjb252ZXJzaW9uCitDRkxBR1M9LUkkKFpMSUJJTkMpICQoU1VOX0NDX0ZMQUdTKSBcCisJIyAkKFdBUk5NT1JFKSAtZyAtRFBOR19ERUJVRz01CitMREZMQUdTPS1MLiAtUi4gJChTVU5fTERfRkxBR1MpIC1MJChaTElCTElCKSAtUiQoWkxJQkxJQikgLWxwbmcxMCAtbHogLWxtCisKKyNSQU5MSUI9cmFubGliCitSQU5MSUI9ZWNobworCitMSUJOQU1FPWxpYnBuZzEwCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKK1BOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKKworSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQorTElCUEFUSD0kKHByZWZpeCkvbGliCisKK09CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCisJcG5ncmVhZC5vIHBuZ3Jpby5vIHBuZ3dpby5vIHBuZ3dyaXRlLm8gcG5ncnRyYW4ubyBcCisJcG5nd3RyYW4ubyBwbmdtZW0ubyBwbmdlcnJvci5vIHBuZ3ByZWFkLm8KKworT0JKU0RMTCA9ICQoT0JKUzoubz0ucGljLm8pCisKKy5TVUZGSVhFUzogICAgICAuYyAubyAucGljLm8KKworLmMucGljLm86CisJJChDQykgLWMgJChDRkxBR1MpIC1LUElDIC1vICRAICQqLmMKKworYWxsOiBsaWJwbmcuYSAkKExJQk5BTUUpLnNvIHBuZ3Rlc3QKKworbGlicG5nLmE6ICQoT0JKUykKKwlhciByYyAkQCAkKE9CSlMpCisJJChSQU5MSUIpICRACisKKyQoTElCTkFNRSkuc286ICQoTElCTkFNRSkuc28uJChQTkdNQUopCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbworCiskKExJQk5BTUUpLnNvLiQoUE5HTUFKKTogJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKQorCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTRExMKQorCUBjYXNlICJgdHlwZSBsZGAiIGluICp1Y2IqKSBcCisJZWNobzsgXAorCWVjaG8gJyMjIFdBUk5JTkc6JzsgXAorCWVjaG8gJyMjIFRoZSBjb21tYW5kcyAiQ0MiIGFuZCAiTEQiIG11c3QgTk9UIHJlZmVyIHRvIC91c3IvdWNiL2NjJzsgXAorCWVjaG8gJyMjIGFuZCAvdXNyL3VjYi9sZC4gIElmIHRoZXkgZG8sIHlvdSBuZWVkIHRvIGFkanVzdCB5b3VyIFBBVEgnOyBcCisJZWNobyAnIyMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gcHV0IC91c3IvY2NzL2JpbiBhaGVhZCBvZiAvdXNyL3VjYi4nOyBcCisJZWNobyAnIyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExEX0xJQlJBUllfUEFUSCBzaG91bGQgbm90IGJlIHNldCc7IFwKKwllY2hvICcjIyBhdCBhbGwuICBJZiBpdCBpcywgdGhpbmdzIGFyZSBsaWtlbHkgdG8gYnJlYWsgYmVjYXVzZSBvZic7IFwKKwllY2hvICcjIyB0aGUgbGlidWNiIGRlcGVuZGVuY3kgdGhhdCBpcyBjcmVhdGVkLic7IFwKKwllY2hvOyBcCisJOzsgXAorCWVzYWMKKwkkKExEKSAtRyAtTCQoWkxJQkxJQikgLVIkKFpMSUJMSUIpIC1oICQoTElCTkFNRSkuc28uJChQTkdNQUopIFwKKwkgLW8gJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChPQkpTRExMKSAtbHoKKworcG5ndGVzdDogcG5ndGVzdC5vICQoTElCTkFNRSkuc28KKwkkKENDKSAtbyBwbmd0ZXN0ICQoQ0ZMQUdTKSBwbmd0ZXN0Lm8gJChMREZMQUdTKQorCit0ZXN0OiBwbmd0ZXN0CisJLi9wbmd0ZXN0CisKK2luc3RhbGwtaGVhZGVyczogcG5nLmggcG5nY29uZi5oCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCk7IGZpCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKS8kKExJQk5BTUUpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKS8kKExJQk5BTUUpOyBmaQorCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkKKwljaG1vZCA2NDQgJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZy5oICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAkKElOQ1BBVEgpL2xpYnBuZworCWxuIC1mIC1zICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZworCitpbnN0YWxsLXN0YXRpYzogaW5zdGFsbC1oZWFkZXJzIGxpYnBuZy5hCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1mIC1zICQoTElCUEFUSCkvJChMSUJOQU1FKS5hICQoTElCUEFUSCkvbGlicG5nLmEKKworaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGwtaGVhZGVycyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdNQUopKiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yLioKKwljcCAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCisJY2htb2QgNzU1ICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwkoY2QgJChMSUJQQVRIKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc287IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uMjsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbykKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpL3BrZ2NvbmZpZyBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCkvcGtnY29uZmlnOyBmaQorCWNhdCBzY3JpcHRzL2xpYnBuZy5wYy5pbiB8IHNlZCAtZSBzXCFAUFJFRklYQCEkKHByZWZpeCkhID4gbGlicG5nLnBjCisJY3AgbGlicG5nLnBjICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisKK2NsZWFuOgorCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOR01BSikqIHBuZ3Rlc3QgcG5nb3V0LnBuZworCitET0NTID0gQU5OT1VOQ0UgQ0hBTkdFUyBJTlNUQUxMIEtOT1dOQlVHIExJQ0VOU0UgUkVBRE1FIFRPRE8gWTJLSU5GTword3JpdGVsb2NrOgorCWNobW9kIGEtdyAqLltjaDM1XSAkKERPQ1MpIHNjcmlwdHMvKgorCisjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCisKK3BuZy5vIHBuZy5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdlcnJvci5vIHBuZ2Vycm9yLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3Jpby5vIHBuZ3Jpby5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd3aW8ubyBwbmd3aW8ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nbWVtLm8gcG5nbWVtLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3NldC5vIHBuZ3NldC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdnZXQubyBwbmdnZXQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncmVhZC5vIHBuZ3JlYWQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncnRyYW4ubyBwbmdydHJhbi5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdydXRpbC5vIHBuZ3J1dGlsLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3RyYW5zLm8gcG5ndHJhbnMucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd3JpdGUubyBwbmd3cml0ZS5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd3dHJhbi5vIHBuZ3d0cmFuLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3d1dGlsLm8gcG5nd3V0aWwucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncHJlYWQubyBwbmdwcmVhZC5waWMubzogcG5nLmggcG5nY29uZi5oCisKK3BuZ3Rlc3QubzogcG5nLmggcG5nY29uZi5oCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmFpeCBiL3NjcmlwdHMvbWFrZWZpbGUuYWl4CmluZGV4IDM4YzQ0YjUuLmJmYmM1M2MgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuYWl4CisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYWl4CkBAIC0xNSwxMCArMTUsMTAgQEAKIFJBTkxJQiA9IHJhbmxpYgogUk0gPSBybSAtZgogCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogcHJlZml4PS91c3IvbG9jYWwKQEAgLTU3LDEzICs1NywxNiBAQAogCiBpbnN0YWxsOiBsaWJwbmcuYQogCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpL2xpYnBuZyAgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpL2xpYnBuZzsgZmkKIAktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKLQljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQotCWNobW9kIDY0NCAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCisJLUBybSAkKElOQ1BBVEgpL3BuZy5oCisJLUBybSAkKElOQ1BBVEgpL3BuZ2NvbmYuaAorCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpL2xpYnBuZworCWNobW9kIDY0NCAkKElOQ1BBVEgpL2xpYnBuZy9wbmcuaCAkKElOQ1BBVEgpL2xpYnBuZy9wbmdjb25mLmgKIAljcCBsaWJwbmcuYSAkKExJQlBBVEgpCiAKIGNsZWFuOgotCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hIGxpYnBuZy5zbyogcG5ndGVzdCBwbmdvdXQucG5nCisJL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgcG5ndGVzdCBwbmdvdXQucG5nCiAKIHBuZyQoTyk6IHBuZy5oIHBuZ2NvbmYuaAogcG5nZXJyb3IkKE8pOiBwbmcuaCBwbmdjb25mLmgKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuYXRhcmkgYi9zY3JpcHRzL21ha2VmaWxlLmF0YXJpCmluZGV4IDJkMTRmZjguLmM1MWFkNmUgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuYXRhcmkKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5hdGFyaQpAQCAtMjYsOCArMjYsMTEgQEAKIAogaW5zdGFsbDogbGlicG5nLmEKIAktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCisJLUBta2RpciAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKIAktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwktQHJtIC1mICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCisJLUBybSAtZiAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKKwljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUvbGlicG5nCisJY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZy9wbmcuaAorCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcvcG5nY29uZi5oCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmJlb3MgYi9zY3JpcHRzL21ha2VmaWxlLmJlb3MKaW5kZXggODgxMWI1Ny4uZDU4OWE3YyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5iZW9zCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYmVvcwpAQCAtMSw1ICsxLDYgQEAKICMgbWFrZWZpbGUgZm9yIGxpYnBuZyBvbiBCZU9TIHg4NiBFTEYgd2l0aCBnY2MKICMgbW9kaWZpZWQgZnJvbSBtYWtlZmlsZS5saW51eCBieSBTYW5kZXIgU3Rva3MKKyMgQ29weXJpZ2h0IChDKSAyMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIyBDb3B5cmlnaHQgKEMpIDE5OTkgR3JlZyBSb2Vsb2ZzCiAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcgogIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKQEAgLTEwLDEwICsxMSwxMCBAQAogWkxJQkxJQj0vdXNyL2xvY2FsL2xpYgogWkxJQklOQz0vdXNyL2xvY2FsL2luY2x1ZGUKIAotIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CisjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAwLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCi1QTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuMTJiZXRhMQorUE5HTUFKID0gMAorUE5HTUlOID0gMS4wLjEzCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIEFMSUdOPQpAQCAtMjksMTUgKzMwLDE2IEBACiBDRkxBR1M9LUkkKFpMSUJJTkMpIC1XYWxsIC1PMSAtZnVucm9sbC1sb29wcyBcCiAJJChBTElHTikgIyAkKFdBUk5NT1JFKSAtZyAtRFBOR19ERUJVRz01CiAjIExERkxBR1M9LUwuIC1XbCwtcnBhdGgsLiAtTCQoWkxJQkxJQikgLVdsLC1ycGF0aCwkKFpMSUJMSUIpIC1scG5nIC1seiAtbG0KLUxERkxBR1M9LUwuIC1XbCwtc29uYW1lPWxpYnBuZy5zby4kKFBOR01BSikgLUwkKFpMSUJMSUIpIC1seiAtbG0KK0xERkxBR1M9LUwuIC1XbCwtc29uYW1lPSQoTElCTkFNRSkuc28uJChQTkdNQUopIC1MJChaTElCTElCKSAtbHogLWxtCiAKIFJBTkxJQj1yYW5saWIKICNSQU5MSUI9ZWNobwogCi0jIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hLCBsaWJwbmcuc28qLCBhbmQgcG5nLmgKKyMgd2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEsIGxpYnBuZzEwLnNvKiwgYW5kIHBuZy5oCiBwcmVmaXg9L3Vzci9sb2NhbAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQogTElCUEFUSD0kKHByZWZpeCkvbGliCitMSUJOQU1FPWxpYnBuZzEwCiAKIE9CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCiAJcG5ncmVhZC5vIHBuZ3Jpby5vIHBuZ3dpby5vIHBuZ3dyaXRlLm8gcG5ncnRyYW4ubyBcCkBAIC00Nyw0MiArNDksNzAgQEAKIAogLlNVRkZJWEVTOiAgICAgIC5jIC5vCiAKLWFsbDogbGlicG5nLmEgbGlicG5nLnNvIHBuZ3Rlc3QKK2FsbDogbGlicG5nLmEgJChMSUJOQU1FKS5zbyBwbmd0ZXN0CiAKIGxpYnBuZy5hOiAkKE9CSlMpCiAJYXIgcmMgJEAgJChPQkpTKQogCSQoUkFOTElCKSAkQAogCi1saWJwbmcuc286IGxpYnBuZy5zby4kKFBOR01BSikKLQlsbiAtc2YgbGlicG5nLnNvLiQoUE5HTUFKKSBsaWJwbmcuc28KLQljcCBsaWJwbmcuc28qIC9ib290L2hvbWUvY29uZmlnL2xpYgorJChMSUJOQU1FKS5zbzogJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbworCWNwICQoTElCTkFNRSkuc28qIC9ib290L2hvbWUvY29uZmlnL2xpYgogCi1saWJwbmcuc28uJChQTkdNQUopOiBsaWJwbmcuc28uJChQTkdWRVIpCi0JbG4gLXNmIGxpYnBuZy5zby4kKFBOR1ZFUikgbGlicG5nLnNvLiQoUE5HTUFKKQorJChMSUJOQU1FKS5zby4kKFBOR01BSik6ICQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopCiAKLWxpYnBuZy5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKLQkkKENDKSAtTCQoWkxJQkxJQikgLWx6IC1ub3N0YXJ0IC1XbCwtc29uYW1lLGxpYnBuZy5zby4kKFBOR01BSikgLW8KLWxpYnBuZy5zby4kKFBOR1ZFUikgXAorJChMSUJOQU1FKS5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKKwkkKENDKSAtTCQoWkxJQkxJQikgLWx6IC1ub3N0YXJ0IC1XbCwtc29uYW1lLCQoTElCTkFNRSkuc28uJChQTkdNQUopIC1vCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBcCiAJICQoT0JKU0RMTCkKIAotcG5ndGVzdDogcG5ndGVzdC5vIGxpYnBuZy5zbwotCSQoQ0MpIC1MJChaTElCTElCKSAtbHogLWxwbmcgLW8gcG5ndGVzdCBwbmd0ZXN0Lm8KK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNvCisJJChDQykgLUwkKFpMSUJMSUIpIC1seiAtbHBuZzEwIC1vIHBuZ3Rlc3QgcG5ndGVzdC5vCiAKIHRlc3Q6IHBuZ3Rlc3QKIAkuL3BuZ3Rlc3QKIAotaW5zdGFsbDogbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AbWtkaXIgJChJTkNQQVRIKSAkKExJQlBBVEgpCi0JY3AgcG5nLmggcG5nY29uZi5oICQoSU5DUEFUSCkKLQljaG1vZCA2NDQgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAotCWNwIGxpYnBuZy5hIGxpYnBuZy5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQotCWNobW9kIDc1NSAkKExJQlBBVEgpL2xpYnBuZy5zby4kKFBOR1ZFUikKLQktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uJChQTkdNQUopICQoTElCUEFUSCkvbGlicG5nLnNvCi0JKGNkICQoTElCUEFUSCk7IGxuIC1zZiBsaWJwbmcuc28uJChQTkdWRVIpIGxpYnBuZy5zby4kKFBOR01BSik7IFwKLQkgbG4gLXNmIGxpYnBuZy5zby4kKFBOR01BSikgbGlicG5nLnNvKQoraW5zdGFsbC1oZWFkZXJzOiBwbmcuaCBwbmdjb25mLmgKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpLyQoTElCTkFNRSkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpLyQoTElCTkFNRSk7IGZpCisJY3AgcG5nLmggcG5nY29uZi5oICQoSU5DUEFUSCkvJChMSUJOQU1FKQorCWNobW9kIDY0NCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nLmggJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAtZiAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvbGlicG5nCisJbG4gLXNmICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZworCitpbnN0YWxsLXN0YXRpYzogaW5zdGFsbC1oZWFkZXJzIGxpYnBuZy5hCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1zZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKIAogY2xlYW46Ci0JL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgbGlicG5nLnNvKiBwbmd0ZXN0IHBuZ291dC5wbmcKKwkvYmluL3JtIC1mICoubyBsaWJwbmcuYSAkKExJQk5BTUUpLnNvICQoTElCTkFNRSkuc28uJChQTkdNQUopKiBcCisJcG5ndGVzdCBwbmdvdXQucG5nCiAKICMgRE8gTk9UIERFTEVURSBUSElTIExJTkUgLS0gbWFrZSBkZXBlbmQgZGVwZW5kcyBvbiBpdC4KIApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4gYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgppbmRleCBjODhjOTg0Li4xNDU0YmIxIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgorKysgYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgpAQCAtMTIsNiArMTIsMTAgQEAKICMgJENGTEFHUywgYW5kIGluY2x1ZGUgcG5nZ2NjcmQubyBpbiAkT0JKUywgYmVsb3cuCiAKIENDPWdjYworaWZkZWYgTUlOR1cKK01JTkdXX0NDRkxBR1M9LW1uby1jeWd3aW4gLUkvdXNyL2luY2x1ZGUvbWluZ3cKK01JTkdXX0xERkxBR1M9LW1uby1jeWd3aW4gLUwvdXNyL2xpYi9taW5ndworZW5kaWYKIAogIyB3aGVyZSAibWFrZSBpbnN0YWxsIiBwdXRzIGxpYnBuZy5hLCBsaWJwbmcuc28qLCBwbmcuaCwgYW5kIHBuZ2NvbmYuaAogcHJlZml4PS91c3IKQEAgLTMyLDE2ICszNiwxMyBAQAogCiAjQ0ZMQUdTPS1EUE5HX1VTRV9QTkdHQ0NSRCAtSSQoWkxJQklOQykgLVdhbGwgLU8zICQoQUxJR04pIC1mdW5yb2xsLWxvb3BzIFwKICMgICAgICAgIC1mb21pdC1mcmFtZS1wb2ludGVyICAjICQoV0FSTk1PUkUpIC1nIC1EUE5HX0RFQlVHPTUKLUNGTEFHUz0tSSQoWkxJQklOQykgLVdhbGwgLU8zICQoQUxJR04pIC1mdW5yb2xsLWxvb3BzIFwKK0NGTEFHUz0kKE1JTkdXX0NDRkxBR1MpIC1JJChaTElCSU5DKSAtV2FsbCAtTzMgJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgXAogCS1mb21pdC1mcmFtZS1wb2ludGVyCiAKLSMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAotIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLSNQTkdETEwgPSAkMiMgbXN2YwotUE5HRExMID0gMiMgY3lnd2luIDEuMC4xMmJldGExCi1QTkdNSU4gPSAxLjAuMTJiZXRhMQotUE5HTUlOX0JBU0UgPSAxLjAuMTIKK1BOR01BSiA9IDAKKyNQTkdETEwgPSAkMTAKK1BOR01JTiA9IDEuMC4xMworUE5HTUlOX0JBU0UgPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogU0hBUkVETElCPWN5Z3BuZyQoUE5HRExMKS5kbGwKQEAgLTUxLDggKzUyLDggQEAKIExJQlM9JChTSEFSRURMSUIpICQoU1RBVExJQikKIEVYRT0uZXhlCiAKLUxERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHoKLUxEU0hBUkVEPWdjYyAtc2hhcmVkIC1XbCwtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UKK0xERkxBR1M9LUwuICQoTUlOR1dfTERGTEFHUykgLUwkKFpMSUJMSUIpIC1scG5nIC1segorTERTRkxBR1M9LXNoYXJlZCAtTC4gICQoTUlOR1dfTERGTEFHUykgLVdsLC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZQogTERFWFRSQT0tV2wsLS1vdXQtaW1wbGliPSQoSU1QTElCKSAkKFNIQVJFRERFRikKIAogUkFOTElCPXJhbmxpYgpAQCAtMTEyLDcgKzExMyw3IEBACiAJc2VkIC1lICdzL1woW147XSpcKTsvOy8nID4gJEAKIAogJChTSEFSRURMSUIpOiAkKE9CSlNETEwpICQoU0hBUkVEREVGKQotCSQoTERTSEFSRUQpIC1vICRAICQoTERFWFRSQSkgJChPQkpTRExMKSAtTC4gLUwkKFpMSUJMSUIpIC1segorCSQoQ0MpICQoTERTRkxBR1MpIC1vICRAICQoTERFWFRSQSkgJChPQkpTRExMKSAtTC4gLUwkKFpMSUJMSUIpIC1segogCiBwbmd0ZXN0JChFWEUpOiBwbmd0ZXN0LnBpYy5vICQoU0hBUkVETElCKQogCSQoQ0MpICQoQ0ZMQUdTKSAkPCAkKExERkxBR1MpIC1vICRACkBAIC0xNDcsNyArMTQ4LDEwIEBACiAJaW5zdGFsbCAtcyAtbSA3NTUgJChTSEFSRURMSUIpICQoQklOUEFUSCkKIAogaW5zdGFsbC1oZWFkZXJzOgotCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgIF07IHRoZW4gbWtkaXIgLXAgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpXTsgdGhlbiBta2RpciAtcCAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvbGlicG5nICBdOyB0aGVuIG1rZGlyIC1wICQoSU5DUEFUSCkvbGlicG5nOyBmaQorCS1Acm0gLWYgJHtJTkNQQVRIKS9wbmcuaAorCS1Acm0gLWYgJHtJTkNQQVRIKS9wbmdjb25mLmgKIAlpbnN0YWxsIC1tIDY0NCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQogCiBpbnN0YWxsLWRvY3M6CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmRhcndpbiBiL3NjcmlwdHMvbWFrZWZpbGUuZGFyd2luCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjY2E5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmRhcndpbgpAQCAtMCwwICsxLDEzNCBAQAorIyBtYWtlZmlsZSBmb3IgbGlicG5nIG9uIERhcndpbiAvIE1hYyBPUyBYCisjIENvcHlyaWdodCAoQykgMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyMgQ29weXJpZ2h0IChDKSAyMDAxIENocmlzdG9waCBQZmlzdGVyZXIKKyMgZGVyaXZlZCBmcm9tIG1ha2VmaWxlLmxpbnV4OgorIyAgQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5IEdyZWcgUm9lbG9mcworIyAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyCisjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAorCisjIHdoZXJlICJtYWtlIGluc3RhbGwiIHB1dHMgbGlicG5nLmEsIGxpYnBuZzEwLmR5bGliLCBwbmcuaCBhbmQgcG5nY29uZi5oCitwcmVmaXg9L3Vzci9sb2NhbAorCisjIFdoZXJlIHRoZSB6bGliIGxpYnJhcnkgYW5kIGluY2x1ZGUgZmlsZXMgYXJlIGxvY2F0ZWQKKyNaTElCTElCPS91c3IvbG9jYWwvbGliCisjWkxJQklOQz0vdXNyL2xvY2FsL2luY2x1ZGUKK1pMSUJMSUI9Li4vemxpYgorWkxJQklOQz0uLi96bGliCisKK0NDPWNjCitDRkxBR1M9LUkkKFpMSUJJTkMpIC1XYWxsIC1PMyAtZnVucm9sbC1sb29wcworTERGTEFHUz0tTC4gLUwkKFpMSUJMSUIpIC1scG5nIC1segorCisjUkFOTElCPWVjaG8KK1JBTkxJQj1yYW5saWIKKworIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMC4gIFlvdSBzaG91bGQgbm90CisjIGhhdmUgdG8gY2hhbmdlIGl0LgorUE5HTUFKID0gMAorUE5HTUlOID0gMS4wLjEzCitQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCitMSUJOQU1FID0gbGlicG5nMTAKKworSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQorTElCUEFUSD0kKHByZWZpeCkvbGliCisKK09CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCisJcG5ncmVhZC5vIHBuZ3Jpby5vIHBuZ3dpby5vIHBuZ3dyaXRlLm8gcG5ncnRyYW4ubyBcCisJcG5nd3RyYW4ubyBwbmdtZW0ubyBwbmdlcnJvci5vIHBuZ3ByZWFkLm8KKworT0JKU0RMTCA9ICQoT0JKUzoubz0ucGljLm8pCisKKy5TVUZGSVhFUzogICAgICAuYyAubyAucGljLm8KKworLmMucGljLm86CisJJChDQykgLWMgJChDRkxBR1MpIC1mbm8tY29tbW9uIC1vICRAICQqLmMKKworYWxsOiBsaWJwbmcuYSAkKExJQk5BTUUpLmR5bGliIHBuZ3Rlc3QKKworbGlicG5nLmE6ICQoT0JKUykKKwlhciByYyAkQCAkKE9CSlMpCisJJChSQU5MSUIpICRACisKKyQoTElCTkFNRSkuZHlsaWI6ICQoTElCTkFNRSkuJChQTkdNQUopLmR5bGliCisJbG4gLXNmICQoTElCTkFNRSkuJChQTkdNQUopLmR5bGliICQoTElCTkFNRSkuZHlsaWIKKworJChMSUJOQU1FKS4kKFBOR01BSikuZHlsaWI6ICQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliCisJbG4gLXNmICQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliICQoTElCTkFNRSkuJChQTkdNQUopLmR5bGliCisKKyQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliOiAkKE9CSlNETEwpCisJJChDQykgLWR5bmFtaWNsaWIgXAorCSAtaW5zdGFsbF9uYW1lICQoTElCUEFUSCkvJChMSUJOQU1FKS4kKFBOR01BSikuZHlsaWIgXAorCSAtY3VycmVudF92ZXJzaW9uICQoUE5HTUlOKSAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoUE5HTUlOKSBcCisJIC1vICQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliIFwKKwkgJChPQkpTRExMKSAtTCQoWkxJQkxJQikgLWx6CisKK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLmR5bGliCisJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKKwordGVzdDogcG5ndGVzdAorCS4vcG5ndGVzdAorCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtc2YgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwljcCBsaWJwbmcuYSAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCWNobW9kIDY0NCAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5hCisJbG4gLXNmICQoTElCUEFUSCkvJChMSUJOQU1FKS5hICQoTElCUEFUSCkvbGlicG5nLmEKKworaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGwtaGVhZGVycyAkKExJQk5BTUUpLmR5bGliCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvJChMSUJOQU1FKS4kKFBOR01BSikqLmR5bGliCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvJChMSUJOQU1FKS5keWxpYgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5keWxpYgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy4yLmR5bGliCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLjIuKi5keWxpYgorCWNwICQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliICQoTElCUEFUSCkKKwljaG1vZCA3NTUgJChMSUJQQVRIKS8kKExJQk5BTUUpLiQoUE5HVkVSKS5keWxpYgorCShjZCAkKExJQlBBVEgpOyBcCisJbG4gLXNmICQoTElCTkFNRSkuJChQTkdWRVIpLmR5bGliIGxpYnBuZy5keWxpYjsgXAorCWxuIC1zZiAkKExJQk5BTUUpLiQoUE5HVkVSKS5keWxpYiBsaWJwbmcuMi5keWxpYjsgXAorCWxuIC1zZiAkKExJQk5BTUUpLiQoUE5HVkVSKS5keWxpYiBsaWJwbmcuMi4kKFBOR01JTikuZHlsaWI7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS4kKFBOR1ZFUikuZHlsaWIgJChMSUJOQU1FKS4kKFBOR01BSikuZHlsaWI7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS4kKFBOR01BSikuZHlsaWIgJChMSUJOQU1FKS5keWxpYikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpL3BrZ2NvbmZpZyBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCkvcGtnY29uZmlnOyBmaQorCWNhdCBzY3JpcHRzL2xpYnBuZy5wYy5pbiB8IHNlZCAtZSBzXCFAUFJFRklYQCEkKHByZWZpeCkhID4gbGlicG5nLnBjCisJY3AgbGlicG5nLnBjICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisKK2luc3RhbGw6IGluc3RhbGwtc3RhdGljIGluc3RhbGwtc2hhcmVkCisKK2NsZWFuOgorCXJtIC1mICoubyBsaWJwbmcuYSAkKExJQk5BTUUpLipkeWxpYiBwbmd0ZXN0IHBuZ291dC5wbmcKKworRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KK3dyaXRlbG9jazoKKwljaG1vZCBhLXcgKi5bY2gzNV0gJChET0NTKSBzY3JpcHRzLyoKKworIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgorCitwbmcubyBwbmcucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZXJyb3IubyBwbmdlcnJvci5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdyaW8ubyBwbmdyaW8ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd2lvLm8gcG5nd2lvLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ21lbS5vIHBuZ21lbS5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdzZXQubyBwbmdzZXQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZ2V0Lm8gcG5nZ2V0LnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3JlYWQubyBwbmdyZWFkLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3J0cmFuLm8gcG5ncnRyYW4ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncnV0aWwubyBwbmdydXRpbC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd0cmFucy5vIHBuZ3RyYW5zLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3dyaXRlLm8gcG5nd3JpdGUucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd3RyYW4ubyBwbmd3dHJhbi5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd3dXRpbC5vIHBuZ3d1dGlsLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3ByZWFkLm8gcG5ncHJlYWQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorCitwbmd0ZXN0Lm86IHBuZy5oIHBuZ2NvbmYuaApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5kZWMgYi9zY3JpcHRzL21ha2VmaWxlLmRlYwppbmRleCAxOTg5M2NhLi5jOTA5OTNmIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmRlYworKysgYi9zY3JpcHRzL21ha2VmaWxlLmRlYwpAQCAtMTQsMTEgKzE0LDEyIEBACiBaTElCTElCPS4uL3psaWIKIFpMSUJJTkM9Li4vemxpYgogCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKK0xJQk5BTUUgPSBsaWJwbmcxMAogCiBDQz1jYwogQ0ZMQUdTPS1zdGQgLXcxIC1JJChaTElCSU5DKSAtTyAjIC1nIC1EUE5HX0RFQlVHPTEKQEAgLTMxLDE5ICszMiwxOSBAQAogCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXAogCXBuZ3d0cmFuLm8gcG5nbWVtLm8gcG5nZXJyb3IubyBwbmdwcmVhZC5vCiAKLWFsbDogbGlicG5nLnNvIGxpYnBuZy5hIHBuZ3Rlc3QKK2FsbDogJChMSUJOQU1FKS5zbyBsaWJwbmcuYSBwbmd0ZXN0CiAKIGxpYnBuZy5hOiAkKE9CSlMpCiAJYXIgcmMgJEAgICQoT0JKUykKIAkkKFJBTkxJQikgJEAKIAotbGlicG5nLnNvOiBsaWJwbmcuc28uJChQTkdNQUopCi0JbG4gLWYgLXMgbGlicG5nLnNvLiQoUE5HTUFKKSBsaWJwbmcuc28KKyQoTElCTkFNRSkuc286ICQoTElCTkFNRSkuc28uJChQTkdNQUopCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbwogCi1saWJwbmcuc28uJChQTkdNQUopOiBsaWJwbmcuc28uJChQTkdWRVIpCi0JbG4gLWYgLXMgbGlicG5nLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uJChQTkdNQUopCiskKExJQk5BTUUpLnNvLiQoUE5HTUFKKTogJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKQogCi1saWJwbmcuc28uJChQTkdWRVIpOiAkKE9CSlMpCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTKQogCSQoQ0MpIC1zaGFyZWQgLW8gJEAgJChPQkpTKSAtTCQoWkxJQkxJQikgLWx6IC1sbQogCiBwbmd0ZXN0OiBwbmd0ZXN0Lm8gbGlicG5nLmEKQEAgLTUyLDIzICs1Myw0NSBAQAogdGVzdDogcG5ndGVzdAogCS4vcG5ndGVzdAogCi1pbnN0YWxsOiBsaWJwbmcuYSBsaWJwbmcuc28uJChQTkdWRVIpCi0JLUBta2RpciAkKElOQ1BBVEgpCi0JLUBta2RpciAkKExJQlBBVEgpCi0JY3AgcG5nLmggJChJTkNQQVRIKQotCWNwIHBuZ2NvbmYuaCAkKElOQ1BBVEgpCi0JY2htb2QgNjQ0ICQoSU5DUEFUSCkvcG5nLmgKLQljaG1vZCA2NDQgJChJTkNQQVRIKS9wbmdjb25mLmgKLQljcCBsaWJwbmcuYSAkKExJQlBBVEgpCi0JY3AgbGlicG5nLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCi0JY2htb2QgNjQ0ICQoTElCUEFUSCkvbGlicG5nLmEKLQljaG1vZCA2NDQgJChMSUJQQVRIKS9saWJwbmcuc28uJChQTkdWRVIpCi0JLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLiQoUE5HTUFKKSAkKExJQlBBVEgpL2xpYnBuZy5zbwotCShjZCAkKExJQlBBVEgpOyBsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdWRVIpIGxpYnBuZy5zby4kKFBOR01BSik7IFwKLQkgbG4gLWYgLXMgbGlicG5nLnNvLiQoUE5HTUFKKSBsaWJwbmcuc28pCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtc2YgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwljcCBsaWJwbmcuYSAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCWNobW9kIDY0NCAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5hCisJbG4gLXNmICQoTElCUEFUSCkvJChMSUJOQU1FKS5hICQoTElCUEFUSCkvbGlicG5nLmEKKworaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGwtaGVhZGVycyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdNQUopKiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yLioKKwljcCAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCisJY2htb2QgNzU1ICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwkoY2QgJChMSUJQQVRIKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc287IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjI7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjIuJChQTkdNSU4pOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdNQUopICQoTElCTkFNRSkuc28pCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKS9wa2djb25maWcgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpL3BrZ2NvbmZpZzsgZmkKKwljYXQgc2NyaXB0cy9saWJwbmcucGMuaW4gfCBzZWQgLWUgc1whQFBSRUZJWEAhJChwcmVmaXgpISA+IGxpYnBuZy5wYworCWNwIGxpYnBuZy5wYyAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCWNobW9kIDY0NCAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCitpbnN0YWxsOiBpbnN0YWxsLXN0YXRpYyBpbnN0YWxsLXNoYXJlZAogCiBjbGVhbjoKLQlybSAtZiAqLm8gbGlicG5nLmEgcG5ndGVzdCBwbmdvdXQucG5nIGxpYnBuZy5zbyoKKwkvYmluL3JtIC1mICoubyBsaWJwbmcuYSAkKExJQk5BTUUpLnNvICQoTElCTkFNRSkuc28uJChQTkdNQUopKiBwbmd0ZXN0IHBuZ291dC5wbmcKIAogIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgogCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmZyZWVic2QgYi9zY3JpcHRzL21ha2VmaWxlLmZyZWVic2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyMzc2OAotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuZnJlZWJzZApAQCAtMCwwICsxLDkzIEBACisjIG1ha2VmaWxlIGZvciBsaWJwbmcgdW5kZXIgRnJlZUJTRAorIyBDb3B5cmlnaHQgKEMpIDIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uIGFuZCBBbmRyZXkgQS4gQ2hlcm5vdgorIyBDb3B5cmlnaHQgKEMpIDE5OTUgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuCisjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAorCisjIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hIGFuZCBwbmcuaAorcHJlZml4PS91c3IvbG9jYWwKKworUE5HTUFKPSA1CisuaWYgKCR7T0JKRk9STUFUfSA9PSAiZWxmIikKK1BOR1ZFUj0gJChQTkdNQUopCisuZWxzZQorUE5HTUlOPSAwCitQTkdWRVI9ICQoUE5HTUFKKS4kKFBOR01JTikKKy5lbmRpZgorCitDRkxBR1MrPSAtSS4gLURQTkdfVVNFX1BOR0dDQ1JECisuaWYgKCR7TUFDSElORV9BUkNIfSAhPSAiaTM4NiIpCitDRkxBR1MrPSAtRFBOR19OT19BU1NFTUJMRVJfQ09ERQorLmVuZGlmCitMREZMQUdTKz0tTC4gLWxwbmcgLWx6IC1sbSAtc3RhdGljCisKK09CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCisJcG5ncmVhZC5vIHBuZ3Jpby5vIHBuZ3dpby5vIHBuZ3dyaXRlLm8gcG5ncnRyYW4ubyBcCisJcG5nd3RyYW4ubyBwbmdtZW0ubyBwbmdlcnJvci5vIHBuZ3ByZWFkLm8gcG5nZ2NjcmQubworCisuU1VGRklYRVM6IC5jIC5zbyAubworCisuYy5zbzoKKwkke0NDfSAke0NGTEFHU30gLWZQSUMgLURQSUMgLW8gJEAgLWMgJDwKKworYWxsOiBsaWJwbmcuYSBsaWJwbmcuc28uJHtQTkdWRVJ9IHBuZ3Rlc3QKKworbGlicG5nLmE6ICQoT0JKUykKKwlhciByYyAkQCAgJChPQkpTKQorCSQoUkFOTElCKSAkQAorCitsaWJwbmcuc28uJHtQTkdWRVJ9OiAkKE9CSlM6Uy9vJC9zby9nKQorLmlmICgke09CSkZPUk1BVH0gPT0gImVsZiIpCisJJHtDQ30gLXNoYXJlZCAtV2wsLXgsLXNvbmFtZSwkQCAtbyAkQCAkKE9CSlM6Uy9vJC9zby9nKSAtbHogLWxtCisuZWxzZQorCSR7Q0N9IC1zaGFyZWQgLVdsLC14IC1vICRAICQoT0JKUzpTL28kL3NvL2cpIC1seiAtbG0KKy5lbmRpZgorCitwbmd0ZXN0OiBwbmd0ZXN0Lm8gbGlicG5nLmEKKwkkKENDKSAtbyBwbmd0ZXN0ICQoQ0ZMQUdTKSBwbmd0ZXN0Lm8gJChMREZMQUdTKQorCit0ZXN0OiBwbmd0ZXN0CisJLi9wbmd0ZXN0CisKK2luc3RhbGw6IGxpYnBuZy5hIGxpYnBuZy5zby4ke1BOR1ZFUn0KKwktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZworCSR7SU5TVEFMTH0gLW8gJHtJTkNPV059IC1nICR7SU5DR1JQfSAtbSAke0lOQ01PREV9IFwKKwkJcG5nLmggcG5nY29uZi5oICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZworCWxuIC1zZiBsaWJwbmcvcG5nLmggJChwcmVmaXgpL2luY2x1ZGUvcG5nLmgKKwlsbiAtc2YgbGlicG5nL3BuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwkke0lOU1RBTEx9IC1vICR7TElCT1dOfSAtZyAke0xJQkdSUH0gLW0gJHtMSUJNT0RFfSBcCisJCWxpYnBuZy5hIGxpYnBuZy5zby4ke1BOR1ZFUn0gJChwcmVmaXgpL2xpYgorCSQoUkFOTElCKSAkKHByZWZpeCkvbGliL2xpYnBuZy5hCisJbG4gLXNmIGxpYnBuZy5zby4ke1BOR1ZFUn0gJChwcmVmaXgpL2xpYi9saWJwbmcuc28KKwkvc2Jpbi9sZGNvbmZpZyAtUgorCSR7SU5TVEFMTH0gLW8gJHtNQU5PV059IC1nICR7TUFOR1JQfSAtbSAke01BTk1PREV9IFwKKwkJbGlicG5nLjMgbGlicG5ncGYuMyAkKHByZWZpeCkvbWFuL21hbjMKKwkke0lOU1RBTEx9IC1vICR7TUFOT1dOfSAtZyAke01BTkdSUH0gLW0gJHtNQU5NT0RFfSBcCisJCXBuZy41ICQocHJlZml4KS9tYW4vbWFuNQorCitjbGVhbjoKKwlybSAtZiAqLm8gbGlicG5nLmEgbGlicG5nLnNvIGxpYnBuZy5zby4ke1BOR1ZFUn0gcG5ndGVzdCBwbmdvdXQucG5nCisKK0RPQ1MgPSBBTk5PVU5DRSBDSEFOR0VTIElOU1RBTEwgS05PV05CVUcgTElDRU5TRSBSRUFETUUgVE9ETyBZMktJTkZPCit3cml0ZWxvY2s6CisJY2htb2QgYS13ICouW2NoMzVdICQoRE9DUykgc2NyaXB0cy8qCisKKyMgRE8gTk9UIERFTEVURSBUSElTIExJTkUgLS0gbWFrZSBkZXBlbmQgZGVwZW5kcyBvbiBpdC4KKworcG5nLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZXJyb3IubzogcG5nLmggcG5nY29uZi5oCitwbmdyaW8ubzogcG5nLmggcG5nY29uZi5oCitwbmd3aW8ubzogcG5nLmggcG5nY29uZi5oCitwbmdtZW0ubzogcG5nLmggcG5nY29uZi5oCitwbmdzZXQubzogcG5nLmggcG5nY29uZi5oCitwbmdnZXQubzogcG5nLmggcG5nY29uZi5oCitwbmdyZWFkLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncnRyYW4ubzogcG5nLmggcG5nY29uZi5oCitwbmdydXRpbC5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3Rlc3QubzogcG5nLmggcG5nY29uZi5oCitwbmd0cmFucy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3dyaXRlLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd3RyYW4ubzogcG5nLmggcG5nY29uZi5oCitwbmd3dXRpbC5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3ByZWFkLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZ2NjcmQubzogcG5nLmggcG5nY29uZi5oCisKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXggYi9zY3JpcHRzL21ha2VmaWxlLmdjbW14CmluZGV4IDNmZDc1NTkuLmI3YmMwMDcgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXgKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5nY21teApAQCAtMSwxNyArMSwyNyBAQAotIyBtYWtlZmlsZSBmb3IgbGlicG5nIG9uIExpbnV4IEVMRiB3aXRoIGdjYyB1c2luZyBNTVggYXNzZW1ibGVyIGNvZGUKLSMgQ29weXJpZ2h0IDE5OTYtMTk5NyBBbmRyZWFzIERpbGdlcgorIyBtYWtlZmlsZSBmb3IgbGlicG5nLmEgYW5kIGxpYnBuZzEwLnNvIG9uIExpbnV4IEVMRiB3aXRoIGdjYyB1c2luZyBNTVgKKyMgYXNzZW1ibGVyIGNvZGUKKyMgQ29weXJpZ2h0IDIwMDIgR3JlZyBSb2Vsb2ZzIGFuZCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICMgQ29weXJpZ2h0IDE5OTgtMjAwMSBHcmVnIFJvZWxvZnMKKyMgQ29weXJpZ2h0IDE5OTYtMTk5NyBBbmRyZWFzIERpbGdlcgogIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKIAogIyBDQVVUSU9OOiBEbyBub3QgdXNlIHRoaXMgbWFrZWZpbGUgd2l0aCBnY2MgdmVyc2lvbnMgMi43LjIuMiBhbmQgZWFybGllci4KIAorIyBXQVJOSU5HOiBUaGUgYXNzZW1ibGVyIGNvZGUgaW4gcG5nZ2NjcmQuYyBtYXkgbm90IGJlIHRocmVhZCBzYWZlLgorCiAjIE5PVEU6ICBXaGVuIHRlc3RpbmcgTU1YIHBlcmZvcm1hbmNlIG9uIGEgbXVsdGl0YXNraW5nIHN5c3RlbSwgbWFrZSBzdXJlCiAjICAgICAgICB0aGVyZSBhcmUgbm8gZmxvYXRpbmctcG9pbnQgcHJvZ3JhbXMgKGUuZy4sIFNFVElASG9tZSkgcnVubmluZyBpbgogIyAgICAgICAgdGhlIGJhY2tncm91bmQhICBDb250ZXh0IHN3aXRjaGVzIGJldHdlZW4gTU1YIGFuZCBGUFUgYXJlIGV4cGVuc2l2ZS4KIAorTElCTkFNRSA9IGxpYnBuZzEwCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKK1BOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKKwogQ0M9Z2NjCiAKLSMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nLnNvKiwgcG5nLmgsIGFuZCBwbmdjb25mLmgKKyMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAvbGlicG5nMTAuc28qLAorIyAkKExJQk5BTUUpL3BuZy5oIGFuZCAkKExJQk5BTUUpL3BuZ2NvbmYuaAogcHJlZml4PS91c3IvbG9jYWwKIAogIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCkBAIC0zMCwzMCArNDAsMjYgQEAKIAogIyBmb3IgcGdjYyB2ZXJzaW9uIDIuOTUuMSwgLU8zIGlzIGJ1Z2d5OyBkb24ndCB1c2UgaXQuCiAKKyMgUmVtb3ZlIC1EUE5HX1RIUkVBRF9VTlNBRkVfT0sgaWYgeW91IG5lZWQgdGhyZWFkIHNhZmV0eQogIyMjIGZvciBnZW5lcmljIGdjYzoKLUNGTEFHUz0tRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIC1PMyAkKEFMSUdOKSAtZnVucm9sbC1sb29wcyBcCitDRkxBR1M9LURQTkdfVEhSRUFEX1VOU0FGRV9PSyAtRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIFwKKwktTzMgJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgXAogCS1mb21pdC1mcmFtZS1wb2ludGVyICAjICQoV0FSTk1PUkUpIC1nIC1EUE5HX0RFQlVHPTUKICMjIyBmb3IgZ2NjIDIuOTUuMiBvbiA2ODY6Ci0jQ0ZMQUdTPS1EUE5HX1VTRV9QTkdHQ0NSRCAtSSQoWkxJQklOQykgLVdhbGwgLU8zIFwKKyNDRkxBR1M9LURQTkdfVEhSRUFEX1VOU0FGRV9PSyAtRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIC1PMyBcCiAjCS1tY3B1PWk2ODYgLW1hbGlnbi1kb3VibGUgLWZmYXN0LW1hdGggLWZzdHJpY3QtYWxpYXNpbmcgXAogIwkkKEFMSUdOKSAtZnVucm9sbC1sb29wcyAtZnVucm9sbC1hbGwtbG9vcHMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgCiAjIyMgZm9yIGdjYyAyLjcuMi4zIG9uIDQ4NiBhbmQgdXA6Ci0jQ0ZMQUdTPS1EUE5HX1VTRV9QTkdHQ0NSRCAtSSQoWkxJQklOQykgLVdhbGwgLU8zIFwKKyNDRkxBR1M9LURQTkdfVEhSRUFEX1VOU0FGRV9PSyAtRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIC1PMyBcCiAjCS1tNDg2IC1tYWxpZ24tZG91YmxlIC1mZmFzdC1tYXRoIFwKICMJJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgLWZ1bnJvbGwtYWxsLWxvb3BzIC1mb21pdC1mcmFtZS1wb2ludGVyIAogCi1MREZMQUdTPS1MLiAtV2wsLXJwYXRoLC4gLUwkKFpMSUJMSUIpIC1XbCwtcnBhdGgsJChaTElCTElCKSAtbHBuZyAtbHogLWxtCitMREZMQUdTPS1MLiAtV2wsLXJwYXRoLC4gLUwkKFpMSUJMSUIpIC1XbCwtcnBhdGgsJChaTElCTElCKSAtbHBuZzEwIC1seiAtbG0KIExERkxBR1NfQT0tTCQoWkxJQkxJQikgLVdsLC1ycGF0aCwkKFpMSUJMSUIpIGxpYnBuZy5hIC1seiAtbG0KIAogUkFOTElCPXJhbmxpYgogI1JBTkxJQj1lY2hvCiAKLSMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAotIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCi1QTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCi0KIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKIExJQlBBVEg9JChwcmVmaXgpL2xpYgogCkBAIC02OCw2NyArNzQsODQgQEAKIC5jLnBpYy5vOgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtZlBJQyAtbyAkQCAkKi5jCiAKLWFsbDogbGlicG5nLmEgbGlicG5nLnNvIHBuZ3Rlc3QgcG5ndGVzdC1zdGF0aWMKK2FsbDogbGlicG5nLmEgJChMSUJOQU1FKS5zbyBwbmd0ZXN0IHBuZ3Rlc3Qtc3RhdGljCiAKIHBuZ2djY3JkLm86CXBuZ2djY3JkLmMgcG5nLmggcG5nY29uZi5oCi0JQGVjaG8gIiIKLQlAZWNobyAnICAgIFlvdSBjYW4gaWdub3JlIHRoZSBzaW5nbGUgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iJwotCUBlY2hvICcgICAgd2FybmluZyBhbmQgbXVsdGlwbGUgIjx2YXJpYWJsZT4gZGVmaW5lZCBidXQgbm90IHVzZWQiIHdhcm5pbmdzOicKLQlAZWNobyAiIgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkKi5jCi0JQGVjaG8gIiIKIAogcG5nZ2NjcmQucGljLm86CXBuZ2djY3JkLmMgcG5nLmggcG5nY29uZi5oCi0JQGVjaG8gIiIKLQlAZWNobyAnICAgIFlvdSBjYW4gaWdub3JlIHRoZSBzaW5nbGUgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iJwotCUBlY2hvICcgICAgd2FybmluZyBhbmQgbXVsdGlwbGUgIjx2YXJpYWJsZT4gZGVmaW5lZCBidXQgbm90IHVzZWQiIHdhcm5pbmdzOicKLQlAZWNobyAiIgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtZlBJQyAtbyAkQCBwbmdnY2NyZC5jCi0JQGVjaG8gIiIKIAotbGlicG5nLmE6ICQoT0JKUykKKyQoTElCTkFNRSkuYTogJChPQkpTKQogCWFyIHJjICRAICQoT0JKUykKIAkkKFJBTkxJQikgJEAKIAotbGlicG5nLnNvOiBsaWJwbmcuc28uJChQTkdNQUopCi0JbG4gLXNmIGxpYnBuZy5zby4kKFBOR01BSikgbGlicG5nLnNvCiskKExJQk5BTUUpLnNvOiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKQorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvCiAKLWxpYnBuZy5zby4kKFBOR01BSik6IGxpYnBuZy5zby4kKFBOR1ZFUikKLQlsbiAtc2YgbGlicG5nLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uJChQTkdNQUopCiskKExJQk5BTUUpLnNvLiQoUE5HTUFKKTogJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJOQU1FKS5zby4kKFBOR01BSikKIAotbGlicG5nLnNvLiQoUE5HVkVSKTogJChPQkpTRExMKQotCSQoQ0MpIC1zaGFyZWQgLVdsLC1zb25hbWUsbGlicG5nLnNvLiQoUE5HTUFKKSAtbyBsaWJwbmcuc28uJChQTkdWRVIpIFwKKyQoTElCTkFNRSkuc28uJChQTkdWRVIpOiAkKE9CSlNETEwpCisJJChDQykgLXNoYXJlZCAtV2wsLXNvbmFtZSwkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAtbyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBcCiAJICQoT0JKU0RMTCkgLUwkKFpMSUJMSUIpIC1seiAtbG0gLWxjCiAKLXBuZ3Rlc3Q6IHBuZ3Rlc3QubyBsaWJwbmcuc28KK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNvCiAJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKIAotcG5ndGVzdC1zdGF0aWM6IHBuZ3Rlc3QubyBsaWJwbmcuYQorcG5ndGVzdC1zdGF0aWM6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLmEKIAkkKENDKSAtbyBwbmd0ZXN0LXN0YXRpYyAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHU19BKQogCiB0ZXN0OiBwbmd0ZXN0IHBuZ3Rlc3Qtc3RhdGljCiAJQGVjaG8gIiIKLQlAZWNobyAiICAgVGVzdGluZyBkeW5hbWljYWxseSBsaW5rZWQgdmVyc2lvbjoiCisJQGVjaG8gIiAgIFJ1bm5pbmcgcG5ndGVzdCBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBsaWJwbmcxMC5zbzoiCiAJQGVjaG8gIiIKIAkuL3BuZ3Rlc3QKIAlAZWNobyAiIgotCUBlY2hvICIgICBUZXN0aW5nIHN0YXRpY2FsbHkgbGlua2VkIHZlcnNpb246IgorCUBlY2hvICIgICBSdW5uaW5nIHBuZ3Rlc3Qgc3RhdGljYWxseSBsaW5rZWQgd2l0aCBsaWJwbmcuYToiCiAJQGVjaG8gIiIKIAkuL3BuZ3Rlc3Qtc3RhdGljCiAKLWluc3RhbGw6IGxpYnBuZy5hIGxpYnBuZy5zby4kKFBOR1ZFUikKLQktQGlmIFsgISAtZCAkKElOQ1BBVEgpICBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCk7IGZpCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtc2YgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKIAktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKLQljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQotCWNobW9kIDY0NCAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCi0JY2htb2QgNzU1ICQoTElCUEFUSCkvbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4kKFBOR01BSikgJChMSUJQQVRIKS9saWJwbmcuc28KLQkoY2QgJChMSUJQQVRIKTsgbG4gLXNmIGxpYnBuZy5zby4kKFBOR1ZFUikgbGlicG5nLnNvLiQoUE5HTUFKKTsgXAotCSBsbiAtc2YgbGlicG5nLnNvLiQoUE5HTUFKKSBsaWJwbmcuc28pCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1zZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKIAogY2xlYW46Ci0JL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgbGlicG5nLnNvKiBwbmd0ZXN0IHBuZ291dC5wbmcKKwkvYmluL3JtIC1mICoubyBsaWJwbmcuYSAkKExJQk5BTUUpLnNvICQoTElCTkFNRSkuc28uJChQTkdNQUopKiBcCisJcG5ndGVzdCBwbmdvdXQucG5nCiAKIERPQ1MgPSBBTk5PVU5DRSBDSEFOR0VTIElOU1RBTEwgS05PV05CVUcgTElDRU5TRSBSRUFETUUgVE9ETyBZMktJTkZPCiB3cml0ZWxvY2s6CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmhwZ2NjIGIvc2NyaXB0cy9tYWtlZmlsZS5ocGdjYwppbmRleCAxMDAyYWZmLi41N2M3MjAyIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmhwZ2NjCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuaHBnY2MKQEAgLTEsNCArMSw1IEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcgb24gSFAtVVggdXNpbmcgR0NDCisjIENvcHlyaWdodCAoQykgMjAwMiwgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAjIENvcHlyaWdodCAoQykgMjAwMSwgTGF1cmVudCBmYWlsbGllCiAjIENvcHlyaWdodCAoQykgMTk5OCwgMTk5OSBHcmVnIFJvZWxvZnMKICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyCkBAIC0zMSwxMSArMzIsMTIgQEAKIFJBTkxJQj1yYW5saWIKICNSQU5MSUI9ZWNobwogCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKK0xJQk5BTUUgPSBsaWJwbmcxMAogCiBJTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlCiBMSUJQQVRIPSQocHJlZml4KS9saWIKQEAgLTUxLDQxICs1Myw2OSBAQAogLmMucGljLm86CiAJJChDQykgLWMgJChDRkxBR1MpIC1mUElDIC1vICRAICQqLmMKIAotYWxsOiBsaWJwbmcuYSBsaWJwbmcuc2wgcG5ndGVzdAorYWxsOiBsaWJwbmcuYSAkKExJQk5BTUUpLnNsIHBuZ3Rlc3QKIAogbGlicG5nLmE6ICQoT0JKUykKIAlhciByYyAkQCAkKE9CSlMpCiAJJChSQU5MSUIpICRACiAKLWxpYnBuZy5zbDogbGlicG5nLnNsLiQoUE5HTUFKKQotCWxuIC1mIC1zIGxpYnBuZy5zbC4kKFBOR01BSikgbGlicG5nLnNsCiskKExJQk5BTUUpLnNsOiAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKQorCWxuIC1mIC1zICQoTElCTkFNRSkuc2wuJChQTkdNQUopICQoTElCTkFNRSkuc2wKIAotbGlicG5nLnNsLiQoUE5HTUFKKTogbGlicG5nLnNsLiQoUE5HVkVSKQotCWxuIC1mIC1zIGxpYnBuZy5zbC4kKFBOR1ZFUikgbGlicG5nLnNsLiQoUE5HTUFKKQorJChMSUJOQU1FKS5zbC4kKFBOR01BSik6ICQoTElCTkFNRSkuc2wuJChQTkdWRVIpCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikgJChMSUJOQU1FKS5zbC4kKFBOR01BSikKIAotbGlicG5nLnNsLiQoUE5HVkVSKTogJChPQkpTRExMKQorJChMSUJOQU1FKS5zbC4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKIAkkKExEKSAtYiAtTCQoWkxJQkxJQikgK3MgK2IgJChaTElCTElCKSBcCiAJK2ggbGlicG5nLnNsLiQoUE5HTUFKKSAtbyBsaWJwbmcuc2wuJChQTkdWRVIpICQoT0JKU0RMTCkgLWx6CiAKLXBuZ3Rlc3Q6IHBuZ3Rlc3QubyBsaWJwbmcuc2wKK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNsCiAJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKIAogdGVzdDogcG5ndGVzdAogCS4vcG5ndGVzdAogCi1pbnN0YWxsOiBsaWJwbmcuYSBsaWJwbmcuc2wuJChQTkdWRVIpCi0JLUBpZiBbICEgLWQgJChJTkNQQVRIKSAgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtc2YgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKIAktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKLQljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQotCWNobW9kIDY0NCAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgbGlicG5nLnNsLiQoUE5HVkVSKSAkKExJQlBBVEgpCi0JY2htb2QgNzU1ICQoTElCUEFUSCkvbGlicG5nLnNsLiQoUE5HVkVSKQotCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zbC4kKFBOR01BSikgJChMSUJQQVRIKS9saWJwbmcuc2wKLQkoY2QgJChMSUJQQVRIKTsgbG4gLXNmIGxpYnBuZy5zbC4kKFBOR1ZFUikgbGlicG5nLnNsLiQoUE5HTUFKKTsgXAotCSBsbiAtc2YgbGlicG5nLnNsLiQoUE5HTUFKKSBsaWJwbmcuc2wpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1zZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNsLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNsCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc2wuJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc2wuJChQTkdWRVIpIGxpYnBuZy5zbC4yOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc2wuJChQTkdWRVIpIGxpYnBuZy5zbC4yLiQoUE5HTUlOKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNsKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKIAogY2xlYW46Ci0JL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgbGlicG5nLnNsKiBwbmd0ZXN0IHBuZ291dC5wbmcKKwkvYmluL3JtIC1mICoubyBsaWJwbmcuYSAkKFNIQVJFRExJQikuc2wgJChTSEFSRURMSUIpLnNsLiQoUE5HTUFKKSogXAorCXBuZ3Rlc3QgcG5nb3V0LnBuZwogCiBET0NTID0gQU5OT1VOQ0UgQ0hBTkdFUyBJTlNUQUxMIEtOT1dOQlVHIExJQ0VOU0UgUkVBRE1FIFRPRE8gWTJLSU5GTwogd3JpdGVsb2NrOgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5ocHV4IGIvc2NyaXB0cy9tYWtlZmlsZS5ocHV4CmluZGV4IGJmZDI2YzguLmNlOTFiOTYgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuaHB1eAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmhwdXgKQEAgLTEsNSArMSw1IEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcsIEhQVVggKDEwLjIwIGFuZCAxMS4wMCkKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorIyBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICMgQ29weXJpZ2h0IChDKSAxOTk1IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MgogIyBjb250cmlidXRlZCBieSBKaW0gUmljZSBhbmQgdXBkYXRlZCBieSBDaHJpcyBTY2hsZWljaGVyLCBIZXdsZXR0IFBhY2thcmQKICMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCkBAIC0xNiwxNCArMTYsMTcgQEAKIAogUkFOTElCPXJhbmxpYgogCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKK0xJQk5BTUUgPSBsaWJwbmcxMAogCi0jIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hIGFuZCBwbmcuaAorIyB3aGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAuc2wsIGFuZCBwbmcuaAogcHJlZml4PS9vcHQvbGlicG5nCitMSUJQQVRIPSRwcmVmaXgvbGliCitJTkNQQVRIPSRwcmVmaXgvaW5jbHVkZQogCiBPQkpTID0gcG5nLm8gcG5nc2V0Lm8gcG5nZ2V0Lm8gcG5ncnV0aWwubyBwbmd0cmFucy5vIHBuZ3d1dGlsLm8gXAogCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXApAQCAtMzYsMjEgKzM5LDIyIEBACiAuYy5waWMubzoKIAkkKENDKSAtYyAkKENGTEFHUykgK3ogLW8gJEAgJCouYwogCi1hbGw6IGxpYnBuZy5hIGxpYnBuZy5zbCBwbmd0ZXN0CithbGw6IGxpYnBuZy5hICQoTElCTkFNRSkuc2wgcG5ndGVzdAogCiBsaWJwbmcuYTogJChPQkpTKQogCWFyIHJjICRAICAkKE9CSlMpCiAJJChSQU5MSUIpICRACiAKLWxpYnBuZy5zbDogbGlicG5nLnNsLiQoUE5HTUFKKQotCWxuIC1mIC1zIGxpYnBuZy5zbC4kKFBOR01BSikgbGlicG5nLnNsCiskKExJQk5BTUUpLnNsOiAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKQorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNsCiAKLWxpYnBuZy5zbC4kKFBOR01BSik6IGxpYnBuZy5zbC4kKFBOR1ZFUikKLQlsbiAtZiAtcyBsaWJwbmcuc2wuJChQTkdWRVIpIGxpYnBuZy5zbC4kKFBOR01BSikKKyQoTElCTkFNRSkuc2wuJChQTkdNQUopOiAkKExJQk5BTUUpLnNsLiQoUE5HVkVSKQorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKQogCi1saWJwbmcuc2wuJChQTkdWRVIpOiAkKE9CSlNETEwpCiskKExJQk5BTUUpLnNsLiQoUE5HVkVSKTogJChPQkpTRExMKQogCSQoTEQpIC1iIC1MJChaTElCTElCKSArcyArYiAkKFpMSUJMSUIpIFwKLQkraCBsaWJwbmcuc2wuJChQTkdNQUopIC1vIGxpYnBuZy5zbC4kKFBOR1ZFUikgJChPQkpTRExMKSAtbHoKKwkraCAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKSAtbyAkKExJQk5BTUUpLnNsLiQoUE5HVkVSKSBcCisJJChPQkpTRExMKSAtbHoKIAogcG5ndGVzdDogcG5ndGVzdC5vIGxpYnBuZy5hCiAJJChDQykgLW8gcG5ndGVzdCAkKENDRkxBR1MpIHBuZ3Rlc3QubyAkKExERkxBR1MpCkBAIC01OCwyMSArNjIsNDYgQEAKIHRlc3Q6IHBuZ3Rlc3QKIAkuL3BuZ3Rlc3QKIAotaW5zdGFsbDogbGlicG5nLmEKLQktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCi0JLUBta2RpciAkKHByZWZpeCkvbGliCi0JY3AgcG5nLmggJChwcmVmaXgpL2luY2x1ZGUKLQljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUKLQljaG1vZCA2NDQgJChwcmVmaXgpL2luY2x1ZGUvcG5nLmgKLQljaG1vZCA2NDQgJChwcmVmaXgpL2luY2x1ZGUvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgbGlicG5nLnNsLiQoUE5HVkVSKSAkKHByZWZpeCkvbGliCi0JY2htb2QgNjQ0ICQocHJlZml4KS9saWIvbGlicG5nLmEKLQljaG1vZCA3NTUgJChwcmVmaXgpL2xpYi9saWJwbmcuc2wuJChQTkdWRVIpCi0JKGNkICQocHJlZml4KS9saWI7IGxuIC1mIC1zIGxpYnBuZy5zbC4kKFBOR1ZFUikgbGlicG5nLnNsLiQoUE5HTUFKKTsgXAotCWxuIC1mIC1zIGxpYnBuZy5zbC4kKFBOR01BSikgbGlicG5nLnNsKQoraW5zdGFsbC1oZWFkZXJzOiBwbmcuaCBwbmdjb25mLmgKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpLyQoTElCTkFNRSkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpLyQoTElCTkFNRSk7IGZpCisJY3AgcG5nLmggcG5nY29uZi5oICQoSU5DUEFUSCkvJChMSUJOQU1FKQorCWNobW9kIDY0NCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nLmggJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAtZiAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvbGlicG5nCisJbG4gLXNmICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZworCitpbnN0YWxsLXN0YXRpYzogaW5zdGFsbC1oZWFkZXJzIGxpYnBuZy5hCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1zZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNsLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNsCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNsCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNsLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc2wuMi4qCisJY3AgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc2wuJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zbC4kKFBOR1ZFUikgbGlicG5nLnNsOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc2wuJChQTkdWRVIpIGxpYnBuZy5zbC4yOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc2wuJChQTkdWRVIpIGxpYnBuZy5zbC4yLiQoUE5HTUlOKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNsKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKIAogY2xlYW46Ci0Jcm0gLWYgKi5vIGxpYnBuZy5hIGxpYnBuZy5zbCogcG5ndGVzdCBwbmdvdXQucG5nCisJL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgJChMSUJOQU1FKS5zbCAkKExJQk5BTUUpLnNsLiQoUE5HTUFKKSogXAorCXBuZ3Rlc3QgcG5nb3V0LnBuZwogCiBET0NTID0gQU5OT1VOQ0UgQ0hBTkdFUyBJTlNUQUxMIEtOT1dOQlVHIExJQ0VOU0UgUkVBRE1FIFRPRE8gWTJLSU5GTwogd3JpdGVsb2NrOgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5pYm1jIGIvc2NyaXB0cy9tYWtlZmlsZS5pYm1jCmluZGV4IDBmNTk2YzIuLmYwOWE2MmMgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuaWJtYworKysgYi9zY3JpcHRzL21ha2VmaWxlLmlibWMKQEAgLTUsNyArNSw3IEBACiAjIE5vdGVzOgogIyAgIERlcml2ZWQgZnJvbSBtYWtlZmlsZS5zdGQKICMgICBBbGwgbW9kdWxlcyBhcmUgY29tcGlsZWQgaW4gQyBtb2RlCi0jICAgVGVzdGVkIHdpdGggSUJNIEMgMy42LjUgdW5kZXIgV2luMzIsIGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgT1MvMiB0b28KKyMgICBUZXN0ZWQgdW5kZXIgV2luMzIsIGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgT1MvMgogIyAgIENhbiBiZSBlYXNpbHkgYWRhcHRlZCBmb3IgSUJNIFZpc3VhbEFnZS9DKysgZm9yIEFJWAogCiAjIExvY2F0aW9uIG9mIHRoZSB6bGliIGxpYnJhcnkgYW5kIGluY2x1ZGUgZmlsZXMKQEAgLTE4LDcgKzE4LDcgQEAKIEFSID0gaWxpYgogUk0gPSBkZWwKIAotQ0ZMQUdTID0gLUkkKFpMSUJJTkMpIC1PMiAtVzMKK0NGTEFHUyA9IC1JJChaTElCSU5DKSAtTWMgLU8yIC1XMwogTERGTEFHUyA9CiAKICMgRmlsZSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmtuciBiL3NjcmlwdHMvbWFrZWZpbGUua25yCmluZGV4IDA5YTc0YjYuLjRkNzcwN2IgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUua25yCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUua25yCkBAIC00NywxMSArNDcsMTQgQEAKIAogaW5zdGFsbDogbGlicG5nLmEKIAktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCisJLUBta2RpciAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKIAktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwktQHJtIC1mICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCisJLUBybSAtZiAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKKwljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUvbGlicG5nCisJY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZy9wbmcuaAorCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcvcG5nY29uZi5oCiAJY3AgbGlicG5nLmEgJChwcmVmaXgpL2xpYgogCWNobW9kIDY0NCAkKHByZWZpeCkvbGliL2xpYnBuZy5hCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubGludXggYi9zY3JpcHRzL21ha2VmaWxlLmxpbnV4CmluZGV4IDVlOGJhNGMuLjY3MDg3YjEgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUubGludXgKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5saW51eApAQCAtMSwxMSArMSwxNyBAQAotIyBtYWtlZmlsZSBmb3IgbGlicG5nIG9uIExpbnV4IEVMRiB3aXRoIGdjYwotIyBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTkgR3JlZyBSb2Vsb2ZzCisjIG1ha2VmaWxlIGZvciBsaWJwbmcuYSBhbmQgbGlicG5nMTAuc28gb24gTGludXggRUxGIHdpdGggZ2NjCisjIENvcHlyaWdodCAoQykgMTk5OCwgMTk5OSwgMjAwMiBHcmVnIFJvZWxvZnMgYW5kIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIKICMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAKK0xJQk5BTUUgPSBsaWJwbmcxMAorUE5HTUFKID0gMAorUE5HTUlOID0gMS4wLjEzCitQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCisKIENDPWdjYwogCi0jIHdoZXJlICJtYWtlIGluc3RhbGwiIHB1dHMgbGlicG5nLmEsIGxpYnBuZy5zbyosIHBuZy5oIGFuZCBwbmdjb25mLmgKKyMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAvbGlicG5nMTAuc28qLAorIyBsaWJwbmcxMC9wbmcuaCBhbmQgbGlicG5nMTAvcG5nY29uZi5oCiBwcmVmaXg9L3Vzci9sb2NhbAogCiAjIFdoZXJlIHRoZSB6bGliIGxpYnJhcnkgYW5kIGluY2x1ZGUgZmlsZXMgYXJlIGxvY2F0ZWQKQEAgLTI2LDE3ICszMiwxMyBAQAogCiBDRkxBR1M9LUkkKFpMSUJJTkMpIC1XYWxsIC1PMyAtZnVucm9sbC1sb29wcyBcCiAJJChBTElHTikgIyAkKFdBUk5NT1JFKSAtZyAtRFBOR19ERUJVRz01Ci1MREZMQUdTPS1MLiAtV2wsLXJwYXRoLC4gLUwkKFpMSUJMSUIpIC1XbCwtcnBhdGgsJChaTElCTElCKSAtbHBuZyAtbHogLWxtCisKK0xERkxBR1M9LUwuIC1XbCwtcnBhdGgsLiAtTCQoWkxJQkxJQikgLVdsLC1ycGF0aCwkKFpMSUJMSUIpIC1scG5nMTAgLWx6IC1sbQorTERGTEFHU19BPS1MJChaTElCTElCKSAtV2wsLXJwYXRoLCQoWkxJQkxJQikgbGlicG5nLmEgLWx6IC1sbQogCiBSQU5MSUI9cmFubGliCiAjUkFOTElCPWVjaG8KIAotIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90Ci0jIGhhdmUgdG8gY2hhbmdlIGl0LgotUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjEyYmV0YTEKLVBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKLQogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQogTElCUEFUSD0kKHByZWZpeCkvbGliCiAKQEAgLTUxLDQxICs1Myw4MCBAQAogLmMucGljLm86CiAJJChDQykgLWMgJChDRkxBR1MpIC1mUElDIC1vICRAICQqLmMKIAotYWxsOiBsaWJwbmcuYSBsaWJwbmcuc28gcG5ndGVzdAorYWxsOiBsaWJwbmcuYSAkKExJQk5BTUUpLnNvIHBuZ3Rlc3QKIAogbGlicG5nLmE6ICQoT0JKUykKIAlhciByYyAkQCAkKE9CSlMpCiAJJChSQU5MSUIpICRACiAKLWxpYnBuZy5zbzogbGlicG5nLnNvLiQoUE5HTUFKKQotCWxuIC1zZiBsaWJwbmcuc28uJChQTkdNQUopIGxpYnBuZy5zbworJChMSUJOQU1FKS5zbzogJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbwogCi1saWJwbmcuc28uJChQTkdNQUopOiBsaWJwbmcuc28uJChQTkdWRVIpCi0JbG4gLXNmIGxpYnBuZy5zby4kKFBOR1ZFUikgbGlicG5nLnNvLiQoUE5HTUFKKQorJChMSUJOQU1FKS5zby4kKFBOR01BSik6ICQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopCiAKLWxpYnBuZy5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKLQkkKENDKSAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYnBuZy5zby4kKFBOR01BSikgLW8gbGlicG5nLnNvLiQoUE5HVkVSKSBcCi0JICQoT0JKU0RMTCkgLUwkKFpMSUJMSUIpIC1seiAtbG0gLWxjCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTRExMKQorCSQoQ0MpIC1zaGFyZWQgLVdsLC1zb25hbWUsJChMSUJOQU1FKS5zby4kKFBOR01BSikgXAorCS1vICQoTElCTkFNRSkuc28uJChQTkdWRVIpIFwKKwkkKE9CSlNETEwpIC1MJChaTElCTElCKSAtbHogLWxtIC1sYwogCi1wbmd0ZXN0OiBwbmd0ZXN0Lm8gbGlicG5nLnNvCitwbmd0ZXN0OiBwbmd0ZXN0Lm8gJChMSUJOQU1FKS5zbwogCSQoQ0MpIC1vIHBuZ3Rlc3QgJChDRkxBR1MpIHBuZ3Rlc3QubyAkKExERkxBR1MpCiAKLXRlc3Q6IHBuZ3Rlc3QKLQkuL3BuZ3Rlc3QKK3BuZ3Rlc3Qtc3RhdGljOiBwbmd0ZXN0Lm8gJChMSUJOQU1FKS5hCisJJChDQykgLW8gcG5ndGVzdC1zdGF0aWMgJChDRkxBR1MpIHBuZ3Rlc3QubyAkKExERkxBR1NfQSkKIAotaW5zdGFsbDogbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKK3Rlc3Q6IHBuZ3Rlc3QgcG5ndGVzdC1zdGF0aWMKKwlAZWNobyAiIgorCUBlY2hvICIgICBSdW5uaW5nIHBuZ3Rlc3QgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggbGlicG5nMTAuc286IgorCUBlY2hvICIiCisJLi9wbmd0ZXN0CisJQGVjaG8gIiIKKwlAZWNobyAiICAgUnVubmluZyBwbmd0ZXN0IHN0YXRpY2FsbHkgbGlua2VkIHdpdGggbGlicG5nLmE6IgorCUBlY2hvICIiCisJLi9wbmd0ZXN0LXN0YXRpYworCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtc2YgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKIAktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKLQljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQotCWNobW9kIDY0NCAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCi0JY2htb2QgNzU1ICQoTElCUEFUSCkvbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4kKFBOR01BSikgJChMSUJQQVRIKS9saWJwbmcuc28KLQkoY2QgJChMSUJQQVRIKTsgbG4gLXNmIGxpYnBuZy5zby4kKFBOR1ZFUikgbGlicG5nLnNvLiQoUE5HTUFKKTsgXAotCSBsbiAtc2YgbGlicG5nLnNvLiQoUE5HTUFKKSBsaWJwbmcuc28pCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1zZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yOyBcCisJbG4gLXNmICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKKwogCiBjbGVhbjoKLQkvYmluL3JtIC1mICoubyBsaWJwbmcuYSBsaWJwbmcuc28qIHBuZ3Rlc3QgcG5nb3V0LnBuZworCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOTUFKKSogXAorCXBuZ3Rlc3QgcG5nb3V0LnBuZwogCiBET0NTID0gQU5OT1VOQ0UgQ0hBTkdFUyBJTlNUQUxMIEtOT1dOQlVHIExJQ0VOU0UgUkVBRE1FIFRPRE8gWTJLSU5GTwogd3JpdGVsb2NrOgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5tYWNvc3ggYi9zY3JpcHRzL21ha2VmaWxlLm1hY29zeAppbmRleCAwOTNlYTc3Li5mZTNlZjlmIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLm1hY29zeAorKysgYi9zY3JpcHRzL21ha2VmaWxlLm1hY29zeApAQCAtMSw1ICsxLDggQEAKICMgbWFrZWZpbGUgZm9yIGxpYnBuZywgTUFDT1MgWAorIyBDb3B5cmlnaHQgKEMpIDIwMDIgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAjIENvcHlyaWdodCAoQykgMTk5NSBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4KKyMgTW9kaWZpZWQgYnkgS2FyaW4gS29zaW5hIDxreXJhaEBzaW0ubm8+IDIwMDExMDEwOgorIyBidWlsZCBzaGFyZWQgbGlicmFyeSAoKi5keWxpYikKICMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAKICMgd2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEgYW5kIHBuZy5oCkBAIC0xMiw4ICsxNSwxNyBAQAogWkxJQklOQz0uLi96bGliCiAKIENDPWNjCi1DRkxBR1M9LUkkKFpMSUJJTkMpIC1PICMgLWcgLURQTkdfREVCVUc9NQorQ0ZMQUdTPS1mbm8tY29tbW9uIC1JJChaTElCSU5DKSAtTyAjIC1nIC1EUE5HX0RFQlVHPTUKIExERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHoKK0xEU0hBUkVEPWNjIC1seiAtZHluYW1pY2xpYiAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoVkVSKSAtY3VycmVudF92ZXJzaW9uICQoVkVSKQorCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKK1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKK0xJQk5BTUU9bGlicG5nMTAKK1NIQVJFRExJQl9QT1NURklYPWR5bGliCitMSUJQQVRIPSQocHJlZml4KS9saWIKK0lOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKIAogI1JBTkxJQj1lY2hvCiBSQU5MSUI9cmFubGliCkBAIC0yMiwzMCArMzQsNzEgQEAKIAlwbmdyZWFkLm8gcG5ncmlvLm8gcG5nd2lvLm8gcG5nd3JpdGUubyBwbmdydHJhbi5vIFwKIAlwbmd3dHJhbi5vIHBuZ21lbS5vIHBuZ2Vycm9yLm8gcG5ncHJlYWQubwogCi1hbGw6IGxpYnBuZy5hIHBuZ3Rlc3QKK2FsbDogbGlicG5nLmEgcG5ndGVzdCBzaGFyZWQKKworc2hhcmVkOiAkKExJQk5BTUUpLiQoVkVSKS4kKFNIQVJFRExJQl9QT1NURklYKQogCiBsaWJwbmcuYTogJChPQkpTKQogCWFyIHJjICRAICAkKE9CSlMpCiAJJChSQU5MSUIpICRACiAKKyQoTElCTkFNRSkuJChWRVIpLiQoU0hBUkVETElCX1BPU1RGSVgpOiAkKE9CSlMpCisJJChMRFNIQVJFRCkgLW8gJEAgJChPQkpTKQorCiBwbmd0ZXN0OiBwbmd0ZXN0Lm8gbGlicG5nLmEKIAkkKENDKSAtbyBwbmd0ZXN0ICQoQ0ZMQUdTKSBwbmd0ZXN0Lm8gJChMREZMQUdTKQogCiB0ZXN0OiBwbmd0ZXN0CiAJLi9wbmd0ZXN0CiAKLWluc3RhbGw6IGxpYnBuZy5hCi0JLUBta2RpciAkKHByZWZpeCkvaW5jbHVkZQotCS1AbWtkaXIgJChwcmVmaXgpL2xpYgotCWNwIHBuZy5oICQocHJlZml4KS9pbmNsdWRlCi0JY3AgcG5nY29uZi5oICQocHJlZml4KS9pbmNsdWRlCi0JY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCi0JY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL3BuZ2NvbmYuaAotCWNwIGxpYnBuZy5hICQocHJlZml4KS9saWIKLQljaG1vZCA2NDQgJChwcmVmaXgpL2xpYi9saWJwbmcuYQorCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtZiAtcyAkKElOQ1BBVEgpLyQoTElCTkFNRSkgJChJTkNQQVRIKS9saWJwbmcKKworaW5zdGFsbC1zdGF0aWM6IGluc3RhbGwtaGVhZGVycyBsaWJwbmcuYQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCWNwIGxpYnBuZy5hICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLmEKKwlsbiAtZiAtcyAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS4kKFBOR1ZFUikuJChTSEFSRURMSUJfUE9TVEZJWCkKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLiQoUE5HTUFKKSouJChTSEFSRURMSUJfUE9TVEZJWCkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLiQoU0hBUkVETElCX1BPU1RGSVgpCisJLUAvYmluL3JtIC1mIGxpYnBuZy4kKFNIQVJFRF9QT1NURklYKQorCS1AL2Jpbi9ybSAtZiBsaWJwbmcuMi4kKFNIQVJFRF9QT1NURklYKQorCS1AL2Jpbi9ybSAtZiBsaWJwbmcuMi4qLiQoU0hBUkVEX1BPU1RGSVgpCisJY3AgJChMSUJOQU1FKS4kKFBOR1ZFUikuJChTSEFSRURMSUJfUE9TVEZJWCkgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuJChQTkdWRVIpLiQoU0hBUkVETElCX1BPU1RGSVgpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLiQoUE5HVkVSKS4kKFNIQVJFRF9QT1NURklYKSBdCisJbGlicG5nLiQoU0hBUkVEX1BPU1RGSVgpOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS4kKFBOR1ZFUikuJChTSEFSRURfUE9TVEZJWCkgXQorCWxpYnBuZy4yLiQoU0hBUkVEX1BPU1RGSVgpOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS4kKFBOR1ZFUikuJChTSEFSRURfUE9TVEZJWCkgXQorCWxpYnBuZy4yLiQoUE5HTUlOKS4kKFNIQVJFRF9QT1NURklYKTsgXAorCWxuIC1zZiAkKExJQk5BTUUpLiQoUE5HVkVSKS4kKFNIQVJFRExJQl9QT1NURklYKSBcCisJJChMSUJOQU1FKS4kKFBOR01BSikuJChTSEFSRURMSUJfUE9TVEZJWCk7IFwKKwlsbiAtc2YgJChMSUJOQU1FKS4kKFBOR01BSikuJChTSEFSRURMSUJfUE9TVEZJWCkgXAorCSQoTElCTkFNRSkuJChTSEFSRURMSUJfUE9TVEZJWCkpCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKS9wa2djb25maWcgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpL3BrZ2NvbmZpZzsgZmkKKwljYXQgc2NyaXB0cy9saWJwbmcucGMuaW4gfCBzZWQgLWUgc1whQFBSRUZJWEAhJChwcmVmaXgpISA+IGxpYnBuZy5wYworCWNwIGxpYnBuZy5wYyAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCWNobW9kIDY0NCAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCitpbnN0YWxsOiBpbnN0YWxsLXNoYXJlZAogCiBjbGVhbjoKLQlybSAtZiAqLm8gbGlicG5nLmEgcG5ndGVzdCBwbmdvdXQucG5nCisJcm0gLWYgKi5vIGxpYnBuZy5hIHBuZ3Rlc3QgcG5nb3V0LnBuZyBcCisJJChMSUJOQU1FKS4kKFZFUikuJChTSEFSRURMSUJfUE9TVEZJWCkgXAorCSQoTElCTkFNRSkuJChTSEFSRURMSUJfUE9TVEZJWCkKIAogRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KIHdyaXRlbG9jazoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubWlwcyBiL3NjcmlwdHMvbWFrZWZpbGUubWlwcwppbmRleCA4ZGIyNjI3Li42MDJhMmY5IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLm1pcHMKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5taXBzCkBAIC0zMSwxMSArMzEsMTQgQEAKIAogaW5zdGFsbDogbGlicG5nLmEKIAktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCisJLUBta2RpciAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKIAktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwktQHJtIC1mICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCisJLUBybSAtZiAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKKwljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUvbGlicG5nCisJY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZy9wbmcuaAorCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcvcG5nY29uZi5oCiAJY3AgbGlicG5nLmEgJChwcmVmaXgpL2xpYgogCWNobW9kIDY0NCAkKHByZWZpeCkvbGliL2xpYnBuZy5hCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubmUxMmJzZCBiL3NjcmlwdHMvbWFrZWZpbGUubmUxMmJzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODE2Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5uZTEyYnNkCkBAIC0wLDAgKzEsNDQgQEAKKyMgbWFrZWZpbGUgZm9yIGxpYnBuZyBmb3IgTmV0QlNEIGZvciB0aGUgc3RhbmRhcmQKKyMgbWFrZSBvYmogJiYgbWFrZSBkZXBlbmQgJiYgbWFrZSAmJiBtYWtlIHRlc3QKKyMgbWFrZSBpbmNsdWRlcyAmJiBtYWtlIGluc3RhbGwKKyMgQ29weXJpZ2h0IChDKSAyMDAyIFBhdHJpY2sgUi5MLiBXZWxjaGUKKyMgRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCisKKyMgWW91IHNob3VsZCBhbHNvIHJ1biBtYWtlZmlsZS5uZXRic2QKKworTE9DQUxCQVNFPz0vdXNyL2xvY2FsCitMSUJESVI9CSR7TE9DQUxCQVNFfS9saWIKK01BTkRJUj0gJHtMT0NBTEJBU0V9L21hbgorSU5DU0RJUj0ke0xPQ0FMQkFTRX0vaW5jbHVkZS9saWJwbmcxMAorCitMSUI9CXBuZzEwCitTSExJQl9NQUpPUj0JMAorU0hMSUJfTUlOT1I9CTEuMC4xMworU1JDUz0JcG5nZ2NjcmQuYyBwbmcuYyBwbmdzZXQuYyBwbmdnZXQuYyBwbmdydXRpbC5jIHBuZ3RyYW5zLmMgcG5nd3V0aWwuYyBcCisJCXBuZ3JlYWQuYyBwbmdyaW8uYyBwbmd3aW8uYyBwbmd3cml0ZS5jIHBuZ3J0cmFuLmMgXAorCQlwbmd3dHJhbi5jIHBuZ21lbS5jIHBuZ2Vycm9yLmMgcG5ncHJlYWQuYworSU5DUz0JcG5nLmggcG5nY29uZi5oCitNQU49CWxpYnBuZy4zIGxpYnBuZ3BmLjMgcG5nLjUKKworQ1BQRkxBR1MrPS1JJHsuQ1VSRElSfSAtRFBOR19VU0VfUE5HR0NDUkQKKworIyBzb21ldGhpbmcgbGlrZSB0aGlzIGZvciBtbXggYXNzZW1ibGVyLCBidXQgaXQgY29yZSBkdW1wcyBmb3IgbWUgYXQgdGhlIG1vbWVudAorIyAuaWYgJHtNQUNISU5FX0FSQ0h9ID09ICJpMzg2IgorIyAgIENQUEZMQUdTKz0tRFBOR19USFJFQURfVU5TQUZFX09LCisjICAgTUtMSU5UPSBubworIyAuZWxzZQorICAgIENQUEZMQUdTKz0tRFBOR19OT19BU1NFTUJMRVJfQ09ERQorIyAuZW5kaWYKKworQ0xFQU5GSUxFUys9cG5ndGVzdC5vIHBuZ3Rlc3QKKworcG5ndGVzdC5vOglwbmd0ZXN0LmMKKwkke0NDfSAtYyAke0NQUEZMQUdTfSAke0NGTEFHU30gJHsuQUxMU1JDfSAtbyAkey5UQVJHRVR9CisKK3BuZ3Rlc3Q6CXBuZ3Rlc3QubyBsaWJwbmcuYQorCSR7Q0N9ICR7TERGTEFHU30gJHsuQUxMU1JDfSAtbyR7LlRBUkdFVH0gLWx6IC1sbQorCit0ZXN0Oglwbmd0ZXN0CisJY2QgJHsuQ1VSRElSfSAmJiAkey5PQkpESVJ9L3BuZ3Rlc3QKKworLmluY2x1ZGUgPGJzZC5saWIubWs+CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLm5ldGJzZCBiL3NjcmlwdHMvbWFrZWZpbGUubmV0YnNkCmluZGV4IDcxOWJjNzEuLmFiMzM2ZjkgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUubmV0YnNkCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUubmV0YnNkCkBAIC0xLDMxICsxLDMzIEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcgZm9yIE5ldEJTRCBmb3IgdGhlIHN0YW5kYXJkCiAjIG1ha2Ugb2JqICYmIG1ha2UgZGVwZW5kICYmIG1ha2UgJiYgbWFrZSB0ZXN0CiAjIG1ha2UgaW5jbHVkZXMgJiYgbWFrZSBpbnN0YWxsCi0jIENvcHlyaWdodCAoQykgMjAwMSBQYXRyaWNrIFIuTC4gV2VsY2hlCisjIENvcHlyaWdodCAoQykgMjAwMiBQYXRyaWNrIFIuTC4gV2VsY2hlCiAjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogCisjIFlvdSBzaG91bGQgYWxzbyBydW4gbWFrZWZpbGUubmUwYnNkCisKIExPQ0FMQkFTRT89L3Vzci9sb2NhbAogTElCRElSPQkke0xPQ0FMQkFTRX0vbGliCiBNQU5ESVI9ICR7TE9DQUxCQVNFfS9tYW4KLUlOQ1NESVI9JHtMT0NBTEJBU0V9L2luY2x1ZGUKK0lOQ1NESVI9JHtMT0NBTEJBU0V9L2luY2x1ZGUvbGlicG5nCiAKLUxJQj1wbmcKLVNITElCX01BSk9SPSAyCi1TSExJQl9NSU5PUj0gMS4wLjEyYmV0YTEKK0xJQj0JcG5nCitTSExJQl9NQUpPUj0JMgorU0hMSUJfTUlOT1I9CTEuMC4xMwogU1JDUz0JcG5nZ2NjcmQuYyBwbmcuYyBwbmdzZXQuYyBwbmdnZXQuYyBwbmdydXRpbC5jIHBuZ3RyYW5zLmMgcG5nd3V0aWwuYyBcCi0JcG5ncmVhZC5jIHBuZ3Jpby5jIHBuZ3dpby5jIHBuZ3dyaXRlLmMgcG5ncnRyYW4uYyBcCi0JcG5nd3RyYW4uYyBwbmdtZW0uYyBwbmdlcnJvci5jIHBuZ3ByZWFkLmMKKwkJcG5ncmVhZC5jIHBuZ3Jpby5jIHBuZ3dpby5jIHBuZ3dyaXRlLmMgcG5ncnRyYW4uYyBcCisJCXBuZ3d0cmFuLmMgcG5nbWVtLmMgcG5nZXJyb3IuYyBwbmdwcmVhZC5jCiBJTkNTPQlwbmcuaCBwbmdjb25mLmgKIE1BTj0JbGlicG5nLjMgbGlicG5ncGYuMyBwbmcuNQogCiBDUFBGTEFHUys9LUkkey5DVVJESVJ9IC1EUE5HX1VTRV9QTkdHQ0NSRAogCi1DUFBGTEFHUys9LURQTkdfTk9fQVNTRU1CTEVSX0NPREUKICMgc29tZXRoaW5nIGxpa2UgdGhpcyBmb3IgbW14IGFzc2VtYmxlciwgYnV0IGl0IGNvcmUgZHVtcHMgZm9yIG1lIGF0IHRoZSBtb21lbnQKICMgLmlmICR7TUFDSElORV9BUkNIfSA9PSAiaTM4NiIKKyMgICBDUFBGTEFHUys9LURQTkdfVEhSRUFEX1VOU0FGRV9PSwogIyAgIE1LTElOVD0gbm8KICMgLmVsc2UKLSMgICBDUFBGTEFHUys9LURQTkdfTk9fQVNTRU1CTEVSX0NPREUKKyAgICBDUFBGTEFHUys9LURQTkdfTk9fQVNTRU1CTEVSX0NPREUKICMgLmVuZGlmCiAKIENMRUFORklMRVMrPXBuZ3Rlc3QubyBwbmd0ZXN0CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLm9wZW5ic2QgYi9zY3JpcHRzL21ha2VmaWxlLm9wZW5ic2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgzOWNlMQotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUub3BlbmJzZApAQCAtMCwwICsxLDcwIEBACisjIG1ha2VmaWxlIGZvciBsaWJwbmcKKyMgQ29weXJpZ2h0IChDKSAxOTk1IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLgorIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKKworUFJFRklYPz0gL3Vzci9sb2NhbAorTElCRElSPQkke1BSRUZJWH0vbGliCitNQU5ESVI9ICR7UFJFRklYfS9tYW4vY2F0CisKK1NITElCX01BSk9SPQkwCitTSExJQl9NSU5PUj0JMS4wLjEzCisKK0xJQj0JcG5nCitTUkNTPQlwbmcuYyBwbmdlcnJvci5jIHBuZ2djY3JkLmMgcG5nZ2V0LmMgcG5nbWVtLmMgcG5ncHJlYWQuYyBcCisJcG5ncmVhZC5jIHBuZ3Jpby5jIHBuZ3J0cmFuLmMgcG5ncnV0aWwuYyBwbmdzZXQuYyBwbmd0cmFucy5jIFwKKwlwbmd3aW8uYyBwbmd3cml0ZS5jIHBuZ3d0cmFuLmMgcG5nd3V0aWwuYworCitIRFJTPQlwbmcuaCBwbmdjb25mLmgKKworQ0ZMQUdTKz0gLVdhbGwKK0NQUEZMQUdTKz0gLUkkey5DVVJESVJ9IC1EUE5HX05PX0FTU0VNQkxFUl9DT0RFIC1EUE5HX1VTRV9QTkdHQ0NSRAorCitOT1BST0ZJTEU9IFllcworCitDTEVBTkZJTEVTKz0gcG5ndGVzdC5vIHBuZ3Rlc3QKKworTUFOPQlsaWJwbmcuMyBsaWJwbmdwZi4zIHBuZy41CitET0NTPQlBTk5PVU5DRSBDSEFOR0VTIExJQ0VOU0UgUkVBRE1FIGxpYnBuZy50eHQKKworcG5ndGVzdC5vOglwbmd0ZXN0LmMKKwkke0NDfSAke0NQUEZMQUdTfSAke0NGTEFHU30gLWMgJHsuQUxMU1JDfSAtbyAkey5UQVJHRVR9CisKK3BuZ3Rlc3Q6CXBuZ3Rlc3QubworCSR7Q0N9ICR7TERGTEFHU30gJHsuQUxMU1JDfSAtbyAkey5UQVJHRVR9IC1MJHsuT0JKRElSfSAtbHBuZyAtbHogLWxtCisKK3Rlc3Q6CXBuZ3Rlc3QKKwljZCAkey5PQkpESVJ9ICYmIGVudiBcCisJCUxEX0xJQlJBUllfUEFUSD0iJHsuT0JKRElSfSIgJHsuT0JKRElSfS9wbmd0ZXN0CisKK2JlZm9yZWluc3RhbGw6CisJaWYgWyAhIC1kICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZS9saWJwbmcgXTsgdGhlbiBcCisJICAke0lOU1RBTEx9IC1kIC1vIHJvb3QgLWcgd2hlZWwgJHtERVNURElSfSR7UFJFRklYfS9pbmNsdWRlL2xpYnBuZzsgXAorCWZpCisJaWYgWyAhIC1kICR7REVTVERJUn0ke0xJQkRJUn0gXTsgdGhlbiBcCisJICAke0lOU1RBTEx9IC1kIC1vIHJvb3QgLWcgd2hlZWwgJHtERVNURElSfSR7TElCRElSfTsgXAorCWZpCisJaWYgWyAhIC1kICR7REVTVERJUn0ke0xJQkRJUn0vZGVidWcgXTsgdGhlbiBcCisJICAke0lOU1RBTEx9IC1kIC1vIHJvb3QgLWcgd2hlZWwgJHtERVNURElSfSR7TElCRElSfS9kZWJ1ZzsgXAorCWZpCisJaWYgWyAhIC1kICR7REVTVERJUn0ke01BTkRJUn0zIF07IHRoZW4gXAorCSAgJHtJTlNUQUxMfSAtZCAtbyByb290IC1nIHdoZWVsICR7REVTVERJUn0ke01BTkRJUn0zOyBcCisJZmkKKwlpZiBbICEgLWQgJHtERVNURElSfSR7TUFORElSfTUgXTsgdGhlbiBcCisJICAke0lOU1RBTEx9IC1kIC1vIHJvb3QgLWcgd2hlZWwgJHtERVNURElSfSR7TUFORElSfTU7IFwKKwlmaQorCWlmIFsgISAtZCAke0RFU1RESVJ9JHtQUkVGSVh9L3NoYXJlL2RvYy9wbmcgXTsgdGhlbiBcCisJICAke0lOU1RBTEx9IC1kIC1vIHJvb3QgLWcgd2hlZWwgJHtERVNURElSfSR7UFJFRklYfS9zaGFyZS9kb2MvcG5nOyBcCisJZmkKKworYWZ0ZXJpbnN0YWxsOgorCUBybSAtZiAke0RFU1RESVJ9JHtMSUJESVJ9L2xpYnBuZ19waWMuYQorCUBybSAtZiAke0RFU1RESVJ9JHtMSUJESVJ9L2RlYnVnL2xpYnBuZy5hCisJQHJtIC1mICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZS9wbmcuaAorCUBybSAtZiAke0RFU1RESVJ9JHtQUkVGSVh9L2luY2x1ZGUvcG5nY29uZi5oCisJQHJtZGlyICR7REVTVERJUn0ke0xJQkRJUn0vZGVidWcgMj4vZGV2L251bGwgfHwgdHJ1ZQorCSR7SU5TVEFMTH0gJHtJTlNUQUxMX0NPUFl9IC1vICR7U0hBUkVPV059IC1nICR7U0hBUkVHUlB9IFwKKwkJLW0gJHtOT05CSU5NT0RFfSAke0hEUlN9ICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZS9saWJwbmcKKwkke0lOU1RBTEx9ICR7SU5TVEFMTF9DT1BZfSAtbyAke1NIQVJFT1dOfSAtZyAke1NIQVJFR1JQfSBcCisJCS1tICR7Tk9OQklOTU9ERX0gJHtET0NTfSAke0RFU1RESVJ9JHtQUkVGSVh9L3NoYXJlL2RvYy9wbmcKKworLmluY2x1ZGUgPGJzZC5saWIubWs+CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLnNjbyBiL3NjcmlwdHMvbWFrZWZpbGUuc2NvCmluZGV4IGYzMmYxNjQuLmNkMDUzY2MgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuc2NvCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuc2NvCkBAIC0yMiwxMyArMjIsMTQgQEAKICNSQU5MSUI9cmFubGliCiBSQU5MSUI9ZWNobwogCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KLVBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMmJldGExCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKK0xJQk5BTUUgPSBsaWJwbmcxMAogCi1JTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlCitJTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlL2xpYnBuZwogTElCUEFUSD0kKHByZWZpeCkvbGliCiAKIE9CSlMgPSBwbmcubyBwbmdzZXQubyBwbmdnZXQubyBwbmdydXRpbC5vIHBuZ3RyYW5zLm8gcG5nd3V0aWwubyBcCkBAIC00Miw0MCArNDMsNzAgQEAKIC5jLnBpYy5vOgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtS1BJQyAtbyAkQCAkKi5jCiAKLWFsbDogbGlicG5nLmEgbGlicG5nLnNvIHBuZ3Rlc3QKK2FsbDogbGlicG5nLmEgJChMSUJOQU1FKS5zbyBwbmd0ZXN0CiAKIGxpYnBuZy5hOiAkKE9CSlMpCiAJYXIgcmMgJEAgJChPQkpTKQogCSQoUkFOTElCKSAkQAogCi1saWJwbmcuc286IGxpYnBuZy5zby4kKFBOR01BSikKLQlsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdNQUopIGxpYnBuZy5zbworJChMSUJOQU1FKS5zbzogJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvCiAKLWxpYnBuZy5zby4kKFBOR01BSik6IGxpYnBuZy5zby4kKFBOR1ZFUikKLQlsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdWRVIpIGxpYnBuZy5zby4kKFBOR01BSikKKyQoTElCTkFNRSkuc28uJChQTkdNQUopOiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopCiAKLWxpYnBuZy5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKLQkkKENDKSAtRyAgLVdsLC1oLGxpYnBuZy5zby4kKFBOR01BSikgLW8gbGlicG5nLnNvLiQoUE5HVkVSKSBcCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTRExMKQorCSQoQ0MpIC1HICAtV2wsLWgsJChMSUJOQU1FKS5zby4kKFBOR01BSikgLW8gJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgXAogCSAkKE9CSlNETEwpCiAKLXBuZ3Rlc3Q6IHBuZ3Rlc3QubyBsaWJwbmcuc28KK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNvCiAJTERfUlVOX1BBVEg9LjokKFpMSUJMSUIpICQoQ0MpIC1vIHBuZ3Rlc3QgJChDRkxBR1MpIHBuZ3Rlc3QubyAkKExERkxBR1MpCiAKIHRlc3Q6IHBuZ3Rlc3QKIAkuL3BuZ3Rlc3QKIAotaW5zdGFsbDogbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AbWtkaXIgJChJTkNQQVRIKSAkKExJQlBBVEgpCi0JY3AgcG5nLmggcG5nY29uZi5oICQoSU5DUEFUSCkKLQljaG1vZCA2NDQgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAotCWNwIGxpYnBuZy5hIGxpYnBuZy5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQotCWNobW9kIDc1NSAkKExJQlBBVEgpL2xpYnBuZy5zby4kKFBOR1ZFUikKLQktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uJChQTkdNQUopICQoTElCUEFUSCkvbGlicG5nLnNvCi0JKGNkICQoTElCUEFUSCk7IGxuIC1mIC1zIGxpYnBuZy5zby4kKFBOR1ZFUikgbGlicG5nLnNvLiQoUE5HTUFKKTsgXAotCSBsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdNQUopIGxpYnBuZy5zbykKKworaW5zdGFsbC1oZWFkZXJzOiBwbmcuaCBwbmdjb25mLmgKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpLyQoTElCTkFNRSkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpLyQoTElCTkFNRSk7IGZpCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9wbmdjb25mLmgKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtZiAtcyAkKElOQ1BBVEgpLyQoTElCTkFNRSkgJChJTkNQQVRIKS9saWJwbmcKKworaW5zdGFsbC1zdGF0aWM6IGluc3RhbGwtaGVhZGVycyBsaWJwbmcuYQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCWNwIGxpYnBuZy5hICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLmEKKwlsbiAtZiAtcyAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc287IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uMjsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbykKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpL3BrZ2NvbmZpZyBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCkvcGtnY29uZmlnOyBmaQorCWNhdCBzY3JpcHRzL2xpYnBuZy5wYy5pbiB8IHNlZCAtZSBzXCFAUFJFRklYQCEkKHByZWZpeCkhID4gbGlicG5nLnBjCisJY3AgbGlicG5nLnBjICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisKK2luc3RhbGw6IGluc3RhbGwtc3RhdGljIGluc3RhbGwtc2hhcmVkCiAKIGNsZWFuOgotCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hIGxpYnBuZy5zbyogcG5ndGVzdCBwbmdvdXQucG5nCisJL2Jpbi9ybSAtZiAqLm8gbGlicG5nLmEgJChMSUJOQU1FKS5zbyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogcG5ndGVzdCBwbmdvdXQucG5nCiAKIERPQ1MgPSBBTk5PVU5DRSBDSEFOR0VTIElOU1RBTEwgS05PV05CVUcgTElDRU5TRSBSRUFETUUgVE9ETyBZMktJTkZPCiB3cml0ZWxvY2s6CmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjIGIvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYwppbmRleCBiZWEwNDQ5Li40NTIyOTBmIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuc2dnY2MKQEAgLTEsNCArMSw1IEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcsIFNHSSBJUklYIHdpdGggZ2NjCisjIENvcHlyaWdodCAoQykgMjAwMiBHbGVubiBSYW5kZXJzLVBlaHJzb24KICMgQ29weXJpZ2h0IChDKSAxOTk1IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLgogIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKIApAQCAtMTEsMTggKzEyLDI0IEBACiAjWkxJQkxJQj0uLi96bGliCiAjWkxJQklOQz0uLi96bGliCiAKKyMgQUJJIGNhbiBiZSBibGFuayB0byB1c2UgZGVmYXVsdCBmb3IgeW91ciBzeXN0ZW0sIC0zMiwgLW8zMiwgLW4zMiwgb3IgLTY0CisjIFNlZSAibWFuIGFiaSIuICB6bGliIG11c3QgYmUgYnVpbHQgd2l0aCB0aGUgc2FtZSBBQkkuCitBQkk9CisKIENDPWdjYwogCiBXQVJOTU9SRT0gIyAtZyAtRFBOR19ERUJVRz01Ci1DRkxBR1M9LUkkKFpMSUJJTkMpIC1PMiAkKFdBUk5NT1JFKSAtZlBJQyAtbWFiaT1uMzIKLSMgemxpYiBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aCBuMzIKLUxERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCi1MRFNIQVJFRD1nY2MgLXNoYXJlZAorQ0ZMQUdTPSQoQUJJKSAtSSQoWkxJQklOQykgLU8yICQoV0FSTk1PUkUpIC1mUElDIC1tYWJpPW4zMgorTERGTEFHUz0kKEFCSSkgLUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCitMRFNIQVJFRD1DQyAkKEFCSSkgLXNoYXJlZAogCi1WRVI9MS4wLjEyYmV0YTEKLUxJQlM9bGlicG5nLnNvLjEuMC4xMmJldGExCi1TSEFSRURMSUI9bGlicG5nLnNvCi1saWJkaXI9JChwcmVmaXgpL2xpYjMyCitQTkdNQUogPSAwCitQTkdNSU4gPSAxLjAuMTMKK1BOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKKyMgU2VlICJtYW4gZHNvIiBmb3IgaW5mbyBhYm91dCBzaGFyZWQgb2JqZWN0cworTElCUz1saWJwbmcxMC5zby4kKFBOR01BSikuJChQTkdWRVIpCitMSUJOQU1FPWxpYnBuZzEwCitMSUJQQVRIPSQocHJlZml4KS9saWIzMgogCiBSQU5MSUI9ZWNobwogI1JBTkxJQj1yYW5saWIKQEAgLTMxLDE3ICszOCwxNyBAQAogCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXAogCXBuZ3d0cmFuLm8gcG5nbWVtLm8gcG5nZXJyb3IubyBwbmdwcmVhZC5vCiAKLWFsbDogbGlicG5nLmEgJChTSEFSRURMSUIpLiQoVkVSKSBwbmd0ZXN0CithbGw6IGxpYnBuZy5hICQoTElCTkFNRSkuc28uJChQTkdWRVIpIHBuZ3Rlc3QKIAogbGlicG5nLmE6ICQoT0JKUykKIAlhciByYyAkQCAgJChPQkpTKQogCSQoUkFOTElCKSAkQAogCi0kKFNIQVJFRExJQikuJChWRVIpOiAkKE9CSlMpCiskKExJQk5BTUUpLnNvLiQoUE5HVkVSKTogJChPQkpTKQogCSQoTERTSEFSRUQpIC1vICRAICQoT0JKUykKLQlybSAtZiAkKFNIQVJFRExJQikgJChTSEFSRURMSUIpLjEKLQlsbiAtcyAkQCAkKFNIQVJFRExJQikKLQlsbiAtcyAkQCAkKFNIQVJFRExJQikuMQorCXJtIC1mICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtcyAkQCAkKExJQk5BTUUpLnNvCisJbG4gLXMgJEAgJChMSUJOQU1FKS5zby4kKFBOR01BSikKIAogcG5ndGVzdDogcG5ndGVzdC5vIGxpYnBuZy5hCiAJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKQEAgLTQ5LDIyICs1Niw0MyBAQAogdGVzdDogcG5ndGVzdAogCS4vcG5ndGVzdAogCi1pbnN0YWxsOiBsaWJwbmcuYQotCS1AbWtkaXIgJChwcmVmaXgpL2luY2x1ZGUKLQktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKLQljcCBsaWJwbmcuYSAkKHByZWZpeCkvbGliCi0JY2htb2QgNjQ0ICQocHJlZml4KS9saWIvbGlicG5nLmEKLQljcCAkKFNIQVJFRExJQikuJChWRVIpICQobGliZGlyKTsgY2htb2QgNzU1ICQoU0hBUkVETElCKS4kKFZFUikKLQkoY2QgJChsaWJkaXIpOyBpZiB0ZXN0IC1mICQoU0hBUkVETElCKS4kKFZFUik7IHRoZW4gXAotCXJtIC1mICQoU0hBUkVETElCKSAkKFNIQVJFRExJQikuMTsgXAotCWxuIC1zICQoU0hBUkVETElCKS4kKFZFUikgJChTSEFSRURMSUIpOyBcCi0JbG4gLXMgJChTSEFSRURMSUIpLiQoVkVSKSAkKFNIQVJFRExJQikuMTsgXAotCShsZGNvbmZpZyB8fCB0cnVlKSAgPi9kZXYvbnVsbCAyPiYxOyBcCi0JZmkpCisKK2luc3RhbGwtaGVhZGVyczogcG5nLmggcG5nY29uZi5oCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCk7IGZpCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKS8kKExJQk5BTUUpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKS8kKExJQk5BTUUpOyBmaQorCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkKKwljaG1vZCA2NDQgJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZy5oICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAtZiAkKElOQ1BBVEgpL2xpYnBuZworCWxuIC1mIC1zICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZworCitpbnN0YWxsLXN0YXRpYzogaW5zdGFsbC1oZWFkZXJzIGxpYnBuZy5hCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJY3AgbGlicG5nLmEgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwljaG1vZCA2NDQgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuYQorCWxuIC1mIC1zICQoTElCUEFUSCkvJChMSUJOQU1FKS5hICQoTElCUEFUSCkvbGlicG5nLmEKKworaW5zdGFsbC1zaGFyZWQ6IGluc3RhbGwtaGVhZGVycyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdNQUopKiAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28KKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMgorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yLioKKwljcCAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCisJY2htb2QgNzU1ICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwkoY2QgJChMSUJQQVRIKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zbzsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjIuJChQTkdNSU4pOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJOQU1FKS5zby4kKFBOR01BSik7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvKQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkvcGtnY29uZmlnIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKS9wa2djb25maWc7IGZpCisJY2F0IHNjcmlwdHMvbGlicG5nLnBjLmluIHwgc2VkIC1lIHNcIUBQUkVGSVhAISQocHJlZml4KSEgPiBsaWJwbmcucGMKKwljcCBsaWJwbmcucGMgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKwljaG1vZCA2NDQgJChMSUJQQVRIKS9wa2djb25maWcvbGlicG5nMTAucGMKKworaW5zdGFsbDogaW5zdGFsbC1zdGF0aWMgaW5zdGFsbC1zaGFyZWQKIAogY2xlYW46CiAJcm0gLWYgKi5vIGxpYnBuZy5hIHBuZ3Rlc3QgcG5nb3V0LnBuZwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2kgYi9zY3JpcHRzL21ha2VmaWxlLnNnaQppbmRleCA0NzI2ZDVkLi4yNTFhMDM2IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnNnaQorKysgYi9zY3JpcHRzL21ha2VmaWxlLnNnaQpAQCAtMSwxMyArMSwxMiBAQAotIyBtYWtlZmlsZSBmb3IgbGlicG5nICguYSBhbmQgLnNvKSwgU0dJIElSSVggd2l0aCAnY2MnCi0jIENvcHlyaWdodCAoQykgMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyMgbWFrZWZpbGUgZm9yIGxpYnBuZy5hIGFuZCBsaWJwbmcxMC5zbywgU0dJIElSSVggd2l0aCAnY2MnCisjIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIyBDb3B5cmlnaHQgKEMpIDE5OTUgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuCiAjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogCi0jIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hIGFuZCBwbmcuaAorIyB3aGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAuc28gYW5kIGxpYnBuZzEwL3BuZy5oCiBwcmVmaXg9L3Vzci9sb2NhbAogCiAjIFdoZXJlIHRoZSB6bGliIGxpYnJhcnkgYW5kIGluY2x1ZGUgZmlsZXMgYXJlIGxvY2F0ZWQKLSMgWW91IGNhbiBhZGQgdGhlIC1uMzIgb3B0aW9uOyB0aGVuIHpsaWIgbXVzdCBhbHNvIGJlIGNvbXBpbGVkIHdpdGggLW4zMgogI1pMSUJMSUI9L3Vzci9sb2NhbC9saWIzMgogI1pMSUJJTkM9L3Vzci9sb2NhbC9pbmNsdWRlCiAjWkxJQkxJQj0vdXNyL2xvY2FsL2xpYgpAQCAtMTcsNDAgKzE2LDQ4IEBACiAKIENDPWNjCiAKLVdBUk5NT1JFPS1mdWxsd2FybgotIyBZb3UgY2FuIGFkZCB0aGUgLW4zMiBvcHRpb247IHRoZW4gemxpYiBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aCAtbjMyCi0jIE5vdGU6IC1LUElDIGlzIHRoZSBkZWZhdWx0IGFueWhvdwotI0NGTEFHUz0tSSQoWkxJQklOQykgLU8gJChXQVJOTU9SRSkgLUtQSUMgLURQTkdfVVNFX1BOR0dDQ1JEICMgLWcgLURQTkdfREVCVUc9NQotQ0ZMQUdTPS1JJChaTElCSU5DKSAtTyAkKFdBUk5NT1JFKSAtRFBOR19VU0VfUE5HR0NDUkQgLURQTkdfTk9fQVNTRU1CTEVSX0NPREUKLUxERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCi1MRFNIQVJFRD1jYyAtc2hhcmVkCisjIEFCSSBjYW4gYmUgYmxhbmsgdG8gdXNlIGRlZmF1bHQgZm9yIHlvdXIgc3lzdGVtLCAtMzIsIC1vMzIsIC1uMzIsIG9yIC02NAorIyBTZWUgIm1hbiBhYmkiLiAgemxpYiBtdXN0IGJlIGJ1aWx0IHdpdGggdGhlIHNhbWUgQUJJLgorQUJJPQogCi1WRVI9MS4wLjEyYmV0YTEKLVNPTlVNPTIKLVNIQVJFRExJQj1saWJwbmcuc28KLWxpYmRpcj0kKHByZWZpeCkKLSNsaWJkaXI9JChwcmVmaXgpL2xpYjMyCitXQVJOTU9SRT0tZnVsbHdhcm4KKyMgTm90ZTogLUtQSUMgaXMgdGhlIGRlZmF1bHQgYW55aG93CisjQ0ZMQUdTPSAkKEFCSSkgLUkkKFpMSUJJTkMpIC1PICQoV0FSTk1PUkUpIC1LUElDIC1EUE5HX1VTRV9QTkdHQ0NSRCAjIC1nIC1EUE5HX0RFQlVHPTUKK0NGTEFHUz0kKEFCSSkgLUkkKFpMSUJJTkMpIC1PICQoV0FSTk1PUkUpIC1EUE5HX1VTRV9QTkdHQ0NSRCAtRFBOR19OT19BU1NFTUJMRVJfQ09ERQorTERGTEFHU19BPSQoQUJJKSAtTC4gLUwkKFpMSUJMSUIpIC1scG5nMTAgLWx6IC1sbQorTERGTEFHUz0kKEFCSSkgLUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCitMRFNIQVJFRD1jYyAkKEFCSSkgLXNoYXJlZAorCisjIFNlZSAibWFuIGRzbyIgZm9yIGluZm8gYWJvdXQgc2hhcmVkIG9iamVjdHMKK0xJQk5BTUU9bGlicG5nMTAKK1BOR01BSiA9IDAKK1BOR01JTiA9IDEuMC4xMworUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBSQU5MSUI9ZWNobwogI1JBTkxJQj1yYW5saWIKIAorSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQorTElCUEFUSD0kKHByZWZpeCkvbGliCisjTElCUEFUSD0kKHByZWZpeCkvbGliMzIKKwogT0JKUyA9IHBuZ2djY3JkLm8gcG5nLm8gcG5nc2V0Lm8gcG5nZ2V0Lm8gcG5ncnV0aWwubyBwbmd0cmFucy5vIHBuZ3d1dGlsLm8gXAogCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXAogCXBuZ3d0cmFuLm8gcG5nbWVtLm8gcG5nZXJyb3IubyBwbmdwcmVhZC5vCiAKIGFsbDogbGlicG5nLmEgcG5ndGVzdCBzaGFyZWQKIAotc2hhcmVkOiAkKFNIQVJFRExJQikuJChTT05VTSkuJChWRVIpCitzaGFyZWQ6ICQoTElCTkFNRSkuc28uJChQTkdNQUopLiQoUE5HVkVSKQogCiBsaWJwbmcuYTogJChPQkpTKQogCWFyIHJjICRAICAkKE9CSlMpCiAJJChSQU5MSUIpICRACiAKLSQoU0hBUkVETElCKS4kKFNPTlVNKS4kKFZFUik6ICQoT0JKUykKKyQoTElCTkFNRSkuc28uJChQTkdWRVIpOiAkKE9CSlMpCiAJJChMRFNIQVJFRCkgLW8gJEAgJChPQkpTKQotCXJtIC1mICQoU0hBUkVETElCKSAkKFNIQVJFRExJQikuPwotCWxuIC1zICRAICQoU0hBUkVETElCKQotCWxuIC1zICRAICQoU0hBUkVETElCKS4kKFNPTlVNKQorCXJtIC1mICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtcyAkQCAkKExJQk5BTUUpLnNvCisJbG4gLXMgJEAgJChMSUJOQU1FKS5zby4kKFBOR01BSikKIAogcG5ndGVzdDogcG5ndGVzdC5vIGxpYnBuZy5hCiAJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKQEAgLTU4LDI2ICs2NSw0NiBAQAogdGVzdDogcG5ndGVzdAogCS4vcG5ndGVzdAogCi1pbnN0YWxsOiBsaWJwbmcuYQotCS1AbWtkaXIgJChwcmVmaXgpL2luY2x1ZGUKLQktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKLQljcCBsaWJwbmcuYSAkKHByZWZpeCkvbGliCi0JY2htb2QgNjQ0ICQocHJlZml4KS9saWIvbGlicG5nLmEKK2luc3RhbGwtaGVhZGVyczogcG5nLmggcG5nY29uZi5oCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCk7IGZpCisJLUBpZiBbICEgLWQgJChJTkNQQVRIKS8kKExJQk5BTUUpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKS8kKExJQk5BTUUpOyBmaQorCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkKKwljaG1vZCA2NDQgJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZy5oICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9wbmcuaCAkKElOQ1BBVEgpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAtZiAkKElOQ1BBVEgpL2xpYnBuZworCWxuIC1mIC1zICQoSU5DUEFUSCkvJChMSUJOQU1FKSAkKElOQ1BBVEgpL2xpYnBuZwogCi1pbnN0YWxsLXNoYXJlZDogJChTSEFSRURMSUIpLiQoU09OVU0pLiQoVkVSKQotCWNwICQoU0hBUkVETElCKS4kKFNPTlVNKS4kKFZFUikgJChsaWJkaXIpCi0JY2htb2QgNzU1ICQoU0hBUkVETElCKS4kKFNPTlVNKS4kKFZFUikKLQkoY2QgJChsaWJkaXIpCi0Jcm0gLWYgJChTSEFSRURMSUIpICQoU0hBUkVETElCKS4kKFNPTlVNKQotCWxuIC1zICQoU0hBUkVETElCKS4kKFNPTlVNKS4kKFZFUikgJChTSEFSRURMSUIpLiQoU09OVU0pCi0JbG4gLXMgJChTSEFSRURMSUIpLiQoU09OVU0pICQoU0hBUkVETElCKSkKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwljcCBsaWJwbmcuYSAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCWNobW9kIDY0NCAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5hCisJbG4gLWYgLXMgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEgJChMSUJQQVRIKS9saWJwbmcuYQorCitpbnN0YWxsLXNoYXJlZDogaW5zdGFsbC1oZWFkZXJzICQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR01BSikqICQoTElCUEFUSCkvJChMSUJOQU1FKS5zbworCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zbworCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIuKgorCWNwICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCUEFUSCkKKwljaG1vZCA3NTUgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCShjZCAkKExJQlBBVEgpOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjI7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uMi4kKFBOR01JTik7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdNQUopICQoTElCTkFNRSkuc28pCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKS9wa2djb25maWcgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpL3BrZ2NvbmZpZzsgZmkKKwljYXQgc2NyaXB0cy9saWJwbmcucGMuaW4gfCBzZWQgLWUgc1whQFBSRUZJWEAhJChwcmVmaXgpISA+IGxpYnBuZy5wYworCWNwIGxpYnBuZy5wYyAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCWNobW9kIDY0NCAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCitpbnN0YWxsOiBpbnN0YWxsLXN0YXRpYyBpbnN0YWxsLXNoYXJlZAogCiBjbGVhbjoKLQlybSAtZiAqLm8gbGlicG5nLmEgcG5ndGVzdCBwbmdvdXQucG5nICQoU0hBUkVETElCKS4qCisJcm0gLWYgKi5vIGxpYnBuZy5hIHBuZ3Rlc3QgcG5nb3V0LnBuZyAkKExJQk5BTUUpLnNvIFwKKwkkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSoKIAogRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KIHdyaXRlbG9jazoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc285IGIvc2NyaXB0cy9tYWtlZmlsZS5zbzkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxM2YzOQotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuc285CkBAIC0wLDAgKzEsMTUzIEBACisjIG1ha2VmaWxlIGZvciBsaWJwbmcgb24gU29sYXJpcyA5IChiZXRhKSB3aXRoIEZvcnRlIGNjCisjIFVwZGF0ZWQgYnkgQ2hhZCBTY2hyb2NrIGZvciBTb2xhcmlzIDkKKyMgQ29udHJpYnV0ZWQgYnkgV2lsbGlhbSBMLiBTZWJvaywgYmFzZWQgb24gbWFrZWZpbGUubGludXgKKyMgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDEgR3JlZyBSb2Vsb2ZzCisjIENvcHlyaWdodCAoQykgMTk5Ni0xOTk3IEFuZHJlYXMgRGlsZ2VyCisjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAorCisjIGdjYyAyLjk1IGRvZXNuJ3Qgd29yay4KK0NDPWNjCisKKyMgV2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEsIGxpYnBuZy5zbyosIGFuZCBwbmcuaAorcHJlZml4PS91c3IvbG9jYWwKKworIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCisjIENoYW5naW5nIHRoZXNlIHRvIC4uL3psaWIgcG9zZXMgYSBzZWN1cml0eSByaXNrLiAgSWYgeW91IHdhbnQKKyMgdG8gaGF2ZSB6bGliIGluIGFuIGFkamFjZW50IGRpcmVjdG9yeSwgc3BlY2lmeSB0aGUgZnVsbCBwYXRoIGluc3RlYWQgb2YgIi4uIi4KKyNaTElCTElCPS4uL3psaWIKKyNaTElCSU5DPS4uL3psaWIKKyNaTElCTElCPS91c3IvbG9jYWwvbGliCisjWkxJQklOQz0vdXNyL2xvY2FsL2luY2x1ZGUKKyNVc2UgdGhlIHByZWluc3RhbGxlZCB6bGliIHRoYXQgY29tZXMgd2l0aCBTb2xhcmlzIDk6CitaTElCTElCPS91c3IvbGliCitaTElCSU5DPS91c3IvaW5jbHVkZQorCisjV0FSTk1PUkU9LVd3cml0ZS1zdHJpbmdzIC1XcG9pbnRlci1hcml0aCAtV3NoYWRvdyBcCisJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV3RyYWRpdGlvbmFsIC1XY2FzdC1hbGlnbiBcCisJLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAjLVdjb252ZXJzaW9uCisjQ0ZMQUdTPS1JJChaTElCSU5DKSAtV2FsbCAtTzMgJChXQVJOTU9SRSkgLWcgLURQTkdfREVCVUc9NQorQ0ZMQUdTPS1JJChaTElCSU5DKSAtTzMKK0xERkxBR1M9LUwuIC1SLiAtTCQoWkxJQkxJQikgLVIkKFpMSUJMSUIpIC1scG5nIC1seiAtbG0KKworI1JBTkxJQj1yYW5saWIKK1JBTkxJQj1lY2hvCisKKyMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDAuICBZb3Ugc2hvdWxkIG5vdAorIyBoYXZlIHRvIGNoYW5nZSBpdC4KK1BOR01BSiA9IDAKK1BOR01JTiA9IDEuMC4xMworUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQorTElCTkFNRSA9IGxpYnBuZzEwCisKK0lOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKK0xJQlBBVEg9JChwcmVmaXgpL2xpYgorCitPQkpTID0gcG5nLm8gcG5nc2V0Lm8gcG5nZ2V0Lm8gcG5ncnV0aWwubyBwbmd0cmFucy5vIHBuZ3d1dGlsLm8gXAorCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXAorCXBuZ3d0cmFuLm8gcG5nbWVtLm8gcG5nZXJyb3IubyBwbmdwcmVhZC5vCisKK09CSlNETEwgPSAkKE9CSlM6Lm89LnBpYy5vKQorCisuU1VGRklYRVM6ICAgICAgLmMgLm8gLnBpYy5vCisKKy5jLnBpYy5vOgorCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtS1BJQyAtbyAkQCAkKi5jCisKK2FsbDogbGlicG5nLmEgJChMSUJOQU1FKS5zbyBwbmd0ZXN0CisKK2xpYnBuZy5hOiAkKE9CSlMpCisJYXIgcmMgJEAgJChPQkpTKQorCSQoUkFOTElCKSAkQAorCiskKExJQk5BTUUpLnNvOiAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKQorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdNQUopICQoTElCTkFNRSkuc28KKworJChMSUJOQU1FKS5zby4kKFBOR01BSik6ICQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJOQU1FKS5zby4kKFBOR01BSikKKworJChMSUJOQU1FKS5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKKwlAY2FzZSAiYHR5cGUgbGRgIiBpbiAqdWNiKikgXAorCWVjaG87IFwKKwllY2hvICcjIyBXQVJOSU5HOic7IFwKKwllY2hvICcjIyBUaGUgY29tbWFuZHMgIkNDIiBhbmQgIkxEIiBtdXN0IE5PVCByZWZlciB0byAvdXNyL3VjYi9jYyc7IFwKKwllY2hvICcjIyBhbmQgL3Vzci91Y2IvbGQuICBJZiB0aGV5IGRvLCB5b3UgbmVlZCB0byBhZGp1c3QgeW91ciBQQVRIJzsgXAorCWVjaG8gJyMjIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHB1dCAvdXNyL2Njcy9iaW4gYWhlYWQgb2YgL3Vzci91Y2IuJzsgXAorCWVjaG8gJyMjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMRF9MSUJSQVJZX1BBVEggc2hvdWxkIG5vdCBiZSBzZXQnOyBcCisJZWNobyAnIyMgYXQgYWxsLiAgSWYgaXQgaXMsIHRoaW5ncyBhcmUgbGlrZWx5IHRvIGJyZWFrIGJlY2F1c2Ugb2YnOyBcCisJZWNobyAnIyMgdGhlIGxpYnVjYiBkZXBlbmRlbmN5IHRoYXQgaXMgY3JlYXRlZC4nOyBcCisJZWNobzsgXAorCTs7IFwKKwllc2FjCisJJChMRCkgLUcgLUwkKFpMSUJMSUIpIC1SJChaTElCTElCKSAtaCAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSBcCisJIC1vICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoT0JKU0RMTCkgLWx6CisKK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNvCisJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKKwordGVzdDogcG5ndGVzdAorCS4vcG5ndGVzdAorCitpbnN0YWxsLWhlYWRlcnM6IHBuZy5oIHBuZ2NvbmYuaAorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQorCS1AaWYgWyAhIC1kICQoSU5DUEFUSCkvJChMSUJOQU1FKSBdOyB0aGVuIG1rZGlyICQoSU5DUEFUSCkvJChMSUJOQU1FKTsgZmkKKwljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKS8kKExJQk5BTUUpCisJY2htb2QgNjQ0ICQoSU5DUEFUSCkvJChMSUJOQU1FKS9wbmcuaCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKKwktQC9iaW4vcm0gLWYgJChJTkNQQVRIKS9saWJwbmcKKwlsbiAtZiAtcyAkKElOQ1BBVEgpLyQoTElCTkFNRSkgJChJTkNQQVRIKS9saWJwbmcKKworaW5zdGFsbC1zdGF0aWM6IGluc3RhbGwtaGVhZGVycyBsaWJwbmcuYQorCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQorCWNwIGxpYnBuZy5hICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvJChMSUJOQU1FKS5hCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLmEKKwlsbiAtZiAtcyAkKExJQlBBVEgpLyQoTElCTkFNRSkuYSAkKExJQlBBVEgpL2xpYnBuZy5hCisKK2luc3RhbGwtc2hhcmVkOiBpbnN0YWxsLWhlYWRlcnMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HTUFKKSogJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIKKwktQC9iaW4vcm0gLWYgJChMSUJQQVRIKS9saWJwbmcuc28uMi4qCisJY3AgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJQQVRIKQorCWNobW9kIDc1NSAkKExJQlBBVEgpLyQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJKGNkICQoTElCUEFUSCk7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc287IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uMjsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpIGxpYnBuZy5zby4yLiQoUE5HTUlOKTsgXAorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR01BSikgJChMSUJOQU1FKS5zbykKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpL3BrZ2NvbmZpZyBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCkvcGtnY29uZmlnOyBmaQorCWNhdCBzY3JpcHRzL2xpYnBuZy5wYy5pbiB8IHNlZCAtZSBzXCFAUFJFRklYQCEkKHByZWZpeCkhID4gbGlicG5nLnBjCisJY3AgbGlicG5nLnBjICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisJY2htb2QgNjQ0ICQoTElCUEFUSCkvcGtnY29uZmlnL2xpYnBuZzEwLnBjCisKK2luc3RhbGw6IGluc3RhbGwtc3RhdGljIGluc3RhbGwtc2hhcmVkCisKK2NsZWFuOgorCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOR01BSikqIFwKKwlwbmd0ZXN0IHBuZ291dC5wbmcKKworRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KK3dyaXRlbG9jazoKKwljaG1vZCBhLXcgKi5bY2gzNV0gJChET0NTKSBzY3JpcHRzLyoKKworIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgorCitwbmcubyBwbmcucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZXJyb3IubyBwbmdlcnJvci5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdyaW8ubyBwbmdyaW8ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd2lvLm8gcG5nd2lvLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ21lbS5vIHBuZ21lbS5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmdzZXQubyBwbmdzZXQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nZ2V0Lm8gcG5nZ2V0LnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3JlYWQubyBwbmdyZWFkLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3J0cmFuLm8gcG5ncnRyYW4ucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5ncnV0aWwubyBwbmdydXRpbC5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd0cmFucy5vIHBuZ3RyYW5zLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3dyaXRlLm8gcG5nd3JpdGUucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorcG5nd3RyYW4ubyBwbmd3dHJhbi5waWMubzogcG5nLmggcG5nY29uZi5oCitwbmd3dXRpbC5vIHBuZ3d1dGlsLnBpYy5vOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3ByZWFkLm8gcG5ncHJlYWQucGljLm86IHBuZy5oIHBuZ2NvbmYuaAorCitwbmd0ZXN0Lm86IHBuZy5oIHBuZ2NvbmYuaApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzIGIvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzCmluZGV4IDkzZGE0NzcuLmQzYTY5YWQgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuc29sYXJpcworKysgYi9zY3JpcHRzL21ha2VmaWxlLnNvbGFyaXMKQEAgLTEsNCArMSw1IEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcgb24gU29sYXJpcyAyLnggd2l0aCBnY2MKKyMgQ29weXJpZ2h0IChDKSAyMDAyIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIyBDb250cmlidXRlZCBieSBXaWxsaWFtIEwuIFNlYm9rLCBiYXNlZCBvbiBtYWtlZmlsZS5saW51eAogIyBDb3B5cmlnaHQgKEMpIDE5OTggR3JlZyBSb2Vsb2ZzCiAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcgpAQCAtNiw3ICs3LDcgQEAKIAogQ0M9Z2NjCiAKLSMgV2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEsIGxpYnBuZy5zbyosIGFuZCBwbmcuaAorIyBXaGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSwgbGlicG5nMTAuc28qLCBhbmQgcG5nLmgKIHByZWZpeD0vdXNyL2xvY2FsCiAKICMgV2hlcmUgdGhlIHpsaWIgbGlicmFyeSBhbmQgaW5jbHVkZSBmaWxlcyBhcmUgbG9jYXRlZApAQCAtMjgsMTEgKzI5LDEyIEBACiAjUkFOTElCPXJhbmxpYgogUkFOTElCPWVjaG8KIAotIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CisjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAwLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCi1QTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuMTJiZXRhMQorUE5HTUFKID0gMAorUE5HTUlOID0gMS4wLjEzCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCitMSUJOQU1FID0gbGlicG5nMTAKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQogTElCUEFUSD0kKHByZWZpeCkvbGliCkBAIC00OCwxOSArNTAsMTkgQEAKIC5jLnBpYy5vOgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtZlBJQyAtbyAkQCAkKi5jCiAKLWFsbDogbGlicG5nLmEgbGlicG5nLnNvIHBuZ3Rlc3QKK2FsbDogbGlicG5nLmEgJChMSUJOQU1FKS5zbyBwbmd0ZXN0CiAKIGxpYnBuZy5hOiAkKE9CSlMpCiAJYXIgcmMgJEAgJChPQkpTKQogCSQoUkFOTElCKSAkQAogCi1saWJwbmcuc286IGxpYnBuZy5zby4kKFBOR01BSikKLQlsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdNQUopIGxpYnBuZy5zbworJChMSUJOQU1FKS5zbzogJChMSUJOQU1FKS5zby4kKFBOR01BSikKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSAkKExJQk5BTUUpLnNvCiAKLWxpYnBuZy5zby4kKFBOR01BSik6IGxpYnBuZy5zby4kKFBOR1ZFUikKLQlsbiAtZiAtcyBsaWJwbmcuc28uJChQTkdWRVIpIGxpYnBuZy5zby4kKFBOR01BSikKKyQoTElCTkFNRSkuc28uJChQTkdNQUopOiAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCWxuIC1mIC1zICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCTkFNRSkuc28uJChQTkdNQUopCiAKLWxpYnBuZy5zby4kKFBOR1ZFUik6ICQoT0JKU0RMTCkKKyQoTElCTkFNRSkuc28uJChQTkdWRVIpOiAkKE9CSlNETEwpCiAJQGNhc2UgImB0eXBlIGxkYCIgaW4gKnVjYiopIFwKIAllY2hvOyBcCiAJZWNobyAnIyMgV0FSTklORzonOyBcCkBAIC03MywyNyArNzUsNTUgQEAKIAllY2hvOyBcCiAJOzsgXAogCWVzYWMKLQkkKExEKSAtRyAtTCQoWkxJQkxJQikgLVIkKFpMSUJMSUIpIC1oIGxpYnBuZy5zby4kKFBOR01BSikgXAotCSAtbyBsaWJwbmcuc28uJChQTkdWRVIpICQoT0JKU0RMTCkgLWx6CisJJChMRCkgLUcgLUwkKFpMSUJMSUIpIC1SJChaTElCTElCKSAtaCAkKExJQk5BTUUpLnNvLiQoUE5HTUFKKSBcCisJIC1vICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoT0JKU0RMTCkgLWx6CiAKLXBuZ3Rlc3Q6IHBuZ3Rlc3QubyBsaWJwbmcuc28KK3BuZ3Rlc3Q6IHBuZ3Rlc3QubyAkKExJQk5BTUUpLnNvCiAJJChDQykgLW8gcG5ndGVzdCAkKENGTEFHUykgcG5ndGVzdC5vICQoTERGTEFHUykKIAogdGVzdDogcG5ndGVzdAogCS4vcG5ndGVzdAogCi1pbnN0YWxsOiBsaWJwbmcuYSBsaWJwbmcuc28uJChQTkdWRVIpCi0JLUBta2RpciAkKElOQ1BBVEgpICQoTElCUEFUSCkKLQljcCBwbmcuaCBwbmdjb25mLmggJChJTkNQQVRIKQotCWNobW9kIDY0NCAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgbGlicG5nLnNvLiQoUE5HVkVSKSAkKExJQlBBVEgpCi0JY2htb2QgNzU1ICQoTElCUEFUSCkvbGlicG5nLnNvLiQoUE5HVkVSKQotCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4kKFBOR01BSikgJChMSUJQQVRIKS9saWJwbmcuc28KLQkoY2QgJChMSUJQQVRIKTsgbG4gLWYgLXMgbGlicG5nLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uJChQTkdNQUopOyBcCi0JIGxuIC1mIC1zIGxpYnBuZy5zby4kKFBOR01BSikgbGlicG5nLnNvKQoraW5zdGFsbC1oZWFkZXJzOiBwbmcuaCBwbmdjb25mLmgKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpIF07IHRoZW4gbWtkaXIgJChJTkNQQVRIKTsgZmkKKwktQGlmIFsgISAtZCAkKElOQ1BBVEgpLyQoTElCTkFNRSkgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpLyQoTElCTkFNRSk7IGZpCisJY3AgcG5nLmggcG5nY29uZi5oICQoSU5DUEFUSCkvJChMSUJOQU1FKQorCWNobW9kIDY0NCAkKElOQ1BBVEgpLyQoTElCTkFNRSkvcG5nLmggJChJTkNQQVRIKS8kKExJQk5BTUUpL3BuZ2NvbmYuaAorCS1AL2Jpbi9ybSAtZiAkKElOQ1BBVEgpL3BuZy5oICQoSU5DUEFUSCkvcG5nY29uZi5oCisJLUAvYmluL3JtIC1mICQoSU5DUEFUSCkvbGlicG5nCisJbG4gLWYgLXMgJChJTkNQQVRIKS8kKExJQk5BTUUpICQoSU5DUEFUSCkvbGlicG5nCisKK2luc3RhbGwtc3RhdGljOiBpbnN0YWxsLWhlYWRlcnMgbGlicG5nLmEKKwktQGlmIFsgISAtZCAkKExJQlBBVEgpIF07IHRoZW4gbWtkaXIgJChMSUJQQVRIKTsgZmkKKwljcCBsaWJwbmcuYSAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCWNobW9kIDY0NCAkKExJQlBBVEgpLyQoTElCTkFNRSkuYQorCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5hCisJbG4gLWYgLXMgJChMSUJQQVRIKS8kKExJQk5BTUUpLmEgJChMSUJQQVRIKS9saWJwbmcuYQorCitpbnN0YWxsLXNoYXJlZDogaW5zdGFsbC1oZWFkZXJzICQoTElCTkFNRSkuc28uJChQTkdWRVIpCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKSBdOyB0aGVuIG1rZGlyICQoTElCUEFUSCk7IGZpCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvJChMSUJOQU1FKS5zby4kKFBOR01BSikqICQoTElCUEFUSCkvJChMSUJOQU1FKS5zbworCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zbworCS1AL2Jpbi9ybSAtZiAkKExJQlBBVEgpL2xpYnBuZy5zby4yCisJLUAvYmluL3JtIC1mICQoTElCUEFUSCkvbGlicG5nLnNvLjIuKgorCWNwICQoTElCTkFNRSkuc28uJChQTkdWRVIpICQoTElCUEFUSCkKKwljaG1vZCA3NTUgJChMSUJQQVRIKS8kKExJQk5BTUUpLnNvLiQoUE5HVkVSKQorCShjZCAkKExJQlBBVEgpOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgbGlicG5nLnNvLjI7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSBsaWJwbmcuc28uMi4kKFBOR01JTik7IFwKKwlsbiAtZiAtcyAkKExJQk5BTUUpLnNvLiQoUE5HVkVSKSAkKExJQk5BTUUpLnNvOyBcCisJbG4gLWYgLXMgJChMSUJOQU1FKS5zby4kKFBOR1ZFUikgJChMSUJOQU1FKS5zby4kKFBOR01BSikpCisJLUBpZiBbICEgLWQgJChMSUJQQVRIKS9wa2djb25maWcgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpL3BrZ2NvbmZpZzsgZmkKKwljYXQgc2NyaXB0cy9saWJwbmcucGMuaW4gfCBzZWQgLWUgc1whQFBSRUZJWEAhJChwcmVmaXgpISA+IGxpYnBuZy5wYworCWNwIGxpYnBuZy5wYyAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCWNobW9kIDY0NCAkKExJQlBBVEgpL3BrZ2NvbmZpZy9saWJwbmcxMC5wYworCitpbnN0YWxsOiBpbnN0YWxsLXN0YXRpYyBpbnN0YWxsLXNoYXJlZAogCiBjbGVhbjoKLQkvYmluL3JtIC1mICoubyBsaWJwbmcuYSBsaWJwbmcuc28qIHBuZ3Rlc3QgcG5nb3V0LnBuZworCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hICQoTElCTkFNRSkuc28gJChMSUJOQU1FKS5zby4kKFBOR01BSikqIFwKKwlwbmd0ZXN0IHBuZ291dC5wbmcKIAogRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KIHdyaXRlbG9jazoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc3RkIGIvc2NyaXB0cy9tYWtlZmlsZS5zdGQKaW5kZXggODI0NzQ0OS4uMTVlNTY5YSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zdGQKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5zdGQKQEAgLTM2LDExICszNiwxNCBAQAogCiBpbnN0YWxsOiBsaWJwbmcuYQogCS1AbWtkaXIgJChwcmVmaXgpL2luY2x1ZGUKKwktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZwogCS1AbWtkaXIgJChwcmVmaXgpL2xpYgotCWNwIHBuZy5oICQocHJlZml4KS9pbmNsdWRlCi0JY3AgcG5nY29uZi5oICQocHJlZml4KS9pbmNsdWRlCi0JY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCi0JY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL3BuZ2NvbmYuaAorCS1Acm0gLWYgJChwcmVmaXgpL2luY2x1ZGUvcG5nLmgKKwktQHJtIC1mICQocHJlZml4KS9pbmNsdWRlL3BuZ2NvbmYuaAorCWNwIHBuZy5oICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZworCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKKwljaG1vZCA2NDQgJChwcmVmaXgpL2luY2x1ZGUvbGlicG5nL3BuZy5oCisJY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZy9wbmdjb25mLmgKIAljcCBsaWJwbmcuYSAkKHByZWZpeCkvbGliCiAJY2htb2QgNjQ0ICQocHJlZml4KS9saWIvbGlicG5nLmEKIApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zdW5vcyBiL3NjcmlwdHMvbWFrZWZpbGUuc3Vub3MKaW5kZXggMjIwMzkzMS4uY2RjZTM3MiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zdW5vcworKysgYi9zY3JpcHRzL21ha2VmaWxlLnN1bm9zCkBAIC00MCwxMSArNDAsMTQgQEAKIAogaW5zdGFsbDogbGlicG5nLmEKIAktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCisJLUBta2RpciAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKIAktQG1rZGlyICQocHJlZml4KS9saWIKLQljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNwIHBuZ2NvbmYuaCAkKHByZWZpeCkvaW5jbHVkZQotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmcuaAotCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwktQHJtIC1mICQocHJlZml4KS9pbmNsdWRlL3BuZy5oCisJLUBybSAtZiAkKHByZWZpeCkvaW5jbHVkZS9wbmdjb25mLmgKKwljcCBwbmcuaCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcKKwljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUvbGlicG5nCisJY2htb2QgNjQ0ICQocHJlZml4KS9pbmNsdWRlL2xpYnBuZy9wbmcuaAorCWNobW9kIDY0NCAkKHByZWZpeCkvaW5jbHVkZS9saWJwbmcvcG5nY29uZi5oCiAJY3AgbGlicG5nLmEgJChwcmVmaXgpL2xpYgogCWNobW9kIDY0NCAkKHByZWZpeCkvbGliL2xpYnBuZy5hCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvcG5nZGVmLnBhcyBiL3NjcmlwdHMvcG5nZGVmLnBhcwppbmRleCAzZThjM2JjLi4wZmFjM2Y0IDEwMDY0NAotLS0gYS9zY3JpcHRzL3BuZ2RlZi5wYXMKKysrIGIvc2NyaXB0cy9wbmdkZWYucGFzCkBAIC0xLDE0ICsxLDE0IEBACiB1bml0IHBuZ2RlZjsKIAogLy8gQ2F1dGlvbjogdGhpcyBmaWxlIGhhcyBmYWxsZW4gb3V0IG9mIGRhdGUgc2luY2UgdmVyc2lvbiAxLjAuNS4gIFdyaXRlIHRvCi0vLyBwbmctaW1wbGVtZW50QGNjcmMud3VzdGwuZWR1IG9yIHRvIHJhbmRlZ0BhbHVtLnJwaS5lZHUgYWJvdXQgYnJpbmdpbmcKLS8vIGl0IHVwIHRvIGRhdGUuCisvLyBwbmctaW1wbGVtZW50QGNjcmMud3VzdGwuZWR1IG9yIHRvIHJhbmRlZ0BhbHVtLnJwaS5lZHUgYWJvdXQgdm9sdW50ZWVyaW5nCisvLyB0byBpdCB1cCB0byBkYXRlLgogCiBpbnRlcmZhY2UKIAogY29uc3QKLSAgUE5HX0xJQlBOR19WRVJfU1RSSU5HID0gJzEuMC4xMmJldGExJzsKLSAgUE5HX0xJQlBOR19WRVIgICAgICAgID0gIDEwMDEyOworICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcgPSAnMS4wLjEzJzsKKyAgUE5HX0xJQlBOR19WRVIgICAgICAgID0gIDEwMDEzOwogCiB0eXBlCiAgIHBuZ191aW50XzMyID0gQ2FyZGluYWw7CmRpZmYgLS1naXQgYS9zY3JpcHRzL3BuZ29zMi5kZWYgYi9zY3JpcHRzL3BuZ29zMi5kZWYKaW5kZXggZjA5NmZhZi4uYTdiZTI4NCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9wbmdvczIuZGVmCisrKyBiL3NjcmlwdHMvcG5nb3MyLmRlZgpAQCAtMiw3ICsyLDcgQEAKIDsgUE5HLkxJQiBtb2R1bGUgZGVmaW5pdGlvbiBmaWxlIGZvciBPUy8yCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi07IFZlcnNpb24gMS4wLjEyYmV0YTEKKzsgVmVyc2lvbiAxLjAuMTMKIAogTElCUkFSWQkJUE5HCiBERVNDUklQVElPTgkiUE5HIGltYWdlIGNvbXByZXNzaW9uIGxpYnJhcnkgZm9yIE9TLzIiCkBAIC0xODQsMTEgKzE4NCwyMiBAQAogICBwbmdfY29udmVydF90b19yZmMxMTIzCiAgIHBuZ19zZXRfaW52YWxpZAogCi07VG8gYmUgYWRkZWQgYXQgdmVyc2lvbiAxLjIuMAotOyBwbmdfcGVybWl0X21uZ19mZWF0dXJlcwotCi07VG8gYmUgYWRkZWQgYXQgdmVyc2lvbiAxLjIuMAorOyBBZGRlZCBhdCB2ZXJzaW9uIDEuMi4wOgogOyBwbmdfbW14X3N1cHBvcnQKKzsgcG5nX3Blcm1pdF9lbXB0eV9wbHRlCis7IHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzCis7IHBuZ19nZXRfbW14X2ZsYWdtYXNrCis7IHBuZ19nZXRfYXNtX2ZsYWdtYXNrCis7IHBuZ19nZXRfYXNtX2ZsYWdzCis7IHBuZ19nZXRfbW14X2JpdGRlcHRoX3RocmVzaG9sZAorOyBwbmdfZ2V0X21teF9yb3dieXRlc190aHJlc2hvbGQKKzsgcG5nX3NldF9hc21fZmxhZ3MKKzsgcG5nX2luaXRfbW14X2ZsYWdzCisKKzsgQWRkZWQgYXQgdmVyc2lvbiAxLjIuMjoKKyAgcG5nX3phbGxvYworICBwbmdfemZyZWUKKyAgcG5nX2hhbmRsZV9hc191bmtub3duCiAKIDsgVGhlc2UgYXJlIG5vdCBwcmVzZW50IHdoZW4gbGlicG5nIGlzIGNvbXBpbGVkIHdpdGggUE5HX05PX0dMT0JBTF9BUlJBWVMKICAgcG5nX2xpYnBuZ192ZXIK