DIR : /home/kozerus/public_html/jkwii/js/jsdoit/preload/b64_src_preloadjs_utils_RequestUtils_js.txt /home/kozerus/public_html/jkwii/js/jsdoit/preload LyoKICogUmVxdWVzdFV0aWxzCiAqIFZpc2l0IGh0dHA6Ly9jcmVhdGVqcy5jb20vIGZvciBkb2N1bWVudGF0aW9uLCB1cGRhdGVzIGFuZCBleGFtcGxlcy4KICoKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIGdza2lubmVyLmNvbSwgaW5jLgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgogKiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgogKiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CiAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLAogKiBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKICogY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAogKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKICogT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKICogTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKICogSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCiAqIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwogKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICovCgovKioKICogQG1vZHVsZSBQcmVsb2FkSlMKICovCgooZnVuY3Rpb24gKCkgewoKCS8qKgoJICogVXRpbGl0aWVzIHRoYXQgYXNzaXN0IHdpdGggcGFyc2luZyBsb2FkIGl0ZW1zLCBhbmQgZGV0ZXJtaW5pbmcgZmlsZSB0eXBlcywgZXRjLgoJICogQGNsYXNzIFJlcXVlc3RVdGlscwoJICovCgl2YXIgcyA9IHt9OwoKCS8qKgoJICogVGhlIFJlZ3VsYXIgRXhwcmVzc2lvbiB1c2VkIHRvIHRlc3QgZmlsZSBVUkxTIGZvciBhbiBhYnNvbHV0ZSBwYXRoLgoJICogQHByb3BlcnR5IEFCU09MVVRFX1BBVEgKCSAqIEB0eXBlIHtSZWdFeHB9CgkgKiBAc3RhdGljCgkgKi8KCXMuQUJTT0xVVEVfUEFUVCA9IC9eKD86XHcrOik/XC97Mn0vaTsKCgkvKioKCSAqIFRoZSBSZWd1bGFyIEV4cHJlc3Npb24gdXNlZCB0byB0ZXN0IGZpbGUgVVJMUyBmb3IgYSByZWxhdGl2ZSBwYXRoLgoJICogQHByb3BlcnR5IFJFTEFUSVZFX1BBVEgKCSAqIEB0eXBlIHtSZWdFeHB9CgkgKiBAc3RhdGljCgkgKi8KCXMuUkVMQVRJVkVfUEFUVCA9ICgvXlsuL10qP1wvL2kpOwoKCS8qKgoJICogVGhlIFJlZ3VsYXIgRXhwcmVzc2lvbiB1c2VkIHRvIHRlc3QgZmlsZSBVUkxTIGZvciBhbiBleHRlbnNpb24uIE5vdGUgdGhhdCBVUklzIG11c3QgYWxyZWFkeSBoYXZlIHRoZSBxdWVyeSBzdHJpbmcKCSAqIHJlbW92ZWQuCgkgKiBAcHJvcGVydHkgRVhURU5TSU9OX1BBVFQKCSAqIEB0eXBlIHtSZWdFeHB9CgkgKiBAc3RhdGljCgkgKi8KCXMuRVhURU5TSU9OX1BBVFQgPSAvXC8/W14vXStcLihcd3sxLDV9KSQvaTsKCgkvKioKCSAqIFBhcnNlIGEgZmlsZSBwYXRoIHRvIGRldGVybWluZSB0aGUgaW5mb3JtYXRpb24gd2UgbmVlZCB0byB3b3JrIHdpdGggaXQuIEN1cnJlbnRseSwgUHJlbG9hZEpTIG5lZWRzIHRvIGtub3c6CgkgKiA8dWw+CgkgKiAgICAgPGxpPklmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBBYnNvbHV0ZSBwYXRocyBzdGFydCB3aXRoIGEgcHJvdG9jb2wgKHN1Y2ggYXMgYGh0dHA6Ly9gLCBgZmlsZTovL2AsIG9yCgkgKiAgICAgYC8vbmV0d29ya1BhdGhgKTwvbGk+CgkgKiAgICAgPGxpPklmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLiBSZWxhdGl2ZSBwYXRocyBzdGFydCB3aXRoIGAuLi9gIG9yIGAvcGF0aGAgKG9yIHNpbWlsYXIpPC9saT4KCSAqICAgICA8bGk+VGhlIGZpbGUgZXh0ZW5zaW9uLiBUaGlzIGlzIGRldGVybWluZWQgYnkgdGhlIGZpbGVuYW1lIHdpdGggYW4gZXh0ZW5zaW9uLiBRdWVyeSBzdHJpbmdzIGFyZSBkcm9wcGVkLCBhbmQKCSAqICAgICB0aGUgZmlsZSBwYXRoIGlzIGV4cGVjdGVkIHRvIGZvbGxvdyB0aGUgZm9ybWF0IGBuYW1lLmV4dGAuPC9saT4KCSAqIDwvdWw+CgkgKiBAbWV0aG9kIHBhcnNlVVJJCgkgKiBAcGFyYW0ge1N0cmluZ30gcGF0aAoJICogQHJldHVybnMge09iamVjdH0gQW4gT2JqZWN0IHdpdGggYW4gYGFic29sdXRlYCBhbmQgYHJlbGF0aXZlYCBCb29sZWFuIHZhbHVlcywgYXMgd2VsbCBhcyBhbiBvcHRpb25hbCAnZXh0ZW5zaW9uYAoJICogcHJvcGVydHksIHdoaWNoIGlzIHRoZSBsb3dlcmNhc2UgZXh0ZW5zaW9uLgoJICogQHN0YXRpYwoJICovCglzLnBhcnNlVVJJID0gZnVuY3Rpb24gKHBhdGgpIHsKCQl2YXIgaW5mbyA9IHthYnNvbHV0ZTogZmFsc2UsIHJlbGF0aXZlOiBmYWxzZX07CgkJaWYgKHBhdGggPT0gbnVsbCkgeyByZXR1cm4gaW5mbzsgfQoKCQkvLyBEcm9wIHRoZSBxdWVyeSBzdHJpbmcKCQl2YXIgcXVlcnlJbmRleCA9IHBhdGguaW5kZXhPZigiPyIpOwoJCWlmIChxdWVyeUluZGV4ID4gLTEpIHsKCQkJcGF0aCA9IHBhdGguc3Vic3RyKDAsIHF1ZXJ5SW5kZXgpOwoJCX0KCgkJLy8gQWJzb2x1dGUKCQl2YXIgbWF0Y2g7CgkJaWYgKHMuQUJTT0xVVEVfUEFUVC50ZXN0KHBhdGgpKSB7CgkJCWluZm8uYWJzb2x1dGUgPSB0cnVlOwoKCQkJLy8gUmVsYXRpdmUKCQl9IGVsc2UgaWYgKHMuUkVMQVRJVkVfUEFUVC50ZXN0KHBhdGgpKSB7CgkJCWluZm8ucmVsYXRpdmUgPSB0cnVlOwoJCX0KCgkJLy8gRXh0ZW5zaW9uCgkJaWYgKG1hdGNoID0gcGF0aC5tYXRjaChzLkVYVEVOU0lPTl9QQVRUKSkgewoJCQlpbmZvLmV4dGVuc2lvbiA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7CgkJfQoJCXJldHVybiBpbmZvOwoJfTsKCgkvKioKCSAqIEZvcm1hdHMgYW4gb2JqZWN0IGludG8gYSBxdWVyeSBzdHJpbmcgZm9yIGVpdGhlciBhIFBPU1Qgb3IgR0VUIHJlcXVlc3QuCgkgKiBAbWV0aG9kIGZvcm1hdFF1ZXJ5U3RyaW5nCgkgKiBAcGFyYW0ge09iamVjdH0gZGF0YSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgcXVlcnkgc3RyaW5nLgoJICogQHBhcmFtIHtBcnJheX0gW3F1ZXJ5XSBFeGlzdGluZyBuYW1lL3ZhbHVlIHBhaXJzIHRvIGFwcGVuZCBvbiB0byB0aGlzIHF1ZXJ5LgoJICogQHN0YXRpYwoJICovCglzLmZvcm1hdFF1ZXJ5U3RyaW5nID0gZnVuY3Rpb24gKGRhdGEsIHF1ZXJ5KSB7CgkJaWYgKGRhdGEgPT0gbnVsbCkgewoJCQl0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHNwZWNpZnkgZGF0YS4nKTsKCQl9CgkJdmFyIHBhcmFtcyA9IFtdOwoJCWZvciAodmFyIG4gaW4gZGF0YSkgewoJCQlwYXJhbXMucHVzaChuICsgJz0nICsgZXNjYXBlKGRhdGFbbl0pKTsKCQl9CgkJaWYgKHF1ZXJ5KSB7CgkJCXBhcmFtcyA9IHBhcmFtcy5jb25jYXQocXVlcnkpOwoJCX0KCQlyZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTsKCX07CgoJLyoqCgkgKiBBIHV0aWxpdHkgbWV0aG9kIHRoYXQgYnVpbGRzIGEgZmlsZSBwYXRoIHVzaW5nIGEgc291cmNlIGFuZCBhIGRhdGEgb2JqZWN0LCBhbmQgZm9ybWF0cyBpdCBpbnRvIGEgbmV3IHBhdGguCgkgKiBAbWV0aG9kIGJ1aWxkUGF0aAoJICogQHBhcmFtIHtTdHJpbmd9IHNyYyBUaGUgc291cmNlIHBhdGggdG8gYWRkIHZhbHVlcyB0by4KCSAqIEBwYXJhbSB7T2JqZWN0fSBbZGF0YV0gT2JqZWN0IHVzZWQgdG8gYXBwZW5kIHZhbHVlcyB0byB0aGlzIHJlcXVlc3QgYXMgYSBxdWVyeSBzdHJpbmcuIEV4aXN0aW5nIHBhcmFtZXRlcnMgb24gdGhlCgkgKiBwYXRoIHdpbGwgYmUgcHJlc2VydmVkLgoJICogQHJldHVybnMge3N0cmluZ30gQSBmb3JtYXR0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHBhdGggYW5kIHRoZSBzdXBwbGllZCBwYXJhbWV0ZXJzLgoJICogQHN0YXRpYwoJICovCglzLmJ1aWxkUGF0aCA9IGZ1bmN0aW9uIChzcmMsIGRhdGEpIHsKCQlpZiAoZGF0YSA9PSBudWxsKSB7CgkJCXJldHVybiBzcmM7CgkJfQoKCQl2YXIgcXVlcnkgPSBbXTsKCQl2YXIgaWR4ID0gc3JjLmluZGV4T2YoJz8nKTsKCgkJaWYgKGlkeCAhPSAtMSkgewoJCQl2YXIgcSA9IHNyYy5zbGljZShpZHggKyAxKTsKCQkJcXVlcnkgPSBxdWVyeS5jb25jYXQocS5zcGxpdCgnJicpKTsKCQl9CgoJCWlmIChpZHggIT0gLTEpIHsKCQkJcmV0dXJuIHNyYy5zbGljZSgwLCBpZHgpICsgJz8nICsgdGhpcy5fZm9ybWF0UXVlcnlTdHJpbmcoZGF0YSwgcXVlcnkpOwoJCX0gZWxzZSB7CgkJCXJldHVybiBzcmMgKyAnPycgKyB0aGlzLl9mb3JtYXRRdWVyeVN0cmluZyhkYXRhLCBxdWVyeSk7CgkJfQoJfTsKCgkvKioKCSAqIEBtZXRob2QgaXNDcm9zc0RvbWFpbgoJICogQHBhcmFtIHtMb2FkSXRlbXxPYmplY3R9IGl0ZW0gQSBsb2FkIGl0ZW0gd2l0aCBhIGBzcmNgIHByb3BlcnR5LgoJICogQHJldHVybiB7Qm9vbGVhbn0gSWYgdGhlIGxvYWQgaXRlbSBpcyBsb2FkaW5nIGZyb20gYSBkaWZmZXJlbnQgZG9tYWluIHRoYW4gdGhlIGN1cnJlbnQgbG9jYXRpb24uCgkgKiBAc3RhdGljCgkgKi8KCXMuaXNDcm9zc0RvbWFpbiA9IGZ1bmN0aW9uIChpdGVtKSB7CgkJdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKCQl0YXJnZXQuaHJlZiA9IGl0ZW0uc3JjOwoKCQl2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKCQlob3N0LmhyZWYgPSBsb2NhdGlvbi5ocmVmOwoKCQl2YXIgY3Jvc3Nkb21haW4gPSAodGFyZ2V0Lmhvc3RuYW1lICE9ICIiKSAmJgoJCQkJCQkgICh0YXJnZXQucG9ydCAhPSBob3N0LnBvcnQgfHwKCQkJCQkJICAgdGFyZ2V0LnByb3RvY29sICE9IGhvc3QucHJvdG9jb2wgfHwKCQkJCQkJICAgdGFyZ2V0Lmhvc3RuYW1lICE9IGhvc3QuaG9zdG5hbWUpOwoJCXJldHVybiBjcm9zc2RvbWFpbjsKCX07CgoJLyoqCgkgKiBAbWV0aG9kIGlzTG9jYWwKCSAqIEBwYXJhbSB7TG9hZEl0ZW18T2JqZWN0fSBpdGVtIEEgbG9hZCBpdGVtIHdpdGggYSBgc3JjYCBwcm9wZXJ0eQoJICogQHJldHVybiB7Qm9vbGVhbn0gSWYgdGhlIGxvYWQgaXRlbSBpcyBsb2FkaW5nIGZyb20gdGhlICJmaWxlOiIgcHJvdG9jb2wuIEFzc3VtZSB0aGF0IHRoZSBob3N0IG11c3QgYmUgbG9jYWwgYXMKCSAqIHdlbGwuCgkgKiBAc3RhdGljCgkgKi8KCXMuaXNMb2NhbCA9IGZ1bmN0aW9uIChpdGVtKSB7CgkJdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKCQl0YXJnZXQuaHJlZiA9IGl0ZW0uc3JjOwoJCXJldHVybiB0YXJnZXQuaG9zdG5hbWUgPT0gIiIgJiYgdGFyZ2V0LnByb3RvY29sID09ICJmaWxlOiI7Cgl9OwoKCS8qKgoJICogRGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgdHlwZSBzaG91bGQgYmUgbG9hZGVkIGFzIGEgYmluYXJ5IGZpbGUuIEN1cnJlbnRseSwgb25seSBpbWFnZXMgYW5kIGl0ZW1zIG1hcmtlZAoJICogc3BlY2lmaWNhbGx5IGFzICJiaW5hcnkiIGFyZSBsb2FkZWQgYXMgYmluYXJ5LiBOb3RlIHRoYXQgYXVkaW8gaXMgPGI+bm90PC9iPiBhIGJpbmFyeSB0eXBlLCBhcyB3ZSBjYW4gbm90IHBsYXkKCSAqIGJhY2sgdXNpbmcgYW4gYXVkaW8gdGFnIGlmIGl0IGlzIGxvYWRlZCBhcyBiaW5hcnkuIFBsdWdpbnMgY2FuIGNoYW5nZSB0aGUgaXRlbSB0eXBlIHRvIGJpbmFyeSB0byBlbnN1cmUgdGhleSBnZXQKCSAqIGEgYmluYXJ5IHJlc3VsdCB0byB3b3JrIHdpdGguIEJpbmFyeSBmaWxlcyBhcmUgbG9hZGVkIHVzaW5nIFhIUjIuIFR5cGVzIGFyZSBkZWZpbmVkIGFzIHN0YXRpYyBjb25zdGFudHMgb24KCSAqIHt7I2Nyb3NzTGluayAiQWJzdHJhY3RMb2FkZXIifX17ey9jcm9zc0xpbmt9fS4KCSAqIEBtZXRob2QgaXNCaW5hcnkKCSAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBpdGVtIHR5cGUuCgkgKiBAcmV0dXJuIHtCb29sZWFufSBJZiB0aGUgc3BlY2lmaWVkIHR5cGUgaXMgYmluYXJ5LgoJICogQHN0YXRpYwoJICovCglzLmlzQmluYXJ5ID0gZnVuY3Rpb24gKHR5cGUpIHsKCQlzd2l0Y2ggKHR5cGUpIHsKCQkJY2FzZSBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5JTUFHRToKCQkJY2FzZSBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5CSU5BUlk6CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJZGVmYXVsdDoKCQkJCXJldHVybiBmYWxzZTsKCQl9Cgl9OwoKCS8qKgoJICogQ2hlY2sgaWYgaXRlbSBpcyBhIHZhbGlkIEhUTUxJbWFnZUVsZW1lbnQKCSAqIEBtZXRob2QgaXNJbWFnZVRhZwoJICogQHBhcmFtIHtPYmplY3R9IGl0ZW0KCSAqIEByZXR1cm5zIHtCb29sZWFufQoJICogQHN0YXRpYwoJICovCglzLmlzSW1hZ2VUYWcgPSBmdW5jdGlvbihpdGVtKSB7CgkJcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50OwoJfTsKCgkvKioKCSAqIENoZWNrIGlmIGl0ZW0gaXMgYSB2YWxpZCBIVE1MQXVkaW9FbGVtZW50CgkgKiBAbWV0aG9kIGlzQXVkaW9UYWcKCSAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtCgkgKiBAcmV0dXJucyB7Qm9vbGVhbn0KCSAqIEBzdGF0aWMKCSAqLwoJcy5pc0F1ZGlvVGFnID0gZnVuY3Rpb24oaXRlbSkgewoJCWlmICh3aW5kb3cuSFRNTEF1ZGlvRWxlbWVudCkgewoJCQlyZXR1cm4gaXRlbSBpbnN0YW5jZW9mIEhUTUxBdWRpb0VsZW1lbnQ7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX07CgoJLyoqCgkgKiBDaGVjayBpZiBpdGVtIGlzIGEgdmFsaWQgSFRNTFZpZGVvRWxlbWVudAoJICogQG1ldGhvZCBpc1ZpZGVvVGFnCgkgKiBAcGFyYW0ge09iamVjdH0gaXRlbQoJICogQHJldHVybnMge0Jvb2xlYW59CgkgKiBAc3RhdGljCgkgKi8KCXMuaXNWaWRlb1RhZyA9IGZ1bmN0aW9uKGl0ZW0pIHsKCQlpZiAod2luZG93LkhUTUxWaWRlb0VsZW1lbnQpIHsKCQkJcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50OwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9OwoKCS8qKgoJICogRGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgdHlwZSBpcyBhIHRleHQtYmFzZWQgYXNzZXQsIGFuZCBzaG91bGQgYmUgbG9hZGVkIGFzIFVURi04LgoJICogQG1ldGhvZCBpc1RleHQKCSAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBpdGVtIHR5cGUuCgkgKiBAcmV0dXJuIHtCb29sZWFufSBJZiB0aGUgc3BlY2lmaWVkIHR5cGUgaXMgdGV4dC4KCSAqIEBzdGF0aWMKCSAqLwoJcy5pc1RleHQgPSBmdW5jdGlvbiAodHlwZSkgewoJCXN3aXRjaCAodHlwZSkgewoJCQljYXNlIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlRFWFQ6CgkJCWNhc2UgY3JlYXRlanMuQWJzdHJhY3RMb2FkZXIuSlNPTjoKCQkJY2FzZSBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5NQU5JRkVTVDoKCQkJY2FzZSBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5YTUw6CgkJCWNhc2UgY3JlYXRlanMuQWJzdHJhY3RMb2FkZXIuQ1NTOgoJCQljYXNlIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlNWRzoKCQkJY2FzZSBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5KQVZBU0NSSVBUOgoJCQljYXNlIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlNQUklURVNIRUVUOgoJCQkJcmV0dXJuIHRydWU7CgkJCWRlZmF1bHQ6CgkJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfTsKCgkvKioKCSAqIERldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHVzaW5nIGNvbW1vbiBleHRlbnNpb25zLiBOb3RlIHRoYXQgdGhlIHR5cGUgY2FuIGJlIHBhc3NlZCBpbiB3aXRoIHRoZSBsb2FkIGl0ZW0KCSAqIGlmIGl0IGlzIGFuIHVudXN1YWwgZXh0ZW5zaW9uLgoJICogQG1ldGhvZCBnZXRUeXBlQnlFeHRlbnNpb24KCSAqIEBwYXJhbSB7U3RyaW5nfSBleHRlbnNpb24gVGhlIGZpbGUgZXh0ZW5zaW9uIHRvIHVzZSB0byBkZXRlcm1pbmUgdGhlIGxvYWQgdHlwZS4KCSAqIEByZXR1cm4ge1N0cmluZ30gVGhlIGRldGVybWluZWQgbG9hZCB0eXBlIChmb3IgZXhhbXBsZSwgPGNvZGU+QWJzdHJhY3RMb2FkZXIuSU1BR0U8L2NvZGU+KS4gV2lsbCByZXR1cm4gYG51bGxgIGlmCgkgKiB0aGUgdHlwZSBjYW4gbm90IGJlIGRldGVybWluZWQgYnkgdGhlIGV4dGVuc2lvbi4KCSAqIEBzdGF0aWMKCSAqLwoJcy5nZXRUeXBlQnlFeHRlbnNpb24gPSBmdW5jdGlvbiAoZXh0ZW5zaW9uKSB7CgkJaWYgKGV4dGVuc2lvbiA9PSBudWxsKSB7CgkJCXJldHVybiBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5URVhUOwoJCX0KCgkJc3dpdGNoIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSkgewoJCQljYXNlICJqcGVnIjoKCQkJY2FzZSAianBnIjoKCQkJY2FzZSAiZ2lmIjoKCQkJY2FzZSAicG5nIjoKCQkJY2FzZSAid2VicCI6CgkJCWNhc2UgImJtcCI6CgkJCQlyZXR1cm4gY3JlYXRlanMuQWJzdHJhY3RMb2FkZXIuSU1BR0U7CgkJCWNhc2UgIm9nZyI6CgkJCWNhc2UgIm1wMyI6CgkJCWNhc2UgIndlYm0iOgoJCQkJcmV0dXJuIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlNPVU5EOwoJCQljYXNlICJtcDQiOgoJCQljYXNlICJ3ZWJtIjoKCQkJY2FzZSAidHMiOgoJCQkJcmV0dXJuIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlZJREVPOwoJCQljYXNlICJqc29uIjoKCQkJCXJldHVybiBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5KU09OOwoJCQljYXNlICJ4bWwiOgoJCQkJcmV0dXJuIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlhNTDsKCQkJY2FzZSAiY3NzIjoKCQkJCXJldHVybiBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5DU1M7CgkJCWNhc2UgImpzIjoKCQkJCXJldHVybiBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5KQVZBU0NSSVBUOwoJCQljYXNlICdzdmcnOgoJCQkJcmV0dXJuIGNyZWF0ZWpzLkFic3RyYWN0TG9hZGVyLlNWRzsKCQkJZGVmYXVsdDoKCQkJCXJldHVybiBjcmVhdGVqcy5BYnN0cmFjdExvYWRlci5URVhUOwoJCX0KCX07CgoJY3JlYXRlanMuUmVxdWVzdFV0aWxzID0gczsKCn0oKSk7Cg==//