LyoKICogQ29weXJpZ2h0IDIwMDUgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKI2luY2x1ZGUgIm1tZGRrLmgiCgpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMCgpTVFJJTkdUQUJMRQpCRUdJTgoKLyogTU1TWVMgZXJyb3JzICovCk1NU1lTRVJSX05PRVJST1IsIAkJIkRlbiBvcHBnaXR0ZSBrb21tYW5kb2VuIGJsZSB1dGb4cnQuIgpNTVNZU0VSUl9FUlJPUiwgCQkiVWRlZmluZXJ0IGVrc3Rlcm4gZmVpbC4iCk1NU1lTRVJSX0JBRERFVklDRUlELCAJCSJFbiBlbmhldHMtSUQgc29tIGVyIHV0ZW5mb3IgcmVra2V2aWRkZSBw5SBkaXR0IHN5c3RlbSBlciBicnVrdC4iCk1NU1lTRVJSX05PVEVOQUJMRUQsIAkJIkRyaXZlcmVuIGJsZSBpa2tlIGFrdGl2ZXJ0LiIKTU1TWVNFUlJfQUxMT0NBVEVELCAJCSJEZW4gb3BwZ2l0dGUgZW5oZXRlbiBlciBhbGxlcmVkZSBpIGJydWt1c2UuIFZlbnQgdGlsIGRlbiBlciBsZWRpZyBvZyBwcvh2IGlnamVuLiIKTU1TWVNFUlJfSU5WQUxIQU5ETEUsIAkJIkRldCBvcHBnaXR0ZSBlbmhldHNo5W5kdGFrZXQgZXIgdWd5bGRpZy4iCk1NU1lTRVJSX05PRFJJVkVSLCAJCSJEZXQgZXIgaW5nZW4gZHJpdmVyIGluc3RhbGxlcnQgcOUgc3lzdGVtZXQuXG4iCk1NU1lTRVJSX05PTUVNLCAJCSJJa2tlIG5vayBtaW5uZSBmb3IgZGVubmUgb3BlcmFzam9uZW4uIEF2c2x1dHQgZXR0IGVsbGVyIGZsZXJlIHByb2dyYW1tZXIgZm9yIOUgZnJpZ2r4cmUgbWlubmUgb2cgcHL4diBpZ2plbi4iCk1NU1lTRVJSX05PVFNVUFBPUlRFRCwgCQkiRGVubmUgZnVua3Nqb25lbiBzdPh0dGVzIGlra2UuIEJydWsgZnVua3Nqb25lbiAnQ2FwYWJpbGl0aWVzJyBmb3Ig5SBmaW5uZSB1dCBodmlsa2UgZnVua3Nqb25lciBvZyBtZWxkaW5nZXIgZHJpdmVyZW4gc3T4dHRlci4iCk1NU1lTRVJSX0JBREVSUk5VTSwgCQkiRXQgZmVpbG51bW1lciBzb20gaWtrZSBlciBkZWZpbmVydCBpIHN5c3RlbWV0IGJsZSBvcHBnaXR0LiIKTU1TWVNFUlJfSU5WQUxGTEFHLCAJCSJFdCB1Z3lsZGlnIGZsYWdnIGJsZSBnaXR0IHRpbCBlbiBzeXN0ZW1mdW5rc2pvbi4iCk1NU1lTRVJSX0lOVkFMUEFSQU0sIAkJIkVuIHVneWxkaWcgcGFyYW1ldGVyIGJsZSBnaXR0IHRpbCBlbiBzeXN0ZW1mdW5rc2pvbi4iCgovKiBXQVZFIGVycm9ycyAqLwpXQVZFUlJfQkFERk9STUFULCAJCSJEZXQgb3BwZ2l0dGUgZm9ybWF0ZXQgc3T4dHRlcyBpa2tlIGVsbGVyIGthbiBpa2tlIG92ZXJzZXR0ZXMuIEJydWsgZnVua3Nqb25lbiAnQ2FwYWJpbGl0aWVzJyBmb3Ig5SBzZSBkZSBzdPh0dGVkZSBmb3JtYXRlbi4iCldBVkVSUl9TVElMTFBMQVlJTkcsIAkJIkthbiBpa2tlIHV0ZvhyZSBkZW5uZSBvcGVyYXNqb25lbiBtZW5zIG1lZGllLWRhdGEgc3BpbGxlcy4gVGlsYmFrZXN0aWxsIGVuaGV0ZW4sIGVsbGVyIHZlbnQgdGlsIGRhdGFlbmUgZXIgc3BpbHQgYXYuIgpXQVZFUlJfVU5QUkVQQVJFRCwgCQkiRGlnaXRhbGx5ZGhvZGV0IHZhciBpa2tlIGZvcmJlcmVkdC4gQnJ1ayBmdW5rc2pvbmVuICdQcmVwYXJlJyBmb3Ig5SBmb3JiZXJlZGUgaG9kZXQgb2cgcHL4diBkZXJldHRlciBpZ2plbi4iCldBVkVSUl9TWU5DLCAJCQkiS2FuIGlra2Ug5XBuZSBlbmhldGVuIHV0ZW4g5SBicnVrZSBmbGFnZ2V0ICdXQVZFX0FMTE9XU1lOQy4gQnJ1ayBmbGFnZ2V0IG9nIHBy+HYgaWdqZW4uIgoKLyogTUlESSBlcnJvcnMgKi8KTUlESUVSUl9VTlBSRVBBUkVELCAJCSJNSURJLWhvZGV0IHZhciBpa2tlIGZvcmJlcmVkdC4gQnJ1ayBmdW5rc2pvbmVuICdQcmVwYXJlJyBmb3Ig5SBmb3JiZXJlZGUgaG9kZXQgb2cgcHL4diBkZXJldHRlciBpZ2plbi4iCk1JRElFUlJfU1RJTExQTEFZSU5HLCAJCSJLYW4gaWtrZSB1dGb4cmUgZGVubmUgb3BlcmFzam9uZW4gbuVyIG1lZGllLWRhdGEgYXZzcGlsbGVzLiBUaWxiYWtlc3RpbGwgZW5oZXRlbiwgZWxlbHIgdmVudCB0aWwgZGF0YWVuZSBlciBmZXJkaWcgYXZzcGlsdC4iCk1JRElFUlJfTk9NQVAsIAkJCSJGYW50IGlra2UgZXQgTUlESS1rYXJ0LiBEZXQga2FuIHbmcmUgZXQgcHJvYmxlbSBtZWQgZHJpdmVyZW4sIGVsbGVyIGZpbGVuICdNSURJTUFQLkNGRycga2FuIHbmcmUga29ycnVwdCBlbGxlciBtYW5nbGUuIgpNSURJRVJSX05PVFJFQURZLCAJCSJQb3J0ZW4gc2VuZGVyIGRhdGEgdGlsIGVuaGV0ZW4uIFZlbnQgdGlsIGRhdGVuZSBlciBmZXJkaWcgc2VuZHQgb2cgcHL4diBpZ2VuLiIKTUlESUVSUl9OT0RFVklDRSwgCQkiT3Bwc2V0dGV0IGZvciBNSURJLWthcnRsZWdnZXJlbiByZWZlcmVyZXIgdGlsIGVuIE1JREktZW5oZXQgc29tIGlra2UgZXIgaW5zdGFsbGVydCBw5SBzeXN0ZW1ldC4gQnJ1ayBNSURJLWthcnRsZWdnZXJlbiB0aWwg5SByZWRpZ2VyZSBvcHBzZXR0ZXQuIgpNSURJRVJSX0lOVkFMSURTRVRVUCwgCQkiRGV0IGdqZWxkZW5kZSBNSURJLW9wcHNldHRldCBlciBza2FkZXQuIEtvcGllciBkZW4gb3BwcmlubmVsaWdlICdNSURJTUFQLkNGRyctZmlsZW4gdGlsIFdpbmRvd3MnIHN5c3RlbS1rYXRhbG9nIG9nIHBy+HYgaWdqZW4uIgoKLyogTUNJIGVycm9ycyAqLwpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfSUQsIAkiVWd5bGRpZyBNQ0kgZW5oZXRzLUlELiBCcnVrIElEJ2VuIHNvbSByZXR1cm5lcmVzIG7lciBNQ0ktZW5oZXRlbiDlcG5lcy4iCk1DSUVSUl9VTlJFQ09HTklaRURfS0VZV09SRCwgCSJEcml2ZXJlbiBrdW5uZSBpa2tlIGdqZW5ramVubmUgZGVuIG9wcGdpdHRlIGtvbW1hbmRvcGFyYW1ldGVyZW4uIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0NPTU1BTkQsCSJEcml2ZXJlbiBrdW5uZSBpa2tlIGdqZW5ramVubmUgZGVuIG9wcGdpdHRlIGtvbW1hbmRvZW4uIgpNQ0lFUlJfSEFSRFdBUkUsIAkJIkRldCBlciBldCBwcm9ibGVtIG1lZCBtZWRpZWVuaGV0ZW4uIFP4cmcgZm9yIGF0IGRlbiB2aXJrZXIgb3JkZW50bGlnIGVsbGVyIGtvbnRha3QgbGV2ZXJhbmT4cmVuLiIKTUNJRVJSX0lOVkFMSURfREVWSUNFX05BTUUsIAkiRGVuIG9wcGdpdHRlIGVuaGV0ZW4gZXIgaWtrZSDlcGVuLCBlbGxlciBpa2tlIGdqZW5ramVudCBhdiBNQ0kuIgpNQ0lFUlJfT1VUX09GX01FTU9SWSwgCQkiSWtrZSBub2sgbWlubmUgZm9yIGRlbm5lIG9wZXJhc2pvbmVuLlxuQXZzbHV0dCBldHQgZWxsZXIgZmxlcmUgcHJvZ3JhbW1lciBmb3Ig5SBmcmlnavhyZSBtaW5uZSBvZyBwcvh2IGlnamVuLiIKTUNJRVJSX0RFVklDRV9PUEVOLCAJCSJFbmhldHNuYXZuZXQgYnJ1a2VzIGFsbGVyZWRlIHNvbSBldCBhbGllcyBhdiBkZXR0ZSBwcm9ncmFtbWV0LiBCcnVrIGV0IHVuaWt0IGFsaWFzLiIKTUNJRVJSX0NBTk5PVF9MT0FEX0RSSVZFUiwgCSJFdCB1b3BwZGFnZWxpZyBwcm9ibGVtIG9wcHN0b2QgdW5kZXIgbGFzdGluZ2VuIGF2IGRlbiBvcHBnaXR0ZSBkcml2ZXJlbi4iCk1DSUVSUl9NSVNTSU5HX0NPTU1BTkRfU1RSSU5HLCAJIklra2Uga29tbWFuZG8gYmxlIG9wcGdpdHQuIgpNQ0lFUlJfUEFSQU1fT1ZFUkZMT1csIAkJIlNrcmV2bmUgc3RyZW5nZW4gdmFyIGZvciBzdG9yIHRpbCDlIHBhc3NlIGkgcmV0dXJodXJ0aWdtaW5uZXQuINhrIHN0+HJyZWxzZW4gcOUgaHVydGlnbWlubmV0LiIKTUNJRVJSX01JU1NJTkdfU1RSSU5HX0FSR1VNRU5ULCAiRGVuIG9wcGdpdHRlIGtvbW1hbmRvZW4ga3JldmVyIGVuIHRlZ25zdHJlbmctcGFyYW1ldGVyLiBPcHBnaSBlbi4iCk1DSUVSUl9CQURfSU5URUdFUiwgCQkiRGV0IG9wcGdpdHRlIGhlbHRhbGxldCBlciB1Z3lsZGlnIGZvciBkZW5uZSBrb21tYW5kb2VuLiIKTUNJRVJSX1BBUlNFUl9JTlRFUk5BTCwgCSJFbmhldHNkcml2ZXJlbiByZXR1cm5lcnRlIGVuIHVneWxkaWcgcmV0dXJ0eXBlLiBLb250YWt0IHByb2R1c2VudGVuIGZvciDlIGblIGVuIG55IGRyaXZlci4iCk1DSUVSUl9EUklWRVJfSU5URVJOQUwsIAkiRGV0IGVyIGV0IHByb2JsZW0gbWVkIGVuaGV0c2RyaXZlcmVuLiBLb250YWt0IHByb2R1c2VudGVuIGZvciDlIGblIGVuIG55IGRyaXZlci4iCk1DSUVSUl9NSVNTSU5HX1BBUkFNRVRFUiwgCSJEZW4gb3BwZ2l0dGUga29tbWFuZG9lbiBrcmV2ZXIgZW4gcGFyYW1ldGVyLiBPcHBnaSBlbi4iCk1DSUVSUl9VTlNVUFBPUlRFRF9GVU5DVElPTiwgCSJNQ0ktZW5oZXRlbiBzb20gYnJ1a2VzIHN0+HR0ZXIgaWtrZSBkZW4gb3BwZ2l0dGUga29tbWFuZG9lbi4iCk1DSUVSUl9GSUxFX05PVF9GT1VORCwgCQkiS3VubmUgaWtrZSBmaW5uZSBkZW4gb3BwZ2l0dGUgZmlsZW4uIEtvbnRyb2xsZXIgYXQgc3RpZW4gb2cgZmlsbmF2bmV0IGVyIHJpa3RpZy4iCk1DSUVSUl9ERVZJQ0VfTk9UX1JFQURZLCAJIkVuaGV0c2RyaXZlcmVuIGVyIGlra2Uga2xhci4iCk1DSUVSUl9JTlRFUk5BTCwgCQkiRXQgcHJvYmxlbSBvcHBzdG9kIHVuZGVyIGluaXRhbGlzZXJpbmdlbiBhdiBNQ2kuIFBy+HYg5SBzdGFydGUgV2luZG93cyBw5SBueXR0LiIKTUNJRVJSX0RSSVZFUiwgCQkJIkRldCBlciBldCBwcm9ibGVtIG1lZCBlbmhldHNkcml2ZXJlbi4gRHJpdmVyZW4gaGFyIGF2c2x1dHRldCwgZuVyIGlra2UgdGlsZ2FuZyB0aWwgZmVpbC4iCk1DSUVSUl9DQU5OT1RfVVNFX0FMTCwgCQkiS2FuIGlra2UgYnJ1a2UgJ2FsbCcgc29tIGVuaGV0c25hdm4gbWVkIGRlbiBvcHBnaXR0ZSBrb21tYW5kb2VuLiIKTUNJRVJSX01VTFRJUExFLCAJCSJGZWlsIG9wcHN0b2QgaSBtZXIgZW5uIOluIGVuaGV0LiBPcHBnaSBodmVyIGtvbW1hbmRvIG9nIGVuaGV0IHNlcGVyYXQgZm9yIOUgZmlubmUgdXQgaHZpbGtlbiBlbmhldCBzb20gZm9y5XJzYWtldCBmZWlsZW4uIgpNQ0lFUlJfRVhURU5TSU9OX05PVF9GT1VORCwgCSJLYW4gaWtrZSBiZXN0ZW1tZSBlbmhldHN0eXBlbiBmcmEgZGVuIG9wcGdpdHRlIGZpbGVucyBldHRlcm5hdm4uIgpNQ0lFUlJfT1VUT0ZSQU5HRSwgCQkiRGVuIG9wcGdpdHRlIHBhcmFtZXRlcmVuIGVyIHV0ZW5mb3IgcmVra2V2aWRkZSBmb3IgZGVuIG9wcGdpdHRlIGtvbW1hbmRvZW4uIgpNQ0lFUlJfRkxBR1NfTk9UX0NPTVBBVElCTEUsIAkiRGUgb3BwZ2l0dGUgcGFyYW1ldGVybmUga2FuIGlra2UgYnJ1a2VzIHNhbW1lbi4iCk1DSUVSUl9GSUxFX05PVF9TQVZFRCwgCQkiS3VubmUgaWtrZSBsYWdyZSBkZW4gb3BwZ2l0dGUgZmlsZW4uIEtvbnRyb2xsZXIgYXQgZHUgaGFyIG5vayBkaXNrcGxhc3MsIG9nIGF0IGR1IGZvcnRzYXR0IGVyIHRpbGtvYmxldCBuZXR0dmVya2V0LiIKTUNJRVJSX0RFVklDRV9UWVBFX1JFUVVJUkVELCAJIkZhbnQgaWtrZSBkZW4gb3BwZ2l0dGUgZW5oZXRlbi4gS29udHJvbGxlciBhdCBkZW4gZXIgaW5zdGFsbGVydCBlbGxlciBhdCBlbmhldHNuYXZuZXQgZXIgcmlrdGlnIHN0YXZldC4iCk1DSUVSUl9ERVZJQ0VfTE9DS0VELCAJCSJEZW4gb3BwZ2l0dGUgZW5oZXRlbiBlciBpZmVyZCBtZWQg5SBhdnNsdXR0ZXMuIFZlbnQgZXQgcGFyIHNla3VuZGVyIG9nIHBy+HYgaWdqZW4uIgpNQ0lFUlJfRFVQTElDQVRFX0FMSUFTLCAJIkRldCBvcHBnaXR0ZSBhbGlhc2V0IGJydWtlcyBhbGxlcmVkZSBpIGRldHRlIHByb2dyYW1tZXQuIEJydWsgZXQgdW5pa3QgYWxpYXMuIgpNQ0lFUlJfQkFEX0NPTlNUQU5ULCAJCSJEZW4gb3BwZ2l0dGUgcGFyYW1ldGVyZW4gZXIgdWd5bGRpZyBmb3IgZGVubmUga29tbWFuZG9lbi4iCk1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsIAkiRW5oZXRzZHJpdmVyZW4gZXIgYWxsZXJlZGUgaSBicnVrLiBCcnVrIHBhcmFtZXRlcmVuICdzaGFyZWFibGUnIGZvciBodmVyICdvcGVuJy1rb21tYW5kbyBmb3Ig5SBkZWxlIGRlbi4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIkRlbiBvcHBnaXR0ZSBrb21tYW5kb2VuIGtyZXZlciBldCBhbGlhcywgZW4gZmlsLCBkcml2ZXIgZWxsZXIgZXQgZW5oZXRzbmF2bi4iCk1DSUVSUl9CQURfVElNRV9GT1JNQVQsIAkiRGVuIG9wcGdpdHRlIHZhcmRpZW4gZm9yIHRpZHNmb3JtYXRldCBlciB1Z3lsZGlnLiBTZSBpIE1DSS1kb2t1bWVudGFzam9uZW4gZm9yIGd5bGRpZ2UgZm9ybWF0ZXIuIgpNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgCSJFdCBkb2JiZWx0IGhlcm1ldGVnbiBmb3IgbHVra2luZyBtYW5nbGVyIGZyYSBwYXJhbWV0ZXJ2ZXJkaWVuLiBPcHBnaSBldC4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiRW4gcGFyYW1ldGVyIGVsbGVyIHZlcmRpIGJsZSBvcHBnaXR0IHRvIGdhbmdlci4gT3BwZ2kgZGV0IGt1biDpbiBnYW5nLiIKTUNJRVJSX0lOVkFMSURfRklMRSwgCQkiRGVuIG9wcGdpdHRlIGZpbGVuIGthbiBpa2tlIHNwaWxsZXMgYXYgcOUgZGVuIG9wcGdpdHRlIE1DSS1lbmhldGVuLiBGaWxlbiBlciBrYW5za2plIGtvcnJ1cHQsIGVsbGVyIGkgZmVpbCBmb3JtYXQuIgpNQ0lFUlJfTlVMTF9QQVJBTUVURVJfQkxPQ0ssIAkiRW4gbnVsbHBhcmFtdGVyYmxva2sgYmxlIGdpdHQgdGlsIE1DSS4iCk1DSUVSUl9VTk5BTUVEX1JFU09VUkNFLCAJIkthbiBpa2tlIGxhZ3JlIGVuIGZpbCB1dGVuIGF2bi4gT3BwZ2kgZXQgZmlsbmF2bi4iCk1DSUVSUl9ORVdfUkVRVUlSRVNfQUxJQVMsIAkiRHUgbeUgb3BwZ2kgZXQgYWxpYXMgbuVyIGR1IGJydWtlciBwYXJhbWV0ZXJlbiAnbmV3Jy4iCk1DSUVSUl9OT1RJRllfT05fQVVUT19PUEVOLCAJIkthbiBpa2tlIGJydWtlIGZsYWdnZXQgJ25vdGlmeScgbWVkIGF1dG9tYXRpc2sg5XBuZXRlIGVuaGV0ZXIuIgpNQ0lFUlJfTk9fRUxFTUVOVF9BTExPV0VELCAJIkthbiBpa2tlIGJydWtlIGV0IGZpbG5hdm4gbWVkIGRlbiBvcHBnaXR0ZSBlbmhldGVuLiIKTUNJRVJSX05PTkFQUExJQ0FCTEVfRlVOQ1RJT04sIAkiS3VubmUgaWtrZSB1dGb4cmUga29tbWFuZG9lbiBpIGRlbiBvcHBnaXR0ZSByZWtrZWb4bGdlbi4gT3JkbmUgcmVra2Vm+GxnZGVuIG9nIHBy+HYgaWdqZW4uIgpNQ0lFUlJfSUxMRUdBTF9GT1JfQVVUT19PUEVOLCAJIkt1bm5lIGlra2UgdXRm+HJlIGRlbiBvcHBnaXR0ZSBrb21tYW5kb2VuIHDlIGVuIGF1dG9tYXRpc2sg5XBuZXQgZW5oZXQuIFZlbnQgdGlsIGVuaGV0ZW4gZXIgbHVra2V0IG9nIHBy+HYgaWdqZW4uIgpNQ0lFUlJfRklMRU5BTUVfUkVRVUlSRUQsIAkiRmlsbmF2bmV0IGVyIHVneWxkaWcuIEtvbnRyb2xsZXIgYXQgZmlsbmF2bmV0IGlrZWsgZXIgbGVuZ3JlIGVubiA4IHRlZ24sIGV0dGVyZnVsZ3QgYXYgZXQgcHVua3R1bSBvZyBldCBldHRlcm5hdm4uIgpNQ0lFUlJfRVhUUkFfQ0hBUkFDVEVSUywgCSJLYW4gaWtrZSBvcHBnaSBla3N0cmEgdGVnbiBldHRlciBlbiBzdHJlbmcgb21zbHV0dGV0IGF2IGRvYmxlIGFuZvhyc2Vsc3RlZ24uIgpNQ0lFUlJfREVWSUNFX05PVF9JTlNUQUxMRUQsIAkiRGVuIG9wcGdpdHRlIGVuaGV0ZW4gZXIgaWtrZSBpbnN0YWxsZXJ0IHDlIHN5c3RlbWV0LiBCcnVrIHZhbGdldCAnRHJpdmVyZScgaSBLb250cm9sbHBhbmVsIGZvciDlIGluc3RhbGxlcmUgZW5oZXRlbi4iCk1DSUVSUl9HRVRfQ0QsIAkJCSJGaWtrIGlra2UgdGlsZ2FuZyB0aWwgZGVuIG9wcGdpdHRlIGZpbGVuIGVsbGVyIE1DaS1lbmhldGVuLiBQcvh2IOUgZW5kcmUga2F0YWxvZ2VyIGVsbGVyIHN0YXJ0ZSBtYXNraW5lbiBw5SBueXR0LiIKTUNJRVJSX1NFVF9DRCwgCQkJIkZpa2sgaWtrZSB0aWxnYW5nIHRpbCBkZW4gb3BwZ2l0dGUgZmlsZW4gZWxsZXIgTUNJLWVuaGV0ZW4gZm9yZGkgcHJvZ3JhbW1ldCBpa2tlIGthbiBlbmRyZSBhcmJlaWRza2F0YWxvZy4iCk1DSUVSUl9TRVRfRFJJVkUsIAkJIkZpa2sgaWtrZSB0aWxnYW5nIHRpbCBkZW4gb3BwZ2l0dGUgZmlsZW4gZWxsZXIgTUNJLWVuaGV0ZW4gZm9yZGkgcHJvZ3JhbW1ldCBpa2tlIGthbiBlbmRyZSBhcmJlaWRza2F0YWxvZy4iCk1DSUVSUl9ERVZJQ0VfTEVOR1RILCAJCSJPcHBnaSBlbiBlbmhldCBlbGxlciBkcml2ZXJuYXZuIHNvbSBlciBtaW5kcmUgZW5uIDc5IHRlZ24uIgpNQ0lFUlJfREVWSUNFX09SRF9MRU5HVEgsIAkiT3BwZ2kgZW4gZW5oZXQgZWxsZXIgZHJpdmVybmF2biBzb21lciBtaW5kcmUgZW5uIDY5IHRlZ24uIgpNQ0lFUlJfTk9fSU5URUdFUiwgCQkiRGVuIG9wcGdpdHRlIGtvbW1hbmRvZW4gdHJlbmdlciBlbiBoZWx0YWxsLXBhcmFtZXRlci4gT3BwZ2kgZW4uIgpNQ0lFUlJfV0FWRV9PVVRQVVRTSU5VU0UsIAkiQWxsZSBkaWdpdGFsbHlkZW5oZXRlbiBzb20ga2FuIHNwaWxsZSBhdiBmaWxlciBpIGRldCBnamVsZGVuZGUgZm9ybWF0ZXQgZXIgb3BwdGF0dC4gVmVudCB0aWwgZW4gZGlnaXRhbGx5ZGVuaGV0IGVyIGxlZGlnIG9nIHBy+HYgaWdqZW4uIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRJTlVTRSwgCSJLdW5uZSBpa2tlIHNldHRlIGRlbiBnamVsZGVuZGUgZGlnaXRhbGx5ZGVuaGV0ZW4gdGlsIGF2c3BpbGxpbmcgZm9yZGkgZGVuIGVyIGkgYnJ1ay4gVmVudCB0aWwgZW5oZXRlbiBlciBsZWRpZyBvZyBwcvh2IGlnamVuLiIKTUNJRVJSX1dBVkVfSU5QVVRTSU5VU0UsIAkiQWxsZSBkaWdpdGFsbHlkZW5oZXRlciBzb20ga2FuIHRhIG9wcCBmaWxlciBpIGRldCBnamVsZGVuZGUgZm9ybWF0ZXQgZXIgb3BwdGF0dC4gVmVudCB0aWwgZW4gZGlnaXRhbGx5ZGVuaGV0IGVyIGxlZGlnIG9nIHBy+HYgaWdqZW4uIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVElOVVNFLCAJIkt1bm5lIGlra2Ugc2V0dGUgZGVuIGdqZWxkZW5kZSBkaWdpdGFsbHlkZW5oZXRlbiB0aWwgb3BwdGFrIGZvcmRpIGRlbiBlciBpIGJydWsuIFZlbnQgdGlsIGVuaGV0ZW4gZXIgbGVkaWcgb2cgcHL4diBpZ2plbi4iCk1DSUVSUl9XQVZFX09VVFBVVFVOU1BFQ0lGSUVELAkiRW5odmVyIGtvbXBhdGliZWwgZW5oZXQgZm9yIGRpZ2l0YWxseWRhdnNwaWxsaW5nIGthbiBicnVrZXMuIgpNQ0lFUlJfV0FWRV9JTlBVVFVOU1BFQ0lGSUVELCAJIkVuaHZlciBrb21wYXRpYmVsIGx5ZG9wcHRha2VuaGV0IGthbiBicnVrZXMuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgCSJJbmdlbiBkaWdpdGFsbHlkZW5oZXQgc29tIGthbiBzcGlsbGUgYXYgZmlsZXIgaSBkZXQgZ2plbGRlbmRlIGZvcm1hdGV0IGVyIGluc3RhbGxlcnQuIEJydWsgdmFsZ2V0ICdEcml2ZXJlJyBmb3Ig5SBpbnN0YWxsZXJlIGRpZ2l0YWxseWRlbmhldGVuLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUVU5TVUlUQUJMRSwiRW5oZXRlbiBkdSBwcvh2ZXIg5SBzcGlsbGUgYXYgcOUgZ2plbmtqZW5uZXIgaWtrZSBkZXQgZ2plbGRlbmRlIGZpbGZvcm1hdGV0LiIKTUNJRVJSX1dBVkVfSU5QVVRTVU5TVUlUQUJMRSwgCSJJbmdlbiBkaWdpdGFsbHlkZW5oZXQgc29tIGthbiB0YSBvcHAgZmlsZXIgaSBkZXQgZ2plbGRlbmRlIGZvcm1hdGV0IGVyIGluc3RhbGxlcnQuIEJydWsgJ0RyaXZlcmUnLXZhbGdldCBmb3Ig5SBpbnN0YWxsZXJlIGRpZ2l0YWxseWRlbmhldGVuLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRVTlNVSVRBQkxFLCAiRW5oZXRlbiBkdSBwcvh2ZXIg5SB0YSBvcHAgZnJhIGdqZW5ramVubmVyIGlra2UgZGV0IGdqZWxkZW5kZSBmaWxmb3JtYXRldC4iCk1DSUVSUl9OT19XSU5ET1csIAkJIkRldCBlciBpa2tlIG5vZSB2aXNuaW5nc3ZpbmR1LiIKTUNJRVJSX0NSRUFURVdJTkRPVywgCQkiS3VubmUgaWtrZSBvcHByZXR0ZSBlbGxlciBicnVrZSB2aW5kdS4iCk1DSUVSUl9GSUxFX1JFQUQsIAkJIkt1bm5lIGlra2UgbGVzZSBkZW4gb3BwZ2l0dGUgZmlsZW4uIEtvbnRyb2xsZXIgYXQgZmlsZW4gZm9ydHNhdHQgZmlubmVzLCBvZyBrb250cm9sbGVyIGZvcmJpbmRlbHNlbiB0aWwgZGlza2VuIGVsbGVyIG5ldHR2ZXJrZXQuIgpNQ0lFUlJfRklMRV9XUklURSwgCQkiS3VubmUgaWtrZSBza3JpdmUgdGlsIGRlbiBvcHBnaXR0ZSBmaWxlbi4gS29udHJvbGxlciBhdCBkdSBoYXIgbm9rIGxlZGlnIGRpc2twbGFzcywgb2cgYXQgZHUgZm9ydHNhdHQgZXIgdGlsa29ibGV0IG5ldHR2ZXJrZXQuIgpNQ0lFUlJfU0VRX0RJVl9JTkNPTVBBVElCTEUsIAkiVGlkc2Zvcm1hdGV0IHRpbCAiInNvbmcgcG9pbnRlciIiIG9nICdTTVBURScga2FuIGlra2UgYnJ1a2VzIHNhbW1lbi4iCk1DSUVSUl9TRVFfTk9NSURJUFJFU0VOVCwgCSJTeXN0ZW1ldCBoYXIgaWtrZSBub2VuIGluc3RhbGxlcnRlIE1JREktZW5oZXRlci4gQnJ1ayB2YWxnZXQgJ0RyaXZlcmUnIGkgS29udHJvbGxwYW5lbGV0IGZvciDlIGluc3RhbGxlcmUgZW4gTUlESS1kcml2ZXIuIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIkRlbiBvcHBnaXR0ZSBNSURJLXBvcnRlbiBlciBhbGxlcmVkZSBpIGJydWsuIFZlbnQgdGlsIGRlbiBlciBsZWRpZyBvZyBwcvh2IGlnamVuLiIKTUNJRVJSX1NFUV9QT1JUX01BUE5PREVWSUNFLCAJIkRldCBnamVsZGVuZGUgb3Bwc2V0dGV0IGZvciBNSURJLWthcnRsZWdnZXJlbiByZWZlcmVyZXIgdGlsIGVuIE1JREktZW5oZXQgc29tIGlra2UgZXIgaW5zdGFsbGVydCBw5SBzeXN0ZW1ldC4gQnJ1ayB2YWxnZXQgJ01JREkta2FydGxlZ2dlcicgaSBLb250cm9sbHBhbmVsZXQgZm9yIOUgZW5kcmUgb3Bwc2V0dGV0LiIKTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUiwgCSJFbiBmZWlsIG9wcHN0b2QgbWVkIGRlbiBvcHBnaXR0ZSBwb3J0ZW4uLiIKTUNJRVJSX1NFUV9QT1JUX05PTkVYSVNURU5ULCAJIkRlbiBvcHBnaXR0ZSBNSURJLWVuaGV0ZW4gZXIgaWtrZSBpbnN0YWxsZXJ0IHDlIHN5c3RlbWV0LiBCcnVrIHZhbGdldCAnRHJpdmVyZScgaSBLb250cm9sbHBhbmVsZXQgZm9yIOUgaW5zdGFsbGVyZSBlbiBNSURJLWVuaGV0LiIKTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQsIAkiU3lzdGVtZXQgaGFyIGlra2Ugc3Blc2lmaXNlcnQgZW4gZ2plbGRlbmRlIE1JREktcG9ydC4iCk1DSUVSUl9TRVFfVElNRVIsIAkJIkFsbGUgbXVsdGltZWRpYXRpZHRha2VyZSBicnVrZXMgYXYgYW5kcmUgcHJvZ3JhbW1lci4gQXZzbHV0dCBldHQgYXYgZGlzc2UgcHJvZ3JhbW1lbmUgb2cgcHL4diBpZ2plbi4iCgpFTkQK