/**
 * Skipped minification because the original files appears to be already minified.
 * Original file: /npm/angular-extends@0.3.2/dist/angular-extends.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n(require("angular"));else if("function"==typeof define&&define.amd)define(["angular"],n);else{var e="object"==typeof exports?n(require("angular")):n(t.angular);for(var r in e)("object"==typeof exports?exports:t)[r]=e[r]}}(window,(function(t){return r={},n.m=e=[function(t,n,e){"use strict";e.r(n);var r=e(1),i=e.n(r);if(!i.a)throw new Error("Angular.extends requires a AngularJS");n.default=i.a},function(n,e){n.exports=t},function(t,n,e){"use strict";e.r(n),function(t){if(!t.document)throw new Error("Angular.extends requires a window with a document");n.default=t}.call(this,e(14))},function(t,n,e){"use strict";e.r(n),function(t){e(4),e(5),e(6),e(7),e(8),e(9),e(10),e(11),e(12),e(13),e(15),t.module("ngExtends.directives",["ngExtends.directives.countTo","ngExtends.directives.domInit","ngExtends.directives.focusMe","ngExtends.directives.lower","ngExtends.directives.repeatDone","ngExtends.directives.rotate2d","ngExtends.directives.upper"]),t.module("ngExtends.filters",["ngExtends.filters.arrays","ngExtends.filters.strings"]),t.module("ngExtends.services",["ngExtends.services.playRoutes","ngExtends.services.searchForm"]),t.module("ngExtends",["ngExtends.directives","ngExtends.filters","ngExtends.services"])}.call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.countTo",[]).directive("exCountTo",["$timeout",function(t){return{replace:!1,scope:!0,link:function(n,e,r){var i,o,u,s,c,l,f,a,d,p;u=e[0],s=o=a=d=l=c=null,i=function(){var t;l=30,a=0,n.timoutId=null,o=parseInt(r.exCountTo)||0,n.value=parseInt(r.value,10)||0,t=1e3*parseFloat(r.duration)||0,d=Math.ceil(t/l),s=(o-n.value)/d,c=n.value},p=function(){n.timoutId=t((function(){return c+=s,d<=++a?(t.cancel(n.timoutId),c=o,u.textContent=o):(u.textContent=Math.round(c),p())}),l)},f=function(){null!=n.timoutId&&t.cancel(n.timoutId),i(),p()},r.$observe("exCountTo",(function(t){if(null!=t)return f()})),r.$observe("value",(function(){return f()}))}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.domInit",[]).directive("exDomInit",[function(){return{restrict:"A",link:function(t,n,e){e.$observe("exDomInit",(function(e){var r;return"function"==typeof(r=t.$eval(e))?r(n):void 0}))}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.focusMe",[]).directive("exFocusMe",[function(){return{scope:{trigger:"=exFocusMe"},link:function(t,n){t.$watch("trigger",(function(e){var r,i;"boolean"==typeof e&&("function"==typeof(r=n[0])[i=e?"focus":"blur"]&&r[i](),t.trigger=null)}))}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.lower",[]).directive("exLower",[function(){return{require:"ngModel",link:function(t,n,e,r){var i;i=function(t){var e,i,o,u;return(o=t?t.toLowerCase():t)!==t&&(u=(e=n[0]).selectionStart,i=e.selectionEnd,r.$setViewValue(o),r.$render(),"function"==typeof e.setSelectionRange&&e.setSelectionRange(u,i)),o},r.$parsers.push(i),i(t[e.ngModel])}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.repeatDone",[]).directive("exRepeatDone",[function(){return{restrict:"A",link:function(t,n,e){null==e.ngRepeat&&null==e.ngRepeatStart||!t.$last||e.$observe("exRepeatDone",(function(e){var r;return"function"==typeof(r=t.$eval(e))?r(n):void 0}))}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.rotate2d",[]).directive("exRotate2d",[function(){return{scope:{value:"=exRotate2d",limit:"=",angle:"="},link:function(t,n){t.$watchCollection("[value, limit, angle]",(function(t){var e,r,i;i=t[0]||0,r=t[1]||10,e=i*(t[2]||360)/r,n.css({"-webkit-transform":"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})}))}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.directives.upper",[]).directive("exUpper",[function(){return{require:"ngModel",link:function(t,n,e,r){var i;i=function(t){var e,i,o,u;return(u=t?t.toUpperCase():t)!==t&&(o=(e=n[0]).selectionStart,i=e.selectionEnd,r.$setViewValue(u),r.$render(),"function"==typeof e.setSelectionRange&&e.setSelectionRange(o,i)),u},r.$parsers.push(i),i(t[e.ngModel])}}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.filters.arrays",[]).filter("makeArray",[function(){return function(n){return t.isArray(n)?n:null==n?[]:[n]}}]).filter("range",[function(){return function(t,n){var e,r,i,o,u,s,c,l=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1;for(c=[],r=o=e=(i="number"==typeof t&&"number"==typeof n)?t:t.toString().charCodeAt(0),s=(u=i?n:n.toString().charCodeAt(0))<e?-l:l;0!==s&&(0<s?o<=u:u<=o);r=o+=s)i?c.push(r):c.push(String.fromCharCode(r));return c}}]).filter("join",["makeArrayFilter",function(t){return function(n,e){return t(n).join(e)}}]).filter("combine",["$parse",function(n){return function(e){for(var r=arguments.length,i=new Array(1<r?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];var u,s;return t.isArray(e)||(e=[e]),function(){var r,o,c,l,f;for(f=[],r=0,c=e.length;r<c;r++){for(s=e[r],o=0,l=i.length;o<l;o++)u=i[o],t.isFunction(u)?s=u(s):"string"==typeof u&&(s=function(){switch(u){case"=integer":return parseInt(s);case"=float":return parseFloat(s);default:return n(u)(s)}}());f.push(s)}return f}().reduce((function(t,n){return t+n}))}}]).filter("limit",["makeArrayFilter",function(t){return function(n,e,r){var i,o;return o=(i=(e-1)*r)+r,t(n).slice(i,o)}}]).filter("trim",[function(){return function(n){var e,r,i,o,u,s;if(t.isArray(n)){for(s=[],r=0,i=n.length;r<i;r++)e=n[r],s.push(null!=e&&"function"==typeof e.toString&&null!=(o=e.toString())&&"function"==typeof o.trim?o.trim():void 0);return s}return null!=n&&"function"==typeof n.toString&&null!=(u=n.toString())&&"function"==typeof u.trim?u.trim():void 0}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t){t.module("ngExtends.filters.strings",[]).filter("trustAs",["$sce",function(t){return function(n,e){return t.trustAs(e,n)}}]).filter("trustAsCss",["$sce",function(t){return t.trustAsCss}]).filter("trustAsHtml",["$sce",function(t){return t.trustAsHtml}]).filter("trustAsJs",["$sce",function(t){return t.trustAsJs}]).filter("trustAsResourceUrl",["$sce",function(t){return t.trustAsResourceUrl}]).filter("trustAsUrl",["$sce",function(t){return t.trustAsUrl}]).filter("replace",[function(){return function(t,n,e,r){return n instanceof RegExp||(n=new RegExp((n||"").toString(),r)),(t||"").toString().replace(n,e)}}]).filter("nl2br",[function(){return function(t){return(t||"").toString().replace(/(\r\n|\n\r|\r|\n)/g,"<br/>")}}]).filter("br2nl",[function(){return function(t){return(t||"").toString().replace(/(<br>|<br\/>)/g,"\n")}}]).filter("space2nbsp",[function(){return function(t){return(t||"").toString().replace(/\s/g,"&nbsp;")}}]).filter("nbsp2space",[function(){return function(t){return(t||"").toString().replace(/&nbsp;/g," ")}}]).filter("split",[function(){return function(n,e,r){return null==n?n:n.toString().split(new RegExp((t.isArray(e)?e.join("|"):e).toString()),r)}}]).filter("cutstring",[function(){return function(t){var n,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:10,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"...";return null==t?t:((n=t.toString()).length>e-r.length&&(n=n.slice(0,e)+r),n)}}]).filter("roundcutstring",[function(){return function(t,n){var e,r,i,o,u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:20,s=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"...",c=4<arguments.length&&void 0!==arguments[4]?arguments[4]:"...";return null==t?t:(i=t.toString(),o=(n||"").toString(),-1===(r=i.indexOf(o))?(i.length>u-c.length&&(i=i.slice(0,u)+c),i):(e=function(t,n,r,i){var o,u,l,f,a;return i<=0||0===t.length&&0===n.length?(0<t.length?s:"")+r+(0<n.length?c:""):(o=i/2)<1?e(t.slice(0,-1),n,t.slice(-1)+r,0):(l=t.slice(-o),u=n.slice(0,o),a=t.slice(0,-o),f=n.slice(o),e(a,f,l+r+u,i-l.length-u.length))})(i.slice(0,r),i.slice(r+o.length),o,u-o.length-s.length-c.length))}}])}).call(this,e(0).default)},function(t,n,e){"use strict";(function(t,n){t.module("ngExtends.services.playRoutes",[]).provider("$playRoutes",[function(){var e=this;this.jsRoutes=n.Routes,this.$get=["$http","$location",function(n,r){var i,o,u;return u=function(t){return function(){var e,i,o,u,s,c,l;return c=t.apply(this,arguments),o=c.method.toLowerCase(),i=null!=(u=(e=c.absoluteURL()).match(/^https?:\/\/([^\/?#]+)(?:[\/?#]|$)/i))?u[1]:void 0,l=r.host()===i?c.url:e,(s={$route:c,method:o,url:l,absoluteURL:c.absoluteURL,webSocketURL:c.webSocketURL}).send=s.ajax=function(t){return(t=t||{}).method=o,t.url=l,n(t)},s[o]=function(){for(var t,e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];return(t=n[o]).apply(t,[].concat.call([l],r))},s}},(i=function(n,e){var r,o;for(r in e)o=e[r],t.isFunction(o)?n[r]=u(o):(r in n||(n[r]={}),i(n[r],o))})(o={},e.jsRoutes),o}]}])}).call(this,e(0).default,e(2).default)},function(t,n,e){(function(n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof n&&(e=n)}t.exports=e}).call(this,e(2).default)},function(t,n,e){"use strict";(function(t){var n=e(16),r=n(e(17)),i=n(e(23)),o=n(e(24));t.module("ngExtends.services.searchForm",[]).factory("$searchForm",[function(){return function(n){return new(function(){function n(e){(0,i.default)(this,n),this.options=e,t.isFunction(this.options)&&(this.options={action:this.options}),this.options=t.extend({defaults:{},preSubmit:function(){},preReset:function(){},submit:function(){},reset:function(){},action:function(){}},this.options),this.current=t.copy(this.options.defaults)||{},this.form=t.copy(this.options.defaults)||{}}return(0,o.default)(n,[{key:"isPristine",value:function(){return t.equals(this.current,this.form)}},{key:"isDirty",value:function(){return!this.isPristine()}},{key:"isChanged",value:function(){return!t.equals(this.current,this.options.defaults)}},{key:"submit",value:function(n,e,i){var o,u,s,c,l,f,a=this;return!1!==("function"==typeof(o=this.options).preSubmit?o.preSubmit(n,e,i):void 0)&&(null!=e&&(c=function(){var t,n;for(l in n=[],t=e||{})f=t[l],n.push([l,f]);return n}().every((function(n){var e=(0,r.default)(n,2);return l=e[0],f=e[1],t.equals(a.form[l],f,!0)})),t.extend(this.form,t.copy(c?i:e))),this.current=t.copy(this.form),"function"==typeof(u=this.options).submit&&u.submit(n,e,i),"function"==typeof(s=this.options).action&&s.action(n)),this}},{key:"reset",value:function(n){var e,r,i;return!1!==("function"==typeof(e=this.options).preReset?e.preReset(n):void 0)&&(null!=n&&"function"==typeof n.$setPristine&&n.$setPristine(),this.current=t.copy(this.options.defaults)||{},this.form=t.copy(this.options.defaults)||{},"function"==typeof(r=this.options).reset&&r.reset(n),"function"==typeof(i=this.options).action&&i.action(n)),this}},{key:"params",value:function(n,e){var r,i,o;if(t.isObject(n)){var u=[n,!1];e=u[0],n=u[1]}for(r in i=!0===n?t.copy(this.current):t.copy(this.form=t.copy(this.current)),this.options.defaults)t.isArray(i[r])&&(i[r]=i[r].filter((function(t){return!!t})));if(i=t.extend(i,t.copy(e)),t.isFunction(this.options.transform))for(r in i)o=i[r],i[r]=this.options.transform(r,o);return i}}]),n}())(n)}}])}).call(this,e(0).default)},function(t,n){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},function(t,n,e){var r=e(18),i=e(19),o=e(20),u=e(22);t.exports=function(t,n){return r(t)||i(t,n)||o(t,n)||u()}},function(t,n){t.exports=function(t){if(Array.isArray(t))return t}},function(t,n){t.exports=function(t,n){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var e=[],r=!0,i=!1,o=void 0;try{for(var u,s=t[Symbol.iterator]();!(r=(u=s.next()).done)&&(e.push(u.value),!n||e.length!==n);r=!0);}catch(t){i=!0,o=t}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return e}}},function(t,n,e){var r=e(21);t.exports=function(t,n){if(t){if("string"==typeof t)return r(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,n):void 0}}},function(t,n){t.exports=function(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}},function(t,n){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(t,n){t.exports=function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}},function(t,n){function e(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}],n.c=r,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(n){return t[n]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=3);function n(t){if(r[t])return r[t].exports;var i=r[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var e,r}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vLi9zcmMvdmFycy9hbmd1bGFyLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImFuZ3VsYXJcIiIsIndlYnBhY2s6Ly8vLi9zcmMvdmFycy93aW5kb3cuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9kaXJlY3RpdmVzL2NvdW50VG8uY29mZmVlIiwid2VicGFjazovLy8uL3NyYy9kaXJlY3RpdmVzL2RvbUluaXQuY29mZmVlIiwid2VicGFjazovLy8uL3NyYy9kaXJlY3RpdmVzL2ZvY3VzTWUuY29mZmVlIiwid2VicGFjazovLy8uL3NyYy9kaXJlY3RpdmVzL2xvd2VyLmNvZmZlZSIsIndlYnBhY2s6Ly8vLi9zcmMvZGlyZWN0aXZlcy9yZXBlYXREb25lLmNvZmZlZSIsIndlYnBhY2s6Ly8vLi9zcmMvZGlyZWN0aXZlcy9yb3RhdGUyZC5jb2ZmZWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL2RpcmVjdGl2ZXMvdXBwZXIuY29mZmVlIiwid2VicGFjazovLy8uL3NyYy9maWx0ZXJzL2FycmF5cy5jb2ZmZWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL2ZpbHRlcnMvc3RyaW5ncy5jb2ZmZWUiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3BsYXlSb3V0ZXMuY29mZmVlIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3NlcnZpY2VzL3NlYXJjaEZvcm0uY29mZmVlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJhIiwiaSIsIndpbmRvdyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzFfXyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibSIsImFuZ3VsYXIiLCJFcnJvciIsImdsb2JhbCIsImRvY3VtZW50IiwicmVwbGFjZSIsInNjb3BlIiwibGluayIsImVsZW0iLCJlbGVtZW50IiwiaW5jcmVtZW50IiwiY291bnRUbyIsInN0ZXAiLCJzdGVwcyIsInJlZnJlc2hJbnRlcnZhbCIsIm51bSIsImNhbGN1bGF0ZSIsInBhcnNlSW50IiwiYXR0cnMiLCJkdXJhdGlvbiIsInBhcnNlRmxvYXQiLCJNYXRoIiwidmFsdWUiLCIkdGltZW91dCIsInN0YXJ0IiwidGltb3V0SWQiLCJ2YWwiLCJyZXN0cmljdCIsInRyaWdnZXIiLCJ0b0xvd2VyIiwibG93ZXJlZCIsImlucHV0VmFsdWUiLCJzZWxlY3Rpb25TdGFydCIsImVuZCIsInNlbGVjdGlvbkVuZCIsIm1vZGVsQ3RybCIsInNldFNlbGVjdGlvblJhbmdlIiwiJHBhcnNlcnMiLCJuZ1JlcGVhdCIsIm5nUmVwZWF0U3RhcnQiLCJsaW1pdCIsImFuZ2xlIiwidmFsdWVzIiwiZGVncmVlIiwidG9VcHBlciIsInVwcGVyZWQiLCJpbnB1dCIsImJlZ2luIiwiaXNOdW1iZXIiLCJmcm9tIiwidG8iLCJTdHJpbmciLCJtYWtlQXJyYXlGaWx0ZXIiLCJqb2luIiwic2VwIiwidCIsInMiLCIkcGFyc2UiLCJ2IiwicGFnZSIsIml0ZW1zUGVyUGFnZSIsInRyaW0iLCIkc2NlIiwidHJ1c3RBc0NzcyIsInRydXN0QXNIdG1sIiwidHJ1c3RBc0pzIiwidHJ1c3RBc1Jlc291cmNlVXJsIiwidHJ1c3RBc1VybCIsInNlYXJjaCIsIlJlZ0V4cCIsInNlcGFyYXRvcnMiLCJtYXhMZW5ndGgiLCJzdWZmaXgiLCJpbnB1dFN0cmluZyIsInByZWZpeCIsInNlYXJjaFN0cmluZyIsInJlc3RMZW5ndGgiLCJiZWZvcmUiLCJhZnRlciIsInN0cmluZyIsImhhbGZMZW5ndGgiLCJwaWVjZU9mQmVmb3JlIiwicGllY2VPZkFmdGVyIiwicmVzdE9mQmVmb3JlIiwicmVzdE9mQWZ0ZXIiLCJSb3V0ZXMiLCJ3cmFwSHR0cCIsInJvdXRlT2JqZWN0IiwiZm4iLCJodHRwTWV0aG9kIiwibWV0aG9kIiwiaG9zdCIsImFic29sdXRlVVJMIiwidXJsIiwiJGxvY2F0aW9uIiwicmVzIiwiJHJvdXRlIiwid2ViU29ja2V0VVJMIiwib3B0aW9ucyIsIiRodHRwIiwiYWpheCIsImNvbmNhdCIsInBsYXlSb3V0ZXNPYmplY3QiLCJrZXkiLCJwbGF5Um91dGVzIiwiZyIsInRoaXMiLCJGdW5jdGlvbiIsImUiLCJhY3Rpb24iLCJkZWZhdWx0cyIsInByZVN1Ym1pdCIsInByZVJlc2V0Iiwic3VibWl0IiwicmVzZXQiLCJmb3JtIiwiZmlsdGVycyIsInVuZmlsdGVycyIsImlzRmlsdGVyZWQiLCJrZXlXaXRoVmFsdWUiLCIkc2V0UHJpc3RpbmUiLCJyZWZyZXNoIiwicGFyYW1zIiwib2JqIiwiX19lc01vZHVsZSIsImFycmF5V2l0aEhvbGVzIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJ1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIm5vbkl0ZXJhYmxlUmVzdCIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiT2JqZWN0IiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2kiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJsZW5ndGgiLCJlcnIiLCJhcnJheUxpa2VUb0FycmF5IiwibyIsIm1pbkxlbiIsIm4iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiVHlwZUVycm9yIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJjIiwiZCIsImdldHRlciIsImdldCIsInIiLCJ0b1N0cmluZ1RhZyIsIm1vZGUiLCJucyIsImNyZWF0ZSIsImJpbmQiLCJvYmplY3QiLCJwcm9wZXJ0eSIsImhhc093blByb3BlcnR5IiwicCIsIm1vZHVsZUlkIiwibCIsIm1vZHVsZXMiXSwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUNoRCxHQUFzQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLGlCQUM3QixHQUFxQixtQkFBWEMsUUFBeUJBLE9BQU9D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LEdBQTRCLGlCQUFUNUosRUFBbUIsSUFBSSxJQUFJaUYsS0FBT2pGLEVBQU92QixFQUFvQjhLLEVBQUVNLEVBQUk1RSxFQUFLLFNBQVNBLEdBQU8sT0FBT2pGLEVBQU1pRixJQUFROEUsS0FBSyxLQUFNOUUsSUFDOUksT0FBTzRFLEdBSVJwTCxFQUFvQnNKLEVBQUksU0FBUy9KLEdBQ2hDLElBQUl3TCxFQUFTeEwsR0FBVUEsRUFBT3NJLFdBQzdCLFdBQXdCLE9BQU90SSxFQUFnQixTQUMvQyxXQUE4QixPQUFPQSxHQUV0QyxPQURBUyxFQUFvQjhLLEVBQUVDLEVBQVEsSUFBS0EsR0FDNUJBLEdBSVIvSyxFQUFvQm9KLEVBQUksU0FBU21DLEVBQVFDLEdBQVksT0FBT2pELE9BQU9nQixVQUFVa0MsZUFBZWhDLEtBQUs4QixFQUFRQyxJQUd6R3hMLEVBQW9CMEwsRUFBSSxHQUlqQjFMLEVBQW9CQSxFQUFvQnlELEVBQUksR0E5RW5ELFNBQVN6RCxFQUFvQjJMLEdBRzVCLEdBQUc1TCxFQUFpQjRMLEdBQ25CLE9BQU81TCxFQUFpQjRMLEdBQVVyTSxRQUduQyxJQUFJQyxFQUFTUSxFQUFpQjRMLEdBQVksQ0FDekMvTCxFQUFHK0wsRUFDSEMsR0FBRUEsRUFDRnRNLFFBQVMsSUFVVixPQU5BdU0sRUFBUUYsR0FBVWxDLEtBQUtsSyxFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTVSxHQUcvRFQsRUFBT3FNLEtBR0FyTSxFQUFPRCxRLE1BdkJYUyIsImZpbGUiOiJhbmd1bGFyLWV4dGVuZHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhbmd1bGFyXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImFuZ3VsYXJcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIHtcblx0XHR2YXIgYSA9IHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGZhY3RvcnkocmVxdWlyZShcImFuZ3VsYXJcIikpIDogZmFjdG9yeShyb290W1wiYW5ndWxhclwiXSk7XG5cdFx0Zm9yKHZhciBpIGluIGEpICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgPyBleHBvcnRzIDogcm9vdClbaV0gPSBhW2ldO1xuXHR9XG59KSh3aW5kb3csIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzFfXykge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGFuZ3VsYXIgZnJvbSAnYW5ndWxhcidcblxuaWYgKCFhbmd1bGFyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQW5ndWxhci5leHRlbmRzIHJlcXVpcmVzIGEgQW5ndWxhckpTXCIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xX187IiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAoIWdsb2JhbC5kb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFuZ3VsYXIuZXh0ZW5kcyByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnRcIik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdsb2JhbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICcuL2RpcmVjdGl2ZXMvY291bnRUby5jb2ZmZWUnXG5pbXBvcnQgJy4vZGlyZWN0aXZlcy9kb21Jbml0LmNvZmZlZSdcbmltcG9ydCAnLi9kaXJlY3RpdmVzL2ZvY3VzTWUuY29mZmVlJ1xuaW1wb3J0ICcuL2RpcmVjdGl2ZXMvbG93ZXIuY29mZmVlJ1xuaW1wb3J0ICcuL2RpcmVjdGl2ZXMvcmVwZWF0RG9uZS5jb2ZmZWUnXG5pbXBvcnQgJy4vZGlyZWN0aXZlcy9yb3RhdGUyZC5jb2ZmZWUnXG5pbXBvcnQgJy4vZGlyZWN0aXZlcy91cHBlci5jb2ZmZWUnXG5pbXBvcnQgJy4vZmlsdGVycy9hcnJheXMuY29mZmVlJ1xuaW1wb3J0ICcuL2ZpbHRlcnMvc3RyaW5ncy5jb2ZmZWUnXG5pbXBvcnQgJy4vc2VydmljZXMvcGxheVJvdXRlcy5jb2ZmZWUnXG5pbXBvcnQgJy4vc2VydmljZXMvc2VhcmNoRm9ybS5jb2ZmZWUnXG5cbmFuZ3VsYXIubW9kdWxlKCduZ0V4dGVuZHMuZGlyZWN0aXZlcycsIFtcbiAgICAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMuY291bnRUbycsXG4gICAgJ25nRXh0ZW5kcy5kaXJlY3RpdmVzLmRvbUluaXQnLFxuICAgICduZ0V4dGVuZHMuZGlyZWN0aXZlcy5mb2N1c01lJyxcbiAgICAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMubG93ZXInLFxuICAgICduZ0V4dGVuZHMuZGlyZWN0aXZlcy5yZXBlYXREb25lJyxcbiAgICAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMucm90YXRlMmQnLFxuICAgICduZ0V4dGVuZHMuZGlyZWN0aXZlcy51cHBlcidcbl0pO1xuXG5hbmd1bGFyLm1vZHVsZSgnbmdFeHRlbmRzLmZpbHRlcnMnLCBbXG4gICAgJ25nRXh0ZW5kcy5maWx0ZXJzLmFycmF5cycsXG4gICAgJ25nRXh0ZW5kcy5maWx0ZXJzLnN0cmluZ3MnXG5dKTtcblxuYW5ndWxhci5tb2R1bGUoJ25nRXh0ZW5kcy5zZXJ2aWNlcycsIFtcbiAgICAnbmdFeHRlbmRzLnNlcnZpY2VzLnBsYXlSb3V0ZXMnLFxuICAgICduZ0V4dGVuZHMuc2VydmljZXMuc2VhcmNoRm9ybSdcbl0pO1xuXG5hbmd1bGFyLm1vZHVsZSgnbmdFeHRlbmRzJywgW1xuICAgICduZ0V4dGVuZHMuZGlyZWN0aXZlcycsXG4gICAgJ25nRXh0ZW5kcy5maWx0ZXJzJyxcbiAgICAnbmdFeHRlbmRzLnNlcnZpY2VzJ1xuXSk7XG4iLCIndXNlIHN0cmljdCdcblxuYW5ndWxhci5tb2R1bGUgJ25nRXh0ZW5kcy5kaXJlY3RpdmVzLmNvdW50VG8nLCBbXVxuXG4uZGlyZWN0aXZlICdleENvdW50VG8nLCBbJyR0aW1lb3V0JywgKCR0aW1lb3V0KSAtPlxuICByZXBsYWNlOiBmYWxzZVxuICBzY29wZTogdHJ1ZVxuICBsaW5rOiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSAtPlxuICAgIGVsZW0gPSBlbGVtZW50WzBdXG4gICAgbnVtID0gbnVsbFxuICAgIHJlZnJlc2hJbnRlcnZhbCA9IG51bGxcbiAgICBzdGVwcyA9IG51bGxcbiAgICBzdGVwID0gbnVsbFxuICAgIGNvdW50VG8gPSBudWxsXG4gICAgaW5jcmVtZW50ID0gbnVsbFxuXG4gICAgY2FsY3VsYXRlID0gLT5cbiAgICAgIHJlZnJlc2hJbnRlcnZhbCA9IDMwXG4gICAgICBzdGVwID0gMFxuICAgICAgc2NvcGUudGltb3V0SWQgPSBudWxsXG4gICAgICBjb3VudFRvID0gcGFyc2VJbnQoYXR0cnMuZXhDb3VudFRvKSB8fCAwXG4gICAgICBzY29wZS52YWx1ZSA9IHBhcnNlSW50KGF0dHJzLnZhbHVlLCAxMCkgfHwgMFxuICAgICAgZHVyYXRpb24gPSAocGFyc2VGbG9hdChhdHRycy5kdXJhdGlvbikgKiAxMDAwKSB8fCAwXG5cbiAgICAgIHN0ZXBzID0gTWF0aC5jZWlsKGR1cmF0aW9uIC8gcmVmcmVzaEludGVydmFsKVxuICAgICAgaW5jcmVtZW50ID0gKGNvdW50VG8gLSBzY29wZS52YWx1ZSkgLyBzdGVwc1xuICAgICAgbnVtID0gc2NvcGUudmFsdWVcbiAgICAgIHJldHVyblxuXG4gICAgdGljayA9IC0+XG4gICAgICBzY29wZS50aW1vdXRJZCA9ICR0aW1lb3V0KC0+XG4gICAgICAgIG51bSArPSBpbmNyZW1lbnRcbiAgICAgICAgc3RlcCsrXG4gICAgICAgIGlmIHN0ZXAgPj0gc3RlcHNcbiAgICAgICAgICAkdGltZW91dC5jYW5jZWwoc2NvcGUudGltb3V0SWQpXG4gICAgICAgICAgbnVtID0gY291bnRUb1xuICAgICAgICAgIGVsZW0udGV4dENvbnRlbnQgPSBjb3VudFRvXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlbGVtLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChudW0pXG4gICAgICAgICAgdGljaygpXG4gICAgICAsIHJlZnJlc2hJbnRlcnZhbClcbiAgICAgIHJldHVyblxuXG4gICAgc3RhcnQgPSAtPlxuICAgICAgJHRpbWVvdXQuY2FuY2VsKHNjb3BlLnRpbW91dElkKSAgaWYgc2NvcGUudGltb3V0SWQ/XG4gICAgICBjYWxjdWxhdGUoKVxuICAgICAgdGljaygpXG4gICAgICByZXR1cm5cblxuICAgIGF0dHJzLiRvYnNlcnZlICdleENvdW50VG8nLCAodmFsKSAtPiBzdGFydCgpICBpZiB2YWw/XG4gICAgYXR0cnMuJG9ic2VydmUgJ3ZhbHVlJywgLT4gc3RhcnQoKVxuICAgIHJldHVyblxuXSIsIid1c2Ugc3RyaWN0J1xuXG5hbmd1bGFyLm1vZHVsZSAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMuZG9tSW5pdCcsIFtdXG5cbi5kaXJlY3RpdmUgJ2V4RG9tSW5pdCcsIFstPlxuICByZXN0cmljdDogJ0EnLFxuICBsaW5rOiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSAtPlxuICAgIGF0dHJzLiRvYnNlcnZlICdleERvbUluaXQnLCAodmFsdWUpIC0+IHNjb3BlLiRldmFsKHZhbHVlKT8oZWxlbWVudClcbiAgICByZXR1cm5cbl0iLCIndXNlIHN0cmljdCdcblxuYW5ndWxhci5tb2R1bGUgJ25nRXh0ZW5kcy5kaXJlY3RpdmVzLmZvY3VzTWUnLCBbXVxuXG4uZGlyZWN0aXZlICdleEZvY3VzTWUnLCBbLT5cbiAgc2NvcGU6XG4gICAgdHJpZ2dlcjogJz1leEZvY3VzTWUnXG4gIGxpbms6IChzY29wZSwgZWxlbWVudCkgLT5cbiAgICBzY29wZS4kd2F0Y2ggJ3RyaWdnZXInLCAodmFsdWUpIC0+XG4gICAgICBpZiB0eXBlb2YgdmFsdWUgaXMgJ2Jvb2xlYW4nXG4gICAgICAgIGVsZW1lbnRbMF1baWYgdmFsdWUgdGhlbiAnZm9jdXMnIGVsc2UgJ2JsdXInXT8oKVxuICAgICAgICBzY29wZS50cmlnZ2VyID0gbnVsbFxuICAgICAgcmV0dXJuXG4gICAgcmV0dXJuXG5dIiwiJ3VzZSBzdHJpY3QnXG5cbmFuZ3VsYXIubW9kdWxlICduZ0V4dGVuZHMuZGlyZWN0aXZlcy5sb3dlcicsIFtdXG5cbi5kaXJlY3RpdmUgJ2V4TG93ZXInLCBbLT5cbiAgcmVxdWlyZTogJ25nTW9kZWwnXG4gIGxpbms6IChzY29wZSwgZWxlbWVudCwgYXR0cnMsIG1vZGVsQ3RybCkgLT5cbiAgICB0b0xvd2VyID0gKGlucHV0VmFsdWUpIC0+XG4gICAgICBsb3dlcmVkID0gaWYgaW5wdXRWYWx1ZSB0aGVuIGlucHV0VmFsdWUudG9Mb3dlckNhc2UoKSBlbHNlIGlucHV0VmFsdWVcbiAgICAgIHVubGVzcyBsb3dlcmVkIGlzIGlucHV0VmFsdWVcbiAgICAgICAgZWxlbSA9IGVsZW1lbnRbMF1cbiAgICAgICAgc3RhcnQgPSBlbGVtLnNlbGVjdGlvblN0YXJ0XG4gICAgICAgIGVuZCA9IGVsZW0uc2VsZWN0aW9uRW5kXG4gICAgICAgIG1vZGVsQ3RybC4kc2V0Vmlld1ZhbHVlIGxvd2VyZWRcbiAgICAgICAgbW9kZWxDdHJsLiRyZW5kZXIoKVxuICAgICAgICBlbGVtLnNldFNlbGVjdGlvblJhbmdlPyhzdGFydCwgZW5kKVxuICAgICAgbG93ZXJlZFxuXG4gICAgbW9kZWxDdHJsLiRwYXJzZXJzLnB1c2ggdG9Mb3dlclxuICAgIHRvTG93ZXIgc2NvcGVbYXR0cnMubmdNb2RlbF1cbiAgICByZXR1cm5cbl1cbiIsIid1c2Ugc3RyaWN0J1xuXG5hbmd1bGFyLm1vZHVsZSAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMucmVwZWF0RG9uZScsIFtdXG5cbi5kaXJlY3RpdmUgJ2V4UmVwZWF0RG9uZScsIFstPlxuICByZXN0cmljdDogJ0EnLFxuICBsaW5rOiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSAtPlxuICAgIGlmIChhdHRycy5uZ1JlcGVhdD8gb3IgYXR0cnMubmdSZXBlYXRTdGFydD8pIGFuZCBzY29wZS4kbGFzdFxuICAgICAgYXR0cnMuJG9ic2VydmUgJ2V4UmVwZWF0RG9uZScsICh2YWx1ZSkgLT4gc2NvcGUuJGV2YWwodmFsdWUpPyhlbGVtZW50KVxuICAgIHJldHVyblxuXSIsIid1c2Ugc3RyaWN0J1xuXG5hbmd1bGFyLm1vZHVsZSAnbmdFeHRlbmRzLmRpcmVjdGl2ZXMucm90YXRlMmQnLCBbXVxuXG4uZGlyZWN0aXZlICdleFJvdGF0ZTJkJywgWy0+XG4gIHNjb3BlOlxuICAgIHZhbHVlOiAnPWV4Um90YXRlMmQnXG4gICAgbGltaXQ6ICc9J1xuICAgIGFuZ2xlOiAnPSdcbiAgbGluazogKHNjb3BlLCBlbGVtZW50KSAtPlxuICAgIHNjb3BlLiR3YXRjaENvbGxlY3Rpb24gJ1t2YWx1ZSwgbGltaXQsIGFuZ2xlXScsICh2YWx1ZXMpIC0+XG4gICAgICB2YWx1ZSA9IHZhbHVlc1swXSBvciAwXG4gICAgICBsaW1pdCA9IHZhbHVlc1sxXSBvciAxMFxuICAgICAgYW5nbGUgPSB2YWx1ZXNbMl0gb3IgMzYwXG4gICAgICBkZWdyZWUgPSB2YWx1ZSAqIGFuZ2xlIC8gbGltaXRcbiAgICAgIGVsZW1lbnQuY3NzXG4gICAgICAgICctd2Via2l0LXRyYW5zZm9ybSc6ICdyb3RhdGUoJyArIGRlZ3JlZSArICdkZWcpJ1xuICAgICAgICAnLW1vei10cmFuc2Zvcm0nOiAncm90YXRlKCcgKyBkZWdyZWUgKyAnZGVnKSdcbiAgICAgICAgJ3RyYW5zZm9ybSc6ICdyb3RhdGUoJyArIGRlZ3JlZSArICdkZWcpJ1xuICAgICAgcmV0dXJuXG4gICAgcmV0dXJuXG5dIiwiJ3VzZSBzdHJpY3QnXG5cbmFuZ3VsYXIubW9kdWxlICduZ0V4dGVuZHMuZGlyZWN0aXZlcy51cHBlcicsIFtdXG5cbi5kaXJlY3RpdmUgJ2V4VXBwZXInLCBbLT5cbiAgcmVxdWlyZTogJ25nTW9kZWwnXG4gIGxpbms6IChzY29wZSwgZWxlbWVudCwgYXR0cnMsIG1vZGVsQ3RybCkgLT5cbiAgICB0b1VwcGVyID0gKGlucHV0VmFsdWUpIC0+XG4gICAgICB1cHBlcmVkID0gaWYgaW5wdXRWYWx1ZSB0aGVuIGlucHV0VmFsdWUudG9VcHBlckNhc2UoKSBlbHNlIGlucHV0VmFsdWVcbiAgICAgIHVubGVzcyB1cHBlcmVkIGlzIGlucHV0VmFsdWVcbiAgICAgICAgZWxlbSA9IGVsZW1lbnRbMF1cbiAgICAgICAgc3RhcnQgPSBlbGVtLnNlbGVjdGlvblN0YXJ0XG4gICAgICAgIGVuZCA9IGVsZW0uc2VsZWN0aW9uRW5kXG4gICAgICAgIG1vZGVsQ3RybC4kc2V0Vmlld1ZhbHVlIHVwcGVyZWRcbiAgICAgICAgbW9kZWxDdHJsLiRyZW5kZXIoKVxuICAgICAgICBlbGVtLnNldFNlbGVjdGlvblJhbmdlPyhzdGFydCwgZW5kKVxuICAgICAgdXBwZXJlZFxuXG4gICAgbW9kZWxDdHJsLiRwYXJzZXJzLnB1c2ggdG9VcHBlclxuICAgIHRvVXBwZXIgc2NvcGVbYXR0cnMubmdNb2RlbF1cbiAgICByZXR1cm5cbl1cbiIsIid1c2Ugc3RyaWN0J1xuXG5hbmd1bGFyLm1vZHVsZSAnbmdFeHRlbmRzLmZpbHRlcnMuYXJyYXlzJywgW11cblxuLmZpbHRlciAnbWFrZUFycmF5JywgWy0+IChpbnB1dCkgLT5cbiAgaWYgYW5ndWxhci5pc0FycmF5KGlucHV0KSB0aGVuIGlucHV0XG4gIGVsc2UgdW5sZXNzIGlucHV0PyB0aGVuIFtdXG4gIGVsc2UgW2lucHV0XVxuXVxuXG4uZmlsdGVyICdyYW5nZScsIFstPiAoZnJvbSwgdG8sIHN0ZXAgPSAxKSAtPlxuICBpc051bWJlciA9IHR5cGVvZiBmcm9tIGlzICdudW1iZXInIGFuZCB0eXBlb2YgdG8gaXMgJ251bWJlcidcbiAgYmVnaW4gPSBpZiBpc051bWJlciB0aGVuIGZyb20gZWxzZSBmcm9tLnRvU3RyaW5nKCkuY2hhckNvZGVBdCgwKVxuICBlbmQgPSBpZiBpc051bWJlciB0aGVuIHRvIGVsc2UgdG8udG9TdHJpbmcoKS5jaGFyQ29kZUF0KDApXG4gIGZvciBpIGluIFtiZWdpbi4uZW5kXSBieSAoaWYgYmVnaW4gPiBlbmQgdGhlbiAtc3RlcCBlbHNlIHN0ZXApXG4gICAgaWYgaXNOdW1iZXIgdGhlbiBpIGVsc2UgU3RyaW5nLmZyb21DaGFyQ29kZShpKVxuXVxuXG4uZmlsdGVyICdqb2luJywgWydtYWtlQXJyYXlGaWx0ZXInLCAobWFrZUFycmF5RmlsdGVyKSAtPiAoaW5wdXQsIHNlcCkgLT4gbWFrZUFycmF5RmlsdGVyKGlucHV0KS5qb2luKHNlcCldXG5cbi5maWx0ZXIgJ2NvbWJpbmUnLCBbJyRwYXJzZScsICgkcGFyc2UpIC0+IChpbnB1dCwgdHJhbnNmb3JtZXJzLi4uKSAtPlxuICBpbnB1dCA9IFtpbnB1dF0gIHVubGVzcyBhbmd1bGFyLmlzQXJyYXkgaW5wdXRcbiAgKGZvciB2YWx1ZSBpbiBpbnB1dFxuICAgIGZvciB0IGluIHRyYW5zZm9ybWVyc1xuICAgICAgaWYgYW5ndWxhci5pc0Z1bmN0aW9uIHRcbiAgICAgICAgdmFsdWUgPSB0KHZhbHVlKVxuICAgICAgZWxzZSBpZiB0eXBlb2YgdCBpcyAnc3RyaW5nJ1xuICAgICAgICB2YWx1ZSA9IHN3aXRjaCB0XG4gICAgICAgICAgd2hlbiAnPWludGVnZXInIHRoZW4gcGFyc2VJbnQodmFsdWUpXG4gICAgICAgICAgd2hlbiAnPWZsb2F0JyAgIHRoZW4gcGFyc2VGbG9hdCh2YWx1ZSlcbiAgICAgICAgICBlbHNlICRwYXJzZSh0KSh2YWx1ZSlcbiAgICB2YWx1ZVxuICApLnJlZHVjZSAodCwgdikgLT4gdCArIHZcbl1cblxuLmZpbHRlciAnbGltaXQnLCBbJ21ha2VBcnJheUZpbHRlcicsIChtYWtlQXJyYXlGaWx0ZXIpIC0+IChpbnB1dCwgcGFnZSwgaXRlbXNQZXJQYWdlKSAtPlxuICBmcm9tID0gKHBhZ2UgLSAxKSAqIGl0ZW1zUGVyUGFnZVxuICB0byA9IGZyb20gKyBpdGVtc1BlclBhZ2VcbiAgbWFrZUFycmF5RmlsdGVyKGlucHV0KVtmcm9tLi4udG9dXG5dXG5cbi5maWx0ZXIgJ3RyaW0nLCBbLT4gKGlucHV0KSAtPlxuICBpZiBhbmd1bGFyLmlzQXJyYXkgaW5wdXRcbiAgICBhPy50b1N0cmluZz8oKT8udHJpbT8oKSAgZm9yIGEgaW4gaW5wdXRcbiAgZWxzZVxuICAgIGlucHV0Py50b1N0cmluZz8oKT8udHJpbT8oKVxuXVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmFuZ3VsYXIubW9kdWxlICduZ0V4dGVuZHMuZmlsdGVycy5zdHJpbmdzJywgW11cblxuLmZpbHRlciAndHJ1c3RBcycsIFsnJHNjZScsICgkc2NlKSAtPiAoaW5wdXQsIHR5cGUpIC0+ICRzY2UudHJ1c3RBcyh0eXBlLCBpbnB1dCldXG4uZmlsdGVyICd0cnVzdEFzQ3NzJywgWyckc2NlJywgKCRzY2UpIC0+ICRzY2UudHJ1c3RBc0Nzc11cbi5maWx0ZXIgJ3RydXN0QXNIdG1sJywgWyckc2NlJywgKCRzY2UpIC0+ICRzY2UudHJ1c3RBc0h0bWxdXG4uZmlsdGVyICd0cnVzdEFzSnMnLCBbJyRzY2UnLCAoJHNjZSkgLT4gJHNjZS50cnVzdEFzSnNdXG4uZmlsdGVyICd0cnVzdEFzUmVzb3VyY2VVcmwnLCBbJyRzY2UnLCAoJHNjZSkgLT4gJHNjZS50cnVzdEFzUmVzb3VyY2VVcmxdXG4uZmlsdGVyICd0cnVzdEFzVXJsJywgWyckc2NlJywgKCRzY2UpIC0+ICRzY2UudHJ1c3RBc1VybF1cblxuLmZpbHRlciAncmVwbGFjZScsIFstPiAoaW5wdXQsIHNlYXJjaCwgcmVwbGFjZW1lbnQsIG9wdGlvbnMpIC0+XG4gIHNlYXJjaCA9IG5ldyBSZWdFeHAoKHNlYXJjaCBvciAnJykudG9TdHJpbmcoKSwgb3B0aW9ucykgIHVubGVzcyBzZWFyY2ggaW5zdGFuY2VvZiBSZWdFeHBcbiAgKGlucHV0IG9yICcnKS50b1N0cmluZygpLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlbWVudClcbl1cblxuLmZpbHRlciAnbmwyYnInLCBbLT4gKGlucHV0KSAtPiAoaW5wdXQgb3IgJycpLnRvU3RyaW5nKCkucmVwbGFjZSgvKFxcclxcbnxcXG5cXHJ8XFxyfFxcbikvZywgJzxici8+JyldXG5cbi5maWx0ZXIgJ2JyMm5sJywgWy0+IChpbnB1dCkgLT4gKGlucHV0IG9yICcnKS50b1N0cmluZygpLnJlcGxhY2UoLyg8YnI+fDxiclxcLz4pL2csICdcXG4nKV1cblxuLmZpbHRlciAnc3BhY2UybmJzcCcsIFstPiAoaW5wdXQpIC0+IChpbnB1dCBvciAnJykudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMvZywgJyZuYnNwOycpXVxuXG4uZmlsdGVyICduYnNwMnNwYWNlJywgWy0+IChpbnB1dCkgLT4gKGlucHV0IG9yICcnKS50b1N0cmluZygpLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpXVxuXG4uZmlsdGVyICdzcGxpdCcsIFstPiAoaW5wdXQsIHNlcGFyYXRvcnMsIGxpbWl0KSAtPlxuICB1bmxlc3MgaW5wdXQ/IHRoZW4gaW5wdXRcbiAgZWxzZSBpbnB1dC50b1N0cmluZygpLnNwbGl0KG5ldyBSZWdFeHAoXG4gICAgKGlmIGFuZ3VsYXIuaXNBcnJheSBzZXBhcmF0b3JzIHRoZW4gc2VwYXJhdG9ycy5qb2luKCd8JykgZWxzZSBzZXBhcmF0b3JzKS50b1N0cmluZygpXG4gICksIGxpbWl0KVxuXVxuXG4uZmlsdGVyICdjdXRzdHJpbmcnLCBbLT4gKGlucHV0LCBtYXhMZW5ndGggPSAxMCwgc3VmZml4ID0gJy4uLicpIC0+XG4gIHVubGVzcyBpbnB1dD8gdGhlbiBpbnB1dFxuICBlbHNlXG4gICAgaW5wdXRTdHJpbmcgPSBpbnB1dC50b1N0cmluZygpXG4gICAgaW5wdXRTdHJpbmcgPSBpbnB1dFN0cmluZ1swLi4ubWF4TGVuZ3RoXSArIHN1ZmZpeCAgaWYgaW5wdXRTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoIC0gc3VmZml4Lmxlbmd0aFxuICAgIGlucHV0U3RyaW5nXG5dXG5cbi5maWx0ZXIgJ3JvdW5kY3V0c3RyaW5nJywgWy0+IChpbnB1dCwgc2VhcmNoLCBtYXhMZW5ndGggPSAyMCwgcHJlZml4ID0gJy4uLicsIHN1ZmZpeCA9ICcuLi4nKSAtPlxuICB1bmxlc3MgaW5wdXQ/IHRoZW4gaW5wdXRcbiAgZWxzZVxuICAgIGlucHV0U3RyaW5nID0gaW5wdXQudG9TdHJpbmcoKVxuICAgIHNlYXJjaFN0cmluZyA9IChzZWFyY2ggb3IgJycpLnRvU3RyaW5nKClcbiAgICBpID0gaW5wdXRTdHJpbmcuaW5kZXhPZihzZWFyY2hTdHJpbmcpXG4gICAgaWYgaSBpcyAtMVxuICAgICAgaW5wdXRTdHJpbmcgPSBpbnB1dFN0cmluZ1swLi4ubWF4TGVuZ3RoXSArIHN1ZmZpeCAgaWYgaW5wdXRTdHJpbmcubGVuZ3RoID4gbWF4TGVuZ3RoIC0gc3VmZml4Lmxlbmd0aFxuICAgICAgaW5wdXRTdHJpbmdcbiAgICBlbHNlXG4gICAgICAoZG9DdXQgPSAoYmVmb3JlLCBhZnRlciwgc3RyaW5nLCByZXN0TGVuZ3RoKSAtPlxuICAgICAgICBpZiByZXN0TGVuZ3RoIDw9IDAgb3IgYmVmb3JlLmxlbmd0aCBpcyAwIGFuZCBhZnRlci5sZW5ndGggaXMgMFxuICAgICAgICAgIGVtcHR5T3JQcmVmaXggPSBpZiBiZWZvcmUubGVuZ3RoID4gMCB0aGVuIHByZWZpeCBlbHNlICcnXG4gICAgICAgICAgZW1wdHlPclN1ZmZpeCA9IGlmIGFmdGVyLmxlbmd0aCA+IDAgdGhlbiBzdWZmaXggZWxzZSAnJ1xuICAgICAgICAgIGVtcHR5T3JQcmVmaXggKyBzdHJpbmcgKyBlbXB0eU9yU3VmZml4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYWxmTGVuZ3RoID0gcmVzdExlbmd0aCAvIDJcbiAgICAgICAgICBpZiBoYWxmTGVuZ3RoIDwgMVxuICAgICAgICAgICAgZG9DdXQoYmVmb3JlWzAuLi4tMV0sIGFmdGVyLCBiZWZvcmVbLTEuLi5dICsgc3RyaW5nLCAwKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBpZWNlT2ZCZWZvcmUgPSBiZWZvcmVbLWhhbGZMZW5ndGguLi5dXG4gICAgICAgICAgICBwaWVjZU9mQWZ0ZXIgPSBhZnRlclswLi4uaGFsZkxlbmd0aF1cbiAgICAgICAgICAgIHJlc3RPZkJlZm9yZSA9IGJlZm9yZVswLi4uLWhhbGZMZW5ndGhdXG4gICAgICAgICAgICByZXN0T2ZBZnRlciA9IGFmdGVyW2hhbGZMZW5ndGguLi5dXG4gICAgICAgICAgICBkb0N1dChcbiAgICAgICAgICAgICAgcmVzdE9mQmVmb3JlLFxuICAgICAgICAgICAgICByZXN0T2ZBZnRlcixcbiAgICAgICAgICAgICAgcGllY2VPZkJlZm9yZSArIHN0cmluZyArIHBpZWNlT2ZBZnRlcixcbiAgICAgICAgICAgICAgcmVzdExlbmd0aCAtIHBpZWNlT2ZCZWZvcmUubGVuZ3RoIC0gcGllY2VPZkFmdGVyLmxlbmd0aFxuICAgICAgICAgICAgKVxuICAgICAgKShcbiAgICAgICAgaW5wdXRTdHJpbmdbMC4uLmldLFxuICAgICAgICBpbnB1dFN0cmluZ1tpICsgc2VhcmNoU3RyaW5nLmxlbmd0aC4uLl0sXG4gICAgICAgIHNlYXJjaFN0cmluZyxcbiAgICAgICAgbWF4TGVuZ3RoIC0gc2VhcmNoU3RyaW5nLmxlbmd0aCAtIHByZWZpeC5sZW5ndGggLSBzdWZmaXgubGVuZ3RoXG4gICAgICApXG5dIiwiJ3VzZSBzdHJpY3QnXG5cbmFuZ3VsYXIubW9kdWxlICduZ0V4dGVuZHMuc2VydmljZXMucGxheVJvdXRlcycsIFtdXG5cbi5wcm92aWRlciAnJHBsYXlSb3V0ZXMnLCBbLT5cbiAgQGpzUm91dGVzID0gd2luZG93LlJvdXRlc1xuICBAJGdldCA9IFtcbiAgICAnJGh0dHAnLCAnJGxvY2F0aW9uJ1xuICAgICgkaHR0cCwgJGxvY2F0aW9uKSA9PlxuICAgICAgd3JhcEh0dHAgPSAoZm4pIC0+IC0+XG4gICAgICAgIHJvdXRlT2JqZWN0ID0gZm4uYXBwbHkoQCwgYXJndW1lbnRzKVxuICAgICAgICBodHRwTWV0aG9kID0gcm91dGVPYmplY3QubWV0aG9kLnRvTG93ZXJDYXNlKClcbiAgICAgICAgYWJzb2x1dGVVUkwgPSByb3V0ZU9iamVjdC5hYnNvbHV0ZVVSTCgpXG4gICAgICAgIGhvc3QgPSBhYnNvbHV0ZVVSTC5tYXRjaCgvXmh0dHBzPzpcXC9cXC8oW15cXC8/I10rKSg/OltcXC8/I118JCkvaSk/WzFdXG4gICAgICAgIHVybCA9IGlmICRsb2NhdGlvbi5ob3N0KCkgaXMgaG9zdCB0aGVuIHJvdXRlT2JqZWN0LnVybCBlbHNlIGFic29sdXRlVVJMXG4gICAgICAgIHJlcyA9XG4gICAgICAgICAgJHJvdXRlOiByb3V0ZU9iamVjdFxuICAgICAgICAgIG1ldGhvZDogaHR0cE1ldGhvZFxuICAgICAgICAgIHVybDogdXJsXG4gICAgICAgICAgYWJzb2x1dGVVUkw6IHJvdXRlT2JqZWN0LmFic29sdXRlVVJMXG4gICAgICAgICAgd2ViU29ja2V0VVJMOiByb3V0ZU9iamVjdC53ZWJTb2NrZXRVUkxcbiAgICAgICAgcmVzLnNlbmQgPSByZXMuYWpheCA9IChvcHRpb25zKSAtPlxuICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIHt9XG4gICAgICAgICAgb3B0aW9ucy5tZXRob2QgPSBodHRwTWV0aG9kXG4gICAgICAgICAgb3B0aW9ucy51cmwgPSB1cmxcbiAgICAgICAgICAkaHR0cChvcHRpb25zKVxuICAgICAgICByZXNbaHR0cE1ldGhvZF0gPSAoYXJncy4uLikgLT5cbiAgICAgICAgICAoYWpheCA9ICRodHRwW2h0dHBNZXRob2RdKS5hcHBseShhamF4LCBbXS5jb25jYXQuY2FsbChbdXJsXSwgYXJncykpXG4gICAgICAgIHJlc1xuXG4gICAgICAoYWRkUm91dGVzID0gKHBsYXlSb3V0ZXNPYmplY3QsIGpzUm91dGVzT2JqZWN0KSAtPlxuICAgICAgICBmb3Iga2V5LCB2YWx1ZSBvZiBqc1JvdXRlc09iamVjdFxuICAgICAgICAgIGlmIGFuZ3VsYXIuaXNGdW5jdGlvbiB2YWx1ZVxuICAgICAgICAgICAgcGxheVJvdXRlc09iamVjdFtrZXldID0gd3JhcEh0dHAodmFsdWUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcGxheVJvdXRlc09iamVjdFtrZXldID0ge30gIHVubGVzcyBrZXkgb2YgcGxheVJvdXRlc09iamVjdFxuICAgICAgICAgICAgYWRkUm91dGVzKHBsYXlSb3V0ZXNPYmplY3Rba2V5XSwgdmFsdWUpXG4gICAgICAgIHJldHVyblxuICAgICAgKShwbGF5Um91dGVzID0ge30sIEBqc1JvdXRlcylcbiAgICAgIHBsYXlSb3V0ZXNcbiAgXVxuICByZXR1cm5cbl0iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCIndXNlIHN0cmljdCdcblxuYW5ndWxhci5tb2R1bGUgJ25nRXh0ZW5kcy5zZXJ2aWNlcy5zZWFyY2hGb3JtJywgW11cblxuLmZhY3RvcnkgJyRzZWFyY2hGb3JtJywgWy0+IChvcHRpb25zKSAtPlxuXG4gIGNsYXNzIFNlYXJjaEZvcm1cbiAgICBjb25zdHJ1Y3RvcjogKEBvcHRpb25zKSAtPlxuICAgICAgaWYgYW5ndWxhci5pc0Z1bmN0aW9uIEBvcHRpb25zXG4gICAgICAgIEBvcHRpb25zID0gYWN0aW9uOiBAb3B0aW9uc1xuICAgICAgQG9wdGlvbnMgPSBhbmd1bGFyLmV4dGVuZChcbiAgICAgICAgZGVmYXVsdHM6IHt9XG4gICAgICAgIHByZVN1Ym1pdDogKGZvcm0sIGZpbHRlcnMsIHVuZmlsdGVycykgLT5cbiAgICAgICAgcHJlUmVzZXQ6IChmb3JtKSAtPlxuICAgICAgICBzdWJtaXQ6IChmb3JtLCBmaWx0ZXJzLCB1bmZpbHRlcnMpIC0+XG4gICAgICAgIHJlc2V0OiAoZm9ybSkgLT5cbiAgICAgICAgYWN0aW9uOiAoZm9ybSkgLT5cbiAgICAgICAgI3RyYW5zZm9ybTogKGtleSwgdmFsdWUpIC0+IHZhbHVlXG4gICAgICAsIEBvcHRpb25zKVxuXG4gICAgICBAY3VycmVudCA9IGFuZ3VsYXIuY29weShAb3B0aW9ucy5kZWZhdWx0cykgb3Ige31cbiAgICAgIEBmb3JtID0gYW5ndWxhci5jb3B5KEBvcHRpb25zLmRlZmF1bHRzKSBvciB7fVxuXG4gICAgaXNQcmlzdGluZTogLT4gYW5ndWxhci5lcXVhbHMoQGN1cnJlbnQsIEBmb3JtKVxuICAgIGlzRGlydHk6IC0+IG5vdCBAaXNQcmlzdGluZSgpXG4gICAgaXNDaGFuZ2VkOiAtPiBub3QgYW5ndWxhci5lcXVhbHMoQGN1cnJlbnQsIEBvcHRpb25zLmRlZmF1bHRzKVxuXG4gICAgc3VibWl0OiAoZm9ybSwgZmlsdGVycywgdW5maWx0ZXJzKSAtPlxuICAgICAgaWYgQG9wdGlvbnMucHJlU3VibWl0Pyhmb3JtLCBmaWx0ZXJzLCB1bmZpbHRlcnMpIGlzbnQgZmFsc2VcbiAgICAgICAgaWYgZmlsdGVycz9cbiAgICAgICAgICBpc0ZpbHRlcmVkID0gKFtrZXksIHZhbHVlXSAgZm9yIGtleSwgdmFsdWUgb2YgZmlsdGVycyBvciB7fSkuZXZlcnkgKGtleVdpdGhWYWx1ZSkgPT5cbiAgICAgICAgICAgIFtrZXksIHZhbHVlXSA9IGtleVdpdGhWYWx1ZVxuICAgICAgICAgICAgYW5ndWxhci5lcXVhbHMoQGZvcm1ba2V5XSwgdmFsdWUsIHRydWUpXG4gICAgICAgICAgYW5ndWxhci5leHRlbmQoQGZvcm0sIGFuZ3VsYXIuY29weShpZiBpc0ZpbHRlcmVkIHRoZW4gdW5maWx0ZXJzIGVsc2UgZmlsdGVycykpXG4gICAgICAgIEBjdXJyZW50ID0gYW5ndWxhci5jb3B5KEBmb3JtKVxuICAgICAgICBAb3B0aW9ucy5zdWJtaXQ/KGZvcm0sIGZpbHRlcnMsIHVuZmlsdGVycylcbiAgICAgICAgQG9wdGlvbnMuYWN0aW9uPyhmb3JtKVxuICAgICAgQFxuXG4gICAgcmVzZXQ6IChmb3JtKSAtPlxuICAgICAgaWYgQG9wdGlvbnMucHJlUmVzZXQ/KGZvcm0pIGlzbnQgZmFsc2VcbiAgICAgICAgZm9ybT8uJHNldFByaXN0aW5lPygpXG4gICAgICAgIEBjdXJyZW50ID0gYW5ndWxhci5jb3B5KEBvcHRpb25zLmRlZmF1bHRzKSBvciB7fVxuICAgICAgICBAZm9ybSA9IGFuZ3VsYXIuY29weShAb3B0aW9ucy5kZWZhdWx0cykgb3Ige31cbiAgICAgICAgQG9wdGlvbnMucmVzZXQ/KGZvcm0pXG4gICAgICAgIEBvcHRpb25zLmFjdGlvbj8oZm9ybSlcbiAgICAgIEBcblxuICAgIHBhcmFtczogKHJlZnJlc2gsIGRlZmF1bHRzKSAtPlxuICAgICAgW2RlZmF1bHRzLCByZWZyZXNoXSA9IFtyZWZyZXNoLCBmYWxzZV0gIGlmIGFuZ3VsYXIuaXNPYmplY3QgcmVmcmVzaFxuXG4gICAgICBwYXJhbXMgPSBpZiByZWZyZXNoIGlzIHRydWVcbiAgICAgICAgYW5ndWxhci5jb3B5KEBjdXJyZW50KVxuICAgICAgZWxzZVxuICAgICAgICBhbmd1bGFyLmNvcHkoQGZvcm0gPSBhbmd1bGFyLmNvcHkoQGN1cnJlbnQpKVxuXG4gICAgICBmb3Iga2V5IG9mIEBvcHRpb25zLmRlZmF1bHRzXG4gICAgICAgIHBhcmFtc1trZXldID0gcGFyYW1zW2tleV0uZmlsdGVyKChhKSAtPiAhIWEpICBpZiBhbmd1bGFyLmlzQXJyYXkgcGFyYW1zW2tleV1cblxuICAgICAgcGFyYW1zID0gYW5ndWxhci5leHRlbmQgcGFyYW1zLCBhbmd1bGFyLmNvcHkoZGVmYXVsdHMpXG5cbiAgICAgIGlmIGFuZ3VsYXIuaXNGdW5jdGlvbiBAb3B0aW9ucy50cmFuc2Zvcm1cbiAgICAgICAgcGFyYW1zW2tleV0gPSBAb3B0aW9ucy50cmFuc2Zvcm0oa2V5LCB2YWx1ZSkgIGZvciBrZXksIHZhbHVlIG9mIHBhcmFtc1xuXG4gICAgICBwYXJhbXNcblxuICBuZXcgU2VhcmNoRm9ybShvcHRpb25zKVxuXVxuIiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICBcImRlZmF1bHRcIjogb2JqXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdDsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlc1wiKTtcblxudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXRcIik7XG5cbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5XCIpO1xuXG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0XCIpO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5OyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdDsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXlcIik7XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShuKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5OyIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykge1xuICAgIGFycjJbaV0gPSBhcnJbaV07XG4gIH1cblxuICByZXR1cm4gYXJyMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3Q7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2s7IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzczsiXSwic291cmNlUm9vdCI6IiJ9