LyoKICogQ29weXJpZ2h0IDIwMDggSmVucyBBbGJyZXRzZW4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgIndpbmRlZi5oIgojaW5jbHVkZSAibW1kZGsuaCIKCkxBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCkJFR0lOCgovKiBNTVNZUyBlcnJvcnMgKi8KTU1TWVNFUlJfTk9FUlJPUiwgICAgICAgICAgICAgICAiRGVuIHNwZWNpZmljZXJlZGUga29tbWFuZG8gYmxldiB1ZGb4cnQuIgpNTVNZU0VSUl9FUlJPUiwgICAgICAgICAgICAgICAgICJVZGVmaW5lcmV0IGVrc3Rlcm4gZmVqbC4iCk1NU1lTRVJSX0JBRERFVklDRUlELCAgICAgICAgICAgIkV0IGVuaGVkcyBJRCBzb20gZXIgdWRlbmZvciBy5mtrZXZpZGRlIGVyIGJsZXZldCBicnVndCBw5SBkaXQgc3lzdGVtLiIKTU1TWVNFUlJfTk9URU5BQkxFRCwgICAgICAgICAgICAiRHJpdmVyZW4gYmxldiBpa2tlIGFrdGl2ZXJldC4iCk1NU1lTRVJSX0FMTE9DQVRFRCwgICAgICAgICAgICAgIkRlbiBzcGVjaWZpY2VyZWRlIGVuaGVkIGVyIGFsbGVyZWRlIGkgYnJ1Zy4gVmVudCB0aWwgZGVuIGVyIGxlZGlnIG9nIHBy+HYgaWdlbi4iCk1NU1lTRVJSX0lOVkFMSEFORExFLCAJICAgICAgICAiRGV0IHNwZWNpZmljZXJlZGUgZW5oZWRzIGhhbmRsZSBlciB1Z3lsZGlndC4iCk1NU1lTRVJSX05PRFJJVkVSLCAgICAgICAgICAgICAgIkRldCBlciBpbmdlbiBkcml2ZXIgaW5zdGFsbGVyZXQgcOUgc3lzdGVtZXQuXG4iCk1NU1lTRVJSX05PTUVNLCAgICAgICAgICAgICAgICAgIklra2Ugbm9rIGh1a29tbWVsc2UgdGlscuVkaWcgdGlsIGRlbm5lIG9wZXJhdGlvbi4gQWZzbHV0IGV0IGVsbGVyIGZsZXJlIHByb2dyYW1tZXIgZm9yIGF0IGZyaWf4cmUgaHVrb21tZWxzZSBvZyBwcvh2IGlnZW4uIgpNTVNZU0VSUl9OT1RTVVBQT1JURUQsICAgICAgICAgICJEZW5uZSBmdW5rdGlvbiB1bmRlcnN0+HR0ZXMgaWtrZS4gQnJ1ZyBmdW5rdGlvbmVuICdDYXBhYmlsaXRpZXMnIGZvciBhdCBmaW5kZSB1ZCBhZiBodmlsa2UgZnVua3Rpb25lciBvZyBtZWRkZWxzZXIgZHJpdmVyZW4gdW5kZXJzdPh0dGVyLiIKTU1TWVNFUlJfQkFERVJSTlVNLCAgICAgICAgICAgICAiRXQgdWRlZmluZXJldCBmZWpsbnVtbWVyIGJsZXYgc3BlY2lmaWNlcmV0LiIKTU1TWVNFUlJfSU5WQUxGTEFHLCAgICAgICAgICAgICAiRXQgdWd5bGRpZ3QgZmxhZyBibGV2IG92ZXJm+HJ0IHRpbCBlbiBzeXN0ZW1mdW5rdGlvbi4iCk1NU1lTRVJSX0lOVkFMUEFSQU0sICAgICAgICAgICAgIkVuIHVneWxkaWcgcGFyYW1ldGVyIGJsZXYgb3Zlcmb4cnQgdGlsIGVuIHN5c3RlbWZ1bmt0aW9uLiIKCi8qIFdBVkUgZXJyb3JzICovCldBVkVSUl9CQURGT1JNQVQsICAgICAgICAgICAgICAgIkRldCBzcGVjaWZpY2VyZWRlIGZvcm1hdCB1bmRlcnN0+HR0ZXMgaWtrZSBlbGxlciBrYW4gaWtrZSBvdmVyc+Z0dGVzLiBCcnVnIGZ1bmt0aW9uZW4gJ0NhcGFiaWxpdGllcycgZm9yIGF0IHNlIGRlIHVuZGVyc3T4dHRlZGUgZm9ybWF0ZXIuIgpXQVZFUlJfU1RJTExQTEFZSU5HLCAgICAgICAgICAgICJLYW4gaWtrZSB1ZGb4cmVyIGRlbm5lIG9wZXJhdGlvbiBtZW5zIG1lZGllIGRhdGEgYWZzcGlsbGVzLiBHZW5zdGFydCBlbmhlZGVuLCBlbGxlciB2ZW50IHRpbCBkZW4gZXIgZuZyZGlnLiIKV0FWRVJSX1VOUFJFUEFSRUQsICAgICAgICAgICAgICAiV2FmZSBoZWFkZXJlbiB2YXIgaWtrZSBrbGFyZ2pvcnQuIEJydWcgZnVua3Rpb25lbiAnUHJlcGFyZScgZm9yIGF0IGtsYXJn+HJlIGhlYWRlcmVuIG9nIHBy+HYgZGVyZWZ0ZXIgaWdlbi4iCldBVkVSUl9TWU5DLCAgICAgICAgICAgICAgICAgICAgIkthbiBpa2tlIOVibmUgZW5oZWRlbiB1ZGVuIGF0IGJydWtlIGZsYWdnZXQgJ1dBVkVfQUxMT1dTWU5DLiBCcnVnIGZsYWdnZXQgb2cgcHL4diBpZ2VuLiIKCi8qIE1JREkgZXJyb3JzICovCk1JRElFUlJfVU5QUkVQQVJFRCwgICAgICAgICAgICAgIk1JREkgaGVhZGVyZW4gdmFyIGlra2Uga2xhcmdqb3J0LiBCcnVnIGZ1bmt0aW9uZW4gJ1ByZXBhcmUnIGZvciBhdCBrbGFyZ/hyZSBoZWFkZXJlbiBvZyBwcvh2IGRlcmVmdGVyIGlnZW4uIgpNSURJRVJSX1NUSUxMUExBWUlORywgICAgICAgICAgICJLYW4gaWtrZSB1ZGb4cmVyIGRlbm5lIG9wZXJhdGlvbiBu5XIgbWVkaWUgZGF0YSBhZnNwaWxsZXMuIEdlbnN0YXJ0IGVuaGVkZW4sIGVsbGVyIHZlbnQgdGlsIGRlbiBlciBm5nJkaWcuIgpNSURJRVJSX05PTUFQLCAJCQkiRW4gTUlESSBtYXAgYmxldiBpa2tlIGZ1bmRldC4gRGVyIGVyIG3lc2tlIGV0IHByb2JsZW0gbWVkIGRyaXZlcmVuLCBlbGxlciBvZ3PlIGVyIGZpbGVuICdNSURJTUFQLkNGRycga29ycnVwdCBlbGxlciBtYW5nbGVyLiIKTUlESUVSUl9OT1RSRUFEWSwgCQkiUG9ydGVuIHNlbmRlciBkYXRhIHRpbCBlbmhlZGVuLiBWZW50IHRpbCBkYXRhZXJuZSBlciBzZW5kdCBvZyBwcvh2IGlnZW4uIgpNSURJRVJSX05PREVWSUNFLCAJCSJEZW4gbnV25nJlbmRlIE1hcHBlciBvcHPmdG5pbmcgcGVnZXIgcOUgZW4gTUlESSBlbmhlZCBkZXIgaWtrZSBlciBpbnN0YWxsZXJldCBpIHN5c3RlbWV0LiBicnVnIE1JREkgTWFwcGVyJ2VuIHRpbCBlZGl0ZXJlIG9wc+Z0bmluZ2VuLiIKTUlESUVSUl9JTlZBTElEU0VUVVAsIAkJIkRlbiBudXbmcmVuZGUgTUlESSBvcHPmdG5pbmcgZXIgc2thZGV0LiBLb3BpZXIgZGVuIG9yaWdpbmFsZSBNSURJTUFQLkNGRyBmaWwgaW5kIGkgV2luZG93cyBTWVNURU0gZm9sZGVyZW4sIG9nIHBy+HYgaWdlbi4iCgovKiBNQ0kgZXJyb3JzICovCk1DSUVSUl9JTlZBTElEX0RFVklDRV9JRCwgCSJVZ3lsZGlnIE1DSSBlbmhlZHMgSUQuIEJydWcgSUQnZXQgc29tIHJldHVybmVyZXMgbuVyIE1DSS1lbmhldGRuIOVibmVzLiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9LRVlXT1JELCAJIkRyaXZlcmVuIGt1bm5lIGlra2UgZ2Vua2VuZGUgZGVuIHNwZWNpZmljZXJlZGUga29tbWFuZG9wYXJhbWV0ZXIuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0NPTU1BTkQsCSJEcml2ZXJlbiBrdW5uZSBpa2tlIGdlbmtlbmRlIGRlbiBzcGVjaWZpY2VyZWRlIGtvbW1hbmRvLiIKTUNJRVJSX0hBUkRXQVJFLCAJCSJEZXQgZXIgZXQgcHJvYmxlbSBtZWQgbWVkaWVlbmhlZGVuLiBT+HJnIGZvciBhdCBkZW4gdmlya2VyIG9yZGVudGxpZyBlbGxlciBrb250YWt0IGxldmVyYW5k+HJlbi4iCk1DSUVSUl9JTlZBTElEX0RFVklDRV9OQU1FLCAJIkRlbiBzcGVjaWZpY2VyZWRlIGVuaGVkIGVyIGlra2Ug5WJlbiwgZWxsZXIgaWtrZSBnZW5rZW5kdCBhZiBNQ0kuIgpNQ0lFUlJfT1VUX09GX01FTU9SWSwgCQkiSWtrZSBub2sgaHVrb21tZWxzZSB0aWwgZGVubmUgb3BlcmF0aW9uLlxuQWZzbHV0IGV0IGVsbGVyIGZsZXJlIHByb2dyYW1tZXIgZm9yIGF0IGZyaWf4cmUgaHVrb21tZWxzZSBvZyBwcvh2IGlnZW4uIgpNQ0lFUlJfREVWSUNFX09QRU4sIAkJIkVuaGVkc25hZm5ldCBicnVnZXMgYWxsZXJlZGUgc29tIGV0IGFsaWVzIGFmIGRldHRlIHByb2dyYW0uIEJydWcgZXQgdW5pa3QgYWxpYXMuIgpNQ0lFUlJfQ0FOTk9UX0xPQURfRFJJVkVSLCAJIkV0IHVrZW5kdCBwcm9ibGVtIG9wc3RvZCB1bmRlciBpbmRs5nNuaW5nZW4gYWYgZGVuIHNwZWNpZmljZXJlZGUgZHJpdmVyLiIKTUNJRVJSX01JU1NJTkdfQ09NTUFORF9TVFJJTkcsIAkiRGVyIGJsZXYgaWtrZSBzcGVjaWZpY2VyZXQgbm9nZW4ga29tbWFuZG8uIgpNQ0lFUlJfUEFSQU1fT1ZFUkZMT1csIAkJIkRlbiBza3Jldm5lIHN0cmVuZyB2YXIgZm9yIHN0b3IgdGlsIGF0IHbmcmUgaSByZXR1ciBidWZmZXJlbi4gRm9y+Gcgc3T4cnJlbHNlbiBw5SBidWZmZXJlbi4iCk1DSUVSUl9NSVNTSU5HX1NUUklOR19BUkdVTUVOVCwgIkRlbiBzcGVjaWZpY2VyZWRlIGtvbW1hbmRvIGty5nZlciBlbiB0ZWduc3RyZW5ncyBwYXJhbWV0ZXIuIEFuZ2l2IGVuLiIKTUNJRVJSX0JBRF9JTlRFR0VSLCAJCSJEZXQgc3BlY2lmaWNlcmVkZSBoZWx0YWwgZXIgdWd5bGRpZ3QgdGlsIGRlbm5lIGtvbW1hbmRvLiIKTUNJRVJSX1BBUlNFUl9JTlRFUk5BTCwgCSJFbmhlZHNkcml2ZXJlbiByZXR1cm5lcmVkZSBlbiB1Z3lsZGlnIHJldHVyIHR5cGUuIEtvbnRha3QgcHJvZHVjZW50ZW4gZm9yIGF0IGblIGVuIG55IGRyaXZlci4iCk1DSUVSUl9EUklWRVJfSU5URVJOQUwsIAkiRGVyIGVyIGV0IHByb2JsZW0gbWVkIGVuaGVkc2RyaXZlcmVuLiBLb250YWt0IHByb2R1Y2VudGVuIGZvciBhdCBm5SBlbiBueSBkcml2ZXIuIgpNQ0lFUlJfTUlTU0lOR19QQVJBTUVURVIsIAkiRGVuIHNwZWNpZmljZXJlZGUga29tbWFuZG8ga3LmdmVyIGVuIHBhcmFtZXRlci4gQW5naXYgZW4uIgpNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sIAkiTUNJIGVuaGVkZW4gc29tIGJydWdlcyB1bmRlcnN0+HR0ZXIgaWtrZSBkZW4gc3BlY2lmaWNlcmVkZSBrb21tYW5kby4iCk1DSUVSUl9GSUxFX05PVF9GT1VORCwgCQkiS3VubmUgaWtrZSBmaW5kZSBkZW4gc3BlY2lmaWNlcmVkZSBmaWwuIEtvbnRyb2xsZXIgYXQgc3RpZW4gb2cgZmlsbmFmbmV0IGVyIHJpZ3RpZ3QuIgpNQ0lFUlJfREVWSUNFX05PVF9SRUFEWSwgCSJFbmhlZHNkcml2ZXJlbiBlciBpa2tlIGtsYXIuIgpNQ0lFUlJfSU5URVJOQUwsIAkJIkV0IHByb2JsZW0gb3BzdG9kIHVuZGVyIGluaXRhbGlzZXJpbmdlbiBhZiBNQ0kuIFBy+HYgYXQgZ2Vuc3RhcnRlIFdpbmUuIgpNQ0lFUlJfRFJJVkVSLCAJCQkiRGVyIGVyIGV0IHByb2JsZW0gbWVkIGVuaGVkc2RyaXZlcmVuLiBEcml2ZXJlbiBibGV2IGx1a2tldCwgaW5nZW4gYWRnYW5nIGZlamwuIgpNQ0lFUlJfQ0FOTk9UX1VTRV9BTEwsIAkJIkthbiBpa2tlIGJydWdlICdhbGwnIHNvbSBlbmhlZHNuYWZuIG1lZCBkZW4gc3BlY2lmaWNlcmVkZSBrb21tYW5kby4iCk1DSUVSUl9NVUxUSVBMRSwgCQkiRGVyIG9wc3RvZCBmZWpsIGkgbWVyZSBlbmQgZW4gZW5oZWQuIEFuZ2l2IGh2ZXIga29tbWFuZG8gb2cgZW5oZWQgc2VwZXJhdCBmb3IgYXQgZmluZGUgdWQgaHZpbGtlbiBlbmhlZCBzb20gZm9y5XJzYWdlZGUgZmVqbGVuLiIKTUNJRVJSX0VYVEVOU0lPTl9OT1RfRk9VTkQsIAkiS2FuIGlra2UgYmVzdGVtbWUgZW5oZWRzdHlwZW4gdWQgZnJhIGRlbiBvcGdpdmVkZSBmaWwgZWZ0ZXJuYWZuLiIKTUNJRVJSX09VVE9GUkFOR0UsIAkJIkRlbiBzcGVjaWZpY2VyZWRlIHBhcmFtZXRlciBlciB1ZGVuZm9yIHLma2tldmlkZGUgZm9yIGRlbiBzcGVjaWZpY2VyZWRlIGtvbW1hbmRvLiIKTUNJRVJSX0ZMQUdTX05PVF9DT01QQVRJQkxFLCAJIkRlIHNwZWNpZmljZXJlZGUgcGFyYW1ldGVyZSBrYW4gaWtrZSBicnVnZXMgc2FtbWVuLiIKTUNJRVJSX0ZJTEVfTk9UX1NBVkVELCAJCSJLdW5uZSBpa2tlIGdlbW1lIGRlbiBzcGVjaWZpY2VyZWRlIGZpbC4gS29udHJvbGxlciBhdCBkdSBoYXIgbm9rIGZyaSBkaXNrcGxhZHMgZWxsZXIgYXQgZHUgZm9ydHNhdCBlciB0aWxrb2JsZXQgbmV0duZya2V0LiIKTUNJRVJSX0RFVklDRV9UWVBFX1JFUVVJUkVELCAJIkZhbmR0IGlra2UgZGVuIHNwZWNpZmljZXJlZGUgZW5oZWRuLiBLb250cm9sbGVyIGF0IGRlbiBlciBpbnN0YWxsZXJldCBlbGxlciBhdCBlbmhlZHNuYWZuZXQgZXIgcmlndGlndCBzdGFmZXQuIgpNQ0lFUlJfREVWSUNFX0xPQ0tFRCwgCQkiRGVuIHNwZWNpZmljZXJlZGUgZW5oZWQgZXIgaWdhbmcgbWVkIGF0IGJsaXZlIGx1a2tldC4gVmVudCBldCBwYXIgc2VrdW5kZXIgb2cgcHL4diBpZ2VuLiIKTUNJRVJSX0RVUExJQ0FURV9BTElBUywgCSJEZXQgc3BlY2lmaWNlcmVkZSBhbGlhcyBicnVnZXMgYWxsZXJlZGUgaSBkZXR0ZSBwcm9ncmFtLiBCcnVnIGV0IHVuaWt0IGFsaWFzLiIKTUNJRVJSX0JBRF9DT05TVEFOVCwgCQkiRGVuIHNwZWNpZmljZXJlZGUgcGFyYW1ldGVyIGVyIHVneWxkaWcgdGlsIGRlbm5lIGtvbW1hbmRvLiIKTUNJRVJSX01VU1RfVVNFX1NIQVJFQUJMRSwgCSJFbmhlZHNkcml2ZXJlbiBlciBhbGxlcmVkZSBpIGJydWcuIEJydWcgcGFyYW1ldGVyZW4gJ3NoYXJlYWJsZScgZm9yIGh2ZXIgJ29wZW4nLWtvbW1hbmRvIGZvciBhdCBkZWxlIGRlbi4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIkRlbiBzcGVjaWZpY2VyZWRlIGtvbW1hbmRvIGty5nZlciBldCBhbGlhcywgZW4gZmlsLCBkcml2ZXIgZWxsZXIgZXQgZW5oZWRzbmFmbi4iCk1DSUVSUl9CQURfVElNRV9GT1JNQVQsIAkiRGVuIHNwZWNpZmljZXJlZGUgduZyZGkgZm9yIHRpZHNmb3JtYXRldCBlciB1Z3lsZGlndC4gU2UgaSBNQ0kgZG9rdW1lbnRhdGlvbmVuIGVmdGVyIGd5bGRpZ2UgZm9ybWF0ZXIuIgpNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgCSJFdCBhZnNsdXR0ZW5kZSBhbmb4cmVsc2VzdGVnbiBtYW5nbGVyIGkgcGFyYW1ldGVyIHbmcmRpZW4uIFRpbGb4aiBldC4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiUGFyYW1ldGVyZW4gZWxsZXIgduZyZGllbiBibGV2IGFuZ2l2ZXQgdG8gZ2FuZ2VyLiBBbmdpdiBkZXQga3VuIGVuIGdhbmcuIgpNQ0lFUlJfSU5WQUxJRF9GSUxFLCAJCSJEZW4gc3BlY2lmaWNlcmVkZSBmaWwga2FuIGlra2Ugc3BpbGxlcyBhZiBw5SBkZW4gc3BlY2lmaWNlcmVkZSBNQ0kgZW5oZWQuIEZpbGVuIGVyIG3lc2tlIGtvcnJ1cHQsIGVsbGVyIGkgZm9ya2VydCBmb3JtYXQuIgpNQ0lFUlJfTlVMTF9QQVJBTUVURVJfQkxPQ0ssIAkiRW4gbnVsbCBwYXJhbWV0ZXIgYmxvayBibGV2IGdpdmV0IHRpbCBNQ0kuIgpNQ0lFUlJfVU5OQU1FRF9SRVNPVVJDRSwgCSJLYW4gaWtrZSBnZW1tZSBlbiBmaWwgdWRlbiBuYWZuLiBBbmdpdiBldCBmaWxuYWZuLiIKTUNJRVJSX05FV19SRVFVSVJFU19BTElBUywgCSJEdSBza2FsIHNwZWNpZmljZXJlIGV0IGFsaWFzIG7lciBkdSBicnVnZXIgcGFyYW1ldGVyZW4gJ25ldycuIgpNQ0lFUlJfTk9USUZZX09OX0FVVE9fT1BFTiwgCSJLYW4gaWtrZSBicnVnZSBmbGFnZ2V0ICdub3RpZnknIG1lZCBhdXRvbWF0aXNrIOVibmVkZSBlbmhlZGVyLiIKTUNJRVJSX05PX0VMRU1FTlRfQUxMT1dFRCwgCSJLYW4gaWtrZSBicnVnZSBldCBmaWxuYWZuIG1lZCBkZW4gc3BlY2lmaWNlcmVkZSBlbmhlZC4iCk1DSUVSUl9OT05BUFBMSUNBQkxFX0ZVTkNUSU9OLCAJIkt1bm5lIGlra2UgdWRm+HJlIGtvbW1hbmRvZW4gaSBkZW4gc3BlY2lmaWNlcmVkZSBy5mtrZWb4bGdlLiBSZXQgcuZra2Vm+GxnZW4gb2cgcHL4diBpZ2VuLiIKTUNJRVJSX0lMTEVHQUxfRk9SX0FVVE9fT1BFTiwgCSJLdW5uZSBpa2tlIHVkZvhyZSBkZW4gc3BlY2lmaWNlcmVkZSBrb21tYW5kbyBw5SBlbiBhdXRvbWF0aXNrIOVibmV0IGVuaGVkLiBWZW50IHRpbCBlbmhlZGVuIGVyIGx1a2tldCBvZyBwcvh2IGlnZW4uIgpNQ0lFUlJfRklMRU5BTUVfUkVRVUlSRUQsIAkiRmlsbmFmbmV0IGVyIHVneWxkaWd0LiBLb250cm9sbGVyIGF0IGZpbG5hZm5ldCBpa2tlIGVyIGzmbmdlcmUgZW5kIDggdGVnbiwgZWZ0ZXJmdWxndCBhZiBldCBwdW5rdHVtIG9nIGVuIGZpbCB0eXBlICgzIHRlZ24pLiIKTUNJRVJSX0VYVFJBX0NIQVJBQ1RFUlMsIAkiS2FuIGlra2Ugc3BlY2lmaWNlcmUgZWtzdHJhIHRlZ24gZWZ0ZXIgZW4gc3RyZW5nIG9tZ2l2ZXQgYWYgYW5m+HJlbHNlc3RlZ24uIgpNQ0lFUlJfREVWSUNFX05PVF9JTlNUQUxMRUQsIAkiRGVuIHNwZWNpZmljZXJlZGUgZW5oZWQgZXIgaWtrZSBpbnN0YWxsZXJldCBpIHN5c3RlbWV0LiBCcnVnIHZhbGdldCAnRHJpdmVyZScgaSBLb250cm9scGFuZWxldCBmb3IgYXQgaW5zdGFsbGVyZSBlbmhlZGVuLiIKTUNJRVJSX0dFVF9DRCwgCQkJIkthbiBpa2tlIHRpbGflIGRlbiBzcGVjaWZpY2VyZWRlIGZpbCBlbGxlciBNQ0kgZW5oZWQuIFBy+HYgYXQg5m5kcmUgZm9sZGVyIGVsbGVyIGF0IGdlbnN0YXJ0ZSBkaW4gY29tcHV0ZXIuIgpNQ0lFUlJfU0VUX0NELCAJCQkiS2FuIGlra2UgdGlsZ+UgZGVuIHNwZWNpZmljZXJlZGUgZmlsIGVsbGVyIE1DSSBlbmhlZCBmb3JkaSBwcm9ncmFtbWV0IGlra2Uga2FuIHNraWZ0ZSBmb2xkZXIuIgpNQ0lFUlJfU0VUX0RSSVZFLCAJCSJLYW4gaWtrZSB0aWxn5SBkZW4gc3BlY2lmaWNlcmVkZSBmaWwgZWxsZXIgTUNJIGVuaGVkIGZvcmRpIHByb2dyYW1tZXQgaWtrZSBrYW4gc2tpZnRlIGRyZXYuIgpNQ0lFUlJfREVWSUNFX0xFTkdUSCwgCQkiU3BlY2lmaWNlciBlbiBlbmhlZCBlbGxlciBkcml2ZXJuYWZuIHNvbSBlciBtaW5kcmUgZW4gNzkgdGVnbi4iCk1DSUVSUl9ERVZJQ0VfT1JEX0xFTkdUSCwgCSJTcGVjaWZpY2VyIGVuIGVuaGVkIGVsbGVyIGRyaXZlcm5hZm4gc29tIGVyIG1pbmRyZSBlbiA2OSB0ZWduLiIKTUNJRVJSX05PX0lOVEVHRVIsIAkJIkRlbiBzcGVjaWZpY2VyZWRlIGtvbW1hbmRvIGhhciBicnVnIGZvciBlbiBoZWx0YWxzIHBhcmFtZXRlci4gQW5naXYgZXQuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTSU5VU0UsIAkiQWxsZSBseWRlbmhlZGVyIHNvbSBrYW4gYWZzcGlsbGUgZmlsZXIgaSBkZXQgcOVn5mxkZW5kZSBmb3JtYXQgZXIgb3B0YWdlZGUuIFZlbnQgdGlsIGF0IGVuIGFmIGx5ZGVuaGVkZXJuZSBlciBsZWRpZ2Ugb2cgcHL4diBpZ2VuLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUSU5VU0UsIAkiS3VubmUgaWtrZSBz5nR0ZSBkZW4gZ+ZsZGVuZGUgbHlkZW5oZWQgdGlsIGFmc3BpbG5pbmcgZm9yZGkgZGVuIGVyIGkgYnJ1Zy4gVmVudCB0aWwgYXQgZW5oZWRlbiBlciBsZWRpZyBvZyBwcvh2IGlnZW4uIgpNQ0lFUlJfV0FWRV9JTlBVVFNJTlVTRSwgCSJBbGxlIGx5ZGVuaGVkZXIgc29tIGthbiBvcHRhZ2UgZmlsZXIgaSBkZXQgZ+ZsZGVuZGUgZm9ybWF0IGVyIG9wdGFnZWRlLiBWZW50IHRpbCBhdCBlbiBhZiBseWRlbmhlZGVybmUgZXIgbGVkaWdlIG9nIHBy+HYgaWdlbi4iCk1DSUVSUl9XQVZFX1NFVElOUFVUSU5VU0UsIAkiS3VubmUgaWtrZSBz5nR0ZSBkZW4gZ+ZsZGVuZGUgbHlkZW5oZWQgdGlsIGF0IG9wdGFnZSBmb3JkaSBkZW4gZXIgaSBicnVnLiBWZW50IHRpbCBhdCBlbmhlZGVuIGVyIGxlZGlnIG9nIHBy+HYgaWdlbi4iCk1DSUVSUl9XQVZFX09VVFBVVFVOU1BFQ0lGSUVELAkiRW5odmVyIGtvbXBhdGliZWwgZW5oZWQgdGlsIGx5ZGFmc3BpbGxpbmcga2FuIGJydWdlcy4iCk1DSUVSUl9XQVZFX0lOUFVUVU5TUEVDSUZJRUQsIAkiRW5odmVyIGtvbXBhdGliZWwgZW5oZWQgdGlsIGx5ZG9wdGFnZW5pbmcga2FuIGJydWdlcy4iCk1DSUVSUl9XQVZFX09VVFBVVFNVTlNVSVRBQkxFLCAJIkluZ2VuIGx5ZGVuaGVkIHNvbSBrYW4gYWZzcGlsbGUgZmlsZXIgaSBkZXQgZ+ZsZGVuZGUgZm9ybWF0ZXQgZXIgaW5zdGFsbGVyZXQuIEJydWcgJ0RyaXZlcmUnIGZvciBhdCBpbnN0YWxsZXJlIGx5ZGVuaGVkZW4uIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRVTlNVSVRBQkxFLCJFbmhlZGVuIGR1IHBy+HZlciBhdCBhZnNwaWxsZSBmcmEsIGdlbmtlbmRlciBpa2tlIGRldCBn5mxkZW5kZSBmaWxmb3JtYXQuIgpNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAJIkluZ2VuIGx5ZGVuaGVkIHNvbSBrYW4gb3B0YWdlIGZpbGVyIGkgZGV0IGfmbGRlbmRlIGZvcm1hdCBlciBpbnN0YWxsZXJldC4gQnJ1ZyAnRHJpdmVyZScgZm9yIGF0IGluc3RhbGxlcmUgbHlkZW5oZWRlbi4iCk1DSUVSUl9XQVZFX1NFVElOUFVUVU5TVUlUQUJMRSwgIkVuaGVkZW4gZHUgcHL4dmVyIGF0IG9wdGFnZSBw5SwgZ2Vua2VuZGVyIGlra2UgZGV0IGfmbGRlbmRlIGZpbGZvcm1hdC4iCk1DSUVSUl9OT19XSU5ET1csIAkJIkRlciBlciBpa2tlIG5vZ2V0IHZpbmR1ZS4iCk1DSUVSUl9DUkVBVEVXSU5ET1csIAkJIkt1bm5lIGlra2Ugb3ByZXR0ZSBlbGxlciBicnVnZSB2aW5kdWV0LiIKTUNJRVJSX0ZJTEVfUkVBRCwgCQkiS3VubmUgaWtrZSBs5nNlIGRlbiBzcGVjaWZpY2VyZWRlIGZpbC4gS29udHJvbGxlciBhdCBmaWxlbiBmb3J0c2F0IGZpbmRlcywgb2cga29udHJvbGxlciBmb3JiaW5kZWxzZW4gdGlsIGRpc2tlbiBlbGxlciBuZXR25nJrZXQuIgpNQ0lFUlJfRklMRV9XUklURSwgCQkiS3VubmUgaWtrZSBza3JpdmUgdGlsIGRlbiBzcGVjaWZpY2VyZWRlIGZpbC4gS29udHJvbGxlciBhdCBkdSBoYXIgbm9rIGZyaSBkaXNrcGxhZHMsIG9nIGF0IGR1IGZvcnRzYXQgZXIgdGlsa29ibGV0IG5ldHbmcmtldC4iCk1DSUVSUl9TRVFfRElWX0lOQ09NUEFUSUJMRSwgCSJUaWRzZm9ybWF0ZXQgdGlsICIic29uZyBwb2ludGVyIiIgb2cgJ1NNUFRFJyBrYW4gaWtrZSBicnVnZXMgc2FtbWVuLiIKTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAJIlN5c3RlbWV0IGhhciBpa2tlIG5vZ2VuIGluc3RhbGxlcmVkZSBNSURJIGVuaGVkZXIuIEJydWcgJ0RyaXZlcmUnIGkgS29udHJvbHBhbmVsZXQgZm9yIGF0IGluc3RhbGxlcmUgZW4gTUlESSBkcml2ZXIuIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIkRlbiBzcGVjaWZpY2VyZWRlIE1JREkgcG9ydCBlciBhbGxlcmVkZSBpIGJydWcuIFZlbnQgdGlsIGRlbiBlciBsZWRpZyBvZyBwcvh2IGlnZW4uIgpNQ0lFUlJfU0VRX1BPUlRfTUFQTk9ERVZJQ0UsIAkiRGV0IGfmbGRlbmRlIG9wc+Z0bmluZyBmb3IgTUlESSBtYXBwZXJlbiByZWZlcmVyZXIgdGlsIGVuIE1JREkgZW5oZWQgc29tIGlra2UgZXIgaW5zdGFsbGVyZXQgaSBzeXN0ZW1ldC4gQnJ1ZyAnTUlESSBtYXBwZXInIGkgS29udHJvbHBhbmVsZXQgZm9yIGF0IOZuZHJlIG9wc+Z0bmluZ2VuLiIKTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUiwgCSJFbiBmZWpsIG9wc3RvZCBtZWQgZGVuIHNwZWNpZmljZXJlZGUgcG9ydC4uIgpNQ0lFUlJfU0VRX1BPUlRfTk9ORVhJU1RFTlQsIAkiRGVuIHNwZWNpZmljZXJlZGUgTUlESSBlbmhlZCBlciBpa2tlIGluc3RhbGxlcmV0IHDlIHN5c3RlbWV0LiBCcnVnICdEcml2ZXJlJyBpIEtvbnRyb2xscGFuZWxldCBmb3IgYXQgaW5zdGFsbGVyZSBlbiBNSURJIGVuaGVkLiIKTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQsIAkiU3lzdGVtZXQgaGFyIGlra2Ugc3BlY2lmaWNlcmV0IGVuIGfmbGRlbmRlIE1JREkgcG9ydC4iCk1DSUVSUl9TRVFfVElNRVIsIAkJIkFsbGUgbXVsdGltZWRpYXRpZHN0YWdlcmUgYnJ1Z2VzIGFmIGFuZHJlIHByb2dyYW1tZXIuIEx1ayBldCBhZiBkZSBwcm9ncmFtbWVyIG9nIHBy+HYgaWdlbi4iCgpFTkQK