| Server IP : 82.208.35.60 / Your IP : 216.73.216.89 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/ |
Upload File : |
/*! For license information please see themes.bundle.js.LICENSE.txt */
(()=>{var e={47413:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={multiStoreRestrictionCheckbox:".js-multi-store-restriction-checkbox",multiStoreRestrictionSwitch:".js-multi-store-restriction-switch"}},90857:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(r(99663)),o=i(r(22600)),u=i(r(47413));function i(e){return e&&e.__esModule?e:{default:e}}var a=window.$,c=function(){function e(){var t=this;(0,n.default)(this,e),a(document).on("change",u.default.multiStoreRestrictionCheckbox,(function(e){return t.multiStoreRestrictionCheckboxFieldChangeEvent(e)})),a(document).on("change",u.default.multiStoreRestrictionSwitch,(function(e){return t.multiStoreRestrictionSwitchFieldChangeEvent(e)}))}return(0,o.default)(e,[{key:"multiStoreRestrictionCheckboxFieldChangeEvent",value:function(e){var t=a(e.currentTarget);this.toggleSourceFieldByTargetElement(t,!t.is(":checked"))}},{key:"multiStoreRestrictionSwitchFieldChangeEvent",value:function(e){var t=this,r=a(e.currentTarget),n=1===parseInt(r.val(),10),o=r.data("targetFormName");a('form[name="'+o+'"]').find(u.default.multiStoreRestrictionCheckbox).each((function(e,r){var o=a(r);o.prop("checked",n),t.toggleSourceFieldByTargetElement(o,!n)}))}},{key:"toggleSourceFieldByTargetElement",value:function(e,t){var r=e.data("shopRestrictionTarget"),n=a('[data-shop-restriction-source="'+r+'"]');n.prop("disabled",t),n.toggleClass("disabled",t)}}]),e}();t.default=c},76413:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=u(r(99663)),o=u(r(22600));function u(e){return e&&e.__esModule?e:{default:e}}var i=window.$,a=function(){function e(){var t=this;(0,n.default)(this,e),i(document).on("click",".js-display-delete-theme-modal",(function(e){return t.displayDeleteThemeModal(e)}))}return(0,o.default)(e,[{key:"displayDeleteThemeModal",value:function(e){var t=i("#delete_theme_modal");t.modal("show"),this.submitForm(t,e)}},{key:"submitForm",value:function(e,t){var r=i(t.currentTarget);e.on("click",".js-submit-delete-theme",(function(){r.closest("form").submit()}))}}]),e}();t.default=a},76881:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=u(r(99663)),o=u(r(22600));function u(e){return e&&e.__esModule?e:{default:e}}var i=window.$,a=function(){function e(){var t=this;return(0,n.default)(this,e),i(document).on("click",".js-reset-theme-layouts-btn",(function(e){return t.handleResetting(e)})),{}}return(0,o.default)(e,[{key:"handleResetting",value:function(e){var t=i(e.currentTarget),r=i("<form>",{action:t.data("submit-url"),method:"POST"}).append(i("<input>",{name:"token",value:t.data("csrf-token"),type:"hidden"}));r.appendTo("body"),r.submit()}}]),e}();t.default=a},12087:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=u(r(99663)),o=u(r(22600));function u(e){return e&&e.__esModule?e:{default:e}}var i=window.$,a=function(){function e(){var t=this;(0,n.default)(this,e),i(document).on("click",".js-display-use-theme-modal",(function(e){return t.displayUseThemeModal(e)}))}return(0,o.default)(e,[{key:"displayUseThemeModal",value:function(e){var t=i("#use_theme_modal");t.modal("show"),this.submitForm(t,e)}},{key:"submitForm",value:function(e,t){var r=i(t.currentTarget);e.on("click",".js-submit-use-theme",(function(){r.closest("form").submit()}))}}]),e}();t.default=a},32242:(e,t,r)=>{e.exports={default:r(33391),__esModule:!0}},99663:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},22600:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=(n=r(32242))&&n.__esModule?n:{default:n};t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,o.default)(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}()},33391:(e,t,r)=>{r(31477);var n=r(34579).Object;e.exports=function(e,t,r){return n.defineProperty(e,t,r)}},85663:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},12159:(e,t,r)=>{var n=r(36727);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},34579:e=>{var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},19216:(e,t,r)=>{var n=r(85663);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},89666:(e,t,r)=>{e.exports=!r(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(e,t,r)=>{var n=r(36727),o=r(33938).document,u=n(o)&&n(o.createElement);e.exports=function(e){return u?o.createElement(e):{}}},83856:(e,t,r)=>{var n=r(33938),o=r(34579),u=r(19216),i=r(41818),a=r(27069),c=function(e,t,r){var l,s,f,d=e&c.F,p=e&c.G,v=e&c.S,h=e&c.P,m=e&c.B,y=e&c.W,w=p?o:o[t]||(o[t]={}),b=w.prototype,_=p?n:v?n[t]:(n[t]||{}).prototype;for(l in p&&(r=t),r)(s=!d&&_&&void 0!==_[l])&&a(w,l)||(f=s?_[l]:r[l],w[l]=p&&"function"!=typeof _[l]?r[l]:m&&s?u(f,n):y&&_[l]==f?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):h&&"function"==typeof f?u(Function.call,f):f,h&&((w.virtual||(w.virtual={}))[l]=f,e&c.R&&b&&!b[l]&&i(b,l,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},7929:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},33938:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},27069:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},41818:(e,t,r)=>{var n=r(4743),o=r(83101);e.exports=r(89666)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},33758:(e,t,r)=>{e.exports=!r(89666)&&!r(7929)((function(){return 7!=Object.defineProperty(r(97467)("div"),"a",{get:function(){return 7}}).a}))},36727:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},4743:(e,t,r)=>{var n=r(12159),o=r(33758),u=r(33206),i=Object.defineProperty;t.f=r(89666)?Object.defineProperty:function(e,t,r){if(n(e),t=u(t,!0),n(r),o)try{return i(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},83101:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},33206:(e,t,r)=>{var n=r(36727);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},31477:(e,t,r)=>{var n=r(83856);n(n.S+n.F*!r(89666),"Object",{defineProperty:r(4743).f})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}(()=>{"use strict";var e=u(r(76881)),t=u(r(12087)),n=u(r(90857)),o=u(r(76413));function u(e){return e&&e.__esModule?e:{default:e}}(0,window.$)((function(){new e.default,new n.default,new t.default,new o.default}))})(),window.themes={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL211bHRpLXN0b3JlLXJlc3RyaWN0aW9uLWZpZWxkL211bHRpLXN0b3JlLXJlc3RyaWN0aW9uLWZpZWxkLW1hcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL211bHRpLXN0b3JlLXJlc3RyaWN0aW9uLWZpZWxkL211bHRpLXN0b3JlLXJlc3RyaWN0aW9uLWZpZWxkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL3RoZW1lcy9kZWxldGUtdGhlbWUtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy90aGVtZXMvcmVzZXQtdGhlbWUtbGF5b3V0cy1oYW5kbGVyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL3RoZW1lcy91c2UtdGhlbWUtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvdGhlbWVzL2luZGV4LmpzIl0sIm5hbWVzIjpbIm11bHRpU3RvcmVSZXN0cmljdGlvbkNoZWNrYm94IiwibXVsdGlTdG9yZVJlc3RyaWN0aW9uU3dpdGNoIiwiJCIsIndpbmRvdyIsIk11bHRpU3RvcmVSZXN0cmljdGlvbkZpZWxkIiwiZG9jdW1lbnQiLCJvbiIsIm11bHRpU3RvcmVSZXN0cmljdGlvbkZpZWxkTWFwIiwiZSIsIm11bHRpU3RvcmVSZXN0cmljdGlvbkNoZWNrYm94RmllbGRDaGFuZ2VFdmVudCIsIm11bHRpU3RvcmVSZXN0cmljdGlvblN3aXRjaEZpZWxkQ2hhbmdlRXZlbnQiLCIkY3VycmVudEl0ZW0iLCJjdXJyZW50VGFyZ2V0IiwidGhpcyIsInRvZ2dsZVNvdXJjZUZpZWxkQnlUYXJnZXRFbGVtZW50IiwiaXMiLCJpc1NlbGVjdGVkIiwicGFyc2VJbnQiLCJ2YWwiLCJ0YXJnZXRGb3JtTmFtZSIsImRhdGEiLCJmaW5kIiwiZWFjaCIsImluZGV4IiwiZWwiLCIkZWwiLCJwcm9wIiwiJHRhcmdldEVsZW1lbnQiLCJpc0Rpc2FibGVkIiwidGFyZ2V0VmFsdWUiLCIkc291cmNlRmllbGRTZWxlY3RvciIsInRvZ2dsZUNsYXNzIiwiRGVsZXRlVGhlbWVIYW5kbGVyIiwiZGlzcGxheURlbGV0ZVRoZW1lTW9kYWwiLCIkbW9kYWwiLCJtb2RhbCIsInN1Ym1pdEZvcm0iLCJvcmlnaW5hbEJ1dHRvbkV2ZW50IiwiJGZvcm1CdXR0b24iLCJjbG9zZXN0Iiwic3VibWl0IiwiUmVzZXRUaGVtZUxheW91dHNIYW5kbGVyIiwiaGFuZGxlUmVzZXR0aW5nIiwiZXZlbnQiLCIkYnRuIiwiJGZvcm0iLCJhY3Rpb24iLCJtZXRob2QiLCJhcHBlbmQiLCJuYW1lIiwidmFsdWUiLCJ0eXBlIiwiYXBwZW5kVG8iLCJVc2VUaGVtZUhhbmRsZXIiLCJkaXNwbGF5VXNlVGhlbWVNb2RhbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJvYmoiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImxlbmd0aCIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJrZXkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJwcm90b3R5cGUiLCIkT2JqZWN0IiwiaXQiLCJkZXNjIiwiZGVmaW5lUHJvcGVydHkiLCJpc09iamVjdCIsImNvcmUiLCJ2ZXJzaW9uIiwiX19lIiwiYUZ1bmN0aW9uIiwiZm4iLCJ0aGF0IiwidW5kZWZpbmVkIiwiYSIsImNhbGwiLCJiIiwiYyIsImFwcGx5IiwiYXJndW1lbnRzIiwiT2JqZWN0IiwiZ2V0IiwiY3JlYXRlRWxlbWVudCIsImdsb2JhbCIsImN0eCIsImhpZGUiLCJoYXMiLCIkZXhwb3J0Iiwic291cmNlIiwib3duIiwib3V0IiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJQIiwiSVNfQklORCIsIkIiLCJJU19XUkFQIiwiVyIsImV4cFByb3RvIiwiQyIsIkZ1bmN0aW9uIiwidmlydHVhbCIsIlIiLCJVIiwiZXhlYyIsIk1hdGgiLCJzZWxmIiwiX19nIiwiaGFzT3duUHJvcGVydHkiLCJkUCIsImNyZWF0ZURlc2MiLCJvYmplY3QiLCJmIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiTyIsIkF0dHJpYnV0ZXMiLCJiaXRtYXAiLCJ0b1N0cmluZyIsInZhbHVlT2YiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIl0sIm1hcHBpbmdzIjoiO21HQTRCZSxDQUNiQSw4QkFBK0IsdUNBQy9CQyw0QkFBNkIsdUMsa0hDTC9CLFUsdURBRU9DLEVBQUtDLE9BQUxELEVBS2NFLEUsV0FDbkIsYUFBYyxpQ0FDWkYsRUFBRUcsVUFBVUMsR0FDVixTQUNBQyxVQUE4QlAsK0JBQzlCLFNBQUNRLEdBQUQsT0FBTyxFQUFLQyw4Q0FBOENELE1BRzVETixFQUFFRyxVQUFVQyxHQUNWLFNBQ0FDLFVBQThCTiw2QkFDOUIsU0FBQ08sR0FBRCxPQUFPLEVBQUtFLDRDQUE0Q0YsTSwyRkFVZEEsR0FDNUMsSUFBTUcsRUFBZVQsRUFBRU0sRUFBRUksZUFFekJDLEtBQUtDLGlDQUFpQ0gsR0FBZUEsRUFBYUksR0FBRyxlLGtFQVUzQlAsR0FBRyxXQUN2Q0csRUFBZVQsRUFBRU0sRUFBRUksZUFDbkJJLEVBQWtELElBQXJDQyxTQUFTTixFQUFhTyxNQUFPLElBQzFDQyxFQUFpQlIsRUFBYVMsS0FBSyxrQkFFekNsQixnQkFBZ0JpQixFQUFoQixNQUNHRSxLQUFLZCxVQUE4QlAsK0JBQ25Dc0IsTUFBSyxTQUFDQyxFQUFPQyxHQUNaLElBQU1DLEVBQU12QixFQUFFc0IsR0FDZEMsRUFBSUMsS0FBSyxVQUFXVixHQUNwQixFQUFLRixpQ0FBaUNXLEdBQU1ULFEsdURBYWpCVyxFQUFnQkMsR0FDL0MsSUFBTUMsRUFBY0YsRUFBZVAsS0FBSyx5QkFDbENVLEVBQXVCNUIsRUFBRSxrQ0FBa0MyQixFQUFwQyxNQUM3QkMsRUFBcUJKLEtBQUssV0FBWUUsR0FDdENFLEVBQXFCQyxZQUFZLFdBQVlILE8sZUE3RDVCeEIsRyxxS0NQZEYsRUFBS0MsT0FBTEQsRUFLYzhCLEUsV0FDbkIsYUFBYyxpQ0FDWjlCLEVBQUVHLFVBQVVDLEdBQUcs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LDZDLGdCQ1ZsQixJQUFJeUMsRUFBVSxFQUFRLE9BRXRCQSxFQUFRQSxFQUFRUyxFQUFJVCxFQUFRSyxHQUFLLEVBQVEsT0FBbUIsU0FBVSxDQUFFM0IsZUFBZ0IsY0NEcEY2RCxFQUEyQixHQUcvQixTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCdkQsSUFBakJ3RCxFQUNILE9BQU9BLEVBQWF4RixRQUdyQixJQUFJRCxFQUFTc0YsRUFBeUJFLEdBQVksQ0FHakR2RixRQUFTLElBT1YsT0FIQXlGLEVBQW9CRixHQUFVeEYsRUFBUUEsRUFBT0MsUUFBU3NGLEdBRy9DdkYsRUFBT0MsUSxtQkNHZixJLElBQUEsVSxJQUNBLFUsSUFDQSxVLElBQ0EsVSxvREFJQXRELEVBRllDLE9BQUxELElBRUwsV0FDQSxJQUFJdUMsVUFDSixJQUFJckMsVUFDSixJQUFJaUQsVUFDSixJQUFJckIsYyIsImZpbGUiOiJ0aGVtZXMuYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBzZWxlY3RvcnMgZm9yIG11bHRpIHN0b3JlIHJlc3RyaWN0aW9uIGNvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIG11bHRpU3RvcmVSZXN0cmljdGlvbkNoZWNrYm94OiAnLmpzLW11bHRpLXN0b3JlLXJlc3RyaWN0aW9uLWNoZWNrYm94JyxcbiAgbXVsdGlTdG9yZVJlc3RyaWN0aW9uU3dpdGNoOiAnLmpzLW11bHRpLXN0b3JlLXJlc3RyaWN0aW9uLXN3aXRjaCcsXG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgbXVsdGlTdG9yZVJlc3RyaWN0aW9uRmllbGRNYXAgZnJvbSAnLi9tdWx0aS1zdG9yZS1yZXN0cmljdGlvbi1maWVsZC1tYXAnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogRW5hYmxlcyBtdWx0aSBzdG9yZSBmdW5jdGlvbmFsaXR5IGZvciB0aGUgcGFnZS4gSXQgaW5jbHVkZXMgc3dpdGNoIGZ1bmN0aW9uYWxpdHkgYW5kIGNoZWNrYm94ZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlTdG9yZVJlc3RyaWN0aW9uRmllbGQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAkKGRvY3VtZW50KS5vbihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgbXVsdGlTdG9yZVJlc3RyaWN0aW9uRmllbGRNYXAubXVsdGlTdG9yZVJlc3RyaWN0aW9uQ2hlY2tib3gsXG4gICAgICAoZSkgPT4gdGhpcy5tdWx0aVN0b3JlUmVzdHJpY3Rpb25DaGVja2JveEZpZWxkQ2hhbmdlRXZlbnQoZSksXG4gICAgKTtcblxuICAgICQoZG9jdW1lbnQpLm9uKFxuICAgICAgJ2NoYW5nZScsXG4gICAgICBtdWx0aVN0b3JlUmVzdHJpY3Rpb25GaWVsZE1hcC5tdWx0aVN0b3JlUmVzdHJpY3Rpb25Td2l0Y2gsXG4gICAgICAoZSkgPT4gdGhpcy5tdWx0aVN0b3JlUmVzdHJpY3Rpb25Td2l0Y2hGaWVsZENoYW5nZUV2ZW50KGUpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY2hlY2tib3ggZmllbGQgYW5kIGVuYWJsZXMgb3IgZGlzYWJsZXMgaXRzIHJlbGF0ZWQgZmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG11bHRpU3RvcmVSZXN0cmljdGlvbkNoZWNrYm94RmllbGRDaGFuZ2VFdmVudChlKSB7XG4gICAgY29uc3QgJGN1cnJlbnRJdGVtID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuXG4gICAgdGhpcy50b2dnbGVTb3VyY2VGaWVsZEJ5VGFyZ2V0RWxlbWVudCgkY3VycmVudEl0ZW0sICEkY3VycmVudEl0ZW0uaXMoJzpjaGVja2VkJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hc3MgdXBkYXRlcyBtdWx0aS1zdG9yZSBjaGVja2JveCBmaWVsZHMgLSBpdCBlbmFibGVzIG9yIGRpc2FibGVkIHRoZSBzd2l0Y2ggYW5kIGFmdGVyIHRoYXRcbiAgICogaXQgY2FsbHMgdGhlIGZ1bmN0aW9uXG4gICAqIHdoaWNoIGhhbmRsZXMgdGhlIHRvZ2dsZSB1cGRhdGUgcmVsYXRlZCBmb3JtIGZpZWxkIGJ5IGl0cyBjdXJyZW50IHN0YXRlLlxuICAgKiBAcGFyYW0ge0V2ZW50fSBlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBtdWx0aVN0b3JlUmVzdHJpY3Rpb25Td2l0Y2hGaWVsZENoYW5nZUV2ZW50KGUpIHtcbiAgICBjb25zdCAkY3VycmVudEl0ZW0gPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHBhcnNlSW50KCRjdXJyZW50SXRlbS52YWwoKSwgMTApID09PSAxO1xuICAgIGNvbnN0IHRhcmdldEZvcm1OYW1lID0gJGN1cnJlbnRJdGVtLmRhdGEoJ3RhcmdldEZvcm1OYW1lJyk7XG5cbiAgICAkKGBmb3JtW25hbWU9XCIke3RhcmdldEZvcm1OYW1lfVwiXWApXG4gICAgICAuZmluZChtdWx0aVN0b3JlUmVzdHJpY3Rpb25GaWVsZE1hcC5tdWx0aVN0b3JlUmVzdHJpY3Rpb25DaGVja2JveClcbiAgICAgIC5lYWNoKChpbmRleCwgZWwpID0+IHtcbiAgICAgICAgY29uc3QgJGVsID0gJChlbCk7XG4gICAgICAgICRlbC5wcm9wKCdjaGVja2VkJywgaXNTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMudG9nZ2xlU291cmNlRmllbGRCeVRhcmdldEVsZW1lbnQoJGVsLCAhaXNTZWxlY3RlZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHJlbGF0ZWQgZm9ybSBmaWVsZHMgc3RhdGUgdG8gZGlzYWJsZWQgb3IgZW5hYmxlZC5cbiAgICogSXQgYWxzbyB0b2dnbGVzIGNsYXNzIGRpc2FibGVkIHNpbmNlIGZvciBzb21lIGZpZWxkc1xuICAgKiB0aGlzIGNsYXNzIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbmF0aXZlIGRpc2FibGVkIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtqcXVlcnl9ICR0YXJnZXRFbGVtZW50XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXNhYmxlZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdG9nZ2xlU291cmNlRmllbGRCeVRhcmdldEVsZW1lbnQoJHRhcmdldEVsZW1lbnQsIGlzRGlzYWJsZWQpIHtcbiAgICBjb25zdCB0YXJnZXRWYWx1ZSA9ICR0YXJnZXRFbGVtZW50LmRhdGEoJ3Nob3BSZXN0cmljdGlvblRhcmdldCcpO1xuICAgIGNvbnN0ICRzb3VyY2VGaWVsZFNlbGVjdG9yID0gJChgW2RhdGEtc2hvcC1yZXN0cmljdGlvbi1zb3VyY2U9XCIke3RhcmdldFZhbHVlfVwiXWApO1xuICAgICRzb3VyY2VGaWVsZFNlbGVjdG9yLnByb3AoJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gICAgJHNvdXJjZUZpZWxkU2VsZWN0b3IudG9nZ2xlQ2xhc3MoJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRoaXMgaGFuZGxlciBkaXNwbGF5cyBkZWxldGUgdGhlbWUgbW9kYWwgYW5kIGhhbmRsZXMgdGhlIHN1Ym1pdCBhY3Rpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZVRoZW1lSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuanMtZGlzcGxheS1kZWxldGUtdGhlbWUtbW9kYWwnLCAoZSkgPT4gdGhpcy5kaXNwbGF5RGVsZXRlVGhlbWVNb2RhbChlKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgbW9kYWwgd2l0aCBpdHMgb3duIGV2ZW50IGhhbmRsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGlzcGxheURlbGV0ZVRoZW1lTW9kYWwoZSkge1xuICAgIGNvbnN0ICRtb2RhbCA9ICQoJyNkZWxldGVfdGhlbWVfbW9kYWwnKTtcblxuICAgICRtb2RhbC5tb2RhbCgnc2hvdycpO1xuXG4gICAgdGhpcy5zdWJtaXRGb3JtKCRtb2RhbCwgZSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0cyBmb3JtIGJ5IGFkZGluZyBjbGljayBldmVudCBsaXN0ZW5lciBmb3IgbW9kYWwgYW5kIGNhbGxpbmcgb3JpZ2luYWwgZm9ybSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtICRtb2RhbFxuICAgKiBAcGFyYW0gb3JpZ2luYWxCdXR0b25FdmVudFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3VibWl0Rm9ybSgkbW9kYWwsIG9yaWdpbmFsQnV0dG9uRXZlbnQpIHtcbiAgICBjb25zdCAkZm9ybUJ1dHRvbiA9ICQob3JpZ2luYWxCdXR0b25FdmVudC5jdXJyZW50VGFyZ2V0KTtcblxuICAgICRtb2RhbC5vbignY2xpY2snLCAnLmpzLXN1Ym1pdC1kZWxldGUtdGhlbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCAkZm9ybSA9ICRmb3JtQnV0dG9uLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICAgICRmb3JtLnN1Ym1pdCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBIYW5kbGVzIFwiUmVzZXQgdG8gZGVmYXVsdHNcIiBhY3Rpb24gc3VibWl0dGluZyBvbiBidXR0b24gY2xpY2suXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc2V0VGhlbWVMYXlvdXRzSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuanMtcmVzZXQtdGhlbWUtbGF5b3V0cy1idG4nLCAoZSkgPT4gdGhpcy5oYW5kbGVSZXNldHRpbmcoZSkpO1xuXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBoYW5kbGVSZXNldHRpbmcoZXZlbnQpIHtcbiAgICBjb25zdCAkYnRuID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcblxuICAgIGNvbnN0ICRmb3JtID0gJCgnPGZvcm0+Jywge1xuICAgICAgYWN0aW9uOiAkYnRuLmRhdGEoJ3N1Ym1pdC11cmwnKSxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pLmFwcGVuZCgkKCc8aW5wdXQ+Jywge1xuICAgICAgbmFtZTogJ3Rva2VuJyxcbiAgICAgIHZhbHVlOiAkYnRuLmRhdGEoJ2NzcmYtdG9rZW4nKSxcbiAgICAgIHR5cGU6ICdoaWRkZW4nLFxuICAgIH0pKTtcblxuICAgICRmb3JtLmFwcGVuZFRvKCdib2R5Jyk7XG4gICAgJGZvcm0uc3VibWl0KCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRoaXMgaGFuZGxlciBkaXNwbGF5cyB1c2UgdGhlbWUgbW9kYWwgYW5kIGhhbmRsZXMgdGhlIHN1Ym1pdCBmb3JtIGxvZ2ljLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVc2VUaGVtZUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmpzLWRpc3BsYXktdXNlLXRoZW1lLW1vZGFsJywgKGUpID0+IHRoaXMuZGlzcGxheVVzZVRoZW1lTW9kYWwoZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIG1vZGFsIHdpdGggaXRzIG93biBldmVudCBoYW5kbGluZy5cbiAgICpcbiAgICogQHBhcmFtIGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRpc3BsYXlVc2VUaGVtZU1vZGFsKGUpIHtcbiAgICBjb25zdCAkbW9kYWwgPSAkKCcjdXNlX3RoZW1lX21vZGFsJyk7XG5cbiAgICAkbW9kYWwubW9kYWwoJ3Nob3cnKTtcblxuICAgIHRoaXMuc3VibWl0Rm9ybSgkbW9kYWwsIGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgZm9ybSBieSBhZGRpbmcgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIG1vZGFsIGFuZCBjYWxsaW5nIG9yaWdpbmFsIGZvcm0gZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSAkbW9kYWxcbiAgICogQHBhcmFtIG9yaWdpbmFsQnV0dG9uRXZlbnRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN1Ym1pdEZvcm0oJG1vZGFsLCBvcmlnaW5hbEJ1dHRvbkV2ZW50KSB7XG4gICAgY29uc3QgJGZvcm1CdXR0b24gPSAkKG9yaWdpbmFsQnV0dG9uRXZlbnQuY3VycmVudFRhcmdldCk7XG5cbiAgICAkbW9kYWwub24oJ2NsaWNrJywgJy5qcy1zdWJtaXQtdXNlLXRoZW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgJGZvcm0gPSAkZm9ybUJ1dHRvbi5jbG9zZXN0KCdmb3JtJyk7XG4gICAgICAkZm9ybS5zdWJtaXQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTEnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgUmVzZXRUaGVtZUxheW91dHNIYW5kbGVyIGZyb20gJy4vcmVzZXQtdGhlbWUtbGF5b3V0cy1oYW5kbGVyJztcbmltcG9ydCBVc2VUaGVtZUhhbmRsZXIgZnJvbSAnLi91c2UtdGhlbWUtaGFuZGxlcic7XG5pbXBvcnQgTXVsdGlTdG9yZVJlc3RyaWN0aW9uRmllbGQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tdWx0aS1zdG9yZS1yZXN0cmljdGlvbi1maWVsZC9tdWx0aS1zdG9yZS1yZXN0cmljdGlvbi1maWVsZCc7XG5pbXBvcnQgRGVsZXRlVGhlbWVIYW5kbGVyIGZyb20gJy4vZGVsZXRlLXRoZW1lLWhhbmRsZXInO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbiQoKCkgPT4ge1xuICBuZXcgUmVzZXRUaGVtZUxheW91dHNIYW5kbGVyKCk7XG4gIG5ldyBNdWx0aVN0b3JlUmVzdHJpY3Rpb25GaWVsZCgpO1xuICBuZXcgVXNlVGhlbWVIYW5kbGVyKCk7XG4gIG5ldyBEZWxldGVUaGVtZUhhbmRsZXIoKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==