LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBOb3J3ZWdpYW4gQm9rbeVsIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkhqZWxwIHRpbCBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiKrQ0FMTCA8c2F0c3Zpc2ZpbG5hdm4+uyBicnVrZXMgaSBlbiBzYXRzdmlzIGZpbCBmb3Ig5SB1dGb4cmUga29tbWFuZG9lclxuXApmcmEgZW4gYW5uZW4gc2F0c3ZpcyBmaWwuIE7lciBkZW4gc2F0c3Zpc2UgZmlsZW4gYXZzbHV0dGVyLCByZXR1cm5lcmVzXG5cCmtvbnRyb2xsZW4gdGlsIGZpbGVuIHNvbSBrYWx0ZSBkZW4uIENBTEwta29tbWFuZG9lbiBrYW4gZ2kgcGFyYW1ldGVyZVxuXAp0aWwgZGVuIGthbHRlIHByb3NlZHlyZW4uXG5cClxuXApFbmRyaW5nZXIgdGlsIHN0YW5kYXJka2F0YWxvZ2VuLCBtaWxq+HZhcmlhYmxlciBldGMuIGdqb3J0IGF2IGRlbiBrYWx0ZVxuXApwcm9zZWR5cmVuIGFydmVzIGF2IHDla2FsbGVyZW4uXG4iCgogIFdDTURfQ0QsICAgICAiSGplbHAgdGlsIENEXG4iCiAgV0NNRF9DSERJUiwgICJIamVscCB0aWwgQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgdPhtbWVyIGtvbnNvbGxza2plcm1lblxuIgoKICBXQ01EX0NPUFksICAgIkhqZWxwIHRpbCBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJIamVscCB0aWwgQ1RUWVxuIgogIFdDTURfREFURSwgICAiSGplbHAgdGlsIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkhqZWxwIHRpbCBERUxcbiIKICBXQ01EX0RJUiwgICAgIkhqZWxwIHRpbCBESVJcbiIKCiAgV0NNRF9FQ0hPLAoiq0VDSE8gPHN0cmVuZz4gdmlzZXIgPHN0cmVuZz67IHDlIGRlbiBnamVsZGVuZGUgdGVybWluYWxlbmhldGVuLlxuXApcblwKq0VDSE8gT067IGZvcuVyc2FrZXIgYXQgYWxsZSBrb21tYW5kb2VyIGkgZW4gc2F0c3ZpcyBmaWwgdmlzZXMgcOVcblwKdGVybWluYWxlbmhldGVuIGb4ciBkZSBravhyZXMuXG5cClxuXAqrRUNITyBPRka7IHJldmVyc2VyZXIgZWZmZWt0ZW4gYXYgZW4gdGlkbGlnZXJlIKtFQ0hPIE9OuyAoRUNITyBlciBPRkYgc29tXG5cCnN0YW5kYXJkKS4gq0VDSE8gT0ZGuy1rb21tYW5kb2VuIGthbiBoaW5kcmVzIGZyYSDlIHZpc2VzIHZlZCDlIHBsYXNzZXJlXG5cCmV0IEAtdGVnbiBmb3JhbiBkZW4uXG4iCgogIFdDTURfRVJBU0UsICAiSGplbHAgdGlsIEVSQVNFXG4iCgogIFdDTURfRk9SLAoiRk9SLWtvbW1hbmRvZW4gYnJ1a2VzIHRpbCDlIGtq+HJlIGVuIGtvbW1hbmRvIGZvciBodmVyIGZpbCBpIGV0IHNldHQgZmlsZXIuXG5cClxuXApTeW50YWtzOiBGT1IgJXZhcmlhYmVsIElOIChzZXR0KSBETyBrb21tYW5kb1xuXApcblwKS3JhdmV0IG9tIHRvICUtdGVnbiBu5XIgRk9SIGJydWtlcyBpIGVuIHNhdHN2aXMgZmlsIGZpbm5lcyBpa2tlIGkgV2luZXMgQ01ELlxuIgoKICBXQ01EX0dPVE8sCiJHT1RPLWtvbW1hbmRvZW4gZmx5dHRlciBravhyaW5nZW4gdGlsIGV0IGFubmV0IHN0ZWQgaSBlbiBzYXRzdmlzIGZpbC5cblwKXG5cCk1lcmtlbGFwcGVuIHNvbSBlciBt5WxldCB0aWwgR09UTyBrYW4gduZyZSBvcHB0aWwgMjU1IHRlZ24gbGFuZ3QsXG5cCm1lbiBrYW4gaWtrZSBpbm5laG9sZGUgbWVsbG9tcm9tIChkZXR0ZSBlciBmb3Jza2plbGxpZyBmcmEgYW5kcmVcblwKb3BlcmF0aXZzeXN0ZW1lcikuIEh2aXMgZGV0IGZpbm5lcyB0byBlbGxlciBmbGVyZSBpZGVudGlza2UgbWVya2VsYXBwZXJcblwKaSBlbiBzYXRzdmlzIGZpbCwga2r4cmVzIGFsbHRpZCBkZW4gZvhyc3RlLiDFIHBla2UgR09UTyB0aWwgZW4gaWtrZS1cblwKZWtzaXN0ZXJlbmRlIG1lcmtlbGFwcCBhdmJyeXRlciBravhyaW5nZW4gYXYgZGVuIHNhdHN2aXNlIGZpbGVuLlxuXApcblwKR09UTyBoYXIgaW5nZW4gZWZmZWt0IG7lciBkZW4gYnJ1a2VzIGludGVyYWt0aXZ0LlxuIgoKICBXQ01EX0hFTFAsICAgIkhqZWxwIHRpbCBIRUxQXG4iCgogIFdDTURfSUYsCiJJRiBicnVrZXMgdGlsIOUga2r4cmUgZW4ga29tbWFuZG8gcOUgYmV0aW5nZWxzZXIuXG5cClxuXApCcnVrOglJRiBbTk9UXSBFWElTVCBmaWxuYXZuIGtvbW1hbmRvXG5cCglJRiBbTk9UXSBzdHJlbmcxPT1zdHJlbmcyIGtvbW1hbmRvXG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIG51bW1lciBrb21tYW5kb1xuXApcblwKSSBrb21tYW5kb2Zvcm0gbnVtbWVyIHRvIG3lIHN0cmVuZzEgb2cgc3RyZW5nMiBvbXNsdXR0ZXMgYXYgZG9ibGVcblwgYW5m+HJzZWxzdGVnbi4gRGV0IHNraWxsZXIgaWtrZSBtZWxsb20gc3RvcmUgb2cgc23lIGJva3N0YXZlci5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBicnVrZXMgZm9yIOUgbmF2Z2kgZXQgc3Rhc2pvbnN2b2x1bS4gIFxuXApcblwKU3ludGFrczogTEFCRUwgW3N0YXNqb246XVxuXApLb21tYW5kb2VuIHZpbCBiZSBvbSBkZXQgbnllIHZvbHVtbmF2bmV0IGZvciBzdGFzam9uZW4uXG5cCkR1IGthbiB2aXNlIGVuIHN0YXNqb25zIHZvbHVtbmF2biBtZWQgVk9MLWtvbW1hbmRvZW4uXG4iCgogIFdDTURfTUQsICAgICAiSGplbHAgdGlsIE1EXG4iCiAgV0NNRF9NS0RJUiwgICJIamVscCB0aWwgTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIGZseXR0ZXIgZW4gZmlsIGVsbGVyIGthdGFsb2cgdGlsIGV0IG55dHQgc3RlZCBpbm5lbmZvclxuXApmaWxzeXN0ZW1ldC5cblwKXG5cCkh2aXMgZWxlbWVudGV0IHNvbSBmbHl0dGVzIGVyIGVuIGthdGFsb2csIGZseXR0ZXMgb2dz5SBmaWxlbmUgb2dcblwKdW5kZXJrYXRhbG9nZW5lIGkgZGVuLlxuXApcblwKTU9WRSBmZWlsZXIgaHZpcyBkZW4gZ2FtbGUgb2cgbnllIHBsYXNzZXJpbmdlbiBoYXIgZm9yc2tqZWxsaWdlXG5cCnN0YXNqb25zYm9rc3RhdmVyLlxuIgoKICBXQ01EX1BBVEgsCiJQQVRIIHZpc2VyIGVsbGVyIGVuZHJlciBDTURzIHP4a2VzdGkuXG5cClxuXArFIHNrcml2ZSBpbm4gUEFUSCB2aXNlciBkZW4gZ2plbGRlbmRlIFBBVEgtaW5uc3RpbGxpbmdlbiAoZGV0dGUgZXJcblwKaSBiZWd5bm5lbHNlbiB2ZXJkaWVuIG9wcGdpdHQgaSBmaWxlbiCrd2luZS5jb25muykuIEV0dGVyZvhsZyBQQVRILVxuXAprb21tYW5kb2VuIG1lZCBldCBueXR0IG5hdm4gZm9yIOUgZW5kcmUgaW5uc3RpbGxpbmdlbi5cblwKXG5cCkRldCBlciBvZ3PlIG11bGlnIOUgZW5kcmUgUEFUSCB2ZWQg5SBicnVrZSBtaWxq+HZhcmlhYmxlbiBQQVRILCBmb3JcblwKZWtzZW1wZWw6XG5cCgkJUEFUSCAlUEFUSCU7YzpcXHRlbXAgXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSB2aXNlciBtZWxkaW5nZW4gJ1RyeWtrIEVudGVyIGZvciDlIGZvcnRzZXR0ZScsIG9nIHZlbnRlciBw5SBhdFxuXCBicnVrZXJlbiB0cnlra2VyIEVudGVyLiBEZXR0ZSBlciBob3ZlZHNha2VsaWcgbnl0dGlnIGkgc2F0c3Zpc2UgZmlsZXIsXG5cCmZvciDlIGxhIGJydWtlcmVuIGxlc2UgdXRkYXRhIGZyYSBlbiB0aWRsaWdlcmUga29tbWFuZG8gZvhyIGRlbiBydWxsZXJcblwKdmVrayBmcmEgc2tqZXJtZW4uLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBvcHBnaXIga29tbWFuZG9saW5qZS1rbGFydGVnbmV0LlxuXApcblwKU3RyZW5nZW4gc29tIGV0dGVyZvhsZ2VyIFBST01QVC1rb21tYW5kb2VuIChvZyBtZWxsb21yb21tZXQgcmV0dCBldHRlcilcblwKdmlzZXMgdmVkIGJlZ3lubmVsc2VuIGF2IGxpbmplbiBu5XIgdmNtZCB2ZW50ZXIgcOUgaW5uZGF0YS5cblwKXG5cCkb4bGdlbmRlIHRlZ25zdHJlbmdlciBoYXIgZGVuIHNwZXNpZWxsZSBiZXR5ZG5pbmdlbiBzb20gdmlzZXM6XG5cClxuXAokJCAgIERvbGxhci10ZWduICAgICAgICRfICAgTGluamVtYXRpbmcgICAgICAgICAkYiAgIFL4cnRlZ24gc2lnbiAofClcblwKJGQgICBHamVsZGVuZGUgZGF0byAgICAkZSAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICBTdPhycmUgZW5uLXRlZ25cblwKJGwgICBNaW5kcmUgZW5uLXRlZ24gICAkbiAgIEdqZWxkZW5kZSBzdGFzam9uICAgJHAgICBHamVsZGVuZGUgc3RpXG5cCiRxICAgTGlraGV0c3RlZ24gICAgICAgJHQgICBHamVsZGVuZGUgdGlkICAgICAgICR2ICAgQ01ELXZlcnNqb25cblwKXG5cCk1lcmsgYXQg5SBicnVrZSBQUk9NUFQta29tbWFuZG9lbiB1dGVuIGVuIGtsYXJ0ZWduLXN0cmVuZyB0aWxiYWtlc3RpbGxlclxuXAprbGFydGVnbmV0IHRpbCBzdGFuZGFyZHZlcmRpZW4sIHNvbSBlciBhcmJlaWRza2F0YWxvZ2VuIChpbmtsdWRlcnRcblwKc3Rhc2pvbnNib2tzdGF2ZW4pIGV0dGVyZnVsZ3QgYXYgZXQgc3T4cnJlIGVubi10ZWduICg+KS5cblwKKFNvbSBlbiBrb21tYW5kbyBQUk9NUFQgJHAkZy4pXG5cClxuXApLbGFydGVnbmV0IGthbiBvZ3PlIGVuZHJlcyB2ZWQgZW5kcmUgbWlsavh2YXJpYWJsZW4gUFJPTVBULCBz5VxuXAprb21tYW5kb2VuIKtTRVQgUFJPTVBUPXRla3N0uyBoYXIgc2FtbWUgZWZmZWt0IHNvbSCrUFJPTVBUIHRla3N0uy5cbiIKCiAgV0NNRF9SRU0sCiJFbiBrb21tYW5kb2xpbmplIHNvbSBiZWd5bm5lciBtZWQgUkVNIChldHRlcmZ1bGd0IGF2IGV0IG1lbGxvbXJvbSlcblwKdXRm+HJlciBpbmdlbiBoYW5kbGluZywgb2cga2FuIGRlcmZvciBicnVrZXMgc29tIGtvbW1hbnRhciBpIGVuIHNhdHN2aXNcblwKZmlsLlxuIgoKICBXQ01EX1JFTiwgICAgIkhqZWxwIHRpbCBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkhqZWxwIHRpbCBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIkhqZWxwIHRpbCBSRFxuIgogIFdDTURfUk1ESVIsICAiSGplbHAgdGlsIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIHZpc2VyIGVsbGVyIGVuZHJlciBtaWxq+HZhcmlhYmxlbmUgaSBDTUQuXG5cClxuXApTRVQgdXRlbiBwYXJhbWV0ZXJlIHZpc2VyIGFsbGUgZ2plbGRlbmRlIG1pbGr4dmFyaWFibGVyLlxuXApcblwKU3ludGFrc2VuIGZvciDlIG9wcHJldHRlIGVsbGVyIGVuZHJlIGVuIG1pbGr4dmFyaWFiZWwgZXI6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmVsPj08dmVyZGk+XG5cClxuXApodm9yIDx2YXJpYWJlbD4gb2cgPHZlcmRpPiBlciB0ZWduc3RyZW5nZXIuIERldCBt5SBpa2tlIHbmcmUgbWVsbG9tcm9tXG5cCmb4ciBsaWtoZXRzdGVnbmV0LCBvZyB2YXJpYWJlbG5hdm5ldCBrYW4gaGVsbGVyIGlra2UgaGEgaW5uZWJ5Z2RlXG5cCm1lbGxvbXJvbS5cblwKXG5cCkkgV2luZSBlciBtaWxq+HZhcmlhYmxlbmUgaSBkZXQgdW5kZXJsaWdnZW5kZSBvcGVyYXRpdnN5c3RlbWV0XG5cIGlua2x1ZGVydCBpIFdpbjMyLW1pbGr4ZXQsIG9nIGRldCBlciBkZXJmb3IgdmFubGlndmlzIG1hbmdlIGZsZXJlXG5cCnZlcmRpZXIgZW5uIGkgZXQgdmFubGlnIFdpbjMyLW1pbGr4LiBW5nIgb3BwbWVya3NvbSBw5SBhdCBkZXQgaWtrZSBn5XJcblwKYW4g5SBlbmRyZSBtaWr4ZXQgaSBkZXQgdW5kZXJsaWdnZW5kZSBvcGVyYXRpdnN5c3RlbWV0IGZyYSBDTUQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCBicnVrZXIgaSBlbiBzYXRzdmlzIGZpbCBmb3Ig5SBmamVybmUgZGVuIGb4cnN0ZSBwYXJhbWV0ZXJlbiBpIGVuXG5cCmxpc3RlLCBz5W5uIGF0IHBhcmFtZXRlciAyIGJsaXIgcGFyYW1ldGVyIDEgb2cgc+UgdmlkZXJlLiBEZXQgaGFyIGluZ2VuXG5cCmVmZmVrdCBodmlzIGRldCBicnVrZXMgZnJhIGtvbW1hbmRvbGluamVuLlxuIgoKICBXQ01EX1RJTUUsICAgIkhqZWxwIHRpbCBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiQW5naXIgdGl0dGVsZW4gZm9yIENNRC12aW5kdWV0LCBzeW50YWtzZW4gZXJcblwKICBUSVRMRSBbc3RyZW5nXVxuIgoKICBXQ01EX1RZUEUsCiKrVFlQRSA8ZmlsbmF2bj67IGtvcGllcmVyIDxmaWxuYXZuPiB0aWwga29uc29sbGVuaGV0ZW4gKGVsbGVyIGV0IGFubmV0XG5cCnN0ZWQgaHZpcyBkZXQgb21kaXJpZ2VyZXMpLiBEZXQga29udHJvbGxlcmVzIGlra2Ugb20gZmlsZW4gZXIgbGVzZWxpZyB0ZWtzdC5cbiIKCiAgV0NNRF9WRVJJRlksCiJWRVJJRlkgYnJ1a2VzIHRpbCDlIGFrdGl2ZXJlLCBkZWFrdGl2ZXJlIGVsbGVyIHRlc3RlIKt2ZXJpZnm7LWZsYWdnZXQuXG5cIEd5bGRpZ2UgbeV0ZXIgZXI6XG5cClxuXApWRVJJRlkgT04JQWt0aXZlcmVyIGZsYWdnZXRcblwKVkVSSUZZIE9GRglEZWFrdGl2ZXJlciBmbGFnZ2V0XG5cClZFUklGWQkJVmlzZXIgT04gaHZpcyBw5SBlbGxlcnIgT0ZGIGh2aXMgYXYuXG5cClxuXAqrVmVyaWZ5uy1mbGFnZ2V0IGhhciBpbmdlbiBmdW5rc2pvbiBpIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIHZpc2VyIHZlcnNqb25udW1tZXJldCB0aWwgQ01EXG4iCgogIFdDTURfVk9MLCAgICAiSGplbHAgdGlsIFZPTFxuIgoKICBXQ01EX1BVU0hELCAgIlBVU0hEIDxrYXRhbG9nbmF2bj4gbGFncmVyIGFyYmVpZHNrYXRhbG9nZW4gaSBlbiBzdGFiZWwsIG9nIGVuZHJlciBkZXJldHRlclxuXAphcmJlaWRza2F0YWxvZyB0aWwgZGVuIHNvbSBlciBvcHBnaXR0LlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgZW5kcmVyIGFyYmVpZHNrYXRhbG9nIHRpbCBkZW4gc29tIHNpc3QgYmxlIGJydWt0IG1lZCBQVVNIRC5cbiIKCiAgV0NNRF9NT1JFLCAgICJNT1JFIGxhciBkZWcgYmxhIGdqZW5ub20gaW5uaG9sZGV0IGkgZmlsZXIgZWxsZXIgaW5uZGF0YSBpIHL4ci5cbiIKCiAgV0NNRF9FWElULAoiRVhJVCBhdnNsdXR0ZXIgZ2plbGRlbmRlIGtvbW1hbmRv+Gt0IG9nIHJldHVybmVyZXIgdGlsIG9wZXJhdGl2c3lzdGVtZXRcblwKZWxsZXIgc2thbGxldCBDTUQgYmxlIHN0YXJ0ZXQgZnJhLlxuIgoKICAxMDAwLCAiSW5uZWJ5Z2RlIGtvbW1hbmRvZXIgaSBDTUQ6XG5cCkFUVFJJQlx0XHRWaXNlciBlbGxlciBlbmRyZXIgRE9TLWZpbGF0dHJpYnV0dGVyXG5cCkNBTExcdFx0S2FsbCBlbiBzYXRzdmlzIGZpbCBpbm5lIGkgZW4gYW5uZW5cblwKQ0QgKENIRElSKVx0Qnl0dGVyIGFyYmVpZHNrYXRhbG9nXG5cCkNMU1x0XHRU+G1tZXIga29uc29sbHNramVybWVuXG5cCkNPUFlcdFx0S29waWVyZXIgZmlsZXJcblwKQ1RUWVx0XHRFbmRyZXIgaW5uL3V0LWVuaGV0XG5cCkRBVEVcdFx0VmlzZXIgZWxsZXIgZW5kcmVyIHN5c3RlbWRhdG9lblxuXApERUwgKEVSQVNFKVx0U2xldHRlciBlbiBlbGxlciBmbGVyZSBmaWxlclxuXApESVJcdFx0VmlzZXIgaW5uaG9sZGV0IGkgZW4ga2F0YWxnb1xuXApFQ0hPXHRcdEtvcGllcmVyIHRla3N0IGRpcmVrdGUgdGlsIGtvbnNvbGwtdXRkYXRhZW5cblwKSEVMUFx0XHRWaXNlciBlbiBrb3J0IGhqZWxwZWJlc2tyaXZlbHNlIG9tIGV0IGVtbmVcblwKTUQgKE1LRElSKVx0TGFnZXIgZW4gdW5kZXJrYXRhbG9nXG5cCk1PUkVcdFx0RGlzcGxheSBvdXRwdXQgaW4gcGFnZXNcblwKTU9WRVx0XHRGbHl0dGVyIGVuIGVsbGVyIGZsZXJlIGZpbGVyLCBlbGxlciBlbiBrYXRhbG9ndHJlXG5cClBBVEhcdFx0RW5kcmVyIGVsbGVyIHZpc2VyIHP4a2VzdGllblxuXApQT1BEXHRcdEVuZHJlciBhcmJlaWRza2F0YWxvZyB0aWwgZGVuIHNpc3QgbGFncmV0IG1lZCBQVVNIRFxuXApQUk9NUFRcdFx0RW5kcmVyIGtvbW1hbmRvLWtsYXJ0ZWduZXRcblwKUFVTSERcdFx0RW5kcmVyIGFyYmVpZHNrYXRhbG9nIG9nIGxhZ3JlciBkZW4gZ2plbGRlbmRlXG5cClJFTiAoUkVOQU1FKVx0R2lyIG55dHQgbmF2biB0aWwgZW4gZmlsXG5cClJEIChSTURJUilcdFNsZXR0ZXIgZW4gdW5kZXJrYXRhbG9nXG5cClNFVFx0XHRBbmdpciBlbGxlciB2aXNlciBtaWxq+HZhcmlhYmxlclxuXApUSU1FXHRcdEFuZ2lyIGVsbGVyIHZpc2VyIGdqZWxkZW5kZSBzeXN0ZW10aWRcblwKVElUTEVcdFx0QW5naXIgdmluZHVzdGl0dGVsZW4gZm9yIENNRC34a3RlblxuXApUWVBFXHRcdFZpc2VyIGlubmhvbGRldCBpIGVuIGZpbFxuXApWRVJcdFx0VmlzZXIgQ01EcyB2ZXJzam9ubnVtbWVyXG5cClZPTFx0XHRWaXNlciB2b2x1bW5hdm5ldCB0aWwgZW4gc3Rhc2pvblxuXApFWElUXHRcdEF2c2x1dHRlciBDTURcblxuXApTa3JpdiCrSEVMUCA8a29tbWFuZG8+uyBmb3IgbWVyIGluZm9ybWFzam9uIG9tIGtvbW1hbmRvZW5lIG92ZW5mb3JcbiIKCiAgV0NNRF9DT05GSVJNLCAiRXIgZHUgc2lra2VyIgogIFdDTURfWUVTLCAiSiIKICBXQ01EX05PLCAiTiIKICBXQ01EX05PQVNTT0MsICJNYW5nbGVuZGUgZmlsdGlsa255dG5pbmcgZm9yIGV0dGVybmF2bmV0ICVzXG4iCiAgV0NNRF9OT0ZUWVBFLCAiSW5nZW4g5XBuZWtvbW1hbmRvIGVyIHRpbGtueXR0ZXQgZmlsdHlwZW5lICclcydcbiIKICBXQ01EX09WRVJXUklURSwgIk92ZXJ3cml0ZSAlcyIKICBXQ01EX01PUkVTVFIsICJNZXIgLiAuIC4iCiAgV0NNRF9UUlVOQ0FURURMSU5FLCAiTGluZSBpbiBCYXRjaCBwcm9jZXNzaW5nIHBvc3NpYmx5IHRydW5jYXRlZC4gVXNpbmc6XG4iCiAgV0NNRF9OWUksICJOb3QgWWV0IEltcGxlbWVudGVkXG5cbiIKICBXQ01EX05PQVJHLCAiQXJndW1lbnQgbWlzc2luZ1xuIgogIFdDTURfU1lOVEFYRVJSLCAiU3ludGF4IGVycm9yXG4iCiAgV0NNRF9GSUxFTk9URk9VTkQsICIlcyA6IEZpbGUgTm90IEZvdW5kXG4iCiAgV0NNRF9OT0NNREhFTFAsICJObyBoZWxwIGF2YWlsYWJsZSBmb3IgJXNcbiIKICBXQ01EX05PVEFSR0VULCAiVGFyZ2V0IHRvIEdPVE8gbm90IGZvdW5kXG4iCiAgV0NNRF9DVVJSRU5UREFURSwgIkN1cnJlbnQgRGF0ZSBpcyAlc1xuIgogIFdDTURfQ1VSUkVOVFRJTUUsICJDdXJyZW50IFRpbWUgaXMgJXNcbiIKICBXQ01EX05FV0RBVEUsICJFbnRlciBuZXcgZGF0ZTogIgogIFdDTURfTkVXVElNRSwgIkVudGVyIG5ldyB0aW1lOiAiCiAgV0NNRF9NSVNTSU5HRU5WLCAiRW52aXJvbm1lbnQgdmFyaWFibGUgJXMgbm90IGRlZmluZWRcbiIKICBXQ01EX1JFQURGQUlMLCAiRmFpbGVkIHRvIG9wZW4gJyVzJ1xuIgogIFdDTURfQ0FMTElOU0NSSVBULCAiQ2Fubm90IGNhbGwgYmF0Y2ggbGFiZWwgb3V0c2lkZSBvZiBhIGJhdGNoIHNjcmlwdFxuIgogIFdDTURfQUxMLCAiQSIKICBXQ01EX0RFTFBST01QVCwgIiVzLCBEZWxldGUiCiAgV0NNRF9FQ0hPUFJPTVBULCAiRWNobyBpcyAlc1xuIgogIFdDTURfVkVSSUZZUFJPTVBULCAiVmVyaWZ5IGlzICVzXG4iCiAgV0NNRF9WRVJJRllFUlIsICJWZXJpZnkgbXVzdCBiZSBPTiBvciBPRkZcbiI7CiAgV0NNRF9BUkdFUlIsICJQYXJhbWV0ZXIgZXJyb3JcbiIKICBXQ01EX1ZPTFVNRURFVEFJTCwgIlZvbHVtZSBpbiBkcml2ZSAlYyBpcyAlc1xuVm9sdW1lIFNlcmlhbCBOdW1iZXIgaXMgJTA0eC0lMDR4XG5cbiIKICBXQ01EX1ZPTFVNRVBST01QVCwgIlZvbHVtZSBsYWJlbCAoMTEgY2hhcmFjdGVycywgRU5URVIgZm9yIG5vbmUpPyIKICBXQ01EX05PUEFUSCwgIlBBVEggbm90IGZvdW5kXG4iCiAgV0NNRF9BTllLRVksIlByZXNzIFJldHVybiBrZXkgdG8gY29udGludWU6ICIKICBXQ01EX0NPTlNUSVRMRSwiV2luZSBDb21tYW5kIFByb21wdCIKICBXQ01EX1ZFUlNJT04sIkNNRCBWZXJzaW9uICVzXG5cbiIKICBXQ01EX01PUkVQUk9NUFQsICJNb3JlPyAiCn0K