LyoKICogV2lubW0KICogRnJlbmNoIGxhbmd1YWdlIHN1cHBvcnQKICoKICogQ29weXJpZ2h0IDE5OTkgRXJpYyBQb3VlY2gKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKQkVHSU4KCi8qIE1NU1lTIGVycm9ycyAqLwpNTVNZU0VSUl9OT0VSUk9SLCAJCSJMYSBjb21tYW5kZSBzcOljaWZp6WUgYSDpdOkgZXjpY3V06WUuIgpNTVNZU0VSUl9FUlJPUiwJCQkiRXJyZXVyIGV4dGVybmUgbm9uIGTpZmluaWUuIgpNTVNZU0VSUl9CQURERVZJQ0VJRCwgCQkiVW4gaWRlbnRpZmljYXRldXIgZGUgcOlyaXBo6XJpcXVlIGhvcnMgZGVzIGxpbWl0ZXMgcG91ciB2b3RyZSBzeXN06G1lIGEg6XTpIHV0aWxpc+kuIgpNTVNZU0VSUl9OT1RFTkFCTEVELAkJIkxlIHBpbG90ZSBuJ2EgcGFzIOl06SBhY3RpdukuIgpNTVNZU0VSUl9BTExPQ0FURUQsIAkJIkxlIHDpcmlwaOlyaXF1ZSBzcOljaWZp6SBlc3QgZW4gY291cnMgZCd1dGlsaXNhdGlvbi4gQXR0ZW5kZXogcXUnaWwgc29pdCBsaWJyZSwgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1NU1lTRVJSX0lOVkFMSEFORExFLCAJCSJMZSBoYW5kbGUgZGUgcOlyaXBo6XJpcXVlIHNw6WNpZmnpIG4nZXN0IHBhcyB2YWxpZGUuIgpNTVNZU0VSUl9OT0RSSVZFUiwgCQkiSWwgbid5IGEgcGFzIGRlIHBpbG90ZSBpbnN0YWxs6SBzdXIgdm90cmUgc3lzdOhtZS4iCk1NU1lTRVJSX05PTUVNLAkJCSJN6W1vaXJlIGluc3VmZmlzYW50ZSBwb3VyIGNldHRlIHTiY2hlLiBRdWl0dGV6IHVuIG91IHBsdXNpZXVycyBwcm9ncmFtbWVzLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTU1TWVNFUlJfTk9UU1VQUE9SVEVELCAJCSJGb25jdGlvbiBub24gcHJpc2UgZW4gY2hhcmdlLiBVdGlsaXNleiBsYSBmb25jdGlvbiBDYXBhY2l06XMgcG91ciBvYnRlbmlyIGxlcyBmb25jdGlvbnMgZGUgY2UgcGlsb3RlLiIKTU1TWVNFUlJfQkFERVJSTlVNLCAJCSJVbiBudW3pcm8gZCdlcnJldXIgbm9uIGTpZmluaSBkYW5zIGxlIHN5c3TobWUgYSDpdOkgc3DpY2lmaekuIgpNTVNZU0VSUl9JTlZBTEZMQUcsIAkJIlVuIGluZGljYXRldXIgbm9uIHZhbGlkZSBhIOl06SB0cmFuc21pcyDgIHVuZSBmb25jdGlvbiBzeXN06G1lLiIKTU1TWVNFUlJfSU5WQUxQQVJBTSwJCSJVbiBwYXJhbeh0cmUgbm9uIHZhbGlkZSBhIOl06SBwYXNz6SDgIHVuZSBmb25jdGlvbiBzeXN06G1lLiIKCi8qIFdBVkUgZXJyb3JzICovCldBVkVSUl9CQURGT1JNQVQsIAkJIkxlIGZvcm1hdCBjaG9pc2kgbmUgcGV1dCDqdHJlIHRyYWR1aXQgb3UgdXRpbGlz6S4gVXRpbGlzZXogQ2FwYWNpdOlzIHBvdXIgdm9pciBsZXMgZm9ybWF0cyBwcmlzIGVuIGNoYXJnZS4iCldBVkVSUl9TVElMTFBMQVlJTkcsIAkJIkxlIExlY3RldXIgbXVsdGlt6WRpYSBjb250aW51ZSDgIGxpcmUgZGVzIGRvbm7pZXMuIFLpaW5pdGlhbGlzZXotbGUgb3UgYXR0ZW5kZXogcXVlIHRvdXRlcyBsZXMgZG9ubullcyBhaWVudCDpdOkgbHVlcy4iCldBVkVSUl9VTlBSRVBBUkVELCAJCSJMJ2VuLXTqdGUgZHUgc29uIG4nYSBwYXMg6XTpIHBy6XBhcukuIFV0aWxpc2V6IGxhIGZvbmN0aW9uIFBy6XBhcmVyIHBvdXIgbGUgZmFpcmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpXQVZFUlJfU1lOQywgCQkJIkltcG9zc2libGUgZCdvdXZyaXIgbGUgcOlyaXBo6XJpcXVlIHNhbnMgdXRpbGlzZXIgbCdpbmRpY2F0ZXVyIFdBVkVfQUxMT1dTWU5DLiBVdGlsaXNleiBsJ2luZGljYXRldXIsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgoKLyogTUlESSBlcnJvcnMgKi8KTUlESUVSUl9VTlBSRVBBUkVELCAJCSJMJ2VuLXTqdGUgTUlESSBuJ2EgcGFzIOl06SBwculwYXLpLiBVdGlsaXNleiBsYSBmb25jdGlvbiBQculwYXJlciBwb3VyIGxlIGZhaXJlLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUlESUVSUl9TVElMTFBMQVlJTkcsIAkJIkxlIExlY3RldXIgbXVsdGlt6WRpYSBjb250aW51ZSDgIGxpcmUgZGVzIGRvbm7pZXMuIFLpaW5pdGlhbGlzZXotbGUgb3UgYXR0ZW5kZXogcXVlIHRvdXRlcyBsZXMgZG9ubullcyBhaWVudCDpdOkuIGx1ZXMuIgpNSURJRVJSX05PTUFQLCAJCQkiSWwgbid5IGEgcGFzIGQnaW5zdHJ1bWVudCBk6WZpbmkgcG91ciB1biBtYXBwZXVyIE1JREkuIFV0aWxpc2VyIGwnb25nbGV0IE1JREkgZGFucyBQcm9wcmnpdOlzIG11bHRpbelkaWEgcG91ciBpbnN0YWxsZXIgbGVzIGluc3RydW1lbnRzLiIKTUlESUVSUl9OT1RSRUFEWSwgCQkiTGUgcG9ydCB0cmFuc21ldCBkZXMgZG9ubullcyBhdSBw6XJpcGjpcmlxdWUuIEF0dGVuZGV6IGxhIGZpbiBkZSBsYSB0cmFuc21pc3Npb24sIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNSURJRVJSX05PREVWSUNFLCAJCSJMZSBmaWNoaWVyIGRlIGRlc2NyaXB0aW9uIGQnaW5zdHJ1bWVudCBNSURJICguSURGKSBuJ2VzdCBwYXMgdmFsaWRlLiBQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMsIGNvbnRhY3RleiBsZSBjb25zdHJ1Y3RldXIgZGUgbCdpbnN0cnVtZW50LiIKTUlESUVSUl9JTlZBTElEU0VUVVAsIAkJIlVuIGFwcGVsIE1JREkgbm9uIHZhbGlkZSBkYW5zIGxlIG1vZGUgZCdvdXZlcnR1cmUgZW4gY291cnMgYSDpdOkg6W1pcy4gT3V2cmV6IOAgbm91dmVhdSBsZSBw6XJpcGjpcmlxdWUgZW4gZW1wbG95YW50IGxlIG1vZGUgY29ycmVjdC4iCgovKiBNQ0kgZXJyb3JzICovCk1DSUVSUl9JTlZBTElEX0RFVklDRV9JRCwgCSJJRCBkZSBw6XJpcGjpcmlxdWUgTUNJIG5vbiB2YWxpZGUuIFV0aWxpc2V6IGwnSUQgcmVudm956SBsb3JzcXVlIHZvdXMgYXZleiBvdXZlcnQgbGUgcOlyaXBo6XJpcXVlIE1DSS4iCk1DSUVSUl9VTlJFQ09HTklaRURfS0VZV09SRCwgCSJMZSBwYXJhbep0cmUgZGUgY29tbWFuZGUgdXRpbGlz6SBuJ2VzdCBwYXMgZOlmaW5pIGRhbnMgbCdlbnNlbWJsZSBkZSBjb21tYW5kZXMgTUNJLiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9DT01NQU5ELAkiTGEgY29tbWFuZGUgdXRpbGlz6WUgbidlc3QgcGFzIHVuZSBjb21tYW5kZSBNQ0kgdmFsaWRlLiIKTUNJRVJSX0hBUkRXQVJFLCAJCSJWb3RyZSBw6XJpcGjpcmlxdWUgbXVsdGlt6WRpYSBwculzZW50ZSB1biBwcm9ibOhtZS4gVulyaWZpZXogcXUnaWwgZm9uY3Rpb25uZSBjb252ZW5hYmxlbWVudCBvdSBjb250YWN0ZXogbGUgY29uc3RydWN0ZXVyLiIKTUNJRVJSX0lOVkFMSURfREVWSUNFX05BTUUsIAkiQ2Ugbidlc3QgcGFzIHVuIHDpcmlwaOlyaXF1ZSBNQ0kgY29ubnUuIgpNQ0lFUlJfT1VUX09GX01FTU9SWSwgCQkiTeltb2lyZSBpbnN1ZmZpc2FudGUgcG91ciBjZXR0ZSB04mNoZS4gUXVpdHRleiB1biBvdSBwbHVzaWV1cnMgcHJvZ3JhbW1lcywgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9ERVZJQ0VfT1BFTiwgCQkiQ2V0IGFsaWFzIGVzdCBk6WrgIHV0aWxpc+kgcGFyIGNlIHByb2dyYW1tZS4gRW1wbG95ZXogdW4gYWxpYXMgdW5pcXVlIHBsdXT0dCBxdWUgbGUgbm9tIGR1IHDpcmlwaOlyaXF1ZS4iCk1DSUVSUl9DQU5OT1RfTE9BRF9EUklWRVIsIAkiTGUgcGlsb3RlIGRlIHDpcmlwaOlyaXF1ZSBuJ2EgcGFzIHB1IOp0cmUgY2hhcmfpLiBW6XJpZmlleiBxdSdpbCBlc3QgaW5zdGFsbOkgY29ycmVjdGVtZW50LiIKTUNJRVJSX01JU1NJTkdfQ09NTUFORF9TVFJJTkcsIAkiTGEgY2hh7m5lIGRlIGNvbW1hbmRlIGVzdCB2aWRlLiIKTUNJRVJSX1BBUkFNX09WRVJGTE9XLCAJCSJMYSBjaGHubmUgZGUgc29ydGllIOl0YWl0IHRyb3AgZ3JhbmRlIHBvdXIgdGVuaXIgZGFucyBsYSBt6W1vaXJlIHRhbXBvbiBkZSByZXRvdXIuIEF1Z21lbnRleiBsYSB0YWlsbGUgZGUgbGEgbeltb2lyZSB0YW1wb24uIgpNQ0lFUlJfTUlTU0lOR19TVFJJTkdfQVJHVU1FTlQsICJMYSBjb21tYW5kZSBzcOljaWZp6WUgbuljZXNzaXRlIHVuIHBhcmFt6nRyZSBjaGHubmUgZGUgY2FyYWN06HJlcyA6IHZldWlsbGV6IGwnZW50cmVyLiIKTUNJRVJSX0JBRF9JTlRFR0VSLCAJCSJMZSBub21icmUgZW50aWVyIHF1ZSB2b3VzIGF2ZXogc3DpY2lmaekgbidlc3QgcGFzIHZhbGlkZSBwb3VyIGNldHRlIGNvbW1hbmRlLiBFbnRyZXogdW4gbm9tYnJlLiIKTUNJRVJSX1BBUlNFUl9JTlRFUk5BTCwgCSJMZSBwaWxvdGUgZGUgcOlyaXBo6XJpcXVlIGEgcmVudm956SB1bmUgculwb25zZSBkZSB0eXBlIG5vbiB2YWxpZGUuIFBvdXIgb2J0ZW5pciB1biBub3V2ZWF1IHBpbG90ZSwgY29udGFjdGV6IGxlIGNvbnN0cnVjdGV1ciBkdSBw6XJpcGjpcmlxdWUuIgpNQ0lFUlJfRFJJVkVSX0lOVEVSTkFMLCAJIkxlIHBpbG90ZSBkZSBw6XJpcGjpcmlxdWUgcHLpc2VudGUgdW4gcHJvYmzobWUuIERlbWFuZGV6IGF1IGNvbnN0cnVjdGV1ciBkdSBw6XJpcGjpcmlxdWUgZGUgdm91cyBmb3VybmlyIHVuIG5vdXZlYXUgcGlsb3RlLiIKTUNJRVJSX01JU1NJTkdfUEFSQU1FVEVSLCAJIklsIG1hbnF1ZSB1biBwYXJhbep0cmUgZGFucyBsYSBjb21tYW5kZSBzcOljaWZp6WUgOiB2ZXVpbGxleiBsJ2VudHJlci4iCk1DSUVSUl9VTlNVUFBPUlRFRF9GVU5DVElPTiwgCSJMZSBw6XJpcGjpcmlxdWUgTUNJIHF1ZSB2b3VzIHV0aWxpc2V6IG5lIHByZW5kIHBhcyBlbiBjaGFyZ2UgbGEgY29tbWFuZGUgc3DpY2lmaellLiIKTUNJRVJSX0ZJTEVfTk9UX0ZPVU5ELCAJCSJMZSBmaWNoaWVyIHNw6WNpZmnpIGVzdCBpbnRyb3V2YWJsZS4gVulyaWZpZXogcXVlIGxlIGNoZW1pbiBkJ2FjY+hzIGV0IGxlIG5vbSBkZSBmaWNoaWVyIHNvbnQgY29ycmVjdHMuIgpNQ0lFUlJfREVWSUNFX05PVF9SRUFEWSwgCSJMZSBwaWxvdGUgZGUgcOlyaXBo6XJpcXVlIG4nZXN0IHBhcyBwcup0LiBBdHRlbmRleiB1bmUgbWludXRlIGF2YW50IGQnZXNzYXllciDgIG5vdXZlYXUuIgpNQ0lFUlJfSU5URVJOQUwsIAkJIlVuIHByb2Js6G1lIGVzdCBzdXJ2ZW51IGxvcnMgZGUgbCdpbml0aWFsaXNhdGlvbiBkZSBNQ0kuIEVzc2F5ZXogZGUgcmVk6W1hcnJlciBXaW5kb3dzLiIKTUNJRVJSX0RSSVZFUiwgCQkJIlVuZSBlcnJldXIgc3DpY2lmaXF1ZSBhdSBwaWxvdGUgYSBwcm92b3F16SBzYSBmZXJtZXR1cmUuIEVzc2F5ZXogZGUgcmVsYW5jZXIgbGEgY29tbWFuZGUuIgpNQ0lFUlJfQ0FOTk9UX1VTRV9BTEwsIAkJIlV0aWxpc2V6IHVuIG5vbSBkZSBw6XJpcGjpcmlxdWUgc3DpY2lmaXF1ZSBwb3VyIGNldHRlIGNvbW1hbmRlLiIKTUNJRVJSX01VTFRJUExFLCAJCSJEZXMgZXJyZXVycyBzZSBzb250IHByb2R1aXRlcyBkYW5zIHBsdXNpZXVycyBw6XJpcGjpcmlxdWVzLiBTcOljaWZpZXogY2hhcXVlIGNvbW1hbmRlIGV0IGNoYXF1ZSBw6XJpcGjpcmlxdWUgc+lwYXLpbWVudCBhZmluIGRlIGTpdGVybWluZXIgbGVzIHDpcmlwaOlyaXF1ZXMgcXVpIG9udCBwcm92b3F16SBsZXMgZXJyZXVycy4iCk1DSUVSUl9FWFRFTlNJT05fTk9UX0ZPVU5ELCAJIkltcG9zc2libGUgZGUgam91ZXIgY2UgZmljaGllci4gVulyaWZpZXogbGUgbm9tIGRlIGZpY2hpZXIgb3UgaW5zdGFsbGV6IHVuIHBpbG90ZSBxdWkgcmVjb25uYe50IGNlIHR5cGUgZGUgZmljaGllci4iCk1DSUVSUl9PVVRPRlJBTkdFLCAJCSJMZSBwYXJhbep0cmUgZXN0IGhvcnMgbGltaXRlcyBwb3VyIGxhIGNvbW1hbmRlIHNw6WNpZmnpZS4iCk1DSUVSUl9GTEFHU19OT1RfQ09NUEFUSUJMRSwgCSJMZXMgcGFyYW3qdHJlcyBzcOljaWZp6XMgbmUgcGV1dmVudCDqdHJlIHV0aWxpc+lzIGVuc2VtYmxlLiIKTUNJRVJSX0ZJTEVfTk9UX1NBVkVELCAJCSJJbCBlc3QgaW1wb3NzaWJsZSBkJ2VucmVnaXN0cmVyIGxlIGZpY2hpZXIgc3DpY2lmaekuIFbpcmlmaWV6IHF1ZSB2b3VzIGF2ZXogYXNzZXogZCdlc3BhY2UgZGlzcXVlIG91IHF1ZSB2b3VzIOp0ZXMgdG91am91cnMgY29ubmVjdOkgYXUgculzZWF1LiIKTUNJRVJSX0RFVklDRV9UWVBFX1JFUVVJUkVELCAJIkxlIHDpcmlwaOlyaXF1ZSBzcOljaWZp6SBlc3QgaW50cm91dmFibGUuIFbpcmlmaWV6IHMnaWwgZXN0IGluc3RhbGzpIG91IHNpIHNvbiBub20gZXN0IGNvcnJlY3RlbWVudCBvcnRob2dyYXBoaekuIgpNQ0lFUlJfREVWSUNFX0xPQ0tFRCwgCQkiTGUgcOlyaXBo6XJpcXVlIHNw6WNpZmnpIGVzdCBlbiBjb3VycyBkZSBmZXJtZXR1cmUuIEF0dGVuZGV6IHF1ZWxxdWVzIHNlY29uZGVzLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUNJRVJSX0RVUExJQ0FURV9BTElBUywgCSJMJ2FsaWFzIHNw6WNpZmnpIGVzdCBk6WrgIHV0aWxpc+kgZGFucyBjZXR0ZSBhcHBsaWNhdGlvbi4gVXRpbGlzZXogdW4gYWxpYXMgdW5pcXVlLiIKTUNJRVJSX0JBRF9DT05TVEFOVCwgCQkiTGEgY29uc3RhbnRlIHV0aWxpc+llIG4nZXN0IHBhcyBjb3JyZWN0ZSBwb3VyIGNldHRlIGNvbW1hbmRlLiIKTUNJRVJSX01VU1RfVVNFX1NIQVJFQUJMRSwgCSJMZSBwaWxvdGUgZGUgcOlyaXBo6XJpcXVlIGVzdCBk6WrgIHV0aWxpc+kgZW4gY2UgbW9tZW50LiBQb3VyIGxlIHBhcnRhZ2VyLCB1dGlsaXNleiBsZSBwYXJhbep0cmUgZGUgcGFydGFnZSAoJ3NoYXJlYWJsZScpIGRhbnMgY2hhcXVlIGNvbW1hbmRlIGQnb3V2ZXJ0dXJlICgnb3BlbicpLiIKTUNJRVJSX01JU1NJTkdfREVWSUNFX05BTUUsIAkiTGEgY29tbWFuZGUgc3DpY2lmaellIHJlcXVpZXJ0IHVuIG5vbSBkJ2FsaWFzLCBkZSBmaWNoaWVyLCBkZSBwaWxvdGUgb3UgZGUgcOlyaXBo6XJpcXVlIDogdmV1aWxsZXogbCdlbnRyZXIuIgpNQ0lFUlJfQkFEX1RJTUVfRk9STUFULCAJIkxhIHZhbGV1ciBzcOljaWZp6WUgY29tbWUgZm9ybWF0IGhvcmFpcmUgbidlc3QgcGFzIHZhbGlkZS4gTGVzIGZvcm1hdHMgdmFsaWRlcyBzb250IGluZGlxdelzIGRhbnMgbGEgZG9jdW1lbnRhdGlvbiBNQ0kuIgpNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgCSJVbiBndWlsbGVtZXQgZG91YmxlIGZlcm1hbnQgbWFucXVlIGRhbnMgbGEgdmFsZXVyIGR1IHBhcmFt6nRyZS4gQWpvdXRlei1sZS4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiVW4gcGFyYW3qdHJlIG91IHVuZSB2YWxldXIgYSDpdOkgc3DpY2lmaekgZGV1eCBmb2lzIGV0IG5lIGRvaXQg6nRyZSBzcOljaWZp6SBxdSd1bmUgc2V1bGUgZm9pcy4iCk1DSUVSUl9JTlZBTElEX0ZJTEUsIAkJIkxlIGZpY2hpZXIgbmUgcGV1dCBwYXMg6nRyZSBleOljdXTpIHN1ciB1biBw6XJpcGjpcmlxdWUgTUNJIHNw6WNpZmnpLiBMZSBmaWNoaWVyIGVzdCBlbmRvbW1hZ+kgb3Ugc29uIGZvcm1hdCBuJ2VzdCBwYXMgY29ycmVjdC4iCk1DSUVSUl9OVUxMX1BBUkFNRVRFUl9CTE9DSywgCSJVbiBibG9jIGRlIHBhcmFt6nRyZXMgbnVscyBhIOl06SBwYXNz6SDgIE1DSS4iCk1DSUVSUl9VTk5BTUVEX1JFU09VUkNFLCAJIkltcG9zc2libGUgZCdlbnJlZ2lzdHJlciB1biBmaWNoaWVyIHNhbnMgbm9tLiBFbnRyZXogdW4gbm9tIGRlIGZpY2hpZXIuIgpNQ0lFUlJfTkVXX1JFUVVJUkVTX0FMSUFTLCAJIlZvdXMgZGV2ZXogc3DpY2lmaWVyIHVuIGFsaWFzIGxvcnNxdWUgdm91cyBlbXBsb3lleiBsZSBwYXJhbep0cmUgJ25vdXZlYXUnLiIKTUNJRVJSX05PVElGWV9PTl9BVVRPX09QRU4sIAkiSWwgZXN0IGltcG9zc2libGUgZCd1dGlsaXNlciBsJ2luZGljYXRldXIgJ25vdGlmaWVyJyBhdmVjIGxlcyBw6XJpcGjpcmlxdWVzIOAgb3V2ZXJ0dXJlIGF1dG9tYXRpcXVlLiIKTUNJRVJSX05PX0VMRU1FTlRfQUxMT1dFRCwgCSJJbXBvc3NpYmxlIGQndXRpbGlzZXIgdW4gbm9tIGRlIGZpY2hpZXIgYXZlYyBsZSBw6XJpcGjpcmlxdWUgc3DpY2lmaekuIgpNQ0lFUlJfTk9OQVBQTElDQUJMRV9GVU5DVElPTiwgCSJJbXBvc3NpYmxlIGQnZXjpY3V0ZXIgbGVzIGNvbW1hbmRlcyBkYW5zIGwnb3JkcmUgc3DpY2lmaekuIENvcnJpZ2V6IGwnb3JkcmUgZGVzIGNvbW1hbmRlcywgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9JTExFR0FMX0ZPUl9BVVRPX09QRU4sIAkiSW1wb3NzaWJsZSBkJ2V46WN1dGVyIGNldHRlIGNvbW1hbmRlIHN1ciB1biBw6XJpcGjpcmlxdWUg4CBvdXZlcnR1cmUgYXV0b21hdGlxdWUuIEF0dGVuZGV6IHF1ZSBsZSBw6XJpcGjpcmlxdWUgc29pdCBmZXJt6SBwb3VyIGVzc2F5ZXIg4CBub3V2ZWF1LiIKTUNJRVJSX0ZJTEVOQU1FX1JFUVVJUkVELCAJIkxlIG5vbSBkZSBmaWNoaWVyIGVzdCBpbmNvcnJlY3QuIgpNQ0lFUlJfRVhUUkFfQ0hBUkFDVEVSUywgCSJJbCBlc3QgaW1wb3NzaWJsZSBkZSBzcOljaWZpZXIgZGVzIGNhcmFjdOhyZXMgc3VwcGzpbWVudGFpcmVzIGFwcuhzIHVuZSBjaGHubmUgcGxhY+llIGVudHJlIGd1aWxsZW1ldHMuIgpNQ0lFUlJfREVWSUNFX05PVF9JTlNUQUxMRUQsIAkiQ2UgcOlyaXBo6XJpcXVlIG4nZXN0IHBhcyBpbnN0YWxs6S4gUG91ciBpbnN0YWxsZXIgdW4gbm91dmVhdSBwaWxvdGUsIGRvdWJsZS1jbGlxdWV6IHN1ciBsJ2lj9G5lIEFqb3V0IGRlIHDpcmlwaOlyaXF1ZSBkYW5zIGxlIFBhbm5lYXUgZGUgY29uZmlndXJhdGlvbi4iCk1DSUVSUl9HRVRfQ0QsIAkJCSJJbXBvc3NpYmxlIGQnYWNj6WRlciBhdSBmaWNoaWVyIG91IGF1IHDpcmlwaOlyaXF1ZSBNQ0kgc3DpY2lmaekuIEVzc2F5ZXogZGUgY2hhbmdlciBkZSBy6XBlcnRvaXJlIG91IGRlIHJlZOltYXJyZXIgdm90cmUgb3JkaW5hdGV1ci4iCk1DSUVSUl9TRVRfQ0QsIAkJCSJJbXBvc3NpYmxlIGQnYWNj6WRlciBhdSBmaWNoaWVyIG91IGF1IHDpcmlwaOlyaXF1ZSBNQ0kgc3DpY2lmaeksIGNhciBsJ2FwcGxpY2F0aW9uIG5lIHBldXQgcGFzIGNoYW5nZXIgZGUgculwZXJ0b2lyZS4iCk1DSUVSUl9TRVRfRFJJVkUsIAkJIkltcG9zc2libGUgZCdhY2PpZGVyIGF1IGZpY2hpZXIgb3UgYXUgcOlyaXBo6XJpcXVlIE1DSSBzcOljaWZp6SwgY2FyIGwnYXBwbGljYXRpb24gbmUgcGV1dCBwYXMgY2hhbmdlciBkZSBsZWN0ZXVyLiIKTUNJRVJSX0RFVklDRV9MRU5HVEgsIAkJIlNw6WNpZmlleiB1biBub20gZGUgcOlyaXBo6XJpcXVlIG91IGRlIHBpbG90ZSBkZSBtb2lucyBkZSA3OSBjYXJhY3TocmVzLiIKTUNJRVJSX0RFVklDRV9PUkRfTEVOR1RILCAJIlNw6WNpZmlleiB1biBub20gZGUgcOlyaXBo6XJpcXVlIG91IGRlIHBpbG90ZSBjb21wdGFudCBtb2lucyBkZSA2OSBjYXJhY3TocmVzLiIKTUNJRVJSX05PX0lOVEVHRVIsIAkJIkxhIGNvbW1hbmRlIHNw6WNpZmnpZSBu6WNlc3NpdGUgdW4gcGFyYW3qdHJlIG51belyaXF1ZS4gRXhlbXBsZSA6ICIiam91ZXIganVzcXUn4CAxMCIiLiBFbnRyZXogY2UgcGFyYW3qdHJlLiIKTUNJRVJSX1dBVkVfT1VUUFVUU0lOVVNFLCAJIlRvdXMgbGVzIHDpcmlwaOlyaXF1ZXMgYXVkaW8gY2FwYWJsZXMgZGUgam91ZXIgZGVzIGZpY2hpZXJzIHNvdXMgY2UgZm9ybWF0IHNvbnQgZW4gY291cnMgZCd1dGlsaXNhdGlvbi4gQXR0ZW5kZXogcXUndW4gcOlyaXBo6XJpcXVlIGF1ZGlvIHNvaXQgbGlicmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRJTlVTRSwgCSJMZSBw6XJpcGjpcmlxdWUgYXVkaW8gZGUgbGVjdHVyZSBlc3QgZW4gY291cnMgZCd1dGlsaXNhdGlvbi4gQXR0ZW5kZXogcXUnaWwgc29pdCBsaWJyZSwgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9XQVZFX0lOUFVUU0lOVVNFLCAJIlRvdXMgbGVzIHDpcmlwaOlyaXF1ZXMgYXVkaW8gY2FwYWJsZXMgZCdlbnJlZ2lzdHJlciBkZXMgZmljaGllcnMgc291cyBjZSBmb3JtYXQgc29udCBlbiBjb3VycyBkJ3V0aWxpc2F0aW9uLiBBdHRlbmRleiBxdSd1biBw6XJpcGjpcmlxdWUgYXVkaW8gc29pdCBsaWJyZSwgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9XQVZFX1NFVElOUFVUSU5VU0UsIAkiTGUgcOlyaXBo6XJpcXVlIGF1ZGlvIGQnZW5yZWdpc3RyZW1lbnQgZXN0IGVuIGNvdXJzIGQndXRpbGlzYXRpb24uIEF0dGVuZGV6IHF1J2lsIHNvaXQgbGlicmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfV0FWRV9PVVRQVVRVTlNQRUNJRklFRCwJIk4naW1wb3J0ZSBxdWVsIHDpcmlwaOlyaXF1ZSBhdWRpbyBkZSBsZWN0dXJlIHBldXQg6nRyZSB1dGlsaXPpLiIKTUNJRVJSX1dBVkVfSU5QVVRVTlNQRUNJRklFRCwgCSJOJ2ltcG9ydGUgcXVlbCBw6XJpcGjpcmlxdWUgYXVkaW8gZCdlbnJlZ2lzdHJlbWVudCBwZXV0IOp0cmUgdXRpbGlz6S4iCk1DSUVSUl9XQVZFX09VVFBVVFNVTlNVSVRBQkxFLCAJIkF1Y3VuIHDpcmlwaOlyaXF1ZSBhdWRpbyBjYXBhYmxlIGRlIGpvdWVyIGRlcyBmaWNoaWVycyBzb3VzIGxlIGZvcm1hdCBlbiBjb3VycyBuJ2Eg6XTpIGluc3RhbGzpLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUVU5TVUlUQUJMRSwiQ2UgcOlyaXBo6XJpcXVlIG5lIHBhcnZpZW50IHBhcyDgIHJlY29ubmHudHJlIGxlIGZvcm1hdCBkdSBmaWNoaWVyIGFjdHVlbC4gU+lsZWN0aW9ubmV6IHVuIGF1dHJlIHDpcmlwaOlyaXF1ZSwgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9XQVZFX0lOUFVUU1VOU1VJVEFCTEUsIAkiQXVjdW4gcOlyaXBo6XJpcXVlIGF1ZGlvIGNhcGFibGUgZCdlbnJlZ2lzdHJlciBkZXMgZmljaGllcnMgc291cyBsZSBmb3JtYXQgZW4gY291cnMgbidhIOl06SBpbnN0YWxs6S4iCk1DSUVSUl9XQVZFX1NFVElOUFVUVU5TVUlUQUJMRSwgIkNlIHDpcmlwaOlyaXF1ZSBuZSBwYXJ2aWVudCBwYXMg4CByZWNvbm5h7nRyZSBsZSBmb3JtYXQgZHUgZmljaGllciBhY3R1ZWwuIFPpbGVjdGlvbm5leiB1biBhdXRyZSBw6XJpcGjpcmlxdWUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfTk9fV0lORE9XLCAJCSJJbCBuJ3kgcGFzIGRlIGZlbup0cmUgZCdhZmZpY2hhZ2UuIgpNQ0lFUlJfQ1JFQVRFV0lORE9XLCAJCSJJbXBvc3NpYmxlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIgdW5lIGZlbup0cmUuIgpNQ0lFUlJfRklMRV9SRUFELCAJCSJJbXBvc3NpYmxlIGRlIGxpcmUgY2UgZmljaGllci4gQXNzdXJlei12b3VzIHF1J2lsIG4nYSBwYXMg6XTpIHN1cHByaW3pIG91IHbpcmlmaWV6IHZvdHJlIGRpc3F1ZSBvdSB2b3RyZSBjb25uZXhpb24gculzZWF1LiIKTUNJRVJSX0ZJTEVfV1JJVEUsIAkJIklsIGVzdCBpbXBvc3NpYmxlIGQn6WNyaXJlIGRlcyBpbmZvcm1hdGlvbnMgZGFucyBsZSBmaWNoaWVyIHNw6WNpZmnpLiBW6XJpZmlleiBxdWUgdm91cyBhdmV6IGFzc2V6IGQnZXNwYWNlIGRpc3F1ZSBvdSBxdWUgdm91cyDqdGVzIHRvdWpvdXJzIGNvbm5lY3TpIGF1IHLpc2VhdS4iCk1DSUVSUl9TRVFfRElWX0lOQ09NUEFUSUJMRSwgCSJJbCBlc3QgaW1wb3NzaWJsZSBkJ3V0aWxpc2VyIGxlIGZvcm1hdCBob3JhaXJlIHBvaW50ZXVyIGRlIHBpc3RlIGV0IGxlIGZvcm1hdCBob3JhaXJlIFNNUFRFIGVuIG3qbWUgdGVtcHMuIgpNQ0lFUlJfU0VRX05PTUlESVBSRVNFTlQsIAkiTGUgc3lzdOhtZSBuJ2EgcGFzIGRlIHDpcmlwaOlyaXF1ZXMgTUlESSBpbnN0YWxs6XMuIFBvdXIgaW5zdGFsbGVyIHVuIG5vdXZlYXUgcGlsb3RlLCBkb3VibGUtY2xpcXVleiBzdXIgbCdpY/RuZSBBam91dCBkZSBw6XJpcGjpcmlxdWUgZGFucyBsZSBQYW5uZWF1IGRlIGNvbmZpZ3VyYXRpb24uIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIkxlIHBvcnQgTUlESSBzcOljaWZp6SBlc3QgZOlq4CB1dGlsaXPpLiBBdHRlbmRleiBxdSdpbCBzb2l0IGxpYnJlIGV0IGVzc2F5ZXog4CBub3V2ZWF1LiIKTUNJRVJSX1NFUV9QT1JUX01BUE5PREVWSUNFLCAJIkxhIGNvbmZpZ3VyYXRpb24gYWN0dWVsbGUgZHUgbWFwcGV1ciBNSURJIGZhaXQgculm6XJlbmNlIOAgdW4gcOlyaXBo6XJpcXVlIE1JREkgbm9uIGluc3RhbGzpIHN1ciB2b3RyZSBzeXN06G1lLiBVdGlsaXNleiBsJ29wdGlvbiBtYXBwZXVyIE1JREkgZGFucyBsZSBDb250cm9sIFBhbmVsIHBvdXIgY2hhbmdlciBsYSBjb25maWd1cmF0aW9uLiIKTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUiwgCSJVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBzdXIgbGUgcG9ydCBzcOljaWZp6S4iCk1DSUVSUl9TRVFfUE9SVF9OT05FWElTVEVOVCwgCSJDZSBw6XJpcGjpcmlxdWUgbidlc3QgcGFzIGluc3RhbGzpLiBQb3VyIGluc3RhbGxlciB1biBub3V2ZWF1IHBpbG90ZSwgZG91YmxlLWNsaXF1ZXogc3VyIGwnaWP0bmUgQWpvdXQgZGUgcOlyaXBo6XJpcXVlIGRhbnMgbGUgUGFubmVhdSBkZSBjb25maWd1cmF0aW9uLiIKTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQsIAkiTGUgc3lzdOhtZSBuJ2EgcGFzIHNw6WNpZmnpIGRlIHBvcnQgTUlESSBwYXIgZOlmYXV0LiIKTUNJRVJSX1NFUV9USU1FUiwgCQkiVG91cyBsZXMgdGltZXJzIG11bHRpbelkaWEgc29udCBlbiBjb3VycyBkJ3V0aWxpc2F0aW9uIHBhciBkJ2F1dHJlcyBhcHBsaWNhdGlvbnMuIFF1aXR0ZXogdW5lIGRlIGNlcyBhcHBsaWNhdGlvbnMgZXQgZXNzYXlleiDgIG5vdXZlYXUuIgoKRU5ECg==