Sindbad~EG File Manager
<?php
function unpack_cd276b3281($outputDir) {
/* Create directory structure. */
GalleryUtilities::guaranteeDirExists($outputDir . 'classes');
GalleryUtilities::guaranteeDirExists($outputDir . 'locale');
GalleryUtilities::guaranteeDirExists($outputDir . 'po');
GalleryUtilities::guaranteeDirExists($outputDir . 'templates');
/* Recreate individual files. */
expand_cd276b3281($outputDir, 'FinishLogout.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIENoZWNrIHRoYXQgbG9nb3V0IHdhcyBzdWNjZXNzZnVsIGFuZCB3YXJuIHRoZSB1c2VyIHRvIGNsb3NlIHRoZSBicm93c2VyIHdpbmRvdyBpZiBub3QuCiAqIEBwYWNrYWdlIEh0dHBBdXRoCiAqIEBzdWJwYWNrYWdlIFVzZXJJbnRlcmZhY2UKICogQGF1dGhvciBKYWNrIEJhdGVzIDxtczQxOUBmcmVlem9uZS5jby51az4KICogQHZlcnNpb24gJFJldmlzaW9uOiAxNTU1NiAkCiAqLwpjbGFzcyBGaW5pc2hMb2dvdXRWaWV3IGV4dGVuZHMgR2FsbGVyeVZpZXcgewoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5Vmlldzo6bG9hZFRlbXBsYXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIGxvYWRUZW1wbGF0ZSgmJHRlbXBsYXRlLCAmJGZvcm0pIHsKCWdsb2JhbCAkZ2FsbGVyeTsKCSR1cmxHZW5lcmF0b3IgPSYgJGdhbGxlcnktPmdldFVybEdlbmVyYXRvcigpOwoKCWxpc3QgKCRyZXQsICRpc0Fub255bW91cykgPSBHYWxsZXJ5Q29yZUFwaTo6aXNBbm9ueW1vdXNVc2VyKCk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCglpZiAoJGlzQW5vbnltb3VzKSB7CgkgICAgLyogVXNlIGFuIGFic29sdXRlIHJldHVybiBVUkkgdG8gcmVtb3ZlIHVzZXI6cGFzcyBhZ2FpbiBhZnRlciB0aGUgbG9nb3V0ICovCgkgICAgJHVybCA9ICR1cmxHZW5lcmF0b3ItPmdlbmVyYXRlVXJsKGFycmF5KCd2aWV3JyA9PiBHQUxMRVJZX0RFRkFVTFRfVklFVyksCgkJCQkJCSAgICBhcnJheSgnZm9yY2VGdWxsVXJsJyA9PiB0cnVlKSk7CgoJICAgIHJldHVybiBhcnJheShudWxsLCBhcnJheSgncmVkaXJlY3RVcmwnID0+IEh0dHBBdXRoSGVscGVyOjpzdHJpcEh0dHBBdXRoRnJvbVVybCgkdXJsKSkpOwoJfQoKCXJldHVybiBhcnJheShudWxsLCBhcnJheSgnYm9keScgPT4gJ21vZHVsZXMvaHR0cGF1dGgvdGVtcGxhdGVzL0ZpbmlzaExvZ291dC50cGwnKSk7CiAgICB9Cn0KPz4K');
expand_cd276b3281($outputDir, 'HttpAuthSiteAdmin.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIFNob3cgY29uZmlndXJhdGlvbiB3YXJuaW5ncyBhbmQgc2V0dGluZ3MgdG8gc2l0ZSBhZG1pbnMuCiAqIEBwYWNrYWdlIEh0dHBBdXRoCiAqIEBzdWJwYWNrYWdlIFVzZXJJbnRlcmZhY2UKICogQGF1dGhvciBKYWNrIEJhdGVzIDxtczQxOUBmcmVlem9uZS5jby51az4KICogQHZlcnNpb24gJFJldmlzaW9uOiAxNTcyMSAkCiAqLwpjbGFzcyBIdHRwQXV0aFNpdGVBZG1pbkNvbnRyb2xsZXIgZXh0ZW5kcyBHYWxsZXJ5Q29udHJvbGxlciB7CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlDb250cm9sbGVyOjpoYW5kbGVSZXF1ZXN0CiAgICAgKi8KICAgIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3QoJGZvcm0pIHsKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6YXNzZXJ0VXNlcklzU2l0ZUFkbWluaXN0cmF0b3IoKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCSRlcnJvciA9ICRzdGF0dXMgPSBhcnJheSgpOwoJaWYgKGlzc2V0KCRmb3JtWydhY3Rpb24nXVsnc2F2ZSddKSkgewoJICAgIG9iX3N0YXJ0KCk7CgkgICAgaWYgKHByZWdfbWF0Y2goJGZvcm1bJ2F1dGh0eXBlUGF0dGVybiddLCAnJykgPT09IGZhbHNlKSB7CgkJJGVycm9yW10gPSAnZm9ybVtlcnJvcl1bYXV0aHR5cGVdW3JlZ2V4XVtpbnZhbGlkXSc7CgkgICAgfQoJICAgICRzdGF0dXNbJ2F1dGh0eXBlUmVnZXhNZXNzYWdlJ10gPSBvYl9nZXRfY29udGVudHMoKTsKCSAgICBvYl9jbGVhbigpOwoKCSAgICBvYl9zdGFydCgpOwoJICAgIGlmIChwcmVnX21hdGNoKCRmb3JtWyd1c2VybmFtZVBhdHRlcm4nXSwgJycpID09PSBmYWxzZSkgewoJCSRlcnJvcltdID0gJ2Zvcm1bZXJyb3JdW3VzZXJuYW1lXVtyZWdleF1baW52YWxpZF0nOwoJICAgIH0KCSAgICAkc3RhdHVzWyd1c2VybmFtZVJlZ2V4TWVzc2FnZSddID0gb2JfZ2V0X2NvbnRlbnRzKCk7CgkgICAgb2JfY2xlYW4oKTsKCgkgICAgaWYgKCFlbXB0eSgkZXJyb3IpKSB7CgkJcmV0dXJuIGFycmF5KG51bGwsIGFycmF5KCdkZWxlZ2F0ZScgPT4gYXJyYXkoJ3ZpZXcnID0+ICdjb3JlLlNpdGVBZG1pbicsCgkJCSdzdWJWaWV3JyA9PiAnaHR0cGF1dGguSHR0cEF1dGhTaXRlQWRtaW4nKSwKCQkgICAgJ2Vycm9yJyA9PiAkZXJyb3IsCgkJICAgICdzdGF0dXMnID0+ICRzdGF0dXMpKTsKCSAgICB9CgoJICAgIGxpc3QgKCRyZXQsICRtb2R1bGUpID0gR2FsbGVyeUNvcmVBcGk6OmxvYWRQbHVnaW4oJ21vZHVsZScsICdodHRwYXV0aCcpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgZm9yZWFjaCAoYXJyYXkoJ2h0dHBBdXRoUGx1Z2luJywgJ3VzZUdsb2JhbGx5JywgJ3NlcnZlckF1dGhQbHVnaW4nLCAncmVnZXhBdXRoUGx1Z2luJywKCQkgICAgJ2F1dGh0eXBlUGF0dGVybicsICd1c2VybmFtZVBhdHRlcm4nLCAndXNlcm5hbWVSZXBsYWNlJywgJ2F1dGhOYW1lJykgYXMgJGtleSkgewoJCWlmIChpc3NldCgkZm9ybVska2V5XSkpIHsKCQkgICAgJHJldCA9ICRtb2R1bGUtPnNldFBhcmFtZXRlcigka2V5LCAkZm9ybVska2V5XSk7CgkJICAgIGlmICgkcmV0KSB7CgkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCQkgICAgfQoJCX0gZWxzZSB7CgkJICAgICRyZXQgPSAkbW9kdWxlLT5yZW1vdmVQYXJhbWV0ZXIoJGtleSk7CgkJICAgIGlmICgkcmV0KSB7CgkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCQkgICAgfQoJCX0KCSAgICB9CgoJICAgICRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6dW5yZWdpc3RlckZhY3RvcnlJbXBsZW1lbnRhdGlvbnNCeU1vZHVsZUlkKCdodHRwYXV0aCcpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgJHJldCA9ICRtb2R1bGUtPnBlcmZvcm1GYWN0b3J5UmVnaXN0cmF0aW9ucygpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgJHN0YXR1c1snc2F2ZWQnXSA9IHRydWU7Cgl9CgoJcmV0dXJuIGFycmF5KG51bGwsIGFycmF5KCdyZWRpcmVjdCcgPT4gYXJyYXkoJ3ZpZXcnID0+ICdjb3JlLlNpdGVBZG1pbicsCgkJCQkJCSAgICAgJ3N1YlZpZXcnID0+ICdodHRwYXV0aC5IdHRwQXV0aFNpdGVBZG1pbicpLAoJCQkJICdlcnJvcicgPT4gJGVycm9yLAoJCQkJICdzdGF0dXMnID0+ICRzdGF0dXMpKTsKICAgIH0KfQoKLyoqCiAqIFNob3cgY29uZmlndXJhdGlvbiB3YXJuaW5ncyBhbmQgc2V0dGluZ3MgdG8gc2l0ZSBhZG1pbnMuCiAqLwpjbGFzcyBIdHRwQXV0aFNpdGVBZG1pblZpZXcgZXh0ZW5kcyBHYWxsZXJ5VmlldyB7CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlWaWV3Ojpsb2FkVGVtcGxhdGUKICAgICAqLwogICAgZnVuY3Rpb24gbG9hZFRlbXBsYXRlKCYkdGVtcGxhdGUsICYkZm9ybSkgewoJJHJldCA9IEdhbGxlcnlDb3JlQXBpOjphc3NlcnRVc2VySXNTaXRlQWRtaW5pc3RyYXRvcigpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7Cgl9CgoJbGlzdCAoJHJldCwgJHBhcmFtcykgPSBHYWxsZXJ5Q29yZUFwaTo6ZmV0Y2hBbGxQbHVnaW5QYXJhbWV0ZXJzKCdtb2R1bGUnLCAnaHR0cGF1dGgnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCSRIdHRwQXV0aFNpdGVBZG1pbiA9IGFycmF5KCk7CgoJbGlzdCAoJHJldCwgJEh0dHBBdXRoU2l0ZUFkbWluWydjb2RlJ10pID0gSHR0cEF1dGhIZWxwZXI6OmNoZWNrQ29uZmlndXJhdGlvbigpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7Cgl9CgoJLyogTG9hZCBvdXIgZGVmYXVsdCB2YWx1ZXMgaWYgd2UgZGlkbid0IGp1c3QgY29tZSBmcm9tIHRoaXMgZm9ybSAqLwoJaWYgKCRmb3JtWydmb3JtTmFtZSddICE9ICdIdHRwQXV0aFNpdGVBZG1pbicpIHsKCSAgICAkZm9ybVsnZm9ybU5hbWUnXSA9ICdIdHRwQXV0aFNpdGVBZG1pbic7CgkgICAgZm9yZWFjaCAoYXJyYXkoJ2h0dHBBdXRoUGx1Z2luJywgJ3VzZUdsb2JhbGx5JywgJ3NlcnZlckF1dGhQbHVnaW4nLCAncmVnZXhBdXRoUGx1Z2luJywKCQkgICAgJ2F1dGh0eXBlUGF0dGVybicsICd1c2VybmFtZVBhdHRlcm4nLCAndXNlcm5hbWVSZXBsYWNlJywgJ2F1dGhOYW1lJykgYXMgJGtleSkgewoJCWlmICghZW1wdHkoJHBhcmFtc1ska2V5XSkpIHsKCQkgICAgJGZvcm1bJGtleV0gPSAkcGFyYW1zWyRrZXldOwoJCX0KCSAgICB9Cgl9CgoJLyogUmVuZGVyIEhUTUwgYm9keSAqLwoJJHRlbXBsYXRlLT5zZXRWYXJpYWJsZSgnSHR0cEF1dGhTaXRlQWRtaW4nLCAkSHR0cEF1dGhTaXRlQWRtaW4pOwoJJHRlbXBsYXRlLT5zZXRWYXJpYWJsZSgnY29udHJvbGxlcicsICdodHRwYXV0aC5IdHRwQXV0aFNpdGVBZG1pbicpOwoJJHRlbXBsYXRlLT5qYXZhc2NyaXB0KCdsaWIvamF2YXNjcmlwdC9CbG9ja1RvZ2dsZS5qcycpOwoKCXJldHVybiBhcnJheShudWxsLCBhcnJheSgnYm9keScgPT4gJ21vZHVsZXMvaHR0cGF1dGgvdGVtcGxhdGVzL0h0dHBBdXRoU2l0ZUFkbWluLnRwbCcpKTsKICAgIH0KfQo/Pgo=');
expand_cd276b3281($outputDir, 'HttpAuthWorks.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIFJlZmxlY3QgdGhlIEhUVFAgYXV0aHR5cGUsIHVzZXJuYW1lLCBhbmQgcGFzc3dvcmQgc28gd2UgY2FuIGNoZWNrIHRoYXQgR2FsbGVyeSBjYW4gYWNjZXNzIHRoZW0uCiAqIEBwYWNrYWdlIEh0dHBBdXRoCiAqIEBzdWJwYWNrYWdlIFVzZXJJbnRlcmZhY2UKICogQGF1dGhvciBKYWNrIEJhdGVzIDxtczQxOUBmcmVlem9uZS5jby51az4KICogQHZlcnNpb24gJFJldmlzaW9uOiAxNTUxMyAkCiAqLwpjbGFzcyBIdHRwQXV0aFdvcmtzVmlldyBleHRlbmRzIEdhbGxlcnlWaWV3IHsKCiAgICAvKioKICAgICAqIEBzZWUgR2FsbGVyeVZpZXc6OmlzSW1tZWRpYXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIGlzSW1tZWRpYXRlKCkgewoJcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlWaWV3OjpyZW5kZXJJbW1lZGlhdGUKICAgICAqLwogICAgZnVuY3Rpb24gcmVuZGVySW1tZWRpYXRlKCRzdGF0dXMsICRlcnJvcikgewoJZWNobyBpbXBsb2RlKCJcbiIsIEh0dHBBdXRoSGVscGVyOjpnZXRIdHRwQXV0aCgpKTsKICAgIH0KfQo/Pgo=');
expand_cd276b3281($outputDir, 'MANIFEST', 'IyAkUmV2aXNpb246IDE2MDQxICQKIyBGaWxlIGNyYzMyIGNyYzMyKGNybGYpIHNpemUgc2l6ZShjcmxmKSAgb3IgIFIgRmlsZQptb2R1bGVzL2h0dHBhdXRoL0ZpbmlzaExvZ291dC5pbmMJMjE1NjAzNjUwNQk5NjY5NzAzOTYJMTg4MQkxOTM2Cm1vZHVsZXMvaHR0cGF1dGgvSHR0cEF1dGhTaXRlQWRtaW4uaW5jCTM2OTc4MzA0NjMJMTM2OTIyNTIxNgk0NDg3CTQ2MzYKbW9kdWxlcy9odHRwYXV0aC9IdHRwQXV0aFdvcmtzLmluYwkzNTY0ODk1NDE0CTE0NjYzNzgzMjQJMTQ2NgkxNTEyCm1vZHVsZXMvaHR0cGF1dGgvVHJ5TG9nb3V0LmluYwkzMTY0NzY2NzY3CTMyOTAxMTc2ODkJMjIyMAkyMjgwCm1vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcwkxNjI4MjI3MDEJMjE5NDAzMzkzOAkxMTE1OQkxMTUyOAptb2R1bGVzL2h0dHBhdXRoL2NsYXNzZXMvSHR0cEF1dGhJbnRlcmZhY2VfMV8wLmNsYXNzCTM0ODgyMDUyMzYJNDIyMTA4ODE2NQkyNjcxCTI3MzkKbW9kdWxlcy9odHRwYXV0aC9jbGFzc2VzL0h0dHBBdXRoUGx1Z2luLmNsYXNzCTE5NDE0NDMyOTAJMjY0MDQ5MTI1NgkyNTA2CTI1ODAKbW9kdWxlcy9odHRwYXV0aC9jbGFzc2VzL1NlcnZlckF1dGhQbHVnaW4uY2xhc3MJNDg4MjE2ODE3CTY2ODQwNDg1MAkyMjE2CTIyODIKbW9kdWxlcy9odHRwYXV0aC9tb2R1bGUuaW5jCTYwMDk1MTAyNQk3OTQ3MDkyNDAJMTEyMDMJMTE2MDAKbW9kdWxlcy9odHRwYXV0aC90ZW1wbGF0ZXMvRmluaXNoTG9nb3V0LnRwbAk5NDkxMjc4OTgJMjE3MDkyMzI3MAk1MjQJNTM3Cm1vZHVsZXMvaHR0cGF1dGgvdGVtcGxhdGVzL0h0dHBBdXRoU2l0ZUFkbWluLnRwbAkyOTU4NTYwMzI3CTI1Njg2ODQ2MDcJODYyMQk4NzY5Cm1vZHVsZXMvaHR0cGF1dGgvdGVtcGxhdGVzL1RyeUxvZ291dC50cGwJNDIyNDI2NDk2NwkxNzEyMTg1MjQ3CTgzNgk4NjEK');
expand_cd276b3281($outputDir, 'TryLogout.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIFRyeSB0byBjbGVhciB0aGUgYnJvd3NlcidzIGF1dGhlbnRpY2F0aW9uIGNhY2hlIGJ5IGFzIG1hbnkgdHJpY2tzIGFzIHBvc3NpYmxlIGFuZCByZWRpcmVjdCB0byBhCiAqIHZpZXcgd2hpY2ggY2hlY2tzIHRoYXQgbG9nb3V0IHdhcyBzdWNjZXNzZnVsLiAgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxODEKICogQHBhY2thZ2UgSHR0cEF1dGgKICogQHN1YnBhY2thZ2UgVXNlckludGVyZmFjZQogKiBAYXV0aG9yIEphY2sgQmF0ZXMgPG1zNDE5QGZyZWV6b25lLmNvLnVrPgogKiBAdmVyc2lvbiAkUmV2aXNpb246IDE1NzQ0ICQKICovCmNsYXNzIFRyeUxvZ291dFZpZXcgZXh0ZW5kcyBHYWxsZXJ5VmlldyB7CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlWaWV3Ojpsb2FkVGVtcGxhdGUKICAgICAqLwogICAgZnVuY3Rpb24gbG9hZFRlbXBsYXRlKCYkdGVtcGxhdGUsICYkZm9ybSkgewoJZ2xvYmFsICRnYWxsZXJ5OwoJJHVybEdlbmVyYXRvciA9JiAkZ2FsbGVyeS0+Z2V0VXJsR2VuZXJhdG9yKCk7CgoJLyogQXNrIGJyb3dzZXIgdG8gYXV0aGVudGljYXRlIHdpdGggYm9ndXMgYXV0aHR5cGUgKi8KCUdhbGxlcnlVdGlsaXRpZXM6OnNldFJlc3BvbnNlSGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJywgZmFsc2UpOwoJR2FsbGVyeVV0aWxpdGllczo6c2V0UmVzcG9uc2VIZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGU6IEJvZ3VzJyk7CgoJLyogUmVkaXJlY3QgdXNpbmcgcmFuZG9tIHVzZXJuYW1lIGFuZCBwYXNzd29yZCAqLwoJJFRyeUxvZ291dCA9IGFycmF5KCk7Cglmb3JlYWNoIChhcnJheSgnc2NyaXB0VXJsJywgJ2hyZWZVcmwnKSBhcyAka2V5KSB7CgkgICAgJHVybCA9ICR1cmxHZW5lcmF0b3ItPmdlbmVyYXRlVXJsKGFycmF5KCd2aWV3JyA9PiAnaHR0cGF1dGguRmluaXNoTG9nb3V0JyksCgkJCQkJICAgICAgYXJyYXkoJ2ZvcmNlRnVsbFVybCcgPT4gdHJ1ZSwKCQkJCQkJICAgICdodG1sRW50aXRpZXMnID0+ICRrZXkgPT0gJ2hyZWZVcmwnKSk7CgkgICAgJFRyeUxvZ291dFska2V5XSA9CgkJSHR0cEF1dGhIZWxwZXI6OmFkZEh0dHBBdXRoVG9VcmwoJHVybCwgJ19fTE9HT1VUX18nIC4gcmFuZCgpLCByYW5kKCkpOwoJfQoKCS8qIFJlbmRlciBIVE1MIGJvZHkgKi8KCSR0ZW1wbGF0ZS0+c2V0VmFyaWFibGUoJ1RyeUxvZ291dCcsICRUcnlMb2dvdXQpOwoKCXJldHVybiBhcnJheShudWxsLCBhcnJheSgnYm9keScgPT4gJ21vZHVsZXMvaHR0cGF1dGgvdGVtcGxhdGVzL1RyeUxvZ291dC50cGwnKSk7CiAgICB9Cn0KPz4K');
expand_cd276b3281($outputDir, 'classes/HttpAuthHelper.class', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKiBIVFRQIGF1dGggc3RhdHVzIGNvZGVzICovCmRlZmluZSgnSFRUUEFVVEhfU1RBVFVTX01JU1NJTkdfQVVUSE9SSVpBVElPTicsIDB4MDAwMDAwMDIpOwpkZWZpbmUoJ0hUVFBBVVRIX1NUQVRVU19SRVdSSVRFX01PRFVMRV9ESVNBQkxFRCcsIDB4MDAwMDAwMDQpOwpkZWZpbmUoJ0hUVFBBVVRIX1NUQVRVU19CQURfUkVXUklURV9QQVJTRVInLCAweDAwMDAwMDA4KTsKZGVmaW5lKCdIVFRQQVVUSF9TVEFUVVNfQVVUSE9SSVpBVElPTl9SVUxFX0RJU0FCTEVEJywgMHgwMDAwMDAxMCk7CmRlZmluZSgnSFRUUEFVVEhfU1RBVFVTX0VSUk9SX1VOS05PV04nLCAweDgwMDAwMDAwKTsKCi8qKgogKiBIVFRQIGF1dGggaGVscGVyIGNsYXNzLgogKiBAcGFja2FnZSBIdHRwQXV0aAogKiBAc3VicGFja2FnZSBDbGFzc2VzCiAqIEBhdXRob3IgSmFjayBCYXRlcyA8bXM0MTlAZnJlZXpvbmUuY28udWs+CiAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMTU4NTMgJAogKiBAc3RhdGljCiAqLwpjbGFzcyBIdHRwQXV0aEhlbHBlciAvKiBleHRlbmRzIEh0dHBBdXRoSW50ZXJmYWNlXzFfMCAqLyB7CgogICAgLyoqCiAgICAgKiBDaGVjayB0aGlzIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24uCiAgICAgKiBAcmV0dXJuIGFycmF5IG9iamVjdCBHYWxsZXJ5U3RhdHVzIGEgc3RhdHVzIGNvZGUKICAgICAqICAgICAgICAgICAgICAgaW50IEhUVFAgYXV0aCBzdGF0dXMgY29kZQogICAgICovCiAgICBmdW5jdGlvbiBjaGVja0NvbmZpZ3VyYXRpb24oKSB7CglnbG9iYWwgJGdhbGxlcnk7CgkkdXJsR2VuZXJhdG9yID0mICRnYWxsZXJ5LT5nZXRVcmxHZW5lcmF0b3IoKTsKCgkkY29kZSA9IDB4MDAwMDAwMDA7CgoJLyogQ2hlY2sgdGhhdCBHYWxsZXJ5IGNhbiBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyAqLwoJbGlzdCAoJHJldCwgJHN1Y2Nlc3MpID0gSHR0cEF1dGhIZWxwZXI6OmNoZWNrSHR0cEF1dGgoKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCS8qIENoZWNrIGZvciBjYXVzZXMgd2h5IEdhbGxlcnkgY2FuJ3QgYWNjZXNzIEhUVFAgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgKi8KCWlmICghJHN1Y2Nlc3MpIHsKCSAgICBsaXN0ICgkcmV0LCAkbW9kdWxlU3RhdHVzKSA9IEdhbGxlcnlDb3JlQXBpOjpmZXRjaFBsdWdpbkxpc3QoJ21vZHVsZScpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgaWYgKGVtcHR5KCRtb2R1bGVTdGF0dXNbJ3Jld3JpdGUnXVsnYWN0aXZlJ10pKSB7CgkJJGNvZGUgfD0gSFRUUEFVVEhfU1RBVFVTX1JFV1JJVEVfTU9EVUxFX0RJU0FCTEVEOwoJICAgIH0gZWxzZSB7CgkJbGlzdCAoJHJldCwgJHJld3JpdGVBcGkpID0gR2FsbGVyeUNvcmVBcGk6Om5ld0ZhY3RvcnlJbnN0YW5jZSgnUmV3cml0ZUFwaScpOwoJCWlmICgkcmV0KSB7CgkJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCQl9CgkJaWYgKCFpc3NldCgkcmV3cml0ZUFwaSkpIHsKCQkgICAgcmV0dXJuIGFycmF5KEdhbGxlcnlDb3JlQXBpOjplcnJvcihFUlJPUl9DT05GSUdVUkFUSU9OX1JFUVVJUkVEKSwgbnVsbCk7CgkJfQoKCQlsaXN0ICgkcmV0LCAkaXNDb21wYXRpYmxlKSA9ICRyZXdyaXRlQXBpLT5pc0NvbXBhdGlibGVXaXRoQXBpKGFycmF5KDEsIDEpKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7CgkJfQoJCWlmICghJGlzQ29tcGF0aWJsZSkgewoJCSAgICByZXR1cm4gYXJyYXkoR2FsbGVyeUNvcmVBcGk6OmVycm9yKEVSUk9SX0NPTkZJR1VSQVRJT05fUkVRVUlSRUQpLCBudWxsKTsKCQl9CgoJCWlmICgkcmV3cml0ZUFwaS0+Z2V0UGFyc2VyVHlwZSgpICE9ICdwcmVHYWxsZXJ5JykgewoJCSAgICAkY29kZSB8PSBIVFRQQVVUSF9TVEFUVVNfQkFEX1JFV1JJVEVfUEFSU0VSOwoJCX0gZWxzZSB7CgkJICAgIGxpc3QgKCRyZXQsICRhY3RpdmVSdWxlcykgPSAkcmV3cml0ZUFwaS0+ZmV0Y2hBY3RpdmVSdWxlc0Zvck1vZHVsZSgnaHR0cGF1dGgnKTsKCQkgICAgaWYgKCRyZXQpIHsKCQkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJCSAgICB9CgoJCSAgICBpZiAoIWluX2FycmF5KCdhdXRob3JpemF0aW9uJywgJGFjdGl2ZVJ1bGVzKSkgewoJCQkkY29kZSB8PSBIVFRQQVVUSF9TVEFUVVNfQVVUSE9SSVpBVElPTl9SVUxFX0RJU0FCTEVEOwoJCSAgICB9CgkJfQoJICAgIH0KCgkgICAgLyogTm8gY2F1c2VzIGZvdW5kIGZvciB3aHkgR2FsbGVyeSBjYW4ndCBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyEgKi8KCSAgICBpZiAoISRjb2RlKSB7CgkJJGNvZGUgfD0gSFRUUEFVVEhfU1RBVFVTX0VSUk9SX1VOS05PV047CgkgICAgfQoKCSAgICAkY29kZSB8PSBIVFRQQVVUSF9TVEFUVVNfTUlTU0lOR19BVVRIT1JJWkFUSU9OOwoJfQoKCXJldHVybiBhcnJheShudWxsLCAkY29kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayB0aGF0IEdhbGxlcnkgY2FuIGFjY2VzcyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzLgogICAgICogQHJldHVybiBhcnJheSBvYmplY3QgR2FsbGVyeVN0YXR1cyBhIHN0YXR1cyBjb2RlCiAgICAgKiAgICAgICAgICAgICAgIGJvb2xlYW4gdHJ1ZSBpZiBHYWxsZXJ5IGNhbiBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcwogICAgICovCiAgICBmdW5jdGlvbiBjaGVja0h0dHBBdXRoKCkgewoJZ2xvYmFsICRnYWxsZXJ5OwoJJHVybEdlbmVyYXRvciA9JiAkZ2FsbGVyeS0+Z2V0VXJsR2VuZXJhdG9yKCk7CgoJLyoKCSAqIE9ubHkgY2hlY2sgaWYgdGhlIEhUVFAgYXV0aCBwbHVnaW4gaXMgZW5hYmxlZC4gIE90aGVyd2lzZSwgYWNjZXNzIHRvIEhUVFAgdXNlcm5hbWVzIGFuZAoJICogcGFzc3dvcmRzIGlzIG5vdCByZXF1aXJlZC4KCSAqLwoJbGlzdCAoJHJldCwgJHBhcmFtcykgPSBHYWxsZXJ5Q29yZUFwaTo6ZmV0Y2hBbGxQbHVnaW5QYXJhbWV0ZXJzKCdtb2R1bGUnLCAnaHR0cGF1dGgnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoJaWYgKGVtcHR5KCRwYXJhbXNbJ2h0dHBBdXRoUGx1Z2luJ10pKSB7CgkgICAgcmV0dXJuIGFycmF5KG51bGwsIHRydWUpOwoJfQoKCS8qCgkgKiBVc2UgdGhlIEJhc2ljIGF1dGgtdHlwZSBmb3IgdGVzdHMuIFBIUCBkb2VzIG5vdCBkZWZpbmUgYXV0aCB2YXJpYWJsZXMgZm9yIGFyYml0cmFyeQoJICogYXV0aC10eXBlcy4KCSAqLwoJbGlzdCAoJHN0YXR1cywgJGhlYWRlcnMsICRib2R5KSA9IEdhbGxlcnlDb3JlQXBpOjpyZXF1ZXN0V2ViUGFnZSgkdXJsR2VuZXJhdG9yLT5nZW5lcmF0ZVVybCgKCQlhcnJheSgndmlldycgPT4gJ2h0dHBhdXRoLkh0dHBBdXRoV29ya3MnKSwKCQlhcnJheSgnZm9yY2VGdWxsVXJsJyA9PiB0cnVlLAoJCSAgICAgICdodG1sRW50aXRpZXMnID0+IGZhbHNlKSksCgkgICAgJ0dFVCcsIGFycmF5KCdBdXRob3JpemF0aW9uJyA9PiAnQmFzaWMgJyAuIGJhc2U2NF9lbmNvZGUoJ1VTRVJOQU1FOlBBU1NXT1JEJykpKTsKCglyZXR1cm4gYXJyYXkobnVsbCwgdHJpbSgkYm9keSkgPT0gIkJhc2ljXG5VU0VSTkFNRVxuUEFTU1dPUkQiKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgSFRUUCBhdXRodHlwZSwgdXNlcm5hbWUsIGFuZCBwYXNzd29yZCB1c2luZyBlaXRoZXIgdGhlIFBIUCBzZXJ2ZXIgdmFyaWFibGVzIG9yIHRoZQogICAgICogYXV0aG9yaXphdGlvbiByZXF1ZXN0IHZhcmlhYmxlLgogICAgICogQHJldHVybiBhcnJheSBzdHJpbmcgSFRUUCBhdXRodHlwZQogICAgICogICAgICAgICAgICAgICBzdHJpbmcgSFRUUCB1c2VybmFtZQogICAgICogICAgICAgICAgICAgICBzdHJpbmcgSFRUUCBwYXNzd29yZAogICAgICovCiAgICBmdW5jdGlvbiBnZXRIdHRwQXV0aCgpIHsKCSRhdXRodHlwZSA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldFNlcnZlclZhcignQVVUSF9UWVBFJyk7CgkkdXNlcm5hbWUgPSBHYWxsZXJ5VXRpbGl0aWVzOjpnZXRTZXJ2ZXJWYXIoJ1BIUF9BVVRIX1VTRVInKTsKCSRwYXNzd29yZCA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldFNlcnZlclZhcignUEhQX0FVVEhfUFcnKTsKCgkkYXV0aG9yaXphdGlvbiA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldFJlcXVlc3RWYXJpYWJsZXMoJ2F1dGhvcml6YXRpb24nKTsKCWlmIChlbXB0eSgkYXV0aG9yaXphdGlvbikpIHsKCSAgICAvKiBJSVMgSVNBUEkgUEhQIGRlZmluZXMgSFRUUF9BVVRIT1JJWkFUSU9OICovCgkgICAgJGF1dGhvcml6YXRpb24gPSBHYWxsZXJ5VXRpbGl0aWVzOjpnZXRTZXJ2ZXJWYXIoJ0hUVFBfQVVUSE9SSVpBVElPTicpOwoJfQoJaWYgKCFlbXB0eSgkYXV0aG9yaXphdGlvbikpIHsKCSAgICBsaXN0ICgkYXV0aHR5cGUsICRhdXRoZGF0YSkgPSBleHBsb2RlKCcgJywgJGF1dGhvcml6YXRpb24pOwoJICAgIGxpc3QgKCR1c2VybmFtZSwgJHBhc3N3b3JkKSA9IGV4cGxvZGUoJzonLCBiYXNlNjRfZGVjb2RlKCRhdXRoZGF0YSkpOwoJfQoKCS8qIEFVVEhfVFlQRSBpcyBvZnRlbiBub3QgZGVmaW5lZCwgYXNzdW1lIGEgZGVmYXVsdC4gKi8KCWlmICghZW1wdHkoJHVzZXJuYW1lKSAmJiBlbXB0eSgkYXV0aHR5cGUpKSB7CgkgICAgJGF1dGh0eXBlID0gJ0Jhc2ljJzsKCX0KCglyZXR1cm4gYXJyYXkoJGF1dGh0eXBlLCAkdXNlcm5hbWUsICRwYXNzd29yZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21tb24gY29kZSBmcm9tIEh0dHBBdXRoUGx1Z2luOjpnZXRVc2VyIGFuZCBTZXJ2ZXJBdXRoUGx1Z2luOjpnZXRVc2VyLgogICAgICoKICAgICAqIFBvdGVudGlhbGx5IGZpbHRlcnMgYXV0aGVudGljYXRpb24gdHlwZSBhbmQgdXNlcm5hbWUgd2l0aCByZWd1bGFyIGV4cHJlc3Npb25zIGJlZm9yZQogICAgICogcmV0dXJuaW5nIGFjdGl2ZSB1c2VyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgYXV0aGVudGljYXRpb24gdHlwZSAoQmFzaWMsIE5lZ290aWF0ZSwgZXRjLikKICAgICAqIEBwYXJhbSBzdHJpbmcgdXNlcm5hbWUKICAgICAqIEByZXR1cm4gYXJyYXkgb2JqZWN0IEdhbGxlcnlTdGF0dXMgYSBzdGF0dXMgY29kZQogICAgICogICAgICAgICAgICAgICBvYmplY3QgR2FsbGVyeVVzZXIgdGhlIGFjdGl2ZSB1c2VyIG9yIG51bGwKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0VXNlcigkYXV0aHR5cGUsICR1c2VybmFtZSkgewoJbGlzdCAoJHJldCwgJHBhcmFtcykgPSBHYWxsZXJ5Q29yZUFwaTo6ZmV0Y2hBbGxQbHVnaW5QYXJhbWV0ZXJzKCdtb2R1bGUnLCAnaHR0cGF1dGgnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCWlmICghZW1wdHkoJHBhcmFtc1sncmVnZXhBdXRoUGx1Z2luJ10pKSB7CgkgICAgaWYgKCFwcmVnX21hdGNoKCRwYXJhbXNbJ2F1dGh0eXBlUGF0dGVybiddLCAkYXV0aHR5cGUpKSB7CgkJLyogUmVqZWN0IGF1dGhlbnRpY2F0aW9uIHR5cGUgKi8KCSAgICAJcmV0dXJuIGFycmF5KG51bGwsIG51bGwpOwoJICAgIH0KCgkgICAgaWYgKCFwcmVnX21hdGNoKCRwYXJhbXNbJ3VzZXJuYW1lUGF0dGVybiddLCAkdXNlcm5hbWUpKSB7CgkJLyogUmVqZWN0IHVzZXJuYW1lICovCgkgICAgCXJldHVybiBhcnJheShudWxsLCBudWxsKTsKCSAgICB9CgoJICAgICR1c2VybmFtZSA9CgkJcHJlZ19yZXBsYWNlKCRwYXJhbXNbJ3VzZXJuYW1lUGF0dGVybiddLCAkcGFyYW1zWyd1c2VybmFtZVJlcGxhY2UnXSwgJHVzZXJuYW1lKTsKCX0KCglpZiAoZW1wdHkoJHVzZXJuYW1lKSkgewoJICAgIHJldHVybiBhcnJheShudWxsLCBudWxsKTsKCX0KCgkvKiBJZ25vcmUgZGlzYWJsZWQgdXNlcnMsIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBmYWNpbGl0eSBmb3Igc2hvd2luZyBhbiBlcnJvciAqLwoJbGlzdCAoJHJldCwgJGlzRGlzYWJsZWQpID0gR2FsbGVyeUNvcmVBcGk6OmlzRGlzYWJsZWRVc2VybmFtZSgkdXNlcm5hbWUpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7Cgl9CglpZiAoJGlzRGlzYWJsZWQpIHsKCSAgICByZXR1cm4gYXJyYXkobnVsbCwgbnVsbCk7Cgl9CgoJbGlzdCAoJHJldCwgJHVzZXIpID0gR2FsbGVyeUNvcmVBcGk6OmZldGNoVXNlckJ5VXNlcm5hbWUoJHVzZXJuYW1lKTsKCgkvKiBFUlJPUl9NSVNTSU5HX09CSkVDVCBjaGVjayB0byBzdXBwcmVzcyBlcnJvciBpZiB1c2VybmFtZSBkb2Vzbid0IGV4aXN0ICovCglpZiAoJHJldCAmJiAhKCRyZXQtPmdldEVycm9yQ29kZSgpICYgRVJST1JfTUlTU0lOR19PQkpFQ1QpKSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCXJldHVybiBhcnJheShudWxsLCAkdXNlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdlbmVyYXRlIHRoZSBzZXNzaW9uIGlmIHRoaXMgcmVxdWVzdCBtaWdodCB0aGUgaW5pdGlhbCBsb2dpbiAoYWN0aXZlIGF1dGggdnMgcGFzc2l2ZSBhdXRoKS4KICAgICAqIEBwYXJhbSBvYmplY3QgR2FsbGVyeVVzZXIgJGF1dGhlbnRpY2F0ZWRVc2VyIHVzZXIgYXV0aGVudGljYXRlZCBmb3IgdGhpcyByZXF1ZXN0CiAgICAgKiBAcmV0dXJuIG9iamVjdCBHYWxsZXJ5U3RhdHVzIGEgc3RhdHVzIGNvZGUKICAgICAqLwogICAgZnVuY3Rpb24gcmVnZW5lcmF0ZVNlc3Npb25JZk5lY2Vzc2FyeSgkYXV0aGVudGljYXRlZFVzZXIpIHsKCWdsb2JhbCAkZ2FsbGVyeTsKCSRzZXNzaW9uID0mICRnYWxsZXJ5LT5nZXRTZXNzaW9uKCk7CgoJJG9sZFVzZXJJZCA9ICRzZXNzaW9uLT5nZXRVc2VySWQoKTsKCWlmIChpc3NldCgkYXV0aGVudGljYXRlZFVzZXIpICYmICRvbGRVc2VySWQgIT0gJGF1dGhlbnRpY2F0ZWRVc2VyLT5nZXRJZCgpKSB7CgkgICAgLyogVGhpcyAqbWF5KiBiZSBhbiBpbml0aWFsIGF1dGhlbnRpY2F0aW9uLiAgV2UgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBzZXNzaW9uLiAqLwoJICAgICRyZXQgPSAkc2Vzc2lvbi0+cmVnZW5lcmF0ZSgpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuICRyZXQ7CgkgICAgfQoJfQoKCXJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0aGUgZ2l2ZW4gcGFpciBvZiB1c2VybmFtZSAvIHBhc3N3b3JkIHRvIHRoZSBnaXZlbiBVUkwgYXMgSFRUUCBhdXRoIHVzZXI6cGFzc0Bob3N0bmFtZS4gCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwgQW4gYWJzb2x1dGUgVVJMCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkcGFzc3dvcmQKICAgICAqLwogICAgZnVuY3Rpb24gYWRkSHR0cEF1dGhUb1VybCgkdXJsLCAkdXNlcm5hbWUsICRwYXNzd29yZCkgewoJJGNvbXBvbmVudHMgPSBwYXJzZV91cmwoJHVybCk7CgkkY29tcG9uZW50c1sndXNlciddID0gJHVzZXJuYW1lOwoJJGNvbXBvbmVudHNbJ3Bhc3MnXSA9ICRwYXNzd29yZDsKCXJldHVybiBIdHRwQXV0aEhlbHBlcjo6X2J1aWxkVXJsKCRjb21wb25lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZXMgdXNlcjpwYXNzIGZyb20gdGhlIGdpdmVuIFVSTC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVybCBBbiBhYnNvbHV0ZSBVUkwKICAgICAqLwogICAgZnVuY3Rpb24gc3RyaXBIdHRwQXV0aEZyb21VcmwoJHVybCkgewoJJGNvbXBvbmVudHMgPSBwYXJzZV91cmwoJHVybCk7Cgl1bnNldCgkY29tcG9uZW50c1sndXNlciddKTsKCXVuc2V0KCRjb21wb25lbnRzWydwYXNzJ10pOwoJcmV0dXJuIEh0dHBBdXRoSGVscGVyOjpfYnVpbGRVcmwoJGNvbXBvbmVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBIdHRwQXV0aEludGVyZmFjZV8xXzA6OmdldENvbmZpZ3VyYXRpb24KICAgICAqLwogICAgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbigpIHsKCWxpc3QgKCRyZXQsICRwYXJhbXMpID0gR2FsbGVyeUNvcmVBcGk6OmZldGNoQWxsUGx1Z2luUGFyYW1ldGVycygnbW9kdWxlJywgJ2h0dHBhdXRoJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsLCBudWxsKTsKCX0KCXJldHVybiBhcnJheShudWxsLCAhZW1wdHkoJHBhcmFtc1snaHR0cEF1dGhQbHVnaW4nXSksICFlbXB0eSgkcGFyYW1zWydzZXJ2ZXJBdXRoUGx1Z2luJ10pLAoJCSAgICAgIWVtcHR5KCRwYXJhbXNbJ3VzZUdsb2JhbGx5J10pKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgSHR0cEF1dGhJbnRlcmZhY2VfMV8wOjpzZXRDb25maWd1cmF0aW9uCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNldENvbmZpZ3VyYXRpb24oJGVuYWJsZUh0dHBBdXRoLCAkZW5hYmxlU2VydmVyQXV0aD1mYWxzZSwgJHVzZUdsb2JhbGx5PWZhbHNlKSB7CglsaXN0ICgkcmV0LCAkbW9kdWxlKSA9IEdhbGxlcnlDb3JlQXBpOjpsb2FkUGx1Z2luKCdtb2R1bGUnLCAnaHR0cGF1dGgnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuICRyZXQ7Cgl9CgoJZm9yZWFjaCAoYXJyYXkoJ2h0dHBBdXRoUGx1Z2luJyA9PiAkZW5hYmxlSHR0cEF1dGgsCgkJICAgICAgICdzZXJ2ZXJBdXRoUGx1Z2luJyA9PiAkZW5hYmxlU2VydmVyQXV0aCwKCQkgICAgICAgJ3VzZUdsb2JhbGx5JyA9PiAkdXNlR2xvYmFsbHkpIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgICAgJHJldCA9ICRtb2R1bGUtPnNldFBhcmFtZXRlcigka2V5LCAkdmFsdWUpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuICRyZXQ7CgkgICAgfQoJfQoKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6dW5yZWdpc3RlckZhY3RvcnlJbXBsZW1lbnRhdGlvbnNCeU1vZHVsZUlkKCdodHRwYXV0aCcpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gJHJldDsKCX0KCSRyZXQgPSAkbW9kdWxlLT5wZXJmb3JtRmFjdG9yeVJlZ2lzdHJhdGlvbnMoKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuICRyZXQ7Cgl9CgoJcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEh0dHBBdXRoSW50ZXJmYWNlXzFfMDo6cmVxdWVzdEF1dGhlbnRpY2F0aW9uCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJlcXVlc3RBdXRoZW50aWNhdGlvbigkaWdub3JlVXNlR2xvYmFsbHlGbGFnPXRydWUpIHsKCWxpc3QgKCRyZXQsICRwYXJhbXMpID0gR2FsbGVyeUNvcmVBcGk6OmZldGNoQWxsUGx1Z2luUGFyYW1ldGVycygnbW9kdWxlJywgJ2h0dHBhdXRoJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCWlmIChlbXB0eSgkcGFyYW1zWydodHRwQXV0aFBsdWdpbiddKSkgewoJICAgIHJldHVybiBudWxsOwoJfQoKCWlmICghJGlnbm9yZVVzZUdsb2JhbGx5RmxhZyAmJiBlbXB0eSgkcGFyYW1zWyd1c2VHbG9iYWxseSddKSkgewoJICAgIHJldHVybiBudWxsOwoJfQoKCUdhbGxlcnlVdGlsaXRpZXM6OnNldFJlc3BvbnNlSGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJywgZmFsc2UpOwoJR2FsbGVyeVV0aWxpdGllczo6c2V0UmVzcG9uc2VIZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSckcGFyYW1zW2F1dGhOYW1lXSciLAoJCQkJCSAgICBmYWxzZSk7CgoJcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBhIFVSTCBmcm9tIGl0cyBjb21wb25lbnRzLgogICAgICogQHBhcmFtIGFycmF5ICRjb21wb25lbnRzIFVSTCBjb21wb25lbnRzIGluIHRoZSBmb3JtYXQgb2YgcGFyc2VfdXJsCiAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gX2J1aWxkVXJsKCRjb21wb25lbnRzKSB7CgkkdXJsID0gJyc7CglpZiAoIWVtcHR5KCRjb21wb25lbnRzWydzY2hlbWUnXSkgJiYgIWVtcHR5KCRjb21wb25lbnRzWydob3N0J10pKSB7CgkgICAgJGF1dGggPSAnJzsKCSAgICBpZiAoIWVtcHR5KCRjb21wb25lbnRzWyd1c2VyJ10pKSB7CgkJJGF1dGggPSAkY29tcG9uZW50c1sndXNlciddOwoJCWlmICghZW1wdHkoJGNvbXBvbmVudHNbJ3Bhc3MnXSkpIHsKCQkgICAgJGF1dGggLj0gJzonIC4gJGNvbXBvbmVudHNbJ3Bhc3MnXTsKCQl9CgkJJGF1dGggLj0gJ0AnOwoJICAgIH0KCgkgICAgJHVybCA9IHNwcmludGYoJyVzOi8vJXMlcycsICRjb21wb25lbnRzWydzY2hlbWUnXSwgJGF1dGgsICRjb21wb25lbnRzWydob3N0J10pOwoJfQoKCWlmICghZW1wdHkoJGNvbXBvbmVudHNbJ3BhdGgnXSkpIHsKCSAgICAkdXJsIC49ICRjb21wb25lbnRzWydwYXRoJ107Cgl9CglpZiAoIWVtcHR5KCRjb21wb25lbnRzWydxdWVyeSddKSkgewoJICAgICAkdXJsIC49ICc/JyAuICRjb21wb25lbnRzWydxdWVyeSddOwoJfQoJaWYgKCFlbXB0eSgkY29tcG9uZW50c1snZnJhZ21lbnQnXSkpIHsKCSAgICAgJHVybCAuPSAnIycgLiAkY29tcG9uZW50c1snZnJhZ21lbnQnXTsKCX0KCglyZXR1cm4gJHVybDsKICAgIH0KfQo/Pgo=');
expand_cd276b3281($outputDir, 'classes/HttpAuthInterface_1_0.class', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogVGhpcyBpcyBhbiBpbnRlcmZhY2UgZm9yIHRoZSBodHRwYXV0aCBtb2R1bGUuICBNb2R1bGVzIHRoYXQgd2lzaCB0byBvcHQtaW4gZm9yIEhUVFBhdXRoIGNhbgogKiB1dGlsaXplIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLgogKgogKiBAc2VlIEh0dHBBdXRoUGx1Z2luCiAqIEBzZWUgU2VydmVyQXV0aFBsdWdpbgogKiBAcGFja2FnZSBIdHRwQXV0aAogKiBAc3VicGFja2FnZSBDbGFzc2VzCiAqIEBhdXRob3IgQW5keSBTdGF1ZGFjaGVyIDxhc3RAZ214LmNoPgogKiBAdmVyc2lvbiAkUmV2aXNpb246IDE1NzIyICQKICogQGFic3RyYWN0CiAqLwpjbGFzcyBIdHRwQXV0aEludGVyZmFjZV8xXzAgewoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIEhUVFAgYXV0aGVudGljYXRpb24gaXMgZW5hYmxlZC4KICAgICAqIEByZXR1cm4gYXJyYXkgb2JqZWN0IEdhbGxlcnlTdGF0dXMgYSBzdGF0dXMgY29kZSwKICAgICAqICAgICAgICAgICAgICAgYm9vbCB0cnVlIGlmIEhUVFBBdXRoIGlzIGVuYWJsZWQsCiAgICAgKiAgICAgICAgICAgICAgIGJvb2wgdHJ1ZSBpZiBTZXJ2ZXJBdXRoIGlzIGVuYWJsZWQKICAgICAqICAgICAgICAgICAgICAgYm9vbCB0cnVlIGlmIGl0IGlzIGVuYWJsZWQgZ2xvYmFsbHkgb3IKICAgICAqICAgICAgICAgICAgICAgICAgICBmYWxzZSBpZiBpdCBpcyBvbmx5IGVuYWJsZWQgZm9yIHNwZWNpZmljIG1vZHVsZXMKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbigpIHsKCXJldHVybiBhcnJheShHYWxsZXJ5Q29yZUFwaTo6ZXJyb3IoRVJST1JfVU5JTVBMRU1FTlRFRCksIG51bGwsIG51bGwsIG51bGwpOwogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIHRoZSBIVFRQIGF1dGhlbnRpY2F0aW9uIEdhbGxlcnkgYXV0aGVudGljYXRpb24gcGx1Z2luLgogICAgICogQHBhcmFtIGJvb2wgJGVuYWJsZUh0dHBBdXRoIFNldCB0byB0cnVlIHRvIGFjdGl2YXRlIEhUVFAgYXV0aCwgZmFsc2UgdG8gZGVhY3RpdmF0ZS4KICAgICAqIEBwYXJhbSBib29sICRlbmFibGVTZXJ2ZXJBdXRoIChvcHRpb25hbCkgU2V0IHRvIHRydWUgdG8gYWN0aXZhdGUgU2VydmVyIGF1dGgsIGZhbHNlIHRvCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGUgKGRlZmF1bHRzIHRvIGZhbHNlKS4KICAgICAqIEBwYXJhbSBib29sICR1c2VHbG9iYWxseSAob3B0aW9uYWwpIFNldCB0byB0cnVlIHRvIGFjdGl2YXRlIGF1dGggZm9yIGFsbCBtb2R1bGVzLCBmYWxzZSB0bwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSBtb2R1bGVzIHRvIG9wdC1pbiBmb3IgSFRUUCBhdXRoIChkZWZhdWx0KSwKICAgICAqIEByZXR1cm4gb2JqZWN0IEdhbGxlcnlTdGF0dXMgYSBzdGF0dXMgY29kZQogICAgICovCiAgICBmdW5jdGlvbiBzZXRDb25maWd1cmF0aW9uKCRlbmFibGVIdHRwQXV0aCwgJGVuYWJsZVNlcnZlckF1dGg9ZmFsc2UsICR1c2VHbG9iYWxseT1mYWxzZSkgewoJcmV0dXJuIEdhbGxlcnlDb3JlQXBpOjplcnJvcihFUlJPUl9VTklNUExFTUVOVEVEKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb21wdCB0aGUgdXNlciB2aWEgSFRUUCBhdXRoZW50aWNhdGlvbiBmb3IgdXNlcm5hbWUgLyBwYXNzd29yZC4KICAgICAqIEByZXR1cm4gb2JqZWN0IEdhbGxlcnlTdGF0dXMgYSBzdGF0dXMgY29kZQogICAgICovCiAgICBmdW5jdGlvbiByZXF1ZXN0QXV0aGVudGljYXRpb24oKSB7CglyZXR1cm4gR2FsbGVyeUNvcmVBcGk6OmVycm9yKEVSUk9SX1VOSU1QTEVNRU5URUQpOwogICAgfQp9Cj8+Cg==');
expand_cd276b3281($outputDir, 'classes/HttpAuthPlugin.class', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIEdldCBhY3RpdmUgdXNlciBmcm9tIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBpbiBIVFRQIGhlYWRlcnMuCiAqCiAqIEhUVFAgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBiZXR3ZWVuIHRoZSB1c2VyLWFnZW50IGFuZCBHYWxsZXJ5LiAgR2FsbGVyeSBpcyByZXNwb25zaWJsZSB0bwogKiBhdXRoZW50aWNhdGUgYSB1c2VyLXN1cHBsaWVkIHVzZXJuYW1lIC8gcGFzc3dvcmQgcGFpci4KICoKICogQHBhY2thZ2UgSHR0cEF1dGgKICogQHN1YnBhY2thZ2UgQ2xhc3NlcwogKiBAYXV0aG9yIEphY2sgQmF0ZXMgPG1zNDE5QGZyZWV6b25lLmNvLnVrPgogKiBAdmVyc2lvbiAkUmV2aXNpb246IDE1NzU5ICQKICovCmNsYXNzIEh0dHBBdXRoUGx1Z2luIC8qIGV4dGVuZHMgR2FsbGVyeUF1dGhQbHVnaW4gKi8gewoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5QXV0aFBsdWdpbjo6Z2V0VXNlcgogICAgICovCiAgICBmdW5jdGlvbiBnZXRVc2VyKCkgewoJbGlzdCAoJGF1dGh0eXBlLCAkdXNlcm5hbWUsICRwYXNzd29yZCkgPSBIdHRwQXV0aEhlbHBlcjo6Z2V0SHR0cEF1dGgoKTsKCglsaXN0ICgkcmV0LCAkdXNlcikgPSBIdHRwQXV0aEhlbHBlcjo6Z2V0VXNlcigkYXV0aHR5cGUsICR1c2VybmFtZSk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCgkvKgoJICogV2UgYXJlIGVmZmVjdGl2ZWx5IGxvZ2dpbmcgaW4gb24gZXZlcnkgcmVxdWVzdCB3aGVuIHdlIHVzZSB0aGlzIHBsdWdpbi4gIFdlIGNhbid0CgkgKiBwb3N0IGEgbG9naW4gZXZlbnQgZWFjaCB0aW1lIHdlIGRvIHRoaXMsIGJ1dCB3ZSBuZWVkIHRvIHBvc3QgRmFpbGVkTG9naW4gZXZlbnRzLgoJICovCglpZiAoaXNzZXQoJHVzZXIpICYmICR1c2VyLT5pc0NvcnJlY3RQYXNzd29yZCgkcGFzc3dvcmQpKSB7CgkgICAgJHJldCA9IEh0dHBBdXRoSGVscGVyOjpyZWdlbmVyYXRlU2Vzc2lvbklmTmVjZXNzYXJ5KCR1c2VyKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9CgoJICAgIHJldHVybiBhcnJheShudWxsLCAkdXNlcik7Cgl9IGVsc2UgaWYgKCFlbXB0eSgkdXNlcm5hbWUpICYmIHN0cnBvcygkdXNlcm5hbWUsICdfX0xPR09VVF9fJykgIT09IDApIHsKCSAgICAvKgoJICAgICAqIERvbid0IHBvc3QgYW4gZXZlbnQgaWYgdGhlIHVzZXJuYW1lIHN0YXJ0cyB3aXRoIF9fbG9nb3V0X18gc2luY2UgdGhhdCBpcyB1c2VkIHdoZW4gd2UKCSAgICAgKiB0cnkgdG8gZm9yY2UgdGhlIHVzZXItYWdlbnQgdG8gY2xlYXIgaXRzIGF1dGggY2FjaGUuCgkgICAgICovCgkgICAgJGV2ZW50ID0gR2FsbGVyeUNvcmVBcGk6Om5ld0V2ZW50KCdHYWxsZXJ5OjpGYWlsZWRMb2dpbicpOwoJICAgICRldmVudC0+c2V0RGF0YShhcnJheSgndXNlck5hbWUnID0+ICR1c2VybmFtZSkpOwoJICAgIGxpc3QgKCRyZXQsICRpZ25vcmVkKSA9IEdhbGxlcnlDb3JlQXBpOjpwb3N0RXZlbnQoJGV2ZW50KTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9Cgl9CgoJcmV0dXJuIGFycmF5KG51bGwsIG51bGwpOwogICAgfQp9Cj8+Cg==');
expand_cd276b3281($outputDir, 'classes/ServerAuthPlugin.class', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgpHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoKLyoqCiAqIEdldCBhY3RpdmUgdXNlciBmcm9tIHVzZXJuYW1lIGF1dGhlbnRpY2F0ZWQgYnkgd2ViIHNlcnZlci4KICoKICogV2l0aCBzZXJ2ZXIgYXV0aGVudGljYXRpb24gR2FsbGVyeSBkZWxlZ2F0ZXMgYXV0aGVudGljYXRpb24gdG8gdGhlIHdlYiBzZXJ2ZXIgYW5kIEdhbGxlcnkgdHJ1c3RzCiAqIHRoZSBnaXZlbiB1c2VybmFtZSBmcm9tIHRoZSAnUkVNT1RFX1VTRVInIHZhcmlhYmxlIHdpdGhvdXQgZG9pbmcgYW55IGF1dGhlbnRpY2F0aW9uIG9uIGl0cyBvd24KICogKHNhbWUgYXMgaW4gR2FsbGVyeUVtYmVkKS4gIEl0J3MgdGhlIHdlYiBzZXJ2ZXIncyByZXNwb25zaWJpbGl0eSB0byBkbyB0aGUgYXV0aGVudGljYXRpb24gaW4gc29tZQogKiB3YXkuCiAqCiAqIEBwYWNrYWdlIEh0dHBBdXRoCiAqIEBzdWJwYWNrYWdlIENsYXNzZXMKICogQGF1dGhvciBKYWNrIEJhdGVzIDxtczQxOUBmcmVlem9uZS5jby51az4KICogQHZlcnNpb24gJFJldmlzaW9uOiAxNTc1OSAkCiAqLwpjbGFzcyBTZXJ2ZXJBdXRoUGx1Z2luIC8qIGV4dGVuZHMgR2FsbGVyeUF1dGhQbHVnaW4gKi8gewoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5QXV0aFBsdWdpbjo6Z2V0VXNlcgogICAgICovCiAgICBmdW5jdGlvbiBnZXRVc2VyKCkgewoJJGF1dGh0eXBlID0gR2FsbGVyeVV0aWxpdGllczo6Z2V0U2VydmVyVmFyKCdBVVRIX1RZUEUnKTsKCSR1c2VybmFtZSA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldFNlcnZlclZhcignUkVNT1RFX1VTRVInKTsKCgkvKiBUT0RPOiBodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTM4MzI1ICovCglpZiAoZW1wdHkoJHVzZXJuYW1lKSkgewoJICAgICRhdXRodHlwZSA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldFNlcnZlclZhcignUkVESVJFQ1RfQVVUSF9UWVBFJyk7CgkgICAgJHVzZXJuYW1lID0gR2FsbGVyeVV0aWxpdGllczo6Z2V0U2VydmVyVmFyKCdSRURJUkVDVF9SRU1PVEVfVVNFUicpOwoJfQoKCWxpc3QgKCRyZXQsICR1c2VyKSA9IEh0dHBBdXRoSGVscGVyOjpnZXRVc2VyKCRhdXRodHlwZSwgJHVzZXJuYW1lKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCWlmICghZW1wdHkoJHVzZXIpKSB7CgkgICAgJHJldCA9IEh0dHBBdXRoSGVscGVyOjpyZWdlbmVyYXRlU2Vzc2lvbklmTmVjZXNzYXJ5KCR1c2VyKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9Cgl9CgoJcmV0dXJuIGFycmF5KG51bGwsICR1c2VyKTsKICAgIH0KfQo/Pgo=');
expand_cd276b3281($outputDir, 'module.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogSFRUUCBBdXRoIE1vZHVsZS4gIExvZ2luIHVzaW5nIEhUVFAgYXV0aGVudGljYXRpb24uCiAqIEBwYWNrYWdlIEh0dHBBdXRoCiAqIEBhdXRob3IgSmFjayBCYXRlcyA8bXM0MTlAZnJlZXpvbmUuY28udWs+CiAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMTYwMjkgJAogKi8KY2xhc3MgSHR0cEF1dGhNb2R1bGUgZXh0ZW5kcyBHYWxsZXJ5TW9kdWxlIC8qIGFuZCBHYWxsZXJ5RXZlbnRMaXN0ZW5lciAqLyB7CgogICAgZnVuY3Rpb24gSHR0cEF1dGhNb2R1bGUoKSB7CglnbG9iYWwgJGdhbGxlcnk7CgoJJHRoaXMtPnNldElkKCdodHRwYXV0aCcpOwoJJHRoaXMtPnNldE5hbWUoJGdhbGxlcnktPmkxOG4oJ0hUVFAgQXV0aCcpKTsKCSR0aGlzLT5zZXRWZXJzaW9uKCcxLjAuMCcpOyAvKiBVcGRhdGUgdXBncmFkZSgpIHRvbyEgKi8KCSR0aGlzLT5zZXREZXNjcmlwdGlvbigkZ2FsbGVyeS0+aTE4bignTG9naW4gdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4nKSk7CgkkdGhpcy0+c2V0R3JvdXAoJ2F1dGhlbnRpY2F0aW9uJywgJGdhbGxlcnktPmkxOG4oJ0F1dGhlbnRpY2F0aW9uJykpOwoJJHRoaXMtPnNldENhbGxiYWNrcygnZ2V0U2l0ZUFkbWluVmlld3N8cmVnaXN0ZXJFdmVudExpc3RlbmVycycpOwoJJHRoaXMtPnNldFJlcXVpcmVkQ29yZUFwaShhcnJheSg3LCAxNSkpOwoJJHRoaXMtPnNldFJlcXVpcmVkTW9kdWxlQXBpKGFycmF5KDMsIDUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgR2FsbGVyeU1vZHVsZTo6YWN0aXZhdGUKICAgICAqIEB0b2RvIEV4cGxpY2l0IHJld3JpdGUgbW9kdWxlIHZlcnNpb24gY2hlY2sgY2FuIGJlIHJlbW92ZWQgb24gbmV4dCBtYWpvciBtb2R1bGUgQVBJIHZlcnNpb24uCiAgICAgKi8KICAgIGZ1bmN0aW9uIGFjdGl2YXRlKCRwb3N0QWN0aXZhdGlvbkV2ZW50PXRydWUpIHsKCS8qIEVuc3VyZSB0aGUgcmV3cml0ZSBtb2R1bGUgaXMgY29tcGF0aWJsZSwgJ3BhdHRlcm4nIGlzIG9wdGlvbmFsIHNpbmNlIHYxLjEuOCBvZiByZXdyaXRlICovCglsaXN0ICgkcmV0LCAkbW9kdWxlcykgPSBHYWxsZXJ5Q29yZUFwaTo6ZmV0Y2hQbHVnaW5MaXN0KCdtb2R1bGUnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCWlmIChpc3NldCgkbW9kdWxlc1sncmV3cml0ZSddKSkgewoJICAgIGxpc3QgKCRyZXQsICRyZXdyaXRlKSA9IEdhbGxlcnlDb3JlQXBpOjpsb2FkUGx1Z2luKCdtb2R1bGUnLCAncmV3cml0ZScsIHRydWUpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgaWYgKHZlcnNpb25fY29tcGFyZSgkcmV3cml0ZS0+Z2V0VmVyc2lvbigpLCAnMS4xLjgnLCAnPCcpKSB7CgkJcmV0dXJuIGFycmF5KEdhbGxlcnlDb3JlQXBpOjplcnJvcihFUlJPUl9DT05GSUdVUkFUSU9OX1JFUVVJUkVEKSwgbnVsbCk7CgkgICAgfQoJfQoKCWxpc3QgKCRyZXQsICRyZWRpcmVjdCkgPSBwYXJlbnQ6OmFjdGl2YXRlKCRwb3N0QWN0aXZhdGlvbkV2ZW50KTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCXJldHVybiBhcnJheShudWxsLCAkcmVkaXJlY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5TW9kdWxlOjpwZXJmb3JtRmFjdG9yeVJlZ2lzdHJhdGlvbnMKICAgICAqLwogICAgZnVuY3Rpb24gcGVyZm9ybUZhY3RvcnlSZWdpc3RyYXRpb25zKCkgewoJbGlzdCAoJHJldCwgJHBhcmFtcykgPSAkdGhpcy0+ZmV0Y2hQYXJhbWV0ZXJzKCk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCWlmICghZW1wdHkoJHBhcmFtc1snaHR0cEF1dGhQbHVnaW4nXSkpIHsKCSAgICAkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnJlZ2lzdGVyRmFjdG9yeUltcGxlbWVudGF0aW9uKAoJCSdHYWxsZXJ5QXV0aFBsdWdpbicsICdIdHRwQXV0aFBsdWdpbicsICdIdHRwQXV0aFBsdWdpbicsCgkJJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aFBsdWdpbi5jbGFzcycsICR0aGlzLT5nZXRJZCgpLCBudWxsKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiAkcmV0OwoJICAgIH0KCX0KCglpZiAoIWVtcHR5KCRwYXJhbXNbJ3NlcnZlckF1dGhQbHVnaW4nXSkpIHsKCSAgICAkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnJlZ2lzdGVyRmFjdG9yeUltcGxlbWVudGF0aW9uKAoJCSdHYWxsZXJ5QXV0aFBsdWdpbicsICdTZXJ2ZXJBdXRoUGx1Z2luJywgJ1NlcnZlckF1dGhQbHVnaW4nLAoJCSdtb2R1bGVzL2h0dHBhdXRoL2NsYXNzZXMvU2VydmVyQXV0aFBsdWdpbi5jbGFzcycsICR0aGlzLT5nZXRJZCgpLCBudWxsKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiAkcmV0OwoJICAgIH0KCX0KCgkkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnJlZ2lzdGVyRmFjdG9yeUltcGxlbWVudGF0aW9uKAoJCSdIdHRwQXV0aEludGVyZmFjZV8xXzAnLCAnSHR0cEF1dGhIZWxwZXInLCAnSHR0cEF1dGhJbnRlcmZhY2UnLAoJCSdtb2R1bGVzL2h0dHBhdXRoL2NsYXNzZXMvSHR0cEF1dGhIZWxwZXIuY2xhc3MnLCAkdGhpcy0+Z2V0SWQoKSwgbnVsbCk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5TW9kdWxlOjpyZWdpc3RlckV2ZW50TGlzdGVuZXJzCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKSB7CgkkbGlzdGVuZXIgPSBuZXcgSHR0cEF1dGhNb2R1bGUoKTsKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVnaXN0ZXJFdmVudExpc3RlbmVyKCdHYWxsZXJ5OjpBY3RpdmF0ZVBsdWdpbicsICRsaXN0ZW5lciwgdHJ1ZSk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVnaXN0ZXJFdmVudExpc3RlbmVyKCdHYWxsZXJ5OjpFcnJvcicsICRsaXN0ZW5lciwgdHJ1ZSk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVnaXN0ZXJFdmVudExpc3RlbmVyKCdHYWxsZXJ5OjpMb2dvdXQnLCAkbGlzdGVuZXIsIHRydWUpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gJHJldDsKCX0KCglyZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgR2FsbGVyeU1vZHVsZTo6dXBncmFkZQogICAgICovCiAgICBmdW5jdGlvbiB1cGdyYWRlKCRjdXJyZW50VmVyc2lvbikgewoJc3dpdGNoICgkY3VycmVudFZlcnNpb24pIHsKCWNhc2UgbnVsbDoKCSAgICAvKiBJbml0aWFsIGluc3RhbGwgKi8KCSAgICBmb3JlYWNoIChhcnJheSgnaHR0cEF1dGhQbHVnaW4nID0+IHRydWUsCgkJICAgICdhdXRoTmFtZScgPT4gJ0dhbGxlcnknLAoJCSAgICAnYXV0aHR5cGVQYXR0ZXJuJyA9PiAnLy8nLAoJCSAgICAndXNlcm5hbWVQYXR0ZXJuJyA9PiAnL14oLitcXFxcKT8oW15cXFxcQF0rKShALispPyQvJywKCQkgICAgJ3VzZXJuYW1lUmVwbGFjZScgPT4gJyQyJywKCQkgICAgJ3VzZUdsb2JhbGx5JyA9PiBmYWxzZSkgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkkcmV0ID0gJHRoaXMtPnNldFBhcmFtZXRlcigka2V5LCAkdmFsdWUpOwoJCWlmICgkcmV0KSB7CgkJICAgIHJldHVybiAkcmV0OwoJCX0KCSAgICB9CgoJY2FzZSAnMC4wLjEnOgoJICAgIC8qIEFkZCBBdXRoRmlsdGVyUGx1Z2luIGFuZCBSZWdleEF1dGhGaWx0ZXJQbHVnaW4gKi8KCgljYXNlICcwLjEuMCc6CgkgICAgLyogVXBkYXRlIHRvIGxpZ2h0ZXIgZXZlbnQgc3Vic3lzdGVtICovCgoJY2FzZSAnMC4xLjEnOgoJICAgIC8qIEludHJvZHVjZSBhdXRoIHBsdWdpbnMgKi8KCgkgICAgbGlzdCAoJHJldCwgJHBhcmFtcykgPSAkdGhpcy0+ZmV0Y2hQYXJhbWV0ZXJzKCk7CgkgICAgaWYgKCRyZXQpIHsKCQlyZXR1cm4gJHJldDsKCSAgICB9CgoJICAgIGlmIChpc3NldCgkcGFyYW1zWydzZXJ2ZXJBdXRoJ10pKSB7CgkJJHJldCA9ICR0aGlzLT5zZXRQYXJhbWV0ZXIoJ3NlcnZlckF1dGhQbHVnaW4nLCAkcGFyYW1zWydzZXJ2ZXJBdXRoJ10pOwoJCWlmICgkcmV0KSB7CgkJICAgIHJldHVybiAkcmV0OwoJCX0KCgkJJHJldCA9ICR0aGlzLT5yZW1vdmVQYXJhbWV0ZXIoJ3NlcnZlckF1dGgnKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gJHJldDsKCQl9CgkgICAgfQoKCSAgICBpZiAoaXNzZXQoJHBhcmFtc1sncmVnZXhGaWx0ZXInXSkpIHsKCQkkcmV0ID0gJHRoaXMtPnNldFBhcmFtZXRlcigncmVnZXhBdXRoUGx1Z2luJywgJHBhcmFtc1sncmVnZXhGaWx0ZXInXSk7CgkJaWYgKCRyZXQpIHsKCQkgICAgcmV0dXJuICRyZXQ7CgkJfQoKCQkkcmV0ID0gJHRoaXMtPnJlbW92ZVBhcmFtZXRlcigncmVnZXhGaWx0ZXInKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gJHJldDsKCQl9CgkgICAgfQoKCSAgICBpZiAoaXNzZXQoJHBhcmFtc1sndXNlcm5hbWVSZXBsYWNlbWVudCddKSkgewoJCSRyZXQgPSAkdGhpcy0+c2V0UGFyYW1ldGVyKCd1c2VybmFtZVJlcGxhY2UnLCAkcGFyYW1zWyd1c2VybmFtZVJlcGxhY2VtZW50J10pOwoJCWlmICgkcmV0KSB7CgkJICAgIHJldHVybiAkcmV0OwoJCX0KCgkJJHJldCA9ICR0aGlzLT5yZW1vdmVQYXJhbWV0ZXIoJ3VzZXJuYW1lUmVwbGFjZW1lbnQnKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gJHJldDsKCQl9CgkgICAgfQoKCWNhc2UgJzAuMi4wJzoKCSAgICAvKiBTb21lIDIuMiBBUEkgY2hhbmdlcyAqLwoKCWNhc2UgJzAuMi4xJzoKCSAgICAvKiBTaW1wbGlmeSBhdXRoIHBsdWdpbiBzeXN0ZW0gKi8KCgljYXNlICcwLjMuMCc6CgkgICAgLyogQWRkIHN1cHBvcnQgZm9yIHRoZSBwaHAtY2dpIHNlcnZlciBBUEkgKi8KCSAgICAkcmV0ID0gJHRoaXMtPl9hY3RpdmF0ZVJld3JpdGVSdWxlcygpOwoJICAgIGlmICgkcmV0ICYmICEoJHJldC0+Z2V0RXJyb3JDb2RlKCkgJiBFUlJPUl9DT05GSUdVUkFUSU9OX1JFUVVJUkVEKSkgewoJCXJldHVybiAkcmV0OwoJICAgIH0KCgljYXNlICcwLjQuMCc6CgkgICAgLyogQWRkIGxvZ291dCB2aWV3IHRvIGNsZWFyIGJyb3dzZXJzJyBhdXRoZW50aWNhdGlvbiBjYWNoZSAqLwoKCWNhc2UgJzAuNS4wJzoKCSAgICAvKiBBZGRpbmcgSHR0cEF1dGhJbnRlcmZhY2UgYW5kIG5ldyBzaXRlIGFkbWluIG9wdGlvbiAqLwoJICAgICRyZXQgPSAkdGhpcy0+c2V0UGFyYW1ldGVyKCd1c2VHbG9iYWxseScsIGZhbHNlKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiAkcmV0OwoJICAgIH0KCgljYXNlICcwLjUuMSc6CgkgICAgLyogVmVyc2lvbiAxLjAuMCBmb3IgR2FsbGVyeSAyLjIgcmVsZWFzZSAqLwoKCWNhc2UgJ2VuZCBvZiB1cGdyYWRlIHBhdGgnOgoJICAgIGJyZWFrOwoKCWRlZmF1bHQ6CgkgICAgcmV0dXJuIEdhbGxlcnlTdGF0dXM6OmVycm9yKEVSUk9SX0JBRF9QTFVHSU4sIF9fRklMRV9fLCBfX0xJTkVfXywKCQlzcHJpbnRmKCdVbmtub3duIG1vZHVsZSB2ZXJzaW9uICVzJywgJGN1cnJlbnRWZXJzaW9uKSk7Cgl9CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlNb2R1bGU6OmdldFNpdGVBZG1pblZpZXdzCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldFNpdGVBZG1pblZpZXdzKCkgewoJcmV0dXJuIGFycmF5KG51bGwsIGFycmF5KGFycmF5KCduYW1lJyA9PiAkdGhpcy0+dHJhbnNsYXRlKCR0aGlzLT5nZXROYW1lKCkpLAoJCQkJICAgICAgICd2aWV3JyA9PiAnaHR0cGF1dGguSHR0cEF1dGhTaXRlQWRtaW4nKSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5TW9kdWxlOjpnZXRSZXdyaXRlUnVsZXMKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0UmV3cml0ZVJ1bGVzKCkgewoJJHJ1bGVzID0gYXJyYXkoKTsKCgkvKgoJICogT25seSBkZWZpbmUgdGhlIHJ1bGUgdG8gcGFzcyB0aGUgQXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gR2FsbGVyeSBpbiBhIHJlcXVlc3QgdmFyaWFibGUgaWYKCSAqIGl0IGlzIGFscmVhZHkgYWN0aXZlLCBvciBpZiBHYWxsZXJ5IGNhbid0IGFjY2VzcyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzCgkgKi8KCWxpc3QgKCRyZXQsICRyZXdyaXRlQXBpKSA9IEdhbGxlcnlDb3JlQXBpOjpuZXdGYWN0b3J5SW5zdGFuY2UoJ1Jld3JpdGVBcGknKTsKCWlmICgkcmV0KSB7CgkgICAgaWYgKCRnYWxsZXJ5LT5nZXREZWJ1ZygpKSB7CgkJJGdhbGxlcnktPmRlYnVnKCdFcnJvciBpbiBIdHRwQXV0aE1vZHVsZTo6Z2V0UmV3cml0ZVJ1bGVzOiAnIC4gJHJldC0+Z2V0QXNUZXh0KCkpOwoJICAgIH0KCSAgICByZXR1cm4gJHJ1bGVzOwoJfQoJaWYgKCFpc3NldCgkcmV3cml0ZUFwaSkpIHsKCSAgICByZXR1cm4gJHJ1bGVzOwoJfQoKCWxpc3QgKCRyZXQsICRpc0NvbXBhdGlibGUpID0gJHJld3JpdGVBcGktPmlzQ29tcGF0aWJsZVdpdGhBcGkoYXJyYXkoMSwgMSkpOwoJaWYgKCRyZXQpIHsKCSAgICBpZiAoJGdhbGxlcnktPmdldERlYnVnKCkpIHsKCQkkZ2FsbGVyeS0+ZGVidWcoJ0Vycm9yIGluIEh0dHBBdXRoTW9kdWxlOjpnZXRSZXdyaXRlUnVsZXM6ICcgLiAkcmV0LT5nZXRBc1RleHQoKSk7CgkgICAgfQoJICAgIHJldHVybiAkcnVsZXM7Cgl9CglpZiAoISRpc0NvbXBhdGlibGUpIHsKCSAgICByZXR1cm4gJHJ1bGVzOwoJfQoKCWxpc3QgKCRyZXQsICRhY3RpdmVSdWxlcykgPSAkcmV3cml0ZUFwaS0+ZmV0Y2hBY3RpdmVSdWxlc0Zvck1vZHVsZSgkdGhpcy0+Z2V0SWQoKSk7CglpZiAoJHJldCkgewoJICAgIGlmICgkZ2FsbGVyeS0+Z2V0RGVidWcoKSkgewoJCSRnYWxsZXJ5LT5kZWJ1ZygnRXJyb3IgaW4gSHR0cEF1dGhNb2R1bGU6OmdldFJld3JpdGVSdWxlczogJyAuICRyZXQtPmdldEFzVGV4dCgpKTsKCSAgICB9CgkgICAgcmV0dXJuICRydWxlczsKCX0KCWlmICghaW5fYXJyYXkoJ2F1dGhvcml6YXRpb24nLCAkYWN0aXZlUnVsZXMpKSB7CgkgICAgLyogQ2hlY2sgdGhhdCBHYWxsZXJ5IGNhbiBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyAqLwoJICAgIEdhbGxlcnlDb3JlQXBpOjpyZXF1aXJlT25jZSgnbW9kdWxlcy9odHRwYXV0aC9jbGFzc2VzL0h0dHBBdXRoSGVscGVyLmNsYXNzJyk7CgkgICAgbGlzdCAoJHJldCwgJHN1Y2Nlc3MpID0gSHR0cEF1dGhIZWxwZXI6OmNoZWNrSHR0cEF1dGgoKTsKCSAgICBpZiAoJHJldCkgewoJCWlmICgkZ2FsbGVyeS0+Z2V0RGVidWcoKSkgewoJCSAgICAkZ2FsbGVyeS0+ZGVidWcoCgkJCSdFcnJvciBpbiBIdHRwQXV0aE1vZHVsZTo6Z2V0UmV3cml0ZVJ1bGVzOiAnIC4gJHJldC0+Z2V0QXNUZXh0KCkpOwoJCX0KCQlyZXR1cm4gJHJ1bGVzOwoJICAgIH0KCSAgICBpZiAoJHN1Y2Nlc3MpIHsKCQlyZXR1cm4gJHJ1bGVzOwoJICAgIH0KCX0KCgkvKiBQYXNzIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlciB0byBHYWxsZXJ5IGluIGEgcmVxdWVzdCB2YXJpYWJsZSAqLwoJJHJ1bGVzWydhdXRob3JpemF0aW9uJ10gPSBhcnJheSgKCSAgICAnY29tbWVudCcgPT4gJHRoaXMtPnRyYW5zbGF0ZSgnQXV0aG9yaXphdGlvbiBIZWFkZXInKSwKCSAgICAnaGVscCcgPT4gJHRoaXMtPnRyYW5zbGF0ZSgKCQknUGFzcyB0aGUgQXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gR2FsbGVyeSBpbiBhIHJlcXVlc3QgdmFyaWFibGUuJyksCgkgICAgJ2NvbmRpdGlvbnMnID0+IGFycmF5KGFycmF5KCd0ZXN0JyA9PiAnSFRUUDpBdXRob3JpemF0aW9uJywKCQkJCQkncGF0dGVybicgPT4gJyVhdXRob3JpemF0aW9uJScpLAoJCQkJICBhcnJheSgndGVzdCcgPT4gJ1FVRVJZX1NUUklORycsCgkJCQkJJ3BhdHRlcm4nID0+ICchJyAuIEdhbGxlcnlVdGlsaXRpZXM6OnByZWZpeEZvcm1WYXJpYWJsZSgKCQkJCQkgICAgJ2F1dGhvcml6YXRpb24nKSAuICc9JykpLAoJICAgICdvcHRpb25zJyA9PiBhcnJheSgnYmFzZVVybCcgPT4gJyV7UkVRVUVTVF9VUkl9JyksCgkgICAgJ2ZsYWdzJyA9PiBhcnJheSgnUVNBJyksCgkgICAgJ2tleXdvcmRzJyA9PiBhcnJheSgKCQknYXV0aG9yaXphdGlvbicgPT4gYXJyYXkoCgkJICAgICdwYXR0ZXJuJyA9PiAnKC4rKScsCgkJICAgICdoZWxwJyA9PiAkdGhpcy0+dHJhbnNsYXRlKCdBdXRob3JpemF0aW9uIGhlYWRlci4nKSkpKTsKCglyZXR1cm4gJHJ1bGVzOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQKICAgICAqLwogICAgZnVuY3Rpb24gaGFuZGxlRXZlbnQoJGV2ZW50KSB7Cglzd2l0Y2ggKCRldmVudC0+Z2V0RXZlbnROYW1lKCkpIHsKCWNhc2UgJ0dhbGxlcnk6OkFjdGl2YXRlUGx1Z2luJzoKCSAgICAkZGF0YSA9ICRldmVudC0+Z2V0RGF0YSgpOwoJICAgIGlmICgkZGF0YVsncGx1Z2luVHlwZSddICE9ICdtb2R1bGUnIHx8ICRkYXRhWydwbHVnaW5JZCddICE9ICdyZXdyaXRlJykgewoJCXJldHVybiBhcnJheShudWxsLCBudWxsKTsKCSAgICB9CgoJICAgICRyZXQgPSAkdGhpcy0+X2FjdGl2YXRlUmV3cml0ZVJ1bGVzKCk7CgkgICAgaWYgKCRyZXQgJiYgISgkcmV0LT5nZXRFcnJvckNvZGUoKSAmIEVSUk9SX0NPTkZJR1VSQVRJT05fUkVRVUlSRUQpKSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgcmV0dXJuIGFycmF5KG51bGwsIG51bGwpOwoKCWNhc2UgJ0dhbGxlcnk6OkVycm9yJzoKCSAgICAkZGF0YSA9ICRldmVudC0+Z2V0RGF0YSgpOwoJICAgIGlmICghKCRkYXRhWydlcnJvciddLT5nZXRFcnJvckNvZGUoKSAmIEVSUk9SX1BFUk1JU1NJT05fREVOSUVEKSkgewoJCXJldHVybiBhcnJheShudWxsLCBudWxsKTsKCSAgICB9CgoJICAgIEdhbGxlcnlDb3JlQXBpOjpyZXF1aXJlT25jZSgnbW9kdWxlcy9odHRwYXV0aC9jbGFzc2VzL0h0dHBBdXRoSGVscGVyLmNsYXNzJyk7CgkgICAgJHJldCA9IEh0dHBBdXRoSGVscGVyOjpyZXF1ZXN0QXV0aGVudGljYXRpb24oZmFsc2UpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCgkgICAgcmV0dXJuIGFycmF5KG51bGwsIG51bGwpOwoKCWNhc2UgJ0dhbGxlcnk6OkxvZ291dCc6CgkgICAgLyoKCSAgICAgKiBJZiB0aGlzIHJlcXVlc3QgaW5jbHVkZXMgYW4gSFRUUCB1c2VybmFtZSwgZGVsZWdhdGUgdG8gdGhlIEhUVFAgYXV0aCBsb2dvdXQgdmlldwoJICAgICAqIHdoaWNoIHRyaWVzIHRvIGNsZWFyIHRoZSBicm93c2VyJ3MgYXV0aGVudGljYXRpb24gY2FjaGUKCSAgICAgKi8KCSAgICBHYWxsZXJ5Q29yZUFwaTo6cmVxdWlyZU9uY2UoJ21vZHVsZXMvaHR0cGF1dGgvY2xhc3Nlcy9IdHRwQXV0aEhlbHBlci5jbGFzcycpOwoJICAgIGxpc3QgKCRhdXRodHlwZSwgJHVzZXJuYW1lLCAkcGFzc3dvcmQpID0gSHR0cEF1dGhIZWxwZXI6OmdldEh0dHBBdXRoKCk7CgkgICAgJHJlbW90ZVVzZXIgPSBHYWxsZXJ5VXRpbGl0aWVzOjpnZXRTZXJ2ZXJWYXIoJ1JFTU9URV9VU0VSJyk7CgkgICAgaWYgKCFlbXB0eSgkdXNlcm5hbWUpIHx8ICFlbXB0eSgkcmVtb3RlVXNlcikpIHsKCQlyZXR1cm4gYXJyYXkobnVsbCwgYXJyYXkoJ2RlbGVnYXRlJyA9PiBhcnJheSgndmlldycgPT4gJ2h0dHBhdXRoLlRyeUxvZ291dCcpKSk7CgkgICAgfQoJfQoKCXJldHVybiBhcnJheShudWxsLCBudWxsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFjdGl2YXRlIGVzc2VudGlhbCByZXdyaXRlIHJ1bGVzLgogICAgICogQHJldHVybiBvYmplY3QgR2FsbGVyeVN0YXR1cyBhIHN0YXR1cyBjb2RlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9hY3RpdmF0ZVJld3JpdGVSdWxlcygpIHsKCWxpc3QgKCRyZXQsICRyZXdyaXRlQXBpKSA9IEdhbGxlcnlDb3JlQXBpOjpuZXdGYWN0b3J5SW5zdGFuY2UoJ1Jld3JpdGVBcGknKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuICRyZXQ7Cgl9CglpZiAoIWlzc2V0KCRyZXdyaXRlQXBpKSkgewoJICAgIHJldHVybiBHYWxsZXJ5Q29yZUFwaTo6ZXJyb3IoRVJST1JfQ09ORklHVVJBVElPTl9SRVFVSVJFRCk7Cgl9CgoJbGlzdCAoJHJldCwgJGlzQ29tcGF0aWJsZSkgPSAkcmV3cml0ZUFwaS0+aXNDb21wYXRpYmxlV2l0aEFwaShhcnJheSgxLCAxKSk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoJaWYgKCEkaXNDb21wYXRpYmxlKSB7CgkgICAgcmV0dXJuIEdhbGxlcnlDb3JlQXBpOjplcnJvcihFUlJPUl9DT05GSUdVUkFUSU9OX1JFUVVJUkVEKTsKCX0KCglsaXN0ICgkcmV0LCAkc3VjY2VzcykgPSAkcmV3cml0ZUFwaS0+YWN0aXZhdGVSZXdyaXRlUnVsZXNGb3JNb2R1bGUoJHRoaXMtPmdldElkKCkpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gJHJldDsKCX0KCWlmICghJHN1Y2Nlc3MpIHsKCSAgICByZXR1cm4gR2FsbGVyeUNvcmVBcGk6OmVycm9yKEVSUk9SX0NPTkZJR1VSQVRJT05fUkVRVUlSRUQpOwoJfQoKCXJldHVybiBudWxsOwogICAgfQp9Cj8+Cg==');
expand_cd276b3281($outputDir, 'po/GNUmakefile', 'R0FMTEVSWURJUiA/PSAuLi8uLi8uLgpUT09MRElSID89ICQoR0FMTEVSWURJUikvbGliL3Rvb2xzCgppbmNsdWRlICQoVE9PTERJUikvcG8vR05VbWFrZWZpbGUuaW5jCgo=');
expand_cd276b3281($outputDir, 'po/strings.raw', 'IyAkSWQ6IHN0cmluZ3MucmF3IDE1NzI3IDIwMDctMDEtMjYgMjM6MTM6MzlaIG1pbmRsZXNzICQKCi8qIG1vZHVsZS5pbmMgKi8KZ2V0dGV4dCgiSFRUUCBBdXRoIikKZ2V0dGV4dCgiTG9naW4gdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4iKQpnZXR0ZXh0KCJBdXRoZW50aWNhdGlvbiIpCmdldHRleHQoIkF1dGhvcml6YXRpb24gSGVhZGVyIikKZ2V0dGV4dCgiUGFzcyB0aGUgQXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gR2FsbGVyeSBpbiBhIHJlcXVlc3QgdmFyaWFibGUuIikKZ2V0dGV4dCgiQXV0aG9yaXphdGlvbiBoZWFkZXIuIikKCi8qIHRlbXBsYXRlcy9GaW5pc2hMb2dvdXQudHBsICovCmdldHRleHQoIkxvZ291dCBmYWlsZWQiKQpnZXR0ZXh0KCJHYWxsZXJ5IHRyaWVkIHRvIGxvZ291dCBidXQgZmFpbGVkLiAgWW91IHNob3VsZCBjbG9zZSB0aGUgYnJvd3NlciB3aW5kb3cgdG8gbG9nb3V0IHN1Y2Nlc3NmdWxseS4iKQoKLyogdGVtcGxhdGVzL0h0dHBBdXRoU2l0ZUFkbWluLnRwbCAqLwpnZXR0ZXh0KCJIVFRQIEF1dGggU2V0dGluZ3MiKQpnZXR0ZXh0KCJTZXR0aW5ncyBzYXZlZCBzdWNjZXNzZnVsbHkiKQpnZXR0ZXh0KCJNaXNzaW5nIEhUVFAgQXV0aG9yaXphdGlvbiIpCmdldHRleHQoIkdhbGxlcnkgY2FuJ3QgYWNjZXNzIEhUVFAgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMuICBZb3UgY2FuIHN0aWxsIHVzZSB5b3VyIHdlYiBzZXJ2ZXIncyBhdXRoZW50aWNhdGlvbi4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iKQpnZXR0ZXh0KCJVUkwgcmV3cml0ZSBtb2R1bGUgZGlzYWJsZWQiKQpnZXR0ZXh0KCJXZSBjYW4ndCBmYWxsIGJhY2sgb24gcGFzc2luZyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIHRvIEdhbGxlcnkgYmVjYXVzZSB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGlzIGRpc2FibGVkLiAgWW91IHNob3VsZCBhY3RpdmF0ZSB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gUGx1Z2lucyBvcHRpb24lcyBhbmQgY2hvb3NlIGVpdGhlciBBcGFjaGUgbW9kX3Jld3JpdGUgb3IgSVNBUElfUmV3cml0ZS4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iKQpnZXR0ZXh0KCJCYWQgVVJMIHJld3JpdGUgY29uZmlndXJhdGlvbiIpCmdldHRleHQoIlBIUCBQYXRoIEluZm8gcmV3cml0ZSBkb2Vzbid0IHN1cHBvcnQgdGhlIHJ1bGUgdG8gZmFsbCBiYWNrIG9uIHBhc3NpbmcgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBHYWxsZXJ5LiAgWW91IHNob3VsZCB1bmluc3RhbGwgYW5kIHJlaW5zdGFsbCB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gUGx1Z2lucyBvcHRpb24lcyBhbmQgY2hvb3NlIGVpdGhlciBBcGFjaGUgbW9kX3Jld3JpdGUgb3IgSVNBUElfUmV3cml0ZS4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iKQpnZXR0ZXh0KCInQXV0aG9yaXphdGlvbiBIZWFkZXInIHJ1bGUgZGlzYWJsZWQiKQpnZXR0ZXh0KCJUaGUgVVJMIHJld3JpdGUgcnVsZSB0byBmYWxsIGJhY2sgb24gcGFzc2luZyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIHRvIEdhbGxlcnkgaXMgZGlzYWJsZWQuICBZb3Ugc2hvdWxkIGFjdGl2YXRlIHRoZSBIVFRQIGF1dGggJ0F1dGhvcml6YXRpb24gSGVhZGVyJyBydWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gVVJMIFJld3JpdGUgb3B0aW9uJXMuICBUcm91Ymxlc2hvb3RpbmcgZG9jdW1lbnRhdGlvbiBpcyBpbiB0aGUgJXNHYWxsZXJ5IENvZGV4JXMuIikKZ2V0dGV4dCgiVW5rbm93biBDYXVzZSIpCmdldHRleHQoIkdhbGxlcnkgY2FuJ3QgYWNjZXNzIEhUVFAgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgYW5kIGF1dG9tYXRlZCBjaGVja3MgZmFpbGVkIHRvIGZpbmQgYSBjYXVzZS4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iKQpnZXR0ZXh0KCJHYWxsZXJ5IGNhbiBoYW5kbGUgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBkaXJlY3RseS4iKQpnZXR0ZXh0KCJVc2UgSFRUUCBBdXRoZW50aWNhdGlvbjoiKQpnZXR0ZXh0KCJHYWxsZXJ5IHdpbGwgcHJvbXB0IHlvdSB0byBsb2dpbiB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24gd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4gIEhUVFAgYXV0aGVudGljYXRpb24gc2VuZHMgeW91ciBjbGllbnQgYSByZWFsbSB0byB3aGljaCB5b3VyIHVzZXJuYW1lIGJlbG9uZ3MuICBJdCdzIHNhZmUgdG8gbGVhdmUgdGhlIHJlYWxtIGJsYW5rLiIpCmdldHRleHQoIkhUVFAgQXV0aGVudGljYXRpb24gUmVhbG06IikKZ2V0dGV4dCgiWW91ciB3ZWIgc2VydmVyIG1heSBvZmZlciBtb3JlIGNvbXByZWhlbnNpdmUgYW5kIG1vcmUgc2VjdXJlIGF1dGhlbnRpY2F0aW9uLiAgSWYgeW91IGNvbmZpZ3VyZWQgeW91ciB3ZWIgc2VydmVyIHRvIGF1dGhlbnRpY2F0ZSByZXF1ZXN0cyB0byBHYWxsZXJ5LCB5b3UgbWF5IGNob29zZSB0byB0cnVzdCB0aGUgdXNlcm5hbWUgaXQgcmVwb3J0cyBpbiB0aGUgUkVNT1RFX1VTRVIgZW52aXJvbm1lbnQgdmFyaWFibGUuIikKZ2V0dGV4dCgiVXNlIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb246IikKZ2V0dGV4dCgiQnkgZGVmYXVsdCBIVFRQIGF1dGhlbnRpY2F0aW9uIGlzIG9ubHkgZW5hYmxlZCBmb3Igc3BlY2lmaWMgbW9kdWxlcy4iKQpnZXR0ZXh0KCJVc2UgdGhlIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgZm9yIGFsbCBtb2R1bGVzOiIpCmdldHRleHQoIllvdSBtYXkgd2lzaCB0byB0cnVzdCBvbmx5IEhUVFAgYXV0aGVudGljYXRpb24gdHlwZXMgb3IgSFRUUCB1c2VybmFtZXMgd2hpY2ggbWF0Y2ggc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBvciBIVFRQIHVzZXJuYW1lcyBtYXkgbm90IG1hdGNoIHlvdXIgR2FsbGVyeSB1c2VybmFtZXM7IGZvciBpbnN0YW5jZSBpZiB1c2luZyAlcyBhdXRoZW50aWNhdGlvbiwgdGhlIFJFTU9URV9VU0VSIGVudmlyb25tZW50IHZhcmlhYmxlIG1heSBiZSB1c2VybmFtZUBSRUFMTS5UTEQuICBJbiB0aGVzZSBjYXNlcywgeW91IG1heSB1c2UgcmVndWxhciBleHByZXNzaW9ucyB0byBmaWx0ZXIgYXV0aGVudGljYXRpb24gdHlwZXMgYW5kIHVzZXJuYW1lcy4iKQpnZXR0ZXh0KCJVc2UgUmVndWxhciBFeHByZXNzaW9uczoiKQpnZXR0ZXh0KCJTcGVjaWZ5IGhlcmUgYSByZWd1bGFyIGV4cHJlc3Npb24gd2hpY2ggdGhlIGF1dGhlbnRpY2F0aW9uIHR5cGUgbXVzdCBtYXRjaCBmb3IgYXV0aGVudGljYXRpb24gdG8gcHJvY2VlZDsgZm9yIGluc3RhbmNlIC9OZWdvdGlhdGUvIikKZ2V0dGV4dCgiQXV0aGVudGljYXRpb24gVHlwZSBQYXR0ZXJuOiIpCmdldHRleHQoIllvdSBtdXN0IGVudGVyIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uIikKZ2V0dGV4dCgiU3BlY2lmeSBoZXJlIGEgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHRoZSB1c2VybmFtZSBtdXN0IG1hdGNoIGZvciBhdXRoZW50aWNhdGlvbiB0byBwcm9jZWVkIGFuZCBhIHN0cmluZyB3aXRoIHdoaWNoIHRvIHJlcGxhY2UgaXQuICBTZWUgUEhQICVzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIikKZ2V0dGV4dCgiVXNlcm5hbWUgUGF0dGVybjoiKQpnZXR0ZXh0KCJVc2VybmFtZSBSZXBsYWNlbWVudDoiKQpnZXR0ZXh0KCJTYXZlIikKZ2V0dGV4dCgiUmVzZXQiKQoKLyogdGVtcGxhdGVzL1RyeUxvZ291dC50cGwgKi8KZ2V0dGV4dCgiSWYgeW91J3JlIG5vdCBhdXRvbWF0aWNhbGx5IHJlZGlyZWN0ZWQsICVzY2xpY2sgaGVyZSB0byBmaW5pc2ggbG9nZ2luZyBvdXQlcy4iKQo=');
expand_cd276b3281($outputDir, 'templates/FinishLogout.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTU0MyAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPGgzIGNsYXNzPSJnaVdhcm5pbmciPiB7Zy0+dGV4dCB0ZXh0PSJMb2dvdXQgZmFpbGVkIn0gPC9oMz4KCiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iR2FsbGVyeSB0cmllZCB0byBsb2dvdXQgYnV0IGZhaWxlZC4gIFlvdSBzaG91bGQgY2xvc2UgdGhlIGJyb3dzZXIgd2luZG93IHRvIGxvZ291dCBzdWNjZXNzZnVsbHkuIn0KICA8L3A+CjwvZGl2Pgo=');
expand_cd276b3281($outputDir, 'templates/HttpAuthSiteAdmin.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTcyMSAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPGRpdiBjbGFzcz0iZ2JCbG9jayBnY0JhY2tncm91bmQxIj4KICA8aDI+IHtnLT50ZXh0IHRleHQ9IkhUVFAgQXV0aCBTZXR0aW5ncyJ9IDwvaDI+CjwvZGl2PgoKe2lmIGlzc2V0KCRzdGF0dXMuc2F2ZWQpfQogIDxkaXYgY2xhc3M9ImdiQmxvY2siPgogICAgPGgyIGNsYXNzPSJnaVN1Y2Nlc3MiPiB7Zy0+dGV4dCB0ZXh0PSJTZXR0aW5ncyBzYXZlZCBzdWNjZXNzZnVsbHkifSA8L2gyPgogIDwvZGl2Pgp7L2lmfQoKe2lmICRIdHRwQXV0aFNpdGVBZG1pbi5jb2RlICYgSFRUUEFVVEhfU1RBVFVTX01JU1NJTkdfQVVUSE9SSVpBVElPTn0KICA8ZGl2IGNsYXNzPSJnYkJsb2NrIj4KICAgIDxoMyBjbGFzcz0iZ2lXYXJuaW5nIj4ge2ctPnRleHQgdGV4dD0iTWlzc2luZyBIVFRQIEF1dGhvcml6YXRpb24ifSA8L2gzPgoKICAgIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgICAge2ctPnRleHQgdGV4dD0iR2FsbGVyeSBjYW4ndCBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3Jkcy4gIFlvdSBjYW4gc3RpbGwgdXNlIHlvdXIgd2ViIHNlcnZlcidzIGF1dGhlbnRpY2F0aW9uLiAgVHJvdWJsZXNob290aW5nIGRvY3VtZW50YXRpb24gaXMgaW4gdGhlICVzR2FsbGVyeSBDb2RleCVzLiIgYXJnMT0iPGEgaHJlZj1cImh0dHA6Ly9jb2RleC5nYWxsZXJ5Mi5vcmcvaW5kZXgucGhwL0dhbGxlcnkyOk1vZHVsZXM6aHR0cGF1dGhcIj4iIGFyZzI9IjwvYT4ifQogICAgPC9wPgogIDwvZGl2Pgp7L2lmfQoKe2lmICRIdHRwQXV0aFNpdGVBZG1pbi5jb2RlICYgSFRUUEFVVEhfU1RBVFVTX1JFV1JJVEVfTU9EVUxFX0RJU0FCTEVEfQogIDxkaXYgY2xhc3M9ImdiQmxvY2siPgogICAgPGgzIGNsYXNzPSJnaVdhcm5pbmciPiB7Zy0+dGV4dCB0ZXh0PSJVUkwgcmV3cml0ZSBtb2R1bGUgZGlzYWJsZWQifSA8L2gzPgoKICAgIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgICAge2NhcHR1cmUgYXNzaWduPSJhZG1pblBsdWdpbnNVcmwifXtnLT51cmwgYXJnMT0idmlldz1jb3JlLlNpdGVBZG1pbiIgYXJnMj0ic3ViVmlldz1jb3JlLkFkbWluUGx1Z2lucyIgcmV0dXJuPXRydWV9ey9jYXB0dXJlfQogICAgICB7Zy0+dGV4dCB0ZXh0PSJXZSBjYW4ndCBmYWxsIGJhY2sgb24gcGFzc2luZyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIHRvIEdhbGxlcnkgYmVjYXVzZSB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGlzIGRpc2FibGVkLiAgWW91IHNob3VsZCBhY3RpdmF0ZSB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gUGx1Z2lucyBvcHRpb24lcyBhbmQgY2hvb3NlIGVpdGhlciBBcGFjaGUgbW9kX3Jld3JpdGUgb3IgSVNBUElfUmV3cml0ZS4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iIGFyZzE9IjxhIGhyZWY9XCIkYWRtaW5QbHVnaW5zVXJsXCI+IiBhcmcyPSI8L2E+IiBhcmczPSI8YSBocmVmPVwiaHR0cDovL2NvZGV4LmdhbGxlcnkyLm9yZy9pbmRleC5waHAvR2FsbGVyeTI6TW9kdWxlczpodHRwYXV0aFwiPiIgYXJnND0iPC9hPiJ9CiAgICA8L3A+CiAgPC9kaXY+CnsvaWZ9Cgp7aWYgJEh0dHBBdXRoU2l0ZUFkbWluLmNvZGUgJiBIVFRQQVVUSF9TVEFUVVNfQkFEX1JFV1JJVEVfUEFSU0VSfQogIDxkaXYgY2xhc3M9ImdiQmxvY2siPgogICAgPGgzIGNsYXNzPSJnaVdhcm5pbmciPiB7Zy0+dGV4dCB0ZXh0PSJCYWQgVVJMIHJld3JpdGUgY29uZmlndXJhdGlvbiJ9IDwvaDM+CgogICAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAgICB7Y2FwdHVyZSBhc3NpZ249ImFkbWluUGx1Z2luc1VybCJ9e2ctPnVybCBhcmcxPSJ2aWV3PWNvcmUuU2l0ZUFkbWluIiBhcmcyPSJzdWJWaWV3PWNvcmUuQWRtaW5QbHVnaW5zIiByZXR1cm49dHJ1ZX17L2NhcHR1cmV9CiAgICAgIHtnLT50ZXh0IHRleHQ9IlBIUCBQYXRoIEluZm8gcmV3cml0ZSBkb2Vzbid0IHN1cHBvcnQgdGhlIHJ1bGUgdG8gZmFsbCBiYWNrIG9uIHBhc3NpbmcgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBHYWxsZXJ5LiAgWW91IHNob3VsZCB1bmluc3RhbGwgYW5kIHJlaW5zdGFsbCB0aGUgVVJMIHJld3JpdGUgbW9kdWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gUGx1Z2lucyBvcHRpb24lcyBhbmQgY2hvb3NlIGVpdGhlciBBcGFjaGUgbW9kX3Jld3JpdGUgb3IgSVNBUElfUmV3cml0ZS4gIFRyb3VibGVzaG9vdGluZyBkb2N1bWVudGF0aW9uIGlzIGluIHRoZSAlc0dhbGxlcnkgQ29kZXglcy4iIGFyZzE9IjxhIGhyZWY9XCIkYWRtaW5QbHVnaW5zVXJsXCI+IiBhcmcyPSI8L2E+IiBhcmczPSI8YSBocmVmPVwiaHR0cDovL2NvZGV4LmdhbGxlcnkyLm9yZy9pbmRleC5waHAvR2FsbGVyeTI6TW9kdWxlczpodHRwYXV0aFwiPiIgYXJnND0iPC9hPiJ9CiAgICA8L3A+CiAgPC9kaXY+CnsvaWZ9Cgp7aWYgJEh0dHBBdXRoU2l0ZUFkbWluLmNvZGUgJiBIVFRQQVVUSF9TVEFUVVNfQVVUSE9SSVpBVElPTl9SVUxFX0RJU0FCTEVEfQogIDxkaXYgY2xhc3M9ImdiQmxvY2siPgogICAgPGgzIGNsYXNzPSJnaVdhcm5pbmciPiB7Zy0+dGV4dCB0ZXh0PSInQXV0aG9yaXphdGlvbiBIZWFkZXInIHJ1bGUgZGlzYWJsZWQifSA8L2gzPgoKICAgIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgICAge2NhcHR1cmUgYXNzaWduPSJhZG1pblJld3JpdGVVcmwifXtnLT51cmwgYXJnMT0idmlldz1jb3JlLlNpdGVBZG1pbiIgYXJnMj0ic3ViVmlldz1yZXdyaXRlLkFkbWluUmV3cml0ZSIgcmV0dXJuPXRydWV9ey9jYXB0dXJlfQogICAgICB7Zy0+dGV4dCB0ZXh0PSJUaGUgVVJMIHJld3JpdGUgcnVsZSB0byBmYWxsIGJhY2sgb24gcGFzc2luZyBIVFRQIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIHRvIEdhbGxlcnkgaXMgZGlzYWJsZWQuICBZb3Ugc2hvdWxkIGFjdGl2YXRlIHRoZSBIVFRQIGF1dGggJ0F1dGhvcml6YXRpb24gSGVhZGVyJyBydWxlIGluIHRoZSAlc1NpdGUgQWRtaW4gVVJMIFJld3JpdGUgb3B0aW9uJXMuICBUcm91Ymxlc2hvb3RpbmcgZG9jdW1lbnRhdGlvbiBpcyBpbiB0aGUgJXNHYWxsZXJ5IENvZGV4JXMuIiBhcmcxPSI8YSBocmVmPVwiJGFkbWluUmV3cml0ZVVybFwiPiIgYXJnMj0iPC9hPiIgYXJnMz0iPGEgaHJlZj1cImh0dHA6Ly9jb2RleC5nYWxsZXJ5Mi5vcmcvaW5kZXgucGhwL0dhbGxlcnkyOk1vZHVsZXM6aHR0cGF1dGhcIj4iIGFyZzQ9IjwvYT4ifQogICAgPC9wPgogIDwvZGl2Pgp7L2lmfQoKe2lmICRIdHRwQXV0aFNpdGVBZG1pbi5jb2RlICYgSFRUUEFVVEhfU1RBVFVTX0VSUk9SX1VOS05PV059CiAgPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgICA8aDMgY2xhc3M9ImdpV2FybmluZyI+IHtnLT50ZXh0IHRleHQ9IlVua25vd24gQ2F1c2UifSA8L2gzPgoKICAgIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgICAge2ctPnRleHQgdGV4dD0iR2FsbGVyeSBjYW4ndCBhY2Nlc3MgSFRUUCB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyBhbmQgYXV0b21hdGVkIGNoZWNrcyBmYWlsZWQgdG8gZmluZCBhIGNhdXNlLiAgVHJvdWJsZXNob290aW5nIGRvY3VtZW50YXRpb24gaXMgaW4gdGhlICVzR2FsbGVyeSBDb2RleCVzLiIgYXJnMT0iPGEgaHJlZj1cImh0dHA6Ly9jb2RleC5nYWxsZXJ5Mi5vcmcvaW5kZXgucGhwL0dhbGxlcnkyOk1vZHVsZXM6aHR0cGF1dGhcIj4iIGFyZzI9IjwvYT4ifQogICAgPC9wPgogIDwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iR2FsbGVyeSBjYW4gaGFuZGxlIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24gZGlyZWN0bHkuIn0KICA8L3A+CgogIDxsYWJlbCBmb3I9ImNiSHR0cEF1dGhQbHVnaW5JbnB1dCI+IHtnLT50ZXh0IHRleHQ9IlVzZSBIVFRQIEF1dGhlbnRpY2F0aW9uOiJ9IDwvbGFiZWw+CiAgPGlucHV0IGlkPSJjYkh0dHBBdXRoUGx1Z2luSW5wdXQiIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtodHRwQXV0aFBsdWdpbl0ifSIgdHlwZT0iY2hlY2tib3gie2lmICFlbXB0eSgkZm9ybS5odHRwQXV0aFBsdWdpbil9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gb25jbGljaz0iQmxvY2tUb2dnbGUoJ2NiQXV0aE5hbWUnKSIvPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImdiQmxvY2siIGlkPSJjYkF1dGhOYW1lIntpZiBlbXB0eSgkZm9ybS5odHRwQXV0aFBsdWdpbil9IHN0eWxlPSJkaXNwbGF5OiBub25lInsvaWZ9PgogIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgIHtnLT50ZXh0IHRleHQ9IkdhbGxlcnkgd2lsbCBwcm9tcHQgeW91IHRvIGxvZ2luIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiAgSFRUUCBhdXRoZW50aWNhdGlvbiBzZW5kcyB5b3VyIGNsaWVudCBhIHJlYWxtIHRvIHdoaWNoIHlvdXIgdXNlcm5hbWUgYmVsb25ncy4gIEl0J3Mgc2FmZSB0byBsZWF2ZSB0aGUgcmVhbG0gYmxhbmsuIn0KICA8L3A+CiAge2ctPnRleHQgdGV4dD0iSFRUUCBBdXRoZW50aWNhdGlvbiBSZWFsbToifQogIDxpbnB1dCBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bYXV0aE5hbWVdIn0iIHR5cGU9InRleHQiIHZhbHVlPSJ7JGZvcm0uYXV0aE5hbWV9Ii8+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iWW91ciB3ZWIgc2VydmVyIG1heSBvZmZlciBtb3JlIGNvbXByZWhlbnNpdmUgYW5kIG1vcmUgc2VjdXJlIGF1dGhlbnRpY2F0aW9uLiAgSWYgeW91IGNvbmZpZ3VyZWQgeW91ciB3ZWIgc2VydmVyIHRvIGF1dGhlbnRpY2F0ZSByZXF1ZXN0cyB0byBHYWxsZXJ5LCB5b3UgbWF5IGNob29zZSB0byB0cnVzdCB0aGUgdXNlcm5hbWUgaXQgcmVwb3J0cyBpbiB0aGUgUkVNT1RFX1VTRVIgZW52aXJvbm1lbnQgdmFyaWFibGUuIn0KICA8L3A+CgogIDxsYWJlbCBmb3I9ImNiU2VydmVyQXV0aFBsdWdpbklucHV0Ij4ge2ctPnRleHQgdGV4dD0iVXNlIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb246In0gPC9sYWJlbD4KICA8aW5wdXQgaWQ9ImNiU2VydmVyQXV0aFBsdWdpbklucHV0IiBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bc2VydmVyQXV0aFBsdWdpbl0ifSIgdHlwZT0iY2hlY2tib3gie2lmICFlbXB0eSgkZm9ybS5zZXJ2ZXJBdXRoUGx1Z2luKX0gY2hlY2tlZD0iY2hlY2tlZCJ7L2lmfS8+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iQnkgZGVmYXVsdCBIVFRQIGF1dGhlbnRpY2F0aW9uIGlzIG9ubHkgZW5hYmxlZCBmb3Igc3BlY2lmaWMgbW9kdWxlcy4ifQogIDwvcD4KCiAgPGxhYmVsIGZvcj0iY2JVc2VHbG9iYWxseSI+IHtnLT50ZXh0IHRleHQ9IlVzZSB0aGUgYXV0aGVudGljYXRpb24gcGx1Z2lucyBmb3IgYWxsIG1vZHVsZXM6In0gPC9sYWJlbD4KICA8aW5wdXQgaWQ9ImNiVXNlR2xvYmFsbHkiIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVt1c2VHbG9iYWxseV0ifSIgdHlwZT0iY2hlY2tib3gie2lmICFlbXB0eSgkZm9ybS51c2VHbG9iYWxseSl9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0vPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImdiQmxvY2siPgogIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgIHtnLT50ZXh0IHRleHQ9IllvdSBtYXkgd2lzaCB0byB0cnVzdCBvbmx5IEhUVFAgYXV0aGVudGljYXRpb24gdHlwZXMgb3IgSFRUUCB1c2VybmFtZXMgd2hpY2ggbWF0Y2ggc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBvciBIVFRQIHVzZXJuYW1lcyBtYXkgbm90IG1hdGNoIHlvdXIgR2FsbGVyeSB1c2VybmFtZXM7IGZvciBpbnN0YW5jZSBpZiB1c2luZyAlcyBhdXRoZW50aWNhdGlvbiwgdGhlIFJFTU9URV9VU0VSIGVudmlyb25tZW50IHZhcmlhYmxlIG1heSBiZSB1c2VybmFtZUBSRUFMTS5UTEQuICBJbiB0aGVzZSBjYXNlcywgeW91IG1heSB1c2UgcmVndWxhciBleHByZXNzaW9ucyB0byBmaWx0ZXIgYXV0aGVudGljYXRpb24gdHlwZXMgYW5kIHVzZXJuYW1lcy4iIGFyZzE9IjxhIGhyZWY9XCJodHRwOi8vbW9kYXV0aGtlcmIuc291cmNlZm9yZ2UubmV0L1wiPiBLZXJiZXJvcyA8L2E+In0KICA8L3A+CgogIDxsYWJlbCBmb3I9ImNiUmVnZXhBdXRoUGx1Z2luSW5wdXQiPiB7Zy0+dGV4dCB0ZXh0PSJVc2UgUmVndWxhciBFeHByZXNzaW9uczoifSA8L2xhYmVsPgogIDxpbnB1dCBpZD0iY2JSZWdleEF1dGhQbHVnaW5JbnB1dCIgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW3JlZ2V4QXV0aFBsdWdpbl0ifSIgdHlwZT0iY2hlY2tib3gie2lmICFlbXB0eSgkZm9ybS5yZWdleEF1dGhQbHVnaW4pfSBjaGVja2VkPSJjaGVja2VkInsvaWZ9IG9uY2xpY2s9IkJsb2NrVG9nZ2xlKCdjYkF1dGh0eXBlUmVnZXgnKTsgQmxvY2tUb2dnbGUoJ2NiVXNlcm5hbWVSZWdleCcpIi8+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ2JCbG9jayIgaWQ9ImNiQXV0aHR5cGVSZWdleCJ7aWYgZW1wdHkoJGZvcm0ucmVnZXhBdXRoUGx1Z2luKX0gc3R5bGU9ImRpc3BsYXk6IG5vbmUiey9pZn0+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iU3BlY2lmeSBoZXJlIGEgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHRoZSBhdXRoZW50aWNhdGlvbiB0eXBlIG11c3QgbWF0Y2ggZm9yIGF1dGhlbnRpY2F0aW9uIHRvIHByb2NlZWQ7IGZvciBpbnN0YW5jZSAvTmVnb3RpYXRlLyJ9CiAgPC9wPgoKICB7Zy0+dGV4dCB0ZXh0PSJBdXRoZW50aWNhdGlvbiBUeXBlIFBhdHRlcm46In0KICA8aW5wdXQgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2F1dGh0eXBlUGF0dGVybl0ifSIgdHlwZT0idGV4dCIgdmFsdWU9InskZm9ybS5hdXRodHlwZVBhdHRlcm59Ii8+CgogIHtpZiAhZW1wdHkoJGZvcm0uZXJyb3IuYXV0aHR5cGUucmVnZXguaW52YWxpZCl9CiAgICA8ZGl2IGNsYXNzPSJnaUVycm9yIj4ge2ctPnRleHQgdGV4dD0iWW91IG11c3QgZW50ZXIgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24ifSA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImdpRXJyb3IiPiB7JHN0YXR1cy5hdXRodHlwZVJlZ2V4TWVzc2FnZX0gPC9kaXY+CiAgey9pZn0KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJnYkJsb2NrIiBpZD0iY2JVc2VybmFtZVJlZ2V4IiB7aWYgZW1wdHkoJGZvcm0ucmVnZXhBdXRoUGx1Z2luKX0gc3R5bGU9ImRpc3BsYXk6IG5vbmUiey9pZn0+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iU3BlY2lmeSBoZXJlIGEgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHRoZSB1c2VybmFtZSBtdXN0IG1hdGNoIGZvciBhdXRoZW50aWNhdGlvbiB0byBwcm9jZWVkIGFuZCBhIHN0cmluZyB3aXRoIHdoaWNoIHRvIHJlcGxhY2UgaXQuICBTZWUgUEhQICVzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiBhcmcxPSI8YSBocmVmPVwiaHR0cDovL3BocC5uZXQvcHJlZ19yZXBsYWNlXCI+IHByZWdfcmVwbGFjZSA8L2E+In0KICA8L3A+CgogIHtnLT50ZXh0IHRleHQ9IlVzZXJuYW1lIFBhdHRlcm46In0KICA8aW5wdXQgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW3VzZXJuYW1lUGF0dGVybl0ifSIgdHlwZT0idGV4dCIgdmFsdWU9InskZm9ybS51c2VybmFtZVBhdHRlcm59Ii8+CgogIHtnLT50ZXh0IHRleHQ9IlVzZXJuYW1lIFJlcGxhY2VtZW50OiJ9CiAgPGlucHV0IG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVt1c2VybmFtZVJlcGxhY2VdIn0iIHR5cGU9InRleHQiIHZhbHVlPSJ7JGZvcm0udXNlcm5hbWVSZXBsYWNlfSIvPgoKICB7aWYgIWVtcHR5KCRmb3JtLmVycm9yLnVzZXJuYW1lLnJlZ2V4LmludmFsaWQpfQogICAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+IHtnLT50ZXh0IHRleHQ9IllvdSBtdXN0IGVudGVyIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uIn0gPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJnaUVycm9yIj4geyRzdGF0dXMudXNlcm5hbWVSZWdleE1lc3NhZ2V9IDwvZGl2PgogIHsvaWZ9CjwvZGl2PgoKPGRpdiBjbGFzcz0iZ2JCbG9jayBnY0JhY2tncm91bmQxIj4KICA8aW5wdXQgY2xhc3M9ImlucHV0VHlwZVN1Ym1pdCIgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2FjdGlvbl1bc2F2ZV0ifSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ie2ctPnRleHQgdGV4dD0iU2F2ZSJ9Ii8+CiAgPGlucHV0IGNsYXNzPSJpbnB1dFR5cGVTdWJtaXQiIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVthY3Rpb25dW3Jlc2V0XSJ9IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7Zy0+dGV4dCB0ZXh0PSJSZXNldCJ9Ii8+CjwvZGl2Pgo=');
expand_cd276b3281($outputDir, 'templates/TryLogout.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTU0MyAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIC8vIDwhW0NEQVRBWwoKICB0cnkge2xkZWxpbX0KICAgIHsqIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9jb25zdGFudHMvY2xlYXJhdXRoZW50aWNhdGlvbmNhY2hlLmFzcCAqfQogICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNsZWFyQXV0aGVudGljYXRpb25DYWNoZSIpOwogIHtyZGVsaW19IGNhdGNoIChleGNlcHRpb24pIHtsZGVsaW19CiAge3JkZWxpbX0KCiAgd2luZG93LmxvY2F0aW9uID0gInskVHJ5TG9nb3V0LnNjcmlwdFVybH0iOwoKICAvLyBdXT4KPC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJnYkJsb2NrIj4KICA8cCBjbGFzcz0iZ2lEZXNjcmlwdGlvbiI+CiAgICB7Zy0+dGV4dCB0ZXh0PSJJZiB5b3UncmUgbm90IGF1dG9tYXRpY2FsbHkgcmVkaXJlY3RlZCwgJXNjbGljayBoZXJlIHRvIGZpbmlzaCBsb2dnaW5nIG91dCVzLiIgYXJnMT0iPGEgaHJlZj1cImAkVHJ5TG9nb3V0LmhyZWZVcmxgXCI+IiBhcmcyPSI8L2E+In0KICA8L3A+CjwvZGl2Pgo=');
}
function expand_cd276b3281($outputDir, $relativePath, $data) {
$fd = fopen($outputDir . $relativePath, 'w');
fwrite($fd, base64_decode($data));
fclose($fd);
}
$unpackFunction = "unpack_cd276b3281";
?>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists