From d3a31d5a6f98950269c06e45285b7ac93194f4b4 Mon Sep 17 00:00:00 2001 From: "M. Peter" Date: Fri, 27 Jan 2017 11:35:48 +0100 Subject: [PATCH] bump version 0.2.2 --- README.md | 1 + css/iggy.css | 2 +- dist/css/iggy.css | 2 +- dist/js/iggy.js | 8 ++++---- js/iggy.debug.js | 46 ++++++++++++++++++++++++++++++++++++++-------- js/iggy.js | 44 +++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 7 files changed, 83 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 7e7ed2f..0502237 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ There are several options to customize the behavior of iggy. ## Release History |Version|Date|Description| |:--:|:--:|:--| +|0.2.2|2017-01-27|#65 fixed search button handling; #66 filter empty elements; array facet respect array max count on click| |0.2.1|2017-01-26|#58 Changed style of search button; #63 Optimized display of array facet gui; #61 Fixed pinned facets, added `active` and optimized tab navigation.| |0.2.0|2017-01-25|#55 fixed date range picker and added option `dateformat`; #58 added search button; #59 The "+" is hidden if the facet select is open; Facets can be `pinned:true` to be always displayed and be undeletable. | |0.1.13|2016-08-11|handle select2 jQuery text option texts #57| diff --git a/css/iggy.css b/css/iggy.css index b57a96d..9375103 100644 --- a/css/iggy.css +++ b/css/iggy.css @@ -1,5 +1,5 @@ /* - * IGGY 0.2.1 ( 2017-01-26 ) + * IGGY 0.2.2 ( 2017-01-27 ) * http://mpneuried.github.io/iggy/ * * Released under the MIT license diff --git a/dist/css/iggy.css b/dist/css/iggy.css index b57a96d..9375103 100644 --- a/dist/css/iggy.css +++ b/dist/css/iggy.css @@ -1,5 +1,5 @@ /* - * IGGY 0.2.1 ( 2017-01-26 ) + * IGGY 0.2.2 ( 2017-01-27 ) * http://mpneuried.github.io/iggy/ * * Released under the MIT license diff --git a/dist/js/iggy.js b/dist/js/iggy.js index 5bf7f23..243010d 100644 --- a/dist/js/iggy.js +++ b/dist/js/iggy.js @@ -1,10 +1,10 @@ /* - * IGGY 0.2.1 ( 2017-01-26 ) + * IGGY 0.2.2 ( 2017-01-27 ) * http://mpneuried.github.io/iggy/ * * Released under the MIT license * https://github.com/mpneuried/iggy/blob/master/LICENSE */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.IGGY=a()}}(function(){var a;return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g1)throw this._error("ESIZEELJQUERY");return a}if(a instanceof Element)return this.$(a);throw this._error("EINVALIDELTYPE")},b.prototype._prepareFacets=function(a,b){var c,e,f,g,h,i;for(null==b&&(b={}),f=[],e=h=0,i=a.length;h=0&&this.add(k)}return this},b.prototype._generateSubFilter=function(a){var b;return b=_.isFunction(a)?a:_.isArray(a)?function(b){var c;return c=b.id,h.call(a,c)>=0}:_.isString(a)||_.isNumber(a)?function(b){return b.id===a}:function(b){var c,d;for(c in a)if(d=a[c],b.get(c)!==d)return!1;return!0}},b}(Backbone.Collection),b.exports=d},{}],3:[function(a,b,c){var d,e=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},f={}.hasOwnProperty;d=function(b){function c(){return c.__super__.constructor.apply(this,arguments)}return e(c,b),c.prototype.SubView=a("../views/facets/subarray"),c}(a("./facet_string")),b.exports=d},{"../views/facets/subarray":29,"./facet_string":10}],4:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(a,b){this.match=e(this.match,this),this.getLabel=e(this.getLabel,this),this.main=b.main,c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.idAttribute="name",c.prototype.SubView=a("../views/facets/base"),c.prototype.defaults=function(){return{type:"string",name:"name",label:"Description",sort:0}},c.prototype.getLabel=function(){return this.get("label")},c.prototype.match=function(a){var b,c;return b=this.get("name")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},c.prototype.comparator=function(a){return a.id},c}(Backbone.Model),b.exports=d},{"../views/facets/base":26}],5:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/daterange"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{opts:{},value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/daterange":27,"./facet_base":4}],6:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(a){function b(){return this.exec=e(this.exec,this),this.defaults=e(this.defaults,this),b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.SubView=null,b.prototype.onlyExec=!0,b.prototype.defaults=function(){return $.extend(b.__super__.defaults.apply(this,arguments),{options:[]})},b.prototype.exec=function(){this.main.trigger(this.get("event"),this.toJSON())},b}(a("./facet_base")),b.exports=d},{"./facet_base":4}],7:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subnumber"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{min:null,max:null,step:1,value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subnumber":30,"./facet_base":4}],8:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subrange"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{min:null,max:null,step:1,value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subrange":31,"./facet_base":4}],9:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subselect"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{options:[],waitForAsync:!0})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subselect":32,"./facet_base":4}],10:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/substring"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{options:[]})},c}(a("./facet_base")),b.exports=d},{"../views/facets/substring":33,"./facet_base":4}],11:[function(a,b,c){var d,e,f,g=function(a,b){return function(){return a.apply(b,arguments)}},h=function(a,b){function c(){this.constructor=a}for(var d in b)i.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i={}.hasOwnProperty;f=a("sortcoll"),e=function(a,b){return a.get(b)},d=function(a){function b(a,c){var d;return null==c&&(c={}),this._subCollecctionOptions=g(this._subCollecctionOptions,this),null==c.comparator&&(d=function(){switch(c.dir){case"asc":return!0;case"desc":return!1;default:return!0}}(),c.comparator=f(["sort"].concat(c.sortby||"name"),{sort:!1,"?":d},e)),b.__super__.constructor.call(this,a,c)}return h(b,a),b.prototype._subCollecctionOptions=function(){var a;return a=b.__super__._subCollecctionOptions.apply(this,arguments),a.dir=this.forward?"asc":"desc",a},b.prototype.modelId=function(a){return a.name},b}(a("./backbone_sub")),b.exports=d},{"./backbone_sub":2,sortcoll:39}],12:[function(a,b,c){var d,e,f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty,h=function(a,b){return function(){return a.apply(b,arguments)}};d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.idAttribute="name",b.prototype.defaults={type:"string",name:null,value:null},b}(Backbone.Model),e=function(a){function b(){return this.parse=h(this.parse,this),this.initialize=h(this.initialize,this),b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.model=d,b.prototype.initialize=function(a,b){var c;(null!=(c=b.modifyKey)?c.length:void 0)&&(this.modifyKey=b.modifyKey)},b.prototype.parse=function(a,b){var c,d,e;return c=b._facet.get("modifyKey")||this.modifyKey||"value",d=null!=(e=b._facet)?e.get("modify"):void 0,null!=d&&_.isFunction(d)&&(a[c]=d(a.value,b._facet,a)),a},b}(Backbone.Collection),b.exports=e},{}],13:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;d=function(a){function b(){return this.getLabel=f(this.getLabel,this),b.__super__.constructor.apply(this,arguments)}return g(b,a),b.prototype.idAttribute="value",b.prototype.getLabel=function(){return this.get("label")||this.get(this.idAttribute)||""},b}(Backbone.Model),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.prototype.model=d,b}(a("./backbone_sub")),b.exports=e},{"./backbone_sub":2}],14:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f){c.push(''+d.escape(null==(b=f)?"":b)+''),a&&c.push("'),c.push("")}.call(this,"custom"in e?e.custom:"undefined"!=typeof custom?custom:void 0,"id"in e?e.id:"undefined"!=typeof id?id:void 0,"txt"in e?e.txt:"undefined"!=typeof txt?txt:void 0),c.join("")}},{"jade/runtime":38}],15:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0),b.join("")}},{"jade/runtime":38}],16:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h){f&&f.length&&(c.push('
"),function(){var a=f;if("number"==typeof a.length)for(var g=0,h=a.length;g"+d.escape(null==(b=i)?"":b)+"")}else{var h=0;for(var g in a){h++;var i=a[g];c.push(""+d.escape(null==(b=i)?"":b)+"")}}}.call(this),c.push("
")),c.push("')}.call(this,"cid"in e?e.cid:"undefined"!=typeof cid?cid:void 0,"operator"in e?e.operator:"undefined"!=typeof operator?operator:void 0,"operators"in e?e.operators:"undefined"!=typeof operators?operators:void 0,"undefined"in e?e.undefined:void 0,"value"in e?e.value:"undefined"!=typeof value?value:void 0),c.join("")}},{"jade/runtime":38}],17:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push('
');var e=c?c:[];b.push("-
')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"value"in c?c.value:"undefined"!=typeof value?value:void 0),b.join("")}},{"jade/runtime":38}],18:[function(a,b,c){a("jade/runtime");b.exports=function(a){var b=[];return b.join("")}},{"jade/runtime":38}],19:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h,i){c.push("'),f?function(){var a=f;if("number"==typeof a.length)for(var e=0,g=a.length;e"),function(){var a=h;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var g=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}}}.call(this)}else{var g=0;for(var e in a){g++;var h=a[e];c.push(""),function(){var a=h;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var g=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}}}.call(this)}}}.call(this):function(){var a=g;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=h.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var h=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=h.label)?"":b)+"")}}}.call(this),c.push(""),e&&c.push('')}.call(this,"cid"in e?e.cid:"undefined"!=typeof cid?cid:void 0,"multiple"in e?e.multiple:"undefined"!=typeof multiple?multiple:void 0,"optionGroups"in e?e.optionGroups:"undefined"!=typeof optionGroups?optionGroups:void 0,"options"in e?e.options:"undefined"!=typeof options?options:void 0,"undefined"in e?e.undefined:void 0,"value"in e?e.value:"undefined"!=typeof value?value:void 0),c.join("")}},{"jade/runtime":38}],20:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"inpval"in c?c.inpval:"undefined"!=typeof inpval?inpval:void 0),b.join("")}},{"jade/runtime":38}],21:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h){var i=0;e&&g&&(i=1,c.push('
  • "'+(null==(b=g)?"":b)+'"
  • ')),f.length?function(){var e=f;if("number"==typeof e.length)for(var g=0,h=e.length;g"+(null==(b=j.label)?"":b)+"")}else{var h=0;for(var g in e){h++;var j=e[g];c.push(""+(null==(b=j.label)?"":b)+"")}}}.call(this):e||c.push('
  • no result for "'+d.escape(null==(b=g)?"":b)+'"
  • ')}.call(this,"activeIdx"in e?e.activeIdx:"undefined"!=typeof activeIdx?activeIdx:void 0,"custom"in e?e.custom:"undefined"!=typeof custom?custom:void 0,"list"in e?e.list:"undefined"!=typeof list?list:void 0,"query"in e?e.query:"undefined"!=typeof query?query:void 0,"undefined"in e?e.undefined:void 0),c.join("")}},{"jade/runtime":38}],22:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"value"in c?c.value:"undefined"!=typeof value?value:void 0),b.join("")}},{"jade/runtime":38}],23:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g){e||c.push('
    '),c.push(''+d.escape(null==(b=a)?"":b)+':
      '),f&&f.length&&function(){var a=f;if("number"==typeof a.length)for(var e=0,g=a.length;e'+d.escape(null==(b=h)?"":b)+'')}else{var g=0;for(var e in a){g++;var h=a[e];c.push('
    • '+d.escape(null==(b=h)?"":b)+'
    • ')}}}.call(this),c.push('
    ')}.call(this,"label"in e?e.label:"undefined"!=typeof label?label:void 0,"pinned"in e?e.pinned:"undefined"!=typeof pinned?pinned:void 0,"selected"in e?e.selected:"undefined"!=typeof selected?selected:void 0,"undefined"in e?e.undefined:void 0),c.join("")}},{"jade/runtime":38}],24:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a){c.push(''),void 0!=a&&void 0!=a.template&&a.template.length>=0&&c.push(""+(null==(b=a.template)?"":b)+"")}.call(this,"searchButton"in e?e.searchButton:"undefined"!=typeof searchButton?searchButton:void 0),c.join("")}},{"jade/runtime":38}],25:[function(a,b,c){b.exports={LEFT:37,RIGHT:39,UP:38,DOWN:40,ESC:[229,27],ENTER:13,TAB:9}},{}],26:[function(a,b,c){var d,e,f,g=function(a,b){return function(){return a.apply(b,arguments)}},h=function(a,b){function c(){this.constructor=a}for(var d in b)i.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i={}.hasOwnProperty,j=[].indexOf||function(a){for(var b=0,c=this.length;b"+c.join("
  • ")+"
  • ":""},c.prototype.open=function(){this.$el.removeClass("closed"),this.$el.addClass("open"),this.isOpen=!0,this.trigger("opened")},c.prototype.input=function(a){if("keydown"===a.type)switch(a.keyCode){case e.ENTER:this.select()}},c.prototype._onKey=function(a){var b;if(a.keyCode===e.TAB||(b=a.keyCode,j.call(e.TAB,b)>=0))return void this._onTabAction(a)},c.prototype.getTemplateData=function(){var a,b;return b={cid:this.cid,value:null!=(a=this.model)?a.get("value"):void 0}},c.prototype._getInpSelector=function(){return"input#"+this.cid},c.prototype.reopen=function(a){this.$el.removeClass("closed"),this.$el.addClass("open"),this.render(),null!=a&&a.open()},c.prototype.render=function(a){var b;b=this.template(this.getTemplateData()),this.$el.html(b),a||this.$el.removeClass("closed"),this.$inp=this.$el.find(this._getInpSelector())},c.prototype._hasTabEvent=function(){return"keydown"},c.prototype._hasTabListener=function(){return!0},c.prototype._onTabAction=function(a){return a.preventDefault(),a.stopPropagation(),this.select(),!0},c.prototype.close=function(a){this.focused=!1,this.$el.removeClass("open"),this.$el.addClass("closed"),this.isOpen=!1,this.trigger("closed",this.result)},c.prototype.getResults=function(){return{value:this.getValue()}},c.prototype.getValue=function(){return this.$inp.val()},c.prototype.getSelectModel=function(){return f.prototype.model},c.prototype._checkSelectEmpty=function(a){return!(!_.isEmpty(a)||_.isNumber(a)||_.isBoolean(a)||this.model.get("pinned"))&&(this.close(),!0)},c.prototype.select=function(){var a;a=this.getValue(),this._checkSelectEmpty(a)||this.set(a)},c.prototype.set=function(a){var b,c;c=this.result.first(),null==c?(b=this.getSelectModel(),c=new b({value:a}),this.result.add(c)):c.set({value:a}),this.trigger("selected",c),this.close()},c}(Backbone.View),b.exports=d},{"../../models/subresults":13,"../../tmpls/result_base.jade":18,"../../utils/keycodes":25}],27:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;e=a("../../utils/keycodes"),d=function(b){function c(){return this.select=f(this.select,this),this.getValue=f(this.getValue,this),this.getTemplateData=f(this.getTemplateData,this),this._dateReturn=f(this._dateReturn,this),this.renderResult=f(this.renderResult,this),this.remove=f(this.remove,this),this.close=f(this.close,this),this.focus=f(this.focus,this),this.events=f(this.events,this),this.forcedDateRangeOpts=f(this.forcedDateRangeOpts,this),c.__super__.constructor.apply(this,arguments)}return g(c,b),c.prototype.template=a("../../tmpls/daterange.jade"),c.prototype.forcedDateRangeOpts=function(){var a,b,c,d,e;return b={opens:"right"},this.model.get("dateformat")&&(b.locale={format:this.model.get("dateformat")}),null!=(null!=(d=this.model.get("value"))?d[0]:void 0)&&(c=moment(this.model.get("value")[0],this.model.get("dateformat")),c.isValid()&&(b.startDate=c._d)),null!=(null!=(e=this.model.get("value"))?e[1]:void 0)&&(a=moment(this.model.get("value")[1],this.model.get("dateformat")),a.isValid()&&(b.endDate=a._d)),b},c.prototype.events=function(){},c.prototype.focus=function(){var a,b;return null==this.daterangepicker?(a=_.extend({},this.model.get("opts"),this.forcedDateRangeOpts()),this.$inp.daterangepicker(a,this._dateReturn),this.daterangepicker=this.$inp.data("daterangepicker"),null!=(b=this.daterangepicker.container)&&b.addClass("daterange-iggy"),this.daterangepicker.container.on("click",function(a){return a.stopPropagation(),!1})):(this.daterangepicker.element=this.$inp,this.daterangepicker.show()),this.$inp.on("cancel.daterangepicker",this.close),this.$inp.on("hide.daterangepicker",this.close),c.__super__.focus.apply(this,arguments)},c.prototype.close=function(){c.__super__.close.apply(this,arguments),this.$inp.off("cancel.daterangepicker",this.close),this.$inp.off("hide.daterangepicker",this.close)},c.prototype.remove=function(){var a;return null!=(a=this.daterangepicker)&&a.remove(),this.daterangepicker=null,c.__super__.remove.apply(this,arguments)},c.prototype.renderResult=function(){var a,b,c,d,e,f;return c=this.getResults(),e=_.isNumber(c.value[0])?moment(c.value[0]):moment(c.value[0],this.model.get("dateformat")),null!=c.value[1]&&(a=_.isNumber(c.value[1])?moment(c.value[1]):moment(c.value[1],this.model.get("dateformat"))),f=this.model.get("opts").timePicker,d="
  • ",b=null!=this.model.get("dateformat")?this.model.get("dateformat"):f?"LLLL":"LL",d+=e.format(b),null!=a&&(d+=" - ",d+=a.format(b)),d+="
  • "},c.prototype._hasTabListener=function(){return!1},c.prototype._dateReturn=function(a,b){this.startDate=a,this.endDate=b,this.model.set("value",this.getValue(!1)),this.select()},c.prototype.getTemplateData=function(){return c.__super__.getTemplateData.apply(this,arguments)},c.prototype.getValue=function(a){var b,c;return null==a&&(a=!0),a&&(c=this.model.get("value"),null!=c)?(_.isArray(c)||(c=[c]),this.startDate=c[0],this.endDate=c[1],c):(b=[this.startDate.valueOf()],null!=this.endDate&&b.push(this.endDate.valueOf()),b)},c.prototype.select=function(){var a,b;a=this.getSelectModel(),b=new a({value:this.getValue()}),this.result.add(b),this.trigger("selected",b),this.close()},c}(a("./base")),b.exports=d},{"../../tmpls/daterange.jade":15,"../../utils/keycodes":25,"./base":26}],28:[function(a,b,c){var d,e,f,g,h=function(a,b){return function(){return a.apply(b,arguments)}},i=function(a,b){function c(){this.constructor=a}for(var d in b)j.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},j={}.hasOwnProperty;e=a("../../utils/keycodes"),f=function(a,b){return a/=b,a=Math.round(a)*b},g=function(a,b){return b=Math.pow(10,b),a*=b,a=Math.round(a),a/=b},d=function(a){function b(){this._setNumber=h(this._setNumber,this),this.getValue=h(this.getValue,this),this.crement=h(this.crement,this),this.input=h(this.input,this),this.events=h(this.events,this),this.setNumber=_.throttle(this._setNumber,300,{leading:!1,trailing:!1}),b.__super__.constructor.apply(this,arguments)}return i(b,a),b.prototype.events=function(){var a;return a={},a["keyup "+this._getInpSelector()]="input",a["keydown "+this._getInpSelector()]="input",a},b.prototype.input=function(a){var b,c;if(b=$(a.currentTarget),"keydown"===a.type)switch(a.keyCode){case e.UP:return void this.crement(this.model.get("step"),b);case e.DOWN:return void this.crement(this.model.get("step")*-1,b);case e.ENTER:return void this.select()}"keyup"===a.type&&(c=a.currentTarget.value.replace(/[^\d]?[^-\d]+/g,""),c=parseInt(c,10),this.setNumber(c,b))},b.prototype.crement=function(a,b){var c;null==b&&(b=this.$inp),c=b.val(),c=(null!=c?c.length:void 0)?parseInt(c,10):this.model.get("value"),this._setNumber(c+a,b)},b.prototype.getValue=function(){var a;return a=this.$inp.val(),(null!=a?a.length:void 0)?parseInt(this.valueByDefinition(a),10):null; -},b.prototype._setNumber=function(a,b){var c;null==b&&(b=this.$inp),isNaN(a)||(c=b.val(),a=this.valueByDefinition(a),c!==a.toString()&&b.val(a))},b.prototype.valueByDefinition=function(a){var b,c,d,e,h;return d=this.model.get("max"),e=this.model.get("min"),h=this.model.get("step"),e>d&&(c=e,e=d,d=c),null!=e&&ad?d:(1!==h&&(a=f(a,h)),b=Math.max(0,Math.ceil(Math.log(1/h)/Math.log(10))),a=b>0?g(a,b):Math.round(a))},b}(a("./base")),b.exports=d},{"../../utils/keycodes":25,"./base":26}],29:[function(a,b,c){var d,e,f,g,h,i,j,k=function(a,b){return function(){return a.apply(b,arguments)}},l=function(a,b){function c(){this.constructor=a}for(var d in b)m.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},m={}.hasOwnProperty;j=a("../../models/subresults"),g=a("../../utils/keycodes"),h=function(a){function b(){return this.match=k(this.match,this),b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.match=function(a){var b,c;return b=this.get("value")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},b}(j.prototype.model),i=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.model=h,b}(j),d=function(a){function b(){return this.match=k(this.match,this),this.getLabel=k(this.getLabel,this),b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.idAttribute="value",b.prototype.getLabel=function(){return this.get("label")||this.get("name")||"-"},b.prototype.match=function(a){var b,c;return b=this.get("value")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},b}(Backbone.Model),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.model=d,b}(a("../../models/backbone_sub")),f=function(b){function c(a){this._createOptionCollection=k(this._createOptionCollection,this),this._onTabAction=k(this._onTabAction,this),this.getResults=k(this.getResults,this),this.reopen=k(this.reopen,this),this.select=k(this.select,this),this._isFull=k(this._isFull,this),this.renderResult=k(this.renderResult,this),this.getTemplateData=k(this.getTemplateData,this),this.editRes=k(this.editRes,this),this.rmRes=k(this.rmRes,this),this.close=k(this.close,this),this.events=k(this.events,this),this.initialize=k(this.initialize,this),this.loading=!1,null!=a.model.get("count")&&(this.selectCount=a.model.get("count")),a.custom=!0,null!=a.model.get("custom")&&(a.custom=Boolean(a.model.get("custom"))),this.collection=this._createOptionCollection(a.model.get("options")),!a.custom&&this.selectCount<=0&&(this.selectCount=this.collection.length),c.__super__.constructor.call(this,a),this.result.on("remove",function(b){return function(c,d){d.length&&a.sub.renderResult(),b.searchcoll.add(c),b.trigger("removed",c)}}(this))}return l(c,b),c.prototype.templateResLi=a("../../tmpls/array_resultli.jade"),c.prototype.optDefault={label:"-",value:"-"},c.prototype.selectCount=0,c.prototype.optColl=i,c.prototype.initialize=function(){return this.editMode=!1,c.__super__.initialize.apply(this,arguments)},c.prototype.events=function(){var a;return a=c.__super__.events.apply(this,arguments),a["blur input#"+this.cid]="close",a},c.prototype.close=function(a){var b,d;return b=!1,this.editMode&&(b=!0),this.editMode=!1,this.loading?(null!=a&&a.preventDefault(),null!=a&&a.stopPropagation(),void this.focus()):(null!=(d=this.model)?d.get("pinned"):void 0)?c.__super__.close.apply(this,arguments):(b&&this.result.length<=0&&this.sub.del(),c.__super__.close.apply(this,arguments))},c.prototype.rmRes=function(a){var b,c,d;null!=(null!=a?a.target:void 0)?b=null!=(d=$(a.target))?d.data("id"):void 0:null!=a&&(b=a),c=this.result.get(b),null!=c&&(this.result.remove(b),(null!=c?c.get("custom"):void 0)&&this.searchcoll.remove(b))},c.prototype.editRes=function(a){var b,c,d;this.editMode=!0,b=null!=(d=$(a.target))?d.data("id"):void 0,c=this._editval=this.result.get(b).get("value"),this.result.remove(b),this.searchcoll.remove(b),this.sub.reopen(),this.search(c)},c.prototype.getTemplateData=function(){var a,b;return a=c.__super__.getTemplateData.apply(this,arguments),(null!=(b=this._editval)?b.length:void 0)&&(a.inpval=this._editval,this._editval=null),a},c.prototype.renderResult=function(a){var b,c,d,e,f,g;if(null==a&&(a=!1),a)return"
  • ";for(b=[],g=this.result.models,d=c=0,e=g.length;c"+b.join("
  • ")+"
  • "},c.prototype._isFull=function(){return!(this.selectCount<=0)&&(this.result||[]).length>=this.selectCount},c.prototype.select=function(){var a,b,c,d,e,f;if(!this.loading&&(c=this.model.get("value"),null==c||_.isArray(c)||(c=[c]),null!=c?c.length:void 0)){for(f=this.selectCount<=0?c:c.slice(0,this.selectCount),d=0,e=f.length;d":(b=this.getResults(),c="
  • ",null!=b.operator&&(c+=b.operator+" "),c+=b.value,c+="
  • ")},c.prototype.close=function(a){null!=this.$inpOp&&(this.$inpOp.select2("destroy"),this.$inpOp.remove(),this.$inpOp=null),c.__super__.close.apply(this,arguments)},c.prototype.select=function(a){var b,d;return(null==(null!=a?a.relatedTarget:void 0)||(b=this.el.compareDocumentPosition(null!=a?a.relatedTarget:void 0),0===b||b-16>=0))&&(null==a||(null!=a?a.relatedTarget:void 0)!==this.$inp.get(0)&&(null!=a?a.relatedTarget:void 0)!==(null!=(d=this.$inpOp)?d.get(0):void 0))?(null!=this.$inpOp&&this.model.set({operator:this.$inpOp.val()}),void c.__super__.select.apply(this,arguments)):void a.stopPropagation()},c.prototype._opSelected=function(){this.selectedOP=!0,this.focus()},c.prototype.focus=function(a){return null==a&&(a=!1),null==this.$inpOp||this.selectedOP?void c.__super__.focus.apply(this,arguments):void this.$inpOp.select2("open")},c.prototype.reopen=function(a){var b,d;d=this.result.first().get("value"),b=this.result.first(),this.model.set({value:d}),a.$results.empty().html(this.renderResult(!0)),c.__super__.reopen.apply(this,arguments)},c.prototype.getTemplateData=function(){return _.extend(c.__super__.getTemplateData.apply(this,arguments),{operators:this.model.get("operators"),operator:this.model.get("operator")})},c.prototype._onTabAction=function(a){var b;return b=this.getValue(),a.preventDefault(),a.stopPropagation(),isNaN(b)||this.select(),!0},c.prototype.getResults=function(){var a;return a=null!=this.$inpOp?{value:this.getValue(),operator:this.$inpOp.val()}:{value:this.getValue()}},c}(a("./number_base")),b.exports=d},{"../../tmpls/number.jade":16,"./number_base":28}],31:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this._onTabAction=e(this._onTabAction,this),this.getValue=e(this.getValue,this),this.getResults=e(this.getResults,this),this.close=e(this.close,this),this.select=e(this.select,this),this.reopen=e(this.reopen,this),this.focus=e(this.focus,this),this.render=e(this.render,this),this.renderResult=e(this.renderResult,this),this.events=e(this.events,this),this._getInpSelector=e(this._getInpSelector,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.template=a("../../tmpls/range.jade"),c.prototype._getInpSelector=function(a){return null==a&&(a="_from"),"input#"+this.cid+a},c.prototype.events=function(){var a;return a={},a["keyup "+this._getInpSelector()]="input",a["keydown "+this._getInpSelector()]="input",a["keyup "+this._getInpSelector("_to")]="input",a["keydown "+this._getInpSelector("_to")]="input",a["blur "+this._getInpSelector()]="select",a["blur "+this._getInpSelector("_to")]="select",a},c.prototype.renderResult=function(a){var b;return null==a&&(a=!1),a?"
  • ":(b=this.getResults(),"
  • "+b.value.join(" - ")+"
  • ")},c.prototype.render=function(){c.__super__.render.apply(this,arguments),this.$inpTo=this.$el.find(this._getInpSelector("_to"))},c.prototype.focus=function(a){null==a&&(a=!1),c.__super__.focus.apply(this,arguments)},c.prototype.reopen=function(a){var b;b=this.result.first().get("value"),this.model.set({value:b}),a.$results.empty().html(this.renderResult(!0)),c.__super__.reopen.apply(this,arguments)},c.prototype.select=function(a){return null==a||(null!=a?a.relatedTarget:void 0)!==this.$inp.get(0)&&(null!=a?a.relatedTarget:void 0)!==this.$inpTo.get(0)?void c.__super__.select.apply(this,arguments):void a.stopPropagation()},c.prototype.close=function(){try{this.$(".rangeinp").remove()}catch(a){}c.__super__.close.apply(this,arguments)},c.prototype.getResults=function(){var a;return a={value:this.getValue()}},c.prototype.getValue=function(){var a,b,d;return b=c.__super__.getValue.apply(this,arguments),a=this.$inpTo.val(),(null!=a?a.length:void 0)?(d=parseInt(this.valueByDefinition(a),10),[b,d]):null},c.prototype._onTabAction=function(a){var b;return this.$inp.is(a.target)&&!a.shiftKey?(this.$inpTo.focus(),!1):this.$inpTo.is(a.target)&&a.shiftKey?(this.$inp.focus(),!1):(b=this.getValue(),!((null!=b?b.length:void 0)>=2)||(a.preventDefault(),a.stopPropagation(),this.select(),!0))},c}(a("./number_base")),b.exports=d},{"../../tmpls/range.jade":17,"./number_base":28}],32:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty,i=[].indexOf||function(a){for(var b=0,c=this.length;b=this.selectCount},c.prototype.reopen=function(a){var b;if(!this._isFull())return b=this.result.pluck("value"),this.model.set({value:b}),a.$results.empty(),this.select2.$container.off(),this.select2.destroy(),this.result.reset(),this.select2=null,c.__super__.reopen.apply(this,arguments)},c.prototype._checkIntValue=function(a){var b,c,d;if(null==a&&(a=[]),!a||!a.length)return!1;for(c=0,d=a.length;c1&&(a.optionGroups=b),a},c.prototype._hasTabListener=function(a){return!a&&this.model.get("multiple")},c.prototype._hasTabEvent=function(){return"keyup"},c.prototype.getValue=function(){var a,b,c,d,e,f;for(a=[],f=(null!=(e=this._initSelect2())?e.data():void 0)||[],c=0,d=f.length;cc[a]?1:b[a]=0)?(b.preventDefault(),$(b.target).is(".search-btn")?void setTimeout(function(){return a.addFacet()},0):(null!=(f=a.selectview)?f.isOpen:void 0)?void((null!=b?b.shiftKey:void 0)?(c=null!=(g=a.$addBtn)&&null!=(h=g.prevAll(".sub"))&&null!=(i=h.first())?i.data("fctid"):void 0,null!=c&&setTimeout(function(){var b;return null!=(b=a.facets[c])?b.reopen():void 0},0)):(a.selectview.close(),a.focusSearch())):void a.trigger("escape",b,a._nextFacet)):b.keyCode===d.ESC||(j=b.keyCode,k.call(d.ESC,j)>=0)?(a.exit(),void a.trigger("escape",b)):void 0}}(this))},c.prototype._nextFacet=function(a,b){var c,d,e,f;return d=(null!=a?a.shiftKey:void 0)?"prev":"next",c=null!=(f=b.$el)&&"function"==typeof f[d]?f[d]():void 0,c.hasClass("add-facet-btn")?void setTimeout(function(a){return function(){return a.addFacet()}}(this),0):(e=null!=c?c.data("fctid"):void 0,void(null!=e&&setTimeout(function(a){return function(){var b;return null!=(b=a.facets[e])?b.reopen():void 0}}(this),0)))},c.prototype.focusSearch=function(){null!=this.$searchBtn&&this.$searchBtn.focus()},c.prototype._onSearch=function(a){a.stopPropagation(),this.exit(),this.trigger("searchbutton",this.searchButton.event)},c.prototype._onFocusSearch=function(a){var b;a.stopPropagation(),null!=(b=this.selectview)&&"function"==typeof b.close&&b.close()},c.prototype._outerClick=function(a){var b;a.stopPropagation(),b=this.el.compareDocumentPosition(a.target),0===b||b-16>=0||this.exit(!1)},c}(Backbone.View),b.exports=e},{"../tmpls/wrapper.jade":24,"../utils/keycodes":25,"./selector":35,"./sub":36}],35:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;d=a("../utils/keycodes"),e=function(b){function c(a){this.selectActive=f(this.selectActive,this),this.select=f(this.select,this),this.move=f(this.move,this),this.search=f(this.search,this),this.open=f(this.open,this),this.focus=f(this.focus,this),this.selected=f(this.selected,this),this._onTabAction=f(this._onTabAction,this),this._isFull=f(this._isFull,this),this._onClick=f(this._onClick,this),this.checkOptionsEmpty=f(this.checkOptionsEmpty,this),this.scrollHelper=f(this.scrollHelper,this),this._checkScroll=f(this._checkScroll,this),this.renderRes=f(this.renderRes,this),this.render=f(this.render,this),this.getTemplateData=f(this.getTemplateData,this),this.initialize=f(this.initialize,this),this.events=f(this.events,this),this.className=f(this.className,this),this.custom=a.custom||!1,this.activeIdx=0,this.currQuery="",null!=a.main&&(this.main=a.main),c.__super__.constructor.call(this,a)}return g(c,b),c.prototype.template=a("../tmpls/selector.jade"),c.prototype.templateEl=a("../tmpls/selectorli.jade"),c.prototype.selectCount=1,c.prototype.className=function(){var a;return a=["add-facet"],this.custom&&a.push("custom"),a.join(" ")},c.prototype.events=function(){var a;return a={"mousedown a":"_onClick"},a["focus input#"+this.cid]="open",a["keydown input#"+this.cid]="search",a["keyup input#"+this.cid]="search",a},c.prototype.initialize=function(a){c.__super__.initialize.apply(this,arguments),this.searchcoll=this.collection.sub(function(){return!0}),this.result=new this.collection.constructor,this.listenTo(this.searchcoll,"add",this.renderRes),this.listenTo(this.searchcoll,"remove",this.renderRes),this.listenTo(this.searchcoll,"remove",this.checkOptionsEmpty)},c.prototype.getTemplateData=function(){return _.extend(c.__super__.getTemplateData.apply(this,arguments),{custom:this.custom})},c.prototype.render=function(){return c.__super__.render.apply(this,arguments),this.$list=this.$el.find("#"+this.cid+"typelist"),this.renderRes(),this.el},c.prototype.renderRes=function(){var a,b,c,d,e,f,g,h,i,j,k;for(this.$list.empty(),d=[],j=this.searchcoll.models,g=f=0,h=j.length;f1&&(c=c.replace(new RegExp(this.currQuery,"gi"),function(a){return""+a+""})),d.push({label:c,id:b,cssclass:a}));return this.$list.append(this.templateEl({list:d,query:this.currQuery,activeIdx:this.activeIdx,custom:this.custom})),this._checkScroll(),this.$list},c.prototype._scrollTill=198,c.prototype._checkScroll=function(){var a;return a=this.$list.height(),a>0?void this.scrollHelper(a):void setTimeout(function(a){return function(){return a.scrollHelper(a.$list.height())}}(this),0)},c.prototype.scrollHelper=function(a){a>=this._scrollTill?this.scrolling=!0:this.scrolling=!1},c.prototype.checkOptionsEmpty=function(){},c.prototype._onClick=function(a){var b,c;if(a.stopPropagation(),a.preventDefault(),b=this.$(a.currentTarget).data("id"),null!=b&&(c=this.collection.get(b),null!=c))return this.selected(c),!1},c.prototype._isFull=function(){return!0},c.prototype._onTabAction=function(a){null!=this.main?(a.preventDefault(),a.stopPropagation(),this.main.focusSearch()):c.__super__._onTabAction.call(this,event)},c.prototype.selected=function(a){var b,c;try{if(null!=a.onlyExec)return void(null!=a&&"function"==typeof a.exec&&a.exec())}catch(a){b=a;try{console.error("Issue #23: CATCH - Class:"+this.constructor.name+" - activeIdx:"+this.activeIdx+" - collection:"+JSON.stringify(this.collection.toJSON()))}catch(a){c=a,console.error("Issue #23: CATCH")}}null!=a&&(this.searchcoll.remove(a),this.result.add(a),this.trigger("selected",a)),this._isFull()&&this.close()},c.prototype.focus=function(){var a;this.$inp.focus(),a=this.$inp.get(0),a.selectionStart=a.selectionEnd=a.value.length},c.prototype.open=function(){return this.trigger("opened"),c.__super__.open.apply(this,arguments)},c.prototype.search=function(a){var b;if("keydown"!==(null!=a?a.type:void 0))b=_.isString(a)?a:a.currentTarget.value.toLowerCase(),b!==this.currQuery&&(this.currQuery=b,this.searchcoll.updateSubFilter(function(a){return function(c){var d;return null==a.result.get(c.id)&&(null==b||!b.length||(d=c.match(b)))}}(this),!1),this.activeIdx=0,this.renderRes());else switch(a.keyCode){case d.UP:return void this.move(!0);case d.DOWN:return void this.move(!1);case d.ENTER:return void this.selectActive(!0)}},c.prototype.move=function(a){var b,c,d,e,f,g,h,i,j,k;if(null==a&&(a=!1),f=this.$el.find(".typelist a"),d=(null!=(k=this.currQuery)?k.length:void 0)?0:1,j=0,a){if(this.activeIdx-1i+this._scrollTill?c.scrollTop(h-this._scrollTill):h=0&&this.searchcoll.length)this.selected(this.collection.get(d.id));else{if(null==(f=this.currQuery)||!f.length)return;this.selected(new this.collection.model({ -value:this.currQuery,custom:!0})),this.$inp.val("")}},c}(a("./facets/base")),b.exports=e},{"../tmpls/selector.jade":20,"../tmpls/selectorli.jade":21,"../utils/keycodes":25,"./facets/base":26}],36:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.open=e(this.open,this),this.attachSubEvents=e(this.attachSubEvents,this),this.generateSub=e(this.generateSub,this),this.close=e(this.close,this),this.focus=e(this.focus,this),this.isOpen=e(this.isOpen,this),this.renderResult=e(this.renderResult,this),this.removed=e(this.removed,this),this.selected=e(this.selected,this),this.remove=e(this.remove,this),this.del=e(this.del,this),this.reopen=e(this.reopen,this),this.render=e(this.render,this),this.initialize=e(this.initialize,this),this.className=e(this.className,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.template=a("../tmpls/sub.jade"),c.prototype.className=function(){var a,b,c;return b="sub",c=this.model.get("type"),null!=c&&(b+=" sub-type-"+c),a=this.model.get("name"),null!=a&&(b+=" sub-name-"+a),b},c.prototype.initialize=function(a){this._isOpen=!1,this.result=new Backbone.Collection,this.$el.on("click",this.reopen),this.parent=a.parent,this.$el.data("fctid",this.model.id),this.parent.on("escape",function(a){return function(b,c){var d;a._isOpen&&(null!=(d=a.selectview)?d._onTabAction(b):void 0)&&null!=c&&c(b,a)}}(this))},c.prototype.events={"click .rm-facet-btn":"del"},c.prototype.render=function(a){var b,c,d,e,f,g,h,i;for(d=[],i=this.result.models,f=e=0,g=i.length;e":">",'"':"""},i=/[&<>"]/g;c.escape=g,c.rethrow=function b(c,d,e,f){if(!(c instanceof Error))throw c;if(!("undefined"==typeof window&&d||f))throw c.message+=" on line "+e,c;try{f=f||a("fs").readFileSync(d,"utf8")}catch(a){b(c,null,e)}var g=3,h=f.split("\n"),i=Math.max(e-g,0),j=Math.min(h.length,e+g),g=h.slice(i,j).map(function(a,b){var c=b+i+1;return(c==e?" > ":" ")+c+"| "+a}).join("\n");throw c.path=d,c.message=(d||"Jade")+":"+e+"\n"+g+"\n\n"+c.message,c},c.DebugItem=function(a,b){this.lineno=a,this.filename=b}},{fs:2}],2:[function(a,b,c){},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{fs:37}],39:[function(a,b,c){(function(){var a,c,d;d={}.toString,c=Array.isArray||function(a){return"[object Array]"===d.call(a)},a=function(a,b){return a[b]},b.exports=function(b,d,e){var f,g;return null==d&&(d=!0),null==e&&(e=a),c(b)||(b=[b]),(f=function(a,b,c){var d,g,h,i;return(null!=c?c.length:void 0)&&(g=null!=(i=c.splice(0,1))?i[0]:void 0,null!=g&&(h=f(a,g,c))),d=null!=a[b]?a[b]:null!=a["?"]?a["?"]:a,function(a,c){var f,g;return f=e(a,b),g=e(c,b),fg?d?1:-1:f===g?null!=h?h(a,c):0:void 0}})(d,null!=(g=b.splice(0,1))?g[0]:void 0,b)}}).call(this)},{}]},{},[1])(1)}); \ No newline at end of file +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.IGGY=a()}}(function(){var a;return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g1)throw this._error("ESIZEELJQUERY");return a}if(a instanceof Element)return this.$(a);throw this._error("EINVALIDELTYPE")},b.prototype._prepareFacets=function(a,b){var c,e,f,g,h,i;for(null==b&&(b={}),f=[],e=h=0,i=a.length;h=0&&this.add(k)}return this},b.prototype._generateSubFilter=function(a){var b;return b=_.isFunction(a)?a:_.isArray(a)?function(b){var c;return c=b.id,h.call(a,c)>=0}:_.isString(a)||_.isNumber(a)?function(b){return b.id===a}:function(b){var c,d;for(c in a)if(d=a[c],b.get(c)!==d)return!1;return!0}},b}(Backbone.Collection),b.exports=d},{}],3:[function(a,b,c){var d,e=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},f={}.hasOwnProperty;d=function(b){function c(){return c.__super__.constructor.apply(this,arguments)}return e(c,b),c.prototype.SubView=a("../views/facets/subarray"),c}(a("./facet_string")),b.exports=d},{"../views/facets/subarray":29,"./facet_string":10}],4:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(a,b){this.match=e(this.match,this),this.getLabel=e(this.getLabel,this),this.main=b.main,c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.idAttribute="name",c.prototype.SubView=a("../views/facets/base"),c.prototype.defaults=function(){return{type:"string",name:"name",label:"Description",sort:0}},c.prototype.getLabel=function(){return this.get("label")},c.prototype.match=function(a){var b,c;return b=this.get("name")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},c.prototype.comparator=function(a){return a.id},c}(Backbone.Model),b.exports=d},{"../views/facets/base":26}],5:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/daterange"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{opts:{},value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/daterange":27,"./facet_base":4}],6:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(a){function b(){return this.exec=e(this.exec,this),this.defaults=e(this.defaults,this),b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.SubView=null,b.prototype.onlyExec=!0,b.prototype.defaults=function(){return $.extend(b.__super__.defaults.apply(this,arguments),{options:[]})},b.prototype.exec=function(){this.main.trigger(this.get("event"),this.toJSON())},b}(a("./facet_base")),b.exports=d},{"./facet_base":4}],7:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subnumber"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{min:null,max:null,step:1,value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subnumber":30,"./facet_base":4}],8:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subrange"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{min:null,max:null,step:1,value:null})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subrange":31,"./facet_base":4}],9:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/subselect"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{options:[],waitForAsync:!0})},c}(a("./facet_base")),b.exports=d},{"../views/facets/subselect":32,"./facet_base":4}],10:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.defaults=e(this.defaults,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.SubView=a("../views/facets/substring"),c.prototype.defaults=function(){return $.extend(c.__super__.defaults.apply(this,arguments),{options:[]})},c}(a("./facet_base")),b.exports=d},{"../views/facets/substring":33,"./facet_base":4}],11:[function(a,b,c){var d,e,f,g=function(a,b){return function(){return a.apply(b,arguments)}},h=function(a,b){function c(){this.constructor=a}for(var d in b)i.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i={}.hasOwnProperty;f=a("sortcoll"),e=function(a,b){return a.get(b)},d=function(a){function b(a,c){var d;return null==c&&(c={}),this._subCollecctionOptions=g(this._subCollecctionOptions,this),null==c.comparator&&(d=function(){switch(c.dir){case"asc":return!0;case"desc":return!1;default:return!0}}(),c.comparator=f(["sort"].concat(c.sortby||"name"),{sort:!1,"?":d},e)),b.__super__.constructor.call(this,a,c)}return h(b,a),b.prototype._subCollecctionOptions=function(){var a;return a=b.__super__._subCollecctionOptions.apply(this,arguments),a.dir=this.forward?"asc":"desc",a},b.prototype.modelId=function(a){return a.name},b}(a("./backbone_sub")),b.exports=d},{"./backbone_sub":2,sortcoll:39}],12:[function(a,b,c){var d,e,f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty,h=function(a,b){return function(){return a.apply(b,arguments)}};d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.idAttribute="name",b.prototype.defaults={type:"string",name:null,value:null},b}(Backbone.Model),e=function(a){function b(){return this.parse=h(this.parse,this),this.initialize=h(this.initialize,this),b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.model=d,b.prototype.initialize=function(a,b){var c;(null!=(c=b.modifyKey)?c.length:void 0)&&(this.modifyKey=b.modifyKey)},b.prototype.parse=function(a,b){var c,d,e;return c=b._facet.get("modifyKey")||this.modifyKey||"value",d=null!=(e=b._facet)?e.get("modify"):void 0,null!=d&&_.isFunction(d)&&(a[c]=d(a.value,b._facet,a)),a},b}(a("./backbone_sub")),b.exports=e},{"./backbone_sub":2}],13:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;d=function(a){function b(){return this.getLabel=f(this.getLabel,this),b.__super__.constructor.apply(this,arguments)}return g(b,a),b.prototype.idAttribute="value",b.prototype.getLabel=function(){return this.get("label")||this.get(this.idAttribute)||""},b}(Backbone.Model),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.prototype.model=d,b}(a("./backbone_sub")),b.exports=e},{"./backbone_sub":2}],14:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f){c.push(''+d.escape(null==(b=f)?"":b)+''),a&&c.push("'),c.push("")}.call(this,"custom"in e?e.custom:"undefined"!=typeof custom?custom:void 0,"id"in e?e.id:"undefined"!=typeof id?id:void 0,"txt"in e?e.txt:"undefined"!=typeof txt?txt:void 0),c.join("")}},{"jade/runtime":38}],15:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0),b.join("")}},{"jade/runtime":38}],16:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h){f&&f.length&&(c.push('
    "),function(){var a=f;if("number"==typeof a.length)for(var g=0,h=a.length;g"+d.escape(null==(b=i)?"":b)+"")}else{var h=0;for(var g in a){h++;var i=a[g];c.push(""+d.escape(null==(b=i)?"":b)+"")}}}.call(this),c.push("
    ")),c.push("')}.call(this,"cid"in e?e.cid:"undefined"!=typeof cid?cid:void 0,"operator"in e?e.operator:"undefined"!=typeof operator?operator:void 0,"operators"in e?e.operators:"undefined"!=typeof operators?operators:void 0,"undefined"in e?e.undefined:void 0,"value"in e?e.value:"undefined"!=typeof value?value:void 0),c.join("")}},{"jade/runtime":38}],17:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push('
    ');var e=c?c:[];b.push("-
    ')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"value"in c?c.value:"undefined"!=typeof value?value:void 0),b.join("")}},{"jade/runtime":38}],18:[function(a,b,c){a("jade/runtime");b.exports=function(a){var b=[];return b.join("")}},{"jade/runtime":38}],19:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h,i){c.push("'),f?function(){var a=f;if("number"==typeof a.length)for(var e=0,g=a.length;e"),function(){var a=h;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var g=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}}}.call(this)}else{var g=0;for(var e in a){g++;var h=a[e];c.push(""),function(){var a=h;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var g=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=g.label)?"":b)+"")}}}.call(this)}}}.call(this):function(){var a=g;if("number"==typeof a.length)for(var e=0,f=a.length;e=0,!0,!1)+">"+d.escape(null==(b=h.label)?"":b)+"")}else{var f=0;for(var e in a){f++;var h=a[e];c.push("=0,!0,!1)+">"+d.escape(null==(b=h.label)?"":b)+"")}}}.call(this),c.push(""),e&&c.push('')}.call(this,"cid"in e?e.cid:"undefined"!=typeof cid?cid:void 0,"multiple"in e?e.multiple:"undefined"!=typeof multiple?multiple:void 0,"optionGroups"in e?e.optionGroups:"undefined"!=typeof optionGroups?optionGroups:void 0,"options"in e?e.options:"undefined"!=typeof options?options:void 0,"undefined"in e?e.undefined:void 0,"value"in e?e.value:"undefined"!=typeof value?value:void 0),c.join("")}},{"jade/runtime":38}],20:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"inpval"in c?c.inpval:"undefined"!=typeof inpval?inpval:void 0),b.join("")}},{"jade/runtime":38}],21:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g,h){var i=0;e&&g&&(i=1,c.push('
  • "'+(null==(b=g)?"":b)+'"
  • ')),f.length?function(){var e=f;if("number"==typeof e.length)for(var g=0,h=e.length;g"+(null==(b=j.label)?"":b)+"")}else{var h=0;for(var g in e){h++;var j=e[g];c.push(""+(null==(b=j.label)?"":b)+"")}}}.call(this):e||c.push('
  • no result for "'+d.escape(null==(b=g)?"":b)+'"
  • ')}.call(this,"activeIdx"in e?e.activeIdx:"undefined"!=typeof activeIdx?activeIdx:void 0,"custom"in e?e.custom:"undefined"!=typeof custom?custom:void 0,"list"in e?e.list:"undefined"!=typeof list?list:void 0,"query"in e?e.query:"undefined"!=typeof query?query:void 0,"undefined"in e?e.undefined:void 0),c.join("")}},{"jade/runtime":38}],22:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b=[],c=a||{};return function(a,c){b.push("')}.call(this,"cid"in c?c.cid:"undefined"!=typeof cid?cid:void 0,"value"in c?c.value:"undefined"!=typeof value?value:void 0),b.join("")}},{"jade/runtime":38}],23:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a,e,f,g){e||c.push('
    '),c.push(''+d.escape(null==(b=a)?"":b)+':
      '),f&&f.length&&function(){var a=f;if("number"==typeof a.length)for(var e=0,g=a.length;e'+d.escape(null==(b=h)?"":b)+'')}else{var g=0;for(var e in a){g++;var h=a[e];c.push('
    • '+d.escape(null==(b=h)?"":b)+'
    • ')}}}.call(this),c.push('
    ')}.call(this,"label"in e?e.label:"undefined"!=typeof label?label:void 0,"pinned"in e?e.pinned:"undefined"!=typeof pinned?pinned:void 0,"selected"in e?e.selected:"undefined"!=typeof selected?selected:void 0,"undefined"in e?e.undefined:void 0),c.join("")}},{"jade/runtime":38}],24:[function(a,b,c){var d=a("jade/runtime");b.exports=function(a){var b,c=[],e=a||{};return function(a){c.push(''),void 0!=a&&void 0!=a.template&&a.template.length>=0&&c.push(""+(null==(b=a.template)?"":b)+"")}.call(this,"searchButton"in e?e.searchButton:"undefined"!=typeof searchButton?searchButton:void 0),c.join("")}},{"jade/runtime":38}],25:[function(a,b,c){b.exports={LEFT:37,RIGHT:39,UP:38,DOWN:40,ESC:[229,27],ENTER:13,TAB:9}},{}],26:[function(a,b,c){var d,e,f,g=function(a,b){return function(){return a.apply(b,arguments)}},h=function(a,b){function c(){this.constructor=a}for(var d in b)i.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i={}.hasOwnProperty,j=[].indexOf||function(a){for(var b=0,c=this.length;b"+c.join("
  • ")+"
  • ":""},c.prototype.open=function(){this.$el.removeClass("closed"),this.$el.addClass("open"),this.isOpen=!0,this.trigger("opened")},c.prototype.input=function(a){if("keydown"===a.type)switch(a.keyCode){case e.ENTER:this.select()}},c.prototype._onKey=function(a){var b;if(a.keyCode===e.TAB||(b=a.keyCode,j.call(e.TAB,b)>=0))return void this._onTabAction(a)},c.prototype.getTemplateData=function(){var a,b;return b={cid:this.cid,value:null!=(a=this.model)?a.get("value"):void 0}},c.prototype._getInpSelector=function(){return"input#"+this.cid},c.prototype.reopen=function(a){this.$el.removeClass("closed"),this.$el.addClass("open"),this.render(),null!=a&&a.open()},c.prototype.render=function(a){var b;b=this.template(this.getTemplateData()),this.$el.html(b),a||this.$el.removeClass("closed"),this.$inp=this.$el.find(this._getInpSelector())},c.prototype._hasTabEvent=function(){return"keydown"},c.prototype._hasTabListener=function(){return!0},c.prototype._onTabAction=function(a){return a.preventDefault(),a.stopPropagation(),this.select(),!0},c.prototype.close=function(a){this.focused=!1,this.$el.removeClass("open"),this.$el.addClass("closed"),this.isOpen=!1,this.trigger("closed",this.result)},c.prototype.getResults=function(){return{value:this.getValue()}},c.prototype.getValue=function(){return this.$inp.val()},c.prototype.getSelectModel=function(){return f.prototype.model},c.prototype._checkSelectEmpty=function(a){return!(!_.isEmpty(a)||_.isNumber(a)||_.isBoolean(a)||this.model.get("pinned"))&&(this.close(),!0)},c.prototype.select=function(){var a;a=this.getValue(),this._checkSelectEmpty(a)||this.set(a)},c.prototype.set=function(a){var b,c;c=this.result.first(),null==c?(b=this.getSelectModel(),c=new b({value:a}),this.result.add(c)):c.set({value:a}),this.trigger("selected",c),this.close()},c}(Backbone.View),b.exports=d},{"../../models/subresults":13,"../../tmpls/result_base.jade":18,"../../utils/keycodes":25}],27:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;e=a("../../utils/keycodes"),d=function(b){function c(){return this.select=f(this.select,this),this.getValue=f(this.getValue,this),this.getTemplateData=f(this.getTemplateData,this),this._dateReturn=f(this._dateReturn,this),this.renderResult=f(this.renderResult,this),this.remove=f(this.remove,this),this.close=f(this.close,this),this.focus=f(this.focus,this),this.events=f(this.events,this),this.forcedDateRangeOpts=f(this.forcedDateRangeOpts,this),c.__super__.constructor.apply(this,arguments)}return g(c,b),c.prototype.template=a("../../tmpls/daterange.jade"),c.prototype.forcedDateRangeOpts=function(){var a,b,c,d,e;return b={opens:"right"},this.model.get("dateformat")&&(b.locale={format:this.model.get("dateformat")}),null!=(null!=(d=this.model.get("value"))?d[0]:void 0)&&(c=moment(this.model.get("value")[0],this.model.get("dateformat")),c.isValid()&&(b.startDate=c._d)),null!=(null!=(e=this.model.get("value"))?e[1]:void 0)&&(a=moment(this.model.get("value")[1],this.model.get("dateformat")),a.isValid()&&(b.endDate=a._d)),b},c.prototype.events=function(){},c.prototype.focus=function(){var a,b;return null==this.daterangepicker?(a=_.extend({},this.model.get("opts"),this.forcedDateRangeOpts()),this.$inp.daterangepicker(a,this._dateReturn),this.daterangepicker=this.$inp.data("daterangepicker"),null!=(b=this.daterangepicker.container)&&b.addClass("daterange-iggy"),this.daterangepicker.container.on("click",function(a){return a.stopPropagation(),!1})):(this.daterangepicker.element=this.$inp,this.daterangepicker.show()),this.$inp.on("cancel.daterangepicker",this.close),this.$inp.on("hide.daterangepicker",this.close),c.__super__.focus.apply(this,arguments)},c.prototype.close=function(){c.__super__.close.apply(this,arguments),this.$inp.off("cancel.daterangepicker",this.close),this.$inp.off("hide.daterangepicker",this.close)},c.prototype.remove=function(){var a;return null!=(a=this.daterangepicker)&&a.remove(),this.daterangepicker=null,c.__super__.remove.apply(this,arguments)},c.prototype.renderResult=function(){var a,b,c,d,e,f;return c=this.getResults(),e=_.isNumber(c.value[0])?moment(c.value[0]):moment(c.value[0],this.model.get("dateformat")),null!=c.value[1]&&(a=_.isNumber(c.value[1])?moment(c.value[1]):moment(c.value[1],this.model.get("dateformat"))),f=this.model.get("opts").timePicker,d="
  • ",b=null!=this.model.get("dateformat")?this.model.get("dateformat"):f?"LLLL":"LL",d+=e.format(b),null!=a&&(d+=" - ",d+=a.format(b)),d+="
  • "},c.prototype._hasTabListener=function(){return!1},c.prototype._dateReturn=function(a,b){this.startDate=a,this.endDate=b,this.model.set("value",this.getValue(!1)),this.select()},c.prototype.getTemplateData=function(){return c.__super__.getTemplateData.apply(this,arguments)},c.prototype.getValue=function(a){var b,c;return null==a&&(a=!0),a&&(c=this.model.get("value"),null!=c)?(_.isArray(c)||(c=[c]),this.startDate=c[0],this.endDate=c[1],c):(b=[this.startDate.valueOf()],null!=this.endDate&&b.push(this.endDate.valueOf()),b)},c.prototype.select=function(){var a,b;a=this.getSelectModel(),b=new a({value:this.getValue()}),this.result.add(b),this.trigger("selected",b),this.close()},c}(a("./base")),b.exports=d},{"../../tmpls/daterange.jade":15,"../../utils/keycodes":25,"./base":26}],28:[function(a,b,c){var d,e,f,g,h=function(a,b){return function(){return a.apply(b,arguments)}},i=function(a,b){function c(){this.constructor=a}for(var d in b)j.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},j={}.hasOwnProperty;e=a("../../utils/keycodes"),f=function(a,b){return a/=b,a=Math.round(a)*b},g=function(a,b){return b=Math.pow(10,b),a*=b,a=Math.round(a),a/=b},d=function(a){function b(){this._setNumber=h(this._setNumber,this),this.getValue=h(this.getValue,this),this.crement=h(this.crement,this),this.input=h(this.input,this),this.events=h(this.events,this),this.setNumber=_.throttle(this._setNumber,300,{leading:!1,trailing:!1}),b.__super__.constructor.apply(this,arguments)}return i(b,a),b.prototype.events=function(){var a;return a={},a["keyup "+this._getInpSelector()]="input",a["keydown "+this._getInpSelector()]="input",a},b.prototype.input=function(a){var b,c;if(b=$(a.currentTarget),"keydown"===a.type)switch(a.keyCode){case e.UP:return void this.crement(this.model.get("step"),b);case e.DOWN:return void this.crement(this.model.get("step")*-1,b);case e.ENTER:return void this.select()}"keyup"===a.type&&(c=a.currentTarget.value.replace(/[^\d]?[^-\d]+/g,""), +c=parseInt(c,10),this.setNumber(c,b))},b.prototype.crement=function(a,b){var c;null==b&&(b=this.$inp),c=b.val(),c=(null!=c?c.length:void 0)?parseInt(c,10):this.model.get("value"),this._setNumber(c+a,b)},b.prototype.getValue=function(){var a;return a=this.$inp.val(),(null!=a?a.length:void 0)?parseInt(this.valueByDefinition(a),10):null},b.prototype._setNumber=function(a,b){var c;null==b&&(b=this.$inp),isNaN(a)||(c=b.val(),a=this.valueByDefinition(a),c!==a.toString()&&b.val(a))},b.prototype.valueByDefinition=function(a){var b,c,d,e,h;return d=this.model.get("max"),e=this.model.get("min"),h=this.model.get("step"),e>d&&(c=e,e=d,d=c),null!=e&&ad?d:(1!==h&&(a=f(a,h)),b=Math.max(0,Math.ceil(Math.log(1/h)/Math.log(10))),a=b>0?g(a,b):Math.round(a))},b}(a("./base")),b.exports=d},{"../../utils/keycodes":25,"./base":26}],29:[function(a,b,c){var d,e,f,g,h,i,j,k=function(a,b){return function(){return a.apply(b,arguments)}},l=function(a,b){function c(){this.constructor=a}for(var d in b)m.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},m={}.hasOwnProperty;j=a("../../models/subresults"),g=a("../../utils/keycodes"),h=function(a){function b(){return this.match=k(this.match,this),b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.match=function(a){var b,c;return b=this.get("value")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},b}(j.prototype.model),i=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.model=h,b}(j),d=function(a){function b(){return this.match=k(this.match,this),this.getLabel=k(this.getLabel,this),b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.idAttribute="value",b.prototype.getLabel=function(){return this.get("label")||this.get("name")||"-"},b.prototype.match=function(a){var b,c;return b=this.get("value")+" "+this.get("label"),c=b.toLowerCase().indexOf(a.toLowerCase()),c>=0},b}(Backbone.Model),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return l(b,a),b.prototype.model=d,b}(a("../../models/backbone_sub")),f=function(b){function c(a){this._createOptionCollection=k(this._createOptionCollection,this),this._onTabAction=k(this._onTabAction,this),this.getResults=k(this.getResults,this),this.reopen=k(this.reopen,this),this.select=k(this.select,this),this._isFull=k(this._isFull,this),this.renderResult=k(this.renderResult,this),this.getTemplateData=k(this.getTemplateData,this),this.editRes=k(this.editRes,this),this.rmRes=k(this.rmRes,this),this.close=k(this.close,this),this.events=k(this.events,this),this.initialize=k(this.initialize,this),this.loading=!1,null!=a.model.get("count")&&(this.selectCount=a.model.get("count")),a.custom=!0,null!=a.model.get("custom")&&(a.custom=Boolean(a.model.get("custom"))),this.collection=this._createOptionCollection(a.model.get("options")),!a.custom&&this.selectCount<=0&&(this.selectCount=this.collection.length),c.__super__.constructor.call(this,a),this.result.on("remove",function(b){return function(c,d){d.length&&a.sub.renderResult(),b.searchcoll.add(c),b.trigger("removed",c)}}(this))}return l(c,b),c.prototype.templateResLi=a("../../tmpls/array_resultli.jade"),c.prototype.optDefault={label:"-",value:"-"},c.prototype.selectCount=0,c.prototype.optColl=i,c.prototype.initialize=function(){return this.editMode=!1,c.__super__.initialize.apply(this,arguments)},c.prototype.events=function(){var a;return a=c.__super__.events.apply(this,arguments),a["blur input#"+this.cid]="close",a},c.prototype.close=function(a){var b,d;return b=!1,this.editMode&&(b=!0),this.editMode=!1,this.loading?(null!=a&&a.preventDefault(),null!=a&&a.stopPropagation(),void this.focus()):(null!=(d=this.model)?d.get("pinned"):void 0)?c.__super__.close.apply(this,arguments):(b&&this.result.length<=0&&this.sub.del(),c.__super__.close.apply(this,arguments))},c.prototype.rmRes=function(a){var b,c,d;null!=(null!=a?a.target:void 0)?b=null!=(d=$(a.target))?d.data("id"):void 0:null!=a&&(b=a),c=this.result.get(b),null!=c&&(this.result.remove(b),(null!=c?c.get("custom"):void 0)&&this.searchcoll.remove(b))},c.prototype.editRes=function(a){var b,c,d;this.editMode=!0,b=null!=(d=$(a.target))?d.data("id"):void 0,c=this._editval=this.result.get(b).get("value"),this.result.remove(b),this.searchcoll.remove(b),this.sub.reopen(),this.search(c)},c.prototype.getTemplateData=function(){var a,b;return a=c.__super__.getTemplateData.apply(this,arguments),(null!=(b=this._editval)?b.length:void 0)&&(a.inpval=this._editval,this._editval=null),a},c.prototype.renderResult=function(a){var b,c,d,e,f,g;if(null==a&&(a=!1),a)return"
  • ";for(b=[],g=this.result.models,d=c=0,e=g.length;c"+b.join("
  • ")+"
  • "},c.prototype._isFull=function(){return!(this.selectCount<=0)&&(this.result||[]).length>=this.selectCount},c.prototype.select=function(){var a,b,c,d,e,f;if(!this.loading&&!this._isFull()&&(c=this.model.get("value"),null==c||_.isArray(c)||(c=[c]),null!=c?c.length:void 0)){for(f=this.selectCount<=0?c:c.slice(0,this.selectCount),d=0,e=f.length;d":(b=this.getResults(),c="
  • ",null!=b.operator&&(c+=b.operator+" "),c+=b.value,c+="
  • ")},c.prototype.close=function(a){null!=this.$inpOp&&(this.$inpOp.select2("destroy"),this.$inpOp.remove(),this.$inpOp=null),c.__super__.close.apply(this,arguments)},c.prototype.select=function(a){var b,d;return(null==(null!=a?a.relatedTarget:void 0)||(b=this.el.compareDocumentPosition(null!=a?a.relatedTarget:void 0),0===b||b-16>=0))&&(null==a||(null!=a?a.relatedTarget:void 0)!==this.$inp.get(0)&&(null!=a?a.relatedTarget:void 0)!==(null!=(d=this.$inpOp)?d.get(0):void 0))?(null!=this.$inpOp&&this.model.set({operator:this.$inpOp.val()}),void c.__super__.select.apply(this,arguments)):void a.stopPropagation()},c.prototype._opSelected=function(){this.selectedOP=!0,this.focus()},c.prototype.focus=function(a){return null==a&&(a=!1),null==this.$inpOp||this.selectedOP?void c.__super__.focus.apply(this,arguments):void this.$inpOp.select2("open")},c.prototype.reopen=function(a){var b,d;d=this.result.first().get("value"),b=this.result.first(),this.model.set({value:d}),a.$results.empty().html(this.renderResult(!0)),c.__super__.reopen.apply(this,arguments)},c.prototype.getTemplateData=function(){return _.extend(c.__super__.getTemplateData.apply(this,arguments),{operators:this.model.get("operators"),operator:this.model.get("operator")})},c.prototype._onTabAction=function(a){var b;return b=this.getValue(),a.preventDefault(),a.stopPropagation(),isNaN(b)||this.select(),!0},c.prototype.getResults=function(){var a;return a=null!=this.$inpOp?{value:this.getValue(),operator:this.$inpOp.val()}:{value:this.getValue()}},c}(a("./number_base")),b.exports=d},{"../../tmpls/number.jade":16,"./number_base":28}],31:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this._onTabAction=e(this._onTabAction,this),this.getValue=e(this.getValue,this),this.getResults=e(this.getResults,this),this.close=e(this.close,this),this.select=e(this.select,this),this.reopen=e(this.reopen,this),this.focus=e(this.focus,this),this.render=e(this.render,this),this.renderResult=e(this.renderResult,this),this.events=e(this.events,this),this._getInpSelector=e(this._getInpSelector,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.template=a("../../tmpls/range.jade"),c.prototype._getInpSelector=function(a){return null==a&&(a="_from"),"input#"+this.cid+a},c.prototype.events=function(){var a;return a={},a["keyup "+this._getInpSelector()]="input",a["keydown "+this._getInpSelector()]="input",a["keyup "+this._getInpSelector("_to")]="input",a["keydown "+this._getInpSelector("_to")]="input",a["blur "+this._getInpSelector()]="select",a["blur "+this._getInpSelector("_to")]="select",a},c.prototype.renderResult=function(a){var b;return null==a&&(a=!1),a?"
  • ":(b=this.getResults(),"
  • "+b.value.join(" - ")+"
  • ")},c.prototype.render=function(){c.__super__.render.apply(this,arguments),this.$inpTo=this.$el.find(this._getInpSelector("_to"))},c.prototype.focus=function(a){null==a&&(a=!1),c.__super__.focus.apply(this,arguments)},c.prototype.reopen=function(a){var b;b=this.result.first().get("value"),this.model.set({value:b}),a.$results.empty().html(this.renderResult(!0)),c.__super__.reopen.apply(this,arguments)},c.prototype.select=function(a){return null==a||(null!=a?a.relatedTarget:void 0)!==this.$inp.get(0)&&(null!=a?a.relatedTarget:void 0)!==this.$inpTo.get(0)?void c.__super__.select.apply(this,arguments):void a.stopPropagation()},c.prototype.close=function(){try{this.$(".rangeinp").remove()}catch(a){}c.__super__.close.apply(this,arguments)},c.prototype.getResults=function(){var a;return a={value:this.getValue()}},c.prototype.getValue=function(){var a,b,d;return b=c.__super__.getValue.apply(this,arguments),a=this.$inpTo.val(),(null!=a?a.length:void 0)?(d=parseInt(this.valueByDefinition(a),10),[b,d]):null},c.prototype._onTabAction=function(a){var b;return this.$inp.is(a.target)&&!a.shiftKey?(this.$inpTo.focus(),!1):this.$inpTo.is(a.target)&&a.shiftKey?(this.$inp.focus(),!1):(b=this.getValue(),!((null!=b?b.length:void 0)>=2)||(a.preventDefault(),a.stopPropagation(),this.select(),!0))},c}(a("./number_base")),b.exports=d},{"../../tmpls/range.jade":17,"./number_base":28}],32:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty,i=[].indexOf||function(a){for(var b=0,c=this.length;b=this.selectCount},c.prototype.reopen=function(a){var b;if(!this._isFull())return b=this.result.pluck("value"),this.model.set({value:b}),a.$results.empty(),this.select2.$container.off(),this.select2.destroy(),this.result.reset(),this.select2=null,c.__super__.reopen.apply(this,arguments)},c.prototype._checkIntValue=function(a){var b,c,d;if(null==a&&(a=[]),!a||!a.length)return!1;for(c=0,d=a.length;c1&&(a.optionGroups=b),a},c.prototype._hasTabListener=function(a){return!a&&this.model.get("multiple")},c.prototype._hasTabEvent=function(){return"keyup"},c.prototype.getValue=function(){var a,b,c,d,e,f;for(a=[],f=(null!=(e=this._initSelect2())?e.data():void 0)||[],c=0,d=f.length;cc[a]?1:b[a]=0)?(b.preventDefault(),$(b.target).is(".search-btn")?void setTimeout(function(){return a.addFacet()},0):(null!=(f=a.selectview)?f.isOpen:void 0)?void((null!=b?b.shiftKey:void 0)?(c=null!=(g=a.$addBtn)&&null!=(h=g.prevAll(".sub"))&&null!=(i=h.first())?i.data("fctid"):void 0,null!=c&&setTimeout(function(){var b;return null!=(b=a.facets[c])?b.reopen():void 0},0)):(a.selectview.close(),a.focusSearch())):void a.trigger("escape",b,a._nextFacet)):b.keyCode===d.ESC||(j=b.keyCode,k.call(d.ESC,j)>=0)?(a.exit(),void a.trigger("escape",b)):void 0}}(this))},c.prototype._nextFacet=function(a,b){var c,d,e,f;return d=(null!=a?a.shiftKey:void 0)?"prev":"next",c=null!=(f=b.$el)&&"function"==typeof f[d]?f[d]():void 0,c.hasClass("add-facet-btn")?void setTimeout(function(a){return function(){return a.addFacet()}}(this),0):(e=null!=c?c.data("fctid"):void 0,void(null!=e&&setTimeout(function(a){return function(){var b;return null!=(b=a.facets[e])?b.reopen():void 0}}(this),0)))},c.prototype.focusSearch=function(){null!=this.$searchBtn&&this.$searchBtn.focus()},c.prototype._onSearch=function(a){a.stopPropagation(),this.exit(),this.trigger("searchbutton",this.searchButton.event)},c.prototype._onFocusSearch=function(a){var b;a.stopPropagation(),null!=(b=this.selectview)&&"function"==typeof b.close&&b.close()},c.prototype._outerClick=function(a){var b;a.stopPropagation(),b=this.el.compareDocumentPosition(a.target),0===b||b-16>=0||this.exit(!1)},c}(Backbone.View),b.exports=e},{"../tmpls/wrapper.jade":24,"../utils/keycodes":25,"./selector":35,"./sub":36}],35:[function(a,b,c){var d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},h={}.hasOwnProperty;d=a("../utils/keycodes"),e=function(b){function c(a){this.selectActive=f(this.selectActive,this),this.select=f(this.select,this),this.move=f(this.move,this),this.search=f(this.search,this),this.open=f(this.open,this),this.focus=f(this.focus,this),this.selected=f(this.selected,this),this._onTabAction=f(this._onTabAction,this),this._isFull=f(this._isFull,this),this._onClick=f(this._onClick,this),this.checkOptionsEmpty=f(this.checkOptionsEmpty,this),this.scrollHelper=f(this.scrollHelper,this),this._checkScroll=f(this._checkScroll,this),this.renderRes=f(this.renderRes,this),this.render=f(this.render,this),this.getTemplateData=f(this.getTemplateData,this),this.initialize=f(this.initialize,this),this.events=f(this.events,this),this.className=f(this.className,this),this.custom=a.custom||!1,this.activeIdx=0,this.currQuery="",null!=a.main&&(this.main=a.main),c.__super__.constructor.call(this,a)}return g(c,b),c.prototype.template=a("../tmpls/selector.jade"),c.prototype.templateEl=a("../tmpls/selectorli.jade"),c.prototype.selectCount=1,c.prototype.className=function(){var a;return a=["add-facet"],this.custom&&a.push("custom"),a.join(" ")},c.prototype.events=function(){var a;return a={"mousedown a":"_onClick"},a["focus input#"+this.cid]="open",a["keydown input#"+this.cid]="search",a["keyup input#"+this.cid]="search",a},c.prototype.initialize=function(a){c.__super__.initialize.apply(this,arguments),this.searchcoll=this.collection.sub(function(){return!0}),this.result=new this.collection.constructor,this.listenTo(this.searchcoll,"add",this.renderRes),this.listenTo(this.searchcoll,"remove",this.renderRes),this.listenTo(this.searchcoll,"remove",this.checkOptionsEmpty)},c.prototype.getTemplateData=function(){return _.extend(c.__super__.getTemplateData.apply(this,arguments),{custom:this.custom})},c.prototype.render=function(){return c.__super__.render.apply(this,arguments),this.$list=this.$el.find("#"+this.cid+"typelist"),this.renderRes(),this.el},c.prototype.renderRes=function(){var a,b,c,d,e,f,g,h,i,j,k;for(this.$list.empty(),d=[],j=this.searchcoll.models,g=f=0,h=j.length;f1&&(c=c.replace(new RegExp(this.currQuery,"gi"),function(a){return""+a+""})),d.push({label:c,id:b,cssclass:a}));return this.$list.append(this.templateEl({list:d,query:this.currQuery,activeIdx:this.activeIdx,custom:this.custom})),this._checkScroll(),this.$list},c.prototype._scrollTill=198,c.prototype._checkScroll=function(){var a;return a=this.$list.height(),a>0?void this.scrollHelper(a):void setTimeout(function(a){return function(){return a.scrollHelper(a.$list.height())}}(this),0)},c.prototype.scrollHelper=function(a){a>=this._scrollTill?this.scrolling=!0:this.scrolling=!1},c.prototype.checkOptionsEmpty=function(){},c.prototype._onClick=function(a){var b,c;if(a.stopPropagation(),a.preventDefault(),b=this.$(a.currentTarget).data("id"),null!=b&&(c=this.collection.get(b),null!=c))return this.selected(c),!1},c.prototype._isFull=function(){return!0},c.prototype._onTabAction=function(a){null!=this.main?(a.preventDefault(),a.stopPropagation(),this.main.focusSearch()):c.__super__._onTabAction.call(this,event)},c.prototype.selected=function(a){var b,c,d,e;null==this.main&&this._isFull()&&(d=null!=(e=this.result.last())?e.id:void 0,this.rmRes(d));try{if(null!=a.onlyExec)return void(null!=a&&"function"==typeof a.exec&&a.exec())}catch(a){b=a;try{console.error("Issue #23: CATCH - Class:"+this.constructor.name+" - activeIdx:"+this.activeIdx+" - collection:"+JSON.stringify(this.collection.toJSON()))}catch(a){c=a,console.error("Issue #23: CATCH")}}null!=a&&(this.searchcoll.remove(a),this.result.add(a),this.trigger("selected",a)),this._isFull()&&this.close()},c.prototype.focus=function(){var a;this.$inp.focus(),a=this.$inp.get(0),a.selectionStart=a.selectionEnd=a.value.length},c.prototype.open=function(){return this.trigger("opened"),c.__super__.open.apply(this,arguments)},c.prototype.search=function(a){var b;if("keydown"!==(null!=a?a.type:void 0))b=_.isString(a)?a:a.currentTarget.value.toLowerCase(),b!==this.currQuery&&(this.currQuery=b,this.searchcoll.updateSubFilter(function(a){return function(c){var d;return null==a.result.get(c.id)&&(null==b||!b.length||(d=c.match(b)))}}(this),!1),this.activeIdx=0,this.renderRes());else switch(a.keyCode){case d.UP:return void this.move(!0);case d.DOWN:return void this.move(!1);case d.ENTER:return void this.selectActive(!0)}},c.prototype.move=function(a){var b,c,d,e,f,g,h,i,j,k;if(null==a&&(a=!1),f=this.$el.find(".typelist a"),d=(null!=(k=this.currQuery)?k.length:void 0)?0:1,j=0,a){if(this.activeIdx-1i+this._scrollTill?c.scrollTop(h-this._scrollTill):h=0&&this.searchcoll.length)this.selected(this.collection.get(d.id));else{if(null==(f=this.currQuery)||!f.length)return;this.selected(new this.collection.model({value:this.currQuery,custom:!0})),this.$inp.val("")}},c}(a("./facets/base")),b.exports=e},{"../tmpls/selector.jade":20,"../tmpls/selectorli.jade":21,"../utils/keycodes":25,"./facets/base":26}],36:[function(a,b,c){var d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},g={}.hasOwnProperty;d=function(b){function c(){return this.open=e(this.open,this),this.attachSubEvents=e(this.attachSubEvents,this),this.generateSub=e(this.generateSub,this),this.close=e(this.close,this),this.focus=e(this.focus,this),this.isOpen=e(this.isOpen,this),this.renderResult=e(this.renderResult,this),this.removed=e(this.removed,this),this.selected=e(this.selected,this),this.remove=e(this.remove,this),this.del=e(this.del,this),this.reopen=e(this.reopen,this),this.render=e(this.render,this),this.initialize=e(this.initialize,this),this.className=e(this.className,this),c.__super__.constructor.apply(this,arguments)}return f(c,b),c.prototype.template=a("../tmpls/sub.jade"),c.prototype.className=function(){var a,b,c;return b="sub",c=this.model.get("type"),null!=c&&(b+=" sub-type-"+c),a=this.model.get("name"),null!=a&&(b+=" sub-name-"+a),b},c.prototype.initialize=function(a){this._isOpen=!1,this.result=new Backbone.Collection,this.$el.on("click",this.reopen),this.parent=a.parent,this.$el.data("fctid",this.model.id),this.parent.on("escape",function(a){return function(b,c){var d;a._isOpen&&(null!=(d=a.selectview)?d._onTabAction(b):void 0)&&null!=c&&c(b,a)}}(this))},c.prototype.events={"click .rm-facet-btn":"del"},c.prototype.render=function(a){var b,c,d,e,f,g,h,i;for(d=[],i=this.result.models,f=e=0,g=i.length;e":">",'"':"""},i=/[&<>"]/g;c.escape=g,c.rethrow=function b(c,d,e,f){if(!(c instanceof Error))throw c;if(!("undefined"==typeof window&&d||f))throw c.message+=" on line "+e,c;try{f=f||a("fs").readFileSync(d,"utf8")}catch(a){b(c,null,e)}var g=3,h=f.split("\n"),i=Math.max(e-g,0),j=Math.min(h.length,e+g),g=h.slice(i,j).map(function(a,b){var c=b+i+1;return(c==e?" > ":" ")+c+"| "+a}).join("\n");throw c.path=d,c.message=(d||"Jade")+":"+e+"\n"+g+"\n\n"+c.message,c},c.DebugItem=function(a,b){this.lineno=a,this.filename=b}},{fs:2}],2:[function(a,b,c){},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{fs:37}],39:[function(a,b,c){(function(){var a,c,d;d={}.toString,c=Array.isArray||function(a){return"[object Array]"===d.call(a)},a=function(a,b){return a[b]},b.exports=function(b,d,e){var f,g;return null==d&&(d=!0),null==e&&(e=a),c(b)||(b=[b]),(f=function(a,b,c){var d,g,h,i;return(null!=c?c.length:void 0)&&(g=null!=(i=c.splice(0,1))?i[0]:void 0,null!=g&&(h=f(a,g,c))),d=null!=a[b]?a[b]:null!=a["?"]?a["?"]:a,function(a,c){var f,g;return f=e(a,b),g=e(c,b),fg?d?1:-1:f===g?null!=h?h(a,c):0:void 0}})(d,null!=(g=b.splice(0,1))?g[0]:void 0,b)}}).call(this)},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/js/iggy.debug.js b/js/iggy.debug.js index a9e73e5..1a592bf 100644 --- a/js/iggy.debug.js +++ b/js/iggy.debug.js @@ -42,6 +42,7 @@ IGGY = (function(superClass) { this.triggerEvent = bind(this.triggerEvent, this); this.triggerChange = bind(this.triggerChange, this); this.getQuery = bind(this.getQuery, this); + this._filterEmpty = bind(this._filterEmpty, this); this._error = bind(this._error, this); this.addFacet = bind(this.addFacet, this); this._prepareFacets = bind(this._prepareFacets, this); @@ -65,6 +66,7 @@ IGGY = (function(superClass) { idx: IGGY_IDX++ }); this.view.on("searchbutton", this.triggerEvent); + this.nonEmptyResults = this.results.sub(this._filterEmpty); return; } @@ -175,16 +177,37 @@ IGGY = (function(superClass) { return _err; }; + IGGY.prototype._filterEmpty = function(model) { + var _v; + _v = model.get("value"); + if (_v == null) { + return false; + } + if (_v.length <= 0) { + return false; + } + return true; + }; + IGGY.prototype.getQuery = function() { - return this.results; + return this.nonEmptyResults; }; IGGY.prototype.triggerChange = function() { - this.trigger("change", this.results); + console.log(this.nonEmptyResults); + setTimeout((function(_this) { + return function() { + return _this.trigger("change", _this.nonEmptyResults); + }; + })(this), 0); }; IGGY.prototype.triggerEvent = function(eventName) { - this.trigger(eventName, this.results); + setTimeout((function(_this) { + return function() { + return _this.trigger(eventName, _this.nonEmptyResults); + }; + })(this), 0); }; IGGY.prototype._initErrors = function() { @@ -802,12 +825,12 @@ IggyResults = (function(superClass) { return IggyResults; -})(Backbone.Collection); +})(require("./backbone_sub")); module.exports = IggyResults; -},{}],13:[function(require,module,exports){ +},{"./backbone_sub":2}],13:[function(require,module,exports){ var BaseResult, BaseResults, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1953,6 +1976,9 @@ FacetSubArray = (function(superClass) { if (this.loading) { return; } + if (this._isFull()) { + return; + } _vals = this.model.get("value"); if ((_vals != null) && !_.isArray(_vals)) { _vals = [_vals]; @@ -2786,7 +2812,7 @@ MainView = (function(superClass) { MainView.prototype.template = require("../tmpls/wrapper.jade"); MainView.prototype.events = { - "click .search-btn": "_onSearch", + "mousedown .search-btn": "_onSearch", "focus .search-btn": "_onFocusSearch", "click .add-facet-btn": "_addFacet", "click": "_addFacet" @@ -3317,7 +3343,11 @@ SelectorView = (function(superClass) { }; SelectorView.prototype.selected = function(mdl) { - var _err, _errerr; + var _err, _errerr, _id, ref; + if ((this.main == null) && this._isFull()) { + _id = (ref = this.result.last()) != null ? ref.id : void 0; + this.rmRes(_id); + } try { if (mdl.onlyExec != null) { if (mdl != null) { @@ -4068,4 +4098,4 @@ exports.DebugItem = function DebugItem(lineno, filename) { },{}]},{},[1])(1) }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9ncnVudC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJfc3JjL2pzL21haW4uY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvYmFja2JvbmVfc3ViLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2FycmF5LmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2Jhc2UuY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvZmFjZXRfZGF0ZXJhbmdlLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2V2ZW50LmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X251bWJlci5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9mYWNldF9yYW5nZS5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9mYWNldF9zZWxlY3QuY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvZmFjZXRfc3RyaW5nLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0cy5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9yZXN1bHRzLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL3N1YnJlc3VsdHMuY29mZmVlIiwiX3NyYy9qcy90bXBscy9hcnJheV9yZXN1bHRsaS5qYWRlIiwiX3NyYy9qcy90bXBscy9kYXRlcmFuZ2UuamFkZSIsIl9zcmMvanMvdG1wbHMvbnVtYmVyLmphZGUiLCJfc3JjL2pzL3RtcGxzL3JhbmdlLmphZGUiLCJfc3JjL2pzL3RtcGxzL3Jlc3VsdF9iYXNlLmphZGUiLCJfc3JjL2pzL3RtcGxzL3NlbGVjdC5qYWRlIiwiX3NyYy9qcy90bXBscy9zZWxlY3Rvci5qYWRlIiwiX3NyYy9qcy90bXBscy9zZWxlY3RvcmxpLmphZGUiLCJfc3JjL2pzL3RtcGxzL3N0cmluZy5qYWRlIiwiX3NyYy9qcy90bXBscy9zdWIuamFkZSIsIl9zcmMvanMvdG1wbHMvd3JhcHBlci5qYWRlIiwiX3NyYy9qcy91dGlscy9rZXljb2Rlcy5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9iYXNlLmNvZmZlZSIsIl9zcmMvanMvdmlld3MvZmFjZXRzL2RhdGVyYW5nZS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9udW1iZXJfYmFzZS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9zdWJhcnJheS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9zdWJudW1iZXIuY29mZmVlIiwiX3NyYy9qcy92aWV3cy9mYWNldHMvc3VicmFuZ2UuY29mZmVlIiwiX3NyYy9qcy92aWV3cy9mYWNldHMvc3Vic2VsZWN0LmNvZmZlZSIsIl9zcmMvanMvdmlld3MvZmFjZXRzL3N1YnN0cmluZy5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL21haW4uY29mZmVlIiwiX3NyYy9qcy92aWV3cy9zZWxlY3Rvci5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL3N1Yi5jb2ZmZWUiLCJub2RlX21vZHVsZXMvZ3J1bnQtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1yZXNvbHZlL2VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL2phZGUvcnVudGltZS5qcyIsIm5vZGVfbW9kdWxlcy9zb3J0Y29sbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBLElBQUEsc0hBQUE7RUFBQTs7OztBQUFBLFFBQUEsR0FBVyxPQUFBLENBQVMsY0FBVDs7QUFDWCxNQUFBLEdBQVMsT0FBQSxDQUFTLGlCQUFUOztBQUNULFNBQUEsR0FBWSxPQUFBLENBQVMsdUJBQVQ7O0FBQ1osUUFBQSxHQUFXLE9BQUEsQ0FBUyxzQkFBVDs7QUFDWCxTQUFBLEdBQVksT0FBQSxDQUFTLHVCQUFUOztBQUNaLFNBQUEsR0FBWSxPQUFBLENBQVMsdUJBQVQ7O0FBQ1osUUFBQSxHQUFXLE9BQUEsQ0FBUyxzQkFBVDs7QUFDWCxZQUFBLEdBQWUsT0FBQSxDQUFTLDBCQUFUOztBQUNm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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiTWFpblZpZXcgPSByZXF1aXJlKCBcIi4vdmlld3MvbWFpblwiIClcbkZhY2V0cyA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRzXCIgKVxuRmN0U3RyaW5nID0gcmVxdWlyZSggXCIuL21vZGVscy9mYWNldF9zdHJpbmdcIiApXG5GY3RBcnJheSA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRfYXJyYXlcIiApXG5GY3RTZWxlY3QgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0X3NlbGVjdFwiIClcbkZjdE51bWJlciA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRfbnVtYmVyXCIgKVxuRmN0UmFuZ2UgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0X3JhbmdlXCIgKVxuRmN0RGF0ZVJhbmdlID0gcmVxdWlyZSggXCIuL21vZGVscy9mYWNldF9kYXRlcmFuZ2VcIiApXG5GY3RFdmVudCA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRfZXZlbnRcIiApXG5SZXN1bHRzID0gcmVxdWlyZSggXCIuL21vZGVscy9yZXN1bHRzXCIgKVxuXG5JR0dZX0lEWCA9IDFcblxuY2xhc3MgSUdHWSBleHRlbmRzIEJhY2tib25lLkV2ZW50c1xuXHQkOiBqUXVlcnlcblx0Y29uc3RydWN0b3I6ICggZWwsIGZhY2V0cyA9IFtdLCBvcHRpb25zID0ge30gKS0+XG5cdFx0Xy5leHRlbmQgQCwgQmFja2JvbmUuRXZlbnRzXG5cdFx0QF9pbml0RXJyb3JzKClcblx0XHRcblx0XHQjIGluaXQgZWxlbWVudFxuXHRcdEAkZWwgPSBAX3ByZXBhcmVFbCggZWwgKVxuXHRcdEBlbCA9IEAkZWxbMF1cblx0XHRAJGVsLmRhdGEoIFwiaWdneVwiLCBAIClcblxuXHRcdCMgaW5pdCBmYWNldHNcblx0XHRAZmFjZXRzID0gQF9wcmVwYXJlRmFjZXRzKCBmYWNldHMsIG9wdGlvbnMgKVxuXHRcdEByZXN1bHRzID0gbmV3IFJlc3VsdHMoIG51bGwsIG9wdGlvbnMgKVxuXG5cdFx0QHJlc3VsdHMub24gXCJhZGRcIiwgQHRyaWdnZXJDaGFuZ2Vcblx0XHRAcmVzdWx0cy5vbiBcInJlbW92ZVwiLCBAdHJpZ2dlckNoYW5nZVxuXHRcdEByZXN1bHRzLm9uIFwiY2hhbmdlXCIsIEB0cmlnZ2VyQ2hhbmdlXG5cblx0XHRAdmlldyA9IG5ldyBNYWluVmlldyggbWFpbjogQCwgZWw6IEAkZWwsIGNvbGxlY3Rpb246IEBmYWNldHMsIHJlc3VsdHM6IEByZXN1bHRzLCBzZWFyY2hCdXR0b246IG9wdGlvbnMuc2VhcmNoQnV0dG9uLCBpZHg6IElHR1lfSURYKysgKVxuXHRcdFxuXHRcdEB2aWV3Lm9uIFwic2VhcmNoYnV0dG9uXCIsIEB0cmlnZ2VyRXZlbnRcblx0XHRyZXR1cm5cblxuXHRfcHJlcGFyZUVsOiAoIGVsICk9PlxuXG5cdFx0aWYgbm90IGVsP1xuXHRcdFx0dGhyb3cgQF9lcnJvciggXCJFTUlTU0lOR0VMXCIgKVxuXG5cdFx0aWYgXy5pc1N0cmluZyggZWwgKVxuXHRcdFx0aWYgbm90IGVsLmxlbmd0aFxuXHRcdFx0XHR0aHJvdyBAX2Vycm9yKCBcIkVFTVBUWUVMU1RSSU5HXCIgKVxuXG5cdFx0XHRfJGVsID0gQCQoIGVsIClcblx0XHRcdGlmIG5vdCBfJGVsPy5sZW5ndGhcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFSU5WQUxJREVMU1RSSU5HXCIgKVxuXG5cdFx0XHRyZXR1cm4gXyRlbFxuXG5cdFx0aWYgZWwgaW5zdGFuY2VvZiBqUXVlcnlcblx0XHRcdGlmIG5vdCBlbC5sZW5ndGhcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFRU1QVFlFTEpRVUVSWVwiIClcblxuXHRcdFx0IyBUT0RPIGhhbmRsZSBtdWx0aXBsZSBqUXVlcnkgZWxlbWVudHMgdG8gSUdHWSBpbnN0YW5jZXNcblx0XHRcdGlmIGVsLmxlbmd0aCA+IDFcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFU0laRUVMSlFVRVJZXCIgKVxuXG5cdFx0XHRyZXR1cm4gZWxcblxuXHRcdGlmIGVsIGluc3RhbmNlb2YgRWxlbWVudFxuXHRcdFx0cmV0dXJuIEAkKCBlbCApXG5cblx0XHR0aHJvdyBAX2Vycm9yKCBcIkVJTlZBTElERUxUWVBFXCIgKVxuXG5cdFx0cmV0dXJuXG5cblx0X3ByZXBhcmVGYWNldHM6ICggZmFjZXRzLCBvcHRpb25zPXt9ICk9PlxuXHRcdF9yZXQgPSBbXVxuXHRcdGZvciBmYWNldCwgX2lkeCBpbiBmYWNldHMgd2hlbiAoIF9mY3QgPSBAX2NyZWF0ZUZhY2V0KCBmYWNldCApICk/XG5cdFx0XHRfZmN0Ll9pZHggPSBfaWR4XG5cdFx0XHRfcmV0LnB1c2ggX2ZjdFxuXHRcdFxuXHRcdHJldHVybiBuZXcgRmFjZXRzKCBfcmV0LCBvcHRpb25zIClcblxuXHRfY3JlYXRlRmFjZXQ6ICggZmFjZXQgKS0+XG5cdFx0c3dpdGNoIGZhY2V0LnR5cGUudG9Mb3dlckNhc2UoKVxuXHRcdFx0d2hlbiBcInN0cmluZ1wiIHRoZW4gcmV0dXJuIG5ldyBGY3RTdHJpbmcoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJzZWxlY3RcIiB0aGVuIHJldHVybiBuZXcgRmN0U2VsZWN0KCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwiYXJyYXlcIiB0aGVuIHJldHVybiBuZXcgRmN0QXJyYXkoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJudW1iZXJcIiB0aGVuIHJldHVybiBuZXcgRmN0TnVtYmVyKCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwicmFuZ2VcIiB0aGVuIHJldHVybiBuZXcgRmN0UmFuZ2UoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJkYXRlcmFuZ2VcIiB0aGVuIHJldHVybiBuZXcgRmN0RGF0ZVJhbmdlKCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwiZXZlbnRcIiB0aGVuIHJldHVybiBuZXcgRmN0RXZlbnQoIGZhY2V0LCBtYWluOiBAIClcblxuXHRhZGRGYWNldDogKCBmYWNldCApPT5cblx0XHRpZiBub3QgQGZhY2V0cz9cblx0XHRcdHJldHVyblxuXHRcdGlmICggX2ZjdCA9IEBfY3JlYXRlRmFjZXQoIGZhY2V0ICkgKT9cblx0XHRcdEBmYWNldHMuYWRkKCBfZmN0IClcblx0XHRyZXR1cm4gQFxuXG5cdF9lcnJvcjogKCB0eXBlLCBkYXRhID0ge30gKT0+XG5cdFx0aWYgQGVycm9yc1sgdHlwZSBdP1xuXHRcdFx0X21zZyA9IEBlcnJvcnNbIHR5cGUgXSggZGF0YSApXG5cdFx0ZWxzZVxuXHRcdFx0X21zZyA9IFwiLVwiXG5cdFx0X2VyciA9IG5ldyBFcnJvcigpXG5cdFx0X2Vyci5uYW1lID0gdHlwZVxuXHRcdF9lcnIubWVzc2FnZSA9IF9tc2dcblx0XHRyZXR1cm4gX2VyclxuXG5cdGdldFF1ZXJ5OiA9PlxuXHRcdHJldHVybiBAcmVzdWx0c1xuXG5cdHRyaWdnZXJDaGFuZ2U6ID0+XG5cdFx0QHRyaWdnZXIoIFwiY2hhbmdlXCIsIEByZXN1bHRzIClcblx0XHRyZXR1cm5cblx0XG5cdHRyaWdnZXJFdmVudDogKCBldmVudE5hbWUgKT0+XG5cdFx0QHRyaWdnZXIoIGV2ZW50TmFtZSwgQHJlc3VsdHMgKVxuXHRcdHJldHVyblxuXHRcdFxuXHRfaW5pdEVycm9yczogPT5cblx0XHRAZXJyb3JzID0ge31cblx0XHRmb3IgX2ssIF90bXBsIG9mIEBFUlJPUlMoKVxuXHRcdFx0QGVycm9yc1sgX2sgXSA9IF8udGVtcGxhdGUoIF90bXBsIClcblx0XHRyZXR1cm5cblxuXHRFUlJPUlM6IC0+XG5cdFx0XCJFSU5WQUxJREVMU1RSSU5HXCI6IFwiSWYgeW91IGRlZmluZSBhIGBlbGAgYXMgU3RyaW5nIGl0IGhhcyB0byBiZSBhIHZhbGlkIHNlbGVjdG9yIGZvciBhbiBleGlzdGluZyBET00gZWxlbWVudC5cIlxuXHRcdFwiRUVNUFRZRUxTVFJJTkdcIjogXCJUaGUgYGVsYCBhcyBzdHJpbmcgY2FuIG5vdCBiZSBlbXB0eS5cIlxuXHRcdFwiRUVNUFRZRUxKUVVFUllcIjogXCJUaGUgYGVsYCBhcyBqT3Vlcnkgb2JqZWN0IGNhbiBub3QgYmUgYW4gZW1wdHkgY29sbGVjdGlvbi5cIlxuXHRcdFwiRVNJWkVFTEpRVUVSWVwiOiBcIlRoZSBgZWxgIGFzIGpPdWVyeSBvYmplY3QgY2FuIG5vdCBiZSBhIHJlc3VsdCBvZiBvbmUgZWwuXCJcblx0XHRcIkVJTlZBTElERUxUWVBFXCI6IFwiVGhlIGBlbGAgY2FuIG9ubHkgYmUgYSBzZWxlY3RvciBzdHJpbmcsIGRvbSBlbGVtZW50IG9yIGpRdWVyeSBjb2xsZWN0aW9uXCJcblx0XHRcIkVNSVNTSU5HRUxcIjogXCJQbGVhc2UgZGVmaW5lIGEgdGFyZ2V0IGBlbGBcIlxuXG5tb2R1bGUuZXhwb3J0cyA9IElHR1lcbiIsIiMjI1xuRVhBTVBMRSBVU0FHRVxuXG5cdHBhcmVudENvbGwgPSBuZXcgQmFja2JvbmUuQ29sbGVjdGlvbi5TdWIoKVxuXHRcblx0IyBieSBBcnJheVxuXHRzdWJDb2xsQSA9IHBhcmVudENvbGwuc3ViKCBbIDEsIDIsIDMgXSApXG5cdFxuXHQjIG9yIGJ5IE9iamVjdFxuXHRzdWJDb2xsTyA9IHBhcmVudENvbGwuc3ViKCB7IG5hbWU6IFwiRm9vXCIsIGFnZTogNDIgfSApXG5cdFxuXHQjIG9yIGJ5IE51bWJlclxuXHRzdWJDb2xsTiA9IHBhcmVudENvbGwuc3ViKCAxMyApXG5cdFxuXHQjIG9yIGJ5IEZ1bmN0aW9uXG5cdHN1YkNvbGxGID0gcGFyZW50Q29sbC5zdWIoICgoIG1vZGVsICktPiBpZiBtb2RlbC5nZXQoIFwiYWdlXCIgKSA+IDIzICkgKVxuXHRcblx0IyBzdWJjb2xsZWN0aW9uIG9mIHN1YmNvbGxlY3Rpb25cblx0c3ViQ29sbEFfTyA9IHN1YkNvbGxBLnN1YiggeyBuYW1lOiBcIkZvb1wiLCBhZ2U6IDQyIH0gKVxuXHRcblx0IyB1cGRhdGUgdGhlIGZpbHRlciBvZiBhIHN1YmNvbGxlY3Rpb24uIEZvciB0aGlzIGEgYHJlc2V0YCB3aWxsIGJlIGZpcmVkIG9uIHRoZSBzdWJjb2xsZWN0aW9uXG5cdHN1YkNvbGxBID0gc3ViQ29sbEEudXBkYXRlU3ViRmlsdGVyKCB7IG5hbWU6IFwiQmFyXCIsIGFnZTogNDIgfSApXG4jIyNcblxuY2xhc3MgQmFja2JvbmVTdWIgZXh0ZW5kcyBCYWNrYm9uZS5Db2xsZWN0aW9uXG5cdCMjI1xuXHQjIyBzdWJcblx0XG5cdGBjb2xsZWN0aW9uLnN1YiggZmlsdGVyIClgXG5cdFxuXHRHZW5lcmF0ZSBhIHN1Yi1jb2xsZWN0aW9uIGJ5IGEgZmlsdGVyLlxuXHRUaGUgbW9kZWxzIHdpbGwgYmUgZGlzdHJpYnV0ZWQgd2l0aGluIGFsbCBpbnZvbHZlZCBjb2xsZWN0aW9ucyB1bmRlciBjb25zaWRlcmF0aW9uIG9mIHRoZSBmaWx0ZXIuXG5cdFxuXHRAcGFyYW0geyBGdW5jdGlvbnxBcnJheXxTdHJpbmd8TnVtYmVyfE9iamVjdCB9IGZpbHRlciBUaGUgZmlsdGVyIHRvIHJlZHVjZSB0aGUgY3VycmVudCBjb2xsZWN0aW9uLiBDYW4gYmUgYSBmdW5jdGlvbiBsaWtlIHVuZGVyc2NvcmUgYF8uZmlsdGVyYCBvciBhbiBhcnJheSBvZiBpZHMsIGEgc2luZ2xlIGlkIGFzIHN0cmluZyBvciBudW1iZXIgb3IgYSBmaWx0ZXIgb2JqZWN0IGNvbnRhaW5pbmdzIGtleSB2YWx1ZSBmaWx0ZXJzLlxuXHRcblx0QHJldHVybiB7IENvbGxlY3Rpb24gfSBBIFN1Yi1Db2xsZWN0aW9uIGJhc2VkIG9uIHRoZSBmaWx0ZXJcblx0XG5cdEBhcGkgcHVibGljXG5cdCMjI1xuXHRzdWI6ICggZmlsdGVyICk9PlxuXHRcdEBzdWJDb2xscyBvcj0gW11cblx0XHRmbkZpbHRlciA9IEBfZ2VuZXJhdGVTdWJGaWx0ZXIoIGZpbHRlciApXG5cblx0XHQjIGZpbHRlciB0aGUgY29sbGVjdGlvblxuXHRcdF9tb2RlbHMgPSBAZmlsdGVyIGZuRmlsdGVyXG5cdFx0IyBjcmVhdGUgdGhlIHN1YmNvbGxlY3Rpb25cblx0XHRfc3ViID0gbmV3IEBjb25zdHJ1Y3RvciggX21vZGVscywgQF9zdWJDb2xsZWN0aW9uT3B0aW9ucygpIClcblxuXHRcdF9zdWIuX3BhcmVudENvbCA9IEBcblx0XHRfc3ViLl9mbkZpbHRlciA9IGZuRmlsdGVyXG5cblx0XHQjIGFkZCBldmVudCBoYW5kbGVycyB0byBkaXN0cmlidXRlIHRoZSBtb2RlbHMgdGhyb3VnaCB0aGUgc3ViIGNvbGxlY3Rpb25zIHRyZWVcblxuXHRcdCMgcmVjaGVjayB0aGUgbW9kZWwgYWdhaW5zdCB0aGUgZmlsdGVyIG9uIGNoYW5nZVxuXHRcdEBvbiBcImNoYW5nZVwiLCBfLmJpbmQoICggX20gKS0+XG5cdFx0XHR0b0FkZCA9IEBfZm5GaWx0ZXIoIF9tIClcblx0XHRcdGFkZGVkID0gQGdldCggX20gKT9cblx0XHRcdGlmIGFkZGVkIGFuZCBub3QgdG9BZGRcblx0XHRcdFx0QHJlbW92ZSggX20gKVxuXHRcdFx0ZWxzZSBpZiBub3QgYWRkZWQgYW5kIHRvQWRkXG5cdFx0XHRcdEBhZGQoIF9tIClcblx0XHRcdHJldHVyblxuXHRcdCwgX3N1YiApXG5cblx0XHQjIGFkZCBtb2RlbCB0byBiYXNlIGNvbGxlY3Rpb24gb24gYWRkIHRvIHN1YlxuXHRcdF9zdWIub24gXCJhZGRcIiwgXy5iaW5kKCAoIF9tICktPlxuXHRcdFx0QGFkZCggX20gKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCBAKVxuXG5cdFx0IyBhZGQgbW9kZWwgdG8gc3ViIGNvbGxlY3Rpb24gb24gYWRkIHRvIGJhc2UgaWYgaXQgbWF0Y2hlcyB0aGUgZmlsdGVyXG5cdFx0QG9uIFwiYWRkXCIsIF8uYmluZCggKCBfbSApLT5cblx0XHRcdGlmIEBfZm5GaWx0ZXIoIF9tIClcblx0XHRcdFx0QGFkZCggX20gKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCBfc3ViIClcblxuXHRcdCMgcmVtb3ZlIG1vZGVsIGZyb20gYmFzZSBjb2xsZWN0aW9uIG9uIHJlbW92ZSBvZiBzdWJcblx0XHRfc3ViLm9uIFwicmVtb3ZlXCIsIF8uYmluZCggKCBfbSApLT5cblx0XHRcdCNAcmVtb3ZlKCBfbSApXG5cdFx0XHRyZXR1cm5cblx0XHQsIEApXG5cblx0XHQjIHJlbW92ZSBtb2RlbCBmcm9tIGJhc2UgY29sbGVjdGlvbiBvbiByZW1vdmUgb2Ygc3ViXG5cdFx0QG9uIFwicmVtb3ZlXCIsIF8uYmluZCggKCBfbSApLT5cblx0XHRcdEByZW1vdmUoIF9tIClcblx0XHRcdHJldHVyblxuXHRcdCwgX3N1YiApXG5cblx0XHQjIHJlbW92ZSBtb2RlbCBmcm9tIGJhc2UgY29sbGVjdGlvbiBvbiByZW1vdmUgb2Ygc3ViXG5cdFx0QG9uIFwicmVzZXRcIiwgXy5iaW5kKCAoIF9tICktPlxuXHRcdFx0QHVwZGF0ZVN1YkZpbHRlcigpXG5cdFx0XHRyZXR1cm5cblx0XHQsIF9zdWIgKVxuXG5cdFx0IyBzdG9yZSB0aGUgc3ViY29sbGVjdGlvbiB1bmRlciB0aGUgY3VycmVudCBjb2xsZWN0aW9uXG5cdFx0QHN1YkNvbGxzLnB1c2goIF9zdWIgKVxuXG5cdFx0cmV0dXJuIF9zdWJcblx0XG5cdCMjI1xuXHQjIyBfc3ViQ29sbGVjdGlvbk9wdGlvbnNcblx0XG5cdGBjb2xsZWN0aW9uLl9zdWJDb2xsZWN0aW9uT3B0aW9ucygpYFxuXHRcblx0T3ZlcndyaXRhYmxlIG1ldGhvZCB0byBzZXQgdGhlIGNvbnN0cnVjdG9yIG9wdGlvbnMgZm9yIHN1YiBjb2xsZWN0aW9uc1xuXHRcblx0QHJldHVybiB7IE9iamVjdCB9IFRoZSBvcHRpb25zIG9iamVjdFxuXHRcblx0QGFwaSBwcml2YXRlXG5cdCMjI1xuXHRfc3ViQ29sbGVjdGlvbk9wdGlvbnM6ID0+XG5cdFx0X29wdHMgPVxuXHRcdFx0Y29tcGFyYXRvcjogQGNvbXBhcmF0b3Jcblx0XHRyZXR1cm4gX29wdHNcblxuXHQjIyNcblx0IyMgdXBkYXRlU3ViRmlsdGVyXG5cdFxuXHRgY29sbGVjdGlvbi51cGRhdGVTdWJGaWx0ZXIoIGZpbHRlciApYFxuXHRcblx0TWV0aG9kIHRvIHVwZGF0ZSB0aGUgZmlsdGVyIG9mIGEgc3ViY29sbGVjdGlvbi4gVGhlbiBhbGwgbW9kZWxzIHdpbGwgYmUgcmVzZXRlIGJ5IHRoZSBuZXcgZmlsdGVyLiBTbyB5b3UgaGF2ZSB0byBsaXN0ZW4gdG8gdGVoIHJlc2V0IGV2ZW50XG5cdFxuXHRAcGFyYW0geyBGdW5jdGlvbnxBcnJheXxTdHJpbmd8TnVtYmVyfE9iamVjdCB9IGZpbHRlciBUaGUgZmlsdGVyIHRvIHJlZHVjZSB0aGUgY3VycmVudCBjb2xsZWN0aW9uLiBDYW4gYmUgYSBmdW5jdGlvbiBsaWtlIHVuZGVyc2NvcmUgYF8uZmlsdGVyYCBvciBhbiBhcnJheSBvZiBpZHMsIGEgc2luZ2xlIGlkIGFzIHN0cmluZyBvciBudW1iZXIgb3IgYSBmaWx0ZXIgb2JqZWN0IGNvbnRhaW5pbmdzIGtleSB2YWx1ZSBmaWx0ZXJzLlxuXHRcblx0QHJldHVybiB7IFNlbGYgfSBpdHNlbGZcblx0XG5cdEBhcGkgcHVibGljXG5cdCMjI1xuXHR1cGRhdGVTdWJGaWx0ZXI6ICggZmlsdGVyLCBhc1Jlc2V0ID0gdHJ1ZSApPT5cblx0XHRpZiBAX3BhcmVudENvbD9cblxuXHRcdFx0IyBzZXQgdGhlIG5ldyBmaWx0ZXIgbWV0aG9kXG5cdFx0XHRAX2ZuRmlsdGVyID0gQF9nZW5lcmF0ZVN1YkZpbHRlciggZmlsdGVyICkgaWYgZmlsdGVyP1xuXG5cdFx0XHRfbW9kZWxzID0gQF9wYXJlbnRDb2wuZmlsdGVyKCBAX2ZuRmlsdGVyIClcblxuXHRcdFx0IyByZXNldCB0aGUgY29sbGVjdGlvbiB3aXRoIHRoZSBuZXcgbW9kZWxzXG5cdFx0XHRpZiBhc1Jlc2V0XG5cdFx0XHRcdEByZXNldCggX21vZGVscyApXG5cdFx0XHRcdHJldHVybiBAXG5cblx0XHRcdG5ld2lkcyA9IF8ucGx1Y2soIF9tb2RlbHMsIFwiY2lkXCIgKVxuXHRcdFx0Y3VycmlkcyA9IF8ucGx1Y2soIEBtb2RlbHMsIFwiY2lkXCIgKVxuXHRcdFx0Zm9yIHJpZCBpbiBfLmRpZmZlcmVuY2UoIGN1cnJpZHMsIG5ld2lkcyApXG5cdFx0XHRcdEByZW1vdmUoIHJpZCApXG5cdFx0XHRcdFxuXHRcdFx0X2FkZElkcyA9IF8uZGlmZmVyZW5jZSggbmV3aWRzLCBjdXJyaWRzIClcblx0XHRcdGZvciBtZGwgaW4gX21vZGVscyB3aGVuIG1kbC5jaWQgaW4gX2FkZElkc1xuXHRcdFx0XHRAYWRkKCBtZGwgKVxuXG5cdFx0cmV0dXJuIEBcblxuXG5cdCMjI1xuXHQjIyBfZ2VuZXJhdGVTdWJGaWx0ZXJcblx0XG5cdGBjb2xsZWN0aW9uLl9nZW5lcmF0ZVN1YkZpbHRlciggZmlsdGVyIClgXG5cdFxuXHRJbnRlcm5hbCBtZXRob2QgdGggY29udmVydCBhIGZpbHRlciBhcmd1bWVudCB0byBhIGZpbHRlciBmdW5jdGlvblxuXHRcblx0QHBhcmFtIHsgRnVuY3Rpb258QXJyYXl8U3RyaW5nfE51bWJlcnxPYmplY3QgfSBmaWx0ZXIgVGhlIGZpbHRlciB0byByZWR1Y2UgdGhlIGN1cnJlbnQgY29sbGVjdGlvbi4gQ2FuIGJlIGEgZnVuY3Rpb24gbGlrZSB1bmRlcnNjb3JlIGBfLmZpbHRlcmAgb3IgYW4gYXJyYXkgb2YgaWRzLCBhIHNpbmdsZSBpZCBhcyBzdHJpbmcgb3IgbnVtYmVyIG9yIGEgZmlsdGVyIG9iamVjdCBjb250YWluaW5ncyBrZXkgdmFsdWUgZmlsdGVycy5cblx0XG5cdEByZXR1cm4geyBGdW5jdGlvbiB9IFRoZSBnZW5lcmF0ZWQgZmlsdGVyIGZ1bmN0aW9uXG5cdFxuXHRAYXBpIHByaXZhdGVcblx0IyMjXG5cdF9nZW5lcmF0ZVN1YkZpbHRlcjogKCBmaWx0ZXIgKS0+XG5cdFx0IyBjb25zdHJ1Y3QgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdGlmIF8uaXNGdW5jdGlvbiggZmlsdGVyIClcblx0XHRcdGZuRmlsdGVyID0gZmlsdGVyXG5cdFx0ZWxzZSBpZiBfLmlzQXJyYXkoIGZpbHRlciApXG5cdFx0XHRmbkZpbHRlciA9ICggX20gKS0+XG5cdFx0XHRcdF9tLmlkIGluIGZpbHRlclxuXHRcdGVsc2UgaWYgXy5pc1N0cmluZyggZmlsdGVyICkgb3IgXy5pc051bWJlciggZmlsdGVyIClcblx0XHRcdGZuRmlsdGVyID0gKCBfbSApLT5cblx0XHRcdFx0X20uaWQgaXMgZmlsdGVyXG5cdFx0ZWxzZVxuXHRcdFx0Zm5GaWx0ZXIgPSAoIF9tICktPlxuXHRcdFx0XHRmb3IgX25tLCBfdmwgb2YgZmlsdGVyXG5cdFx0XHRcdFx0aWYgX20uZ2V0KCBfbm0gKSBpc250IF92bFxuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cblx0XHRyZXR1cm4gZm5GaWx0ZXJcblxubW9kdWxlLmV4cG9ydHMgPSBCYWNrYm9uZVN1YlxuIiwiY2xhc3MgRmN0QXJyYXkgZXh0ZW5kcyByZXF1aXJlKCBcIi4vZmFjZXRfc3RyaW5nXCIgKVxuXHRTdWJWaWV3OiByZXF1aXJlKCBcIi4uL3ZpZXdzL2ZhY2V0cy9zdWJhcnJheVwiIClcblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZjdEFycmF5XG4iLCJjbGFzcyBGYWNldEJhc2UgZXh0ZW5kcyBCYWNrYm9uZS5Nb2RlbFxuXHRpZEF0dHJpYnV0ZTogXCJuYW1lXCJcblx0U3ViVmlldzogcmVxdWlyZSggXCIuLi92aWV3cy9mYWNldHMvYmFzZVwiIClcblx0XG5cdGNvbnN0cnVjdG9yOiAoIGF0dHJzLCBvcHRpb25zICktPlxuXHRcdEBtYWluID0gb3B0aW9ucy5tYWluXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdGRlZmF1bHRzOiAtPlxuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRuYW1lOiBcIm5hbWVcIlxuXHRcdGxhYmVsOiBcIkRlc2NyaXB0aW9uXCJcblx0XHRzb3J0OiAwXG5cblx0Z2V0TGFiZWw6ID0+XG5cdFx0cmV0dXJuIEBnZXQoIFwibGFiZWxcIiApXG5cblx0bWF0Y2g6ICggY3JpdCApPT5cblx0XHRfcyA9ICBAZ2V0KCBcIm5hbWVcIiApICsgXCIgXCIgKyBAZ2V0KCBcImxhYmVsXCIgKVxuXHRcdGZvdW5kID0gX3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKCBjcml0LnRvTG93ZXJDYXNlKCkgKVxuXHRcdHJldHVybiBmb3VuZCA+PSAwXG5cblx0Y29tcGFyYXRvcjogKCBtZGwgKS0+XG5cdFx0cmV0dXJuIG1kbC5pZFxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0QmFzZVxuIiwiY2xhc3MgRmN0RGF0ZVJhbmdlIGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X2Jhc2VcIiApXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL2RhdGVyYW5nZVwiIClcblx0ZGVmYXVsdHM6ID0+XG5cdFx0cmV0dXJuICQuZXh0ZW5kIHN1cGVyLFxuXHRcdFx0b3B0czoge31cblx0XHRcdHZhbHVlOiBudWxsXG5cbm1vZHVsZS5leHBvcnRzID0gRmN0RGF0ZVJhbmdlXG4iLCJjbGFzcyBGY3RFdmVudCBleHRlbmRzIHJlcXVpcmUoIFwiLi9mYWNldF9iYXNlXCIgKVxuXHRTdWJWaWV3OiBudWxsXG5cdG9ubHlFeGVjOiB0cnVlXG5cdGRlZmF1bHRzOiA9PlxuXHRcdHJldHVybiAkLmV4dGVuZCBzdXBlcixcblx0XHRcdG9wdGlvbnM6IFtdXG5cdFx0XG5cdGV4ZWM6ICggKT0+XG5cdFx0QG1haW4udHJpZ2dlciggQGdldCggXCJldmVudFwiICksIEB0b0pTT04oKSApXG5cdFx0cmV0dXJuXG5tb2R1bGUuZXhwb3J0cyA9IEZjdEV2ZW50XG4iLCJjbGFzcyBGY3ROdW1iZXIgZXh0ZW5kcyByZXF1aXJlKCBcIi4vZmFjZXRfYmFzZVwiIClcblx0U3ViVmlldzogcmVxdWlyZSggXCIuLi92aWV3cy9mYWNldHMvc3VibnVtYmVyXCIgKVxuXHRkZWZhdWx0czogPT5cblx0XHRyZXR1cm4gJC5leHRlbmQgc3VwZXIsXG5cdFx0XHRtaW46IG51bGxcblx0XHRcdG1heDogbnVsbFxuXHRcdFx0c3RlcDogMVxuXHRcdFx0dmFsdWU6IG51bGxcblxubW9kdWxlLmV4cG9ydHMgPSBGY3ROdW1iZXJcbiIsImNsYXNzIEZjdFJhbmdlIGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X2Jhc2VcIiApXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL3N1YnJhbmdlXCIgKVxuXHRkZWZhdWx0czogPT5cblx0XHRyZXR1cm4gJC5leHRlbmQgc3VwZXIsXG5cdFx0XHRtaW46IG51bGxcblx0XHRcdG1heDogbnVsbFxuXHRcdFx0c3RlcDogMVxuXHRcdFx0dmFsdWU6IG51bGxcblxubW9kdWxlLmV4cG9ydHMgPSBGY3RSYW5nZVxuIiwiY2xhc3MgRmN0U2VsZWN0IGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X2Jhc2VcIiApXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL3N1YnNlbGVjdFwiIClcblx0ZGVmYXVsdHM6ID0+XG5cdFx0cmV0dXJuICQuZXh0ZW5kKCBzdXBlciwge1xuXHRcdFx0b3B0aW9uczogW11cblx0XHRcdHdhaXRGb3JBc3luYzogdHJ1ZVxuXHRcdH0pXG5cbm1vZHVsZS5leHBvcnRzID0gRmN0U2VsZWN0XG4iLCJjbGFzcyBGY3RTdHJpbmcgZXh0ZW5kcyByZXF1aXJlKCBcIi4vZmFjZXRfYmFzZVwiIClcblx0U3ViVmlldzogcmVxdWlyZSggXCIuLi92aWV3cy9mYWNldHMvc3Vic3RyaW5nXCIgKVxuXHRkZWZhdWx0czogPT5cblx0XHRyZXR1cm4gJC5leHRlbmQgc3VwZXIsXG5cdFx0XHRvcHRpb25zOiBbXVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZjdFN0cmluZ1xuIiwic29ydENvbGwgPSByZXF1aXJlKCBcInNvcnRjb2xsXCIgKVxuXG5mbkdldCA9ICggZWwsIGtleSApLT5cblx0cmV0dXJuIGVsLmdldCgga2V5IClcblxuY2xhc3MgSWdneUZhY2V0cyBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYWNrYm9uZV9zdWJcIiApXG5cdFxuXHRjb25zdHJ1Y3RvcjogKCBtb2RlbHMsIG9wdGlvbnM9e30gKS0+XG5cdFx0aWYgbm90IG9wdGlvbnMuY29tcGFyYXRvcj9cblx0XHRcdF9mb3J3YXJkID0gc3dpdGNoIG9wdGlvbnMuZGlyXG5cdFx0XHRcdHdoZW4gXCJhc2NcIiB0aGVuIHRydWVcblx0XHRcdFx0d2hlbiBcImRlc2NcIiB0aGVuIGZhbHNlXG5cdFx0XHRcdGVsc2UgdHJ1ZVxuXHRcdFx0XG5cdFx0XHRvcHRpb25zLmNvbXBhcmF0b3IgPSBzb3J0Q29sbCggWyBcInNvcnRcIiBdLmNvbmNhdCggb3B0aW9ucy5zb3J0Ynkgb3IgXCJuYW1lXCIgKSwgeyBzb3J0OiBmYWxzZSwgXCI/XCI6IF9mb3J3YXJkIH0sIGZuR2V0IClcblx0XHRyZXR1cm4gc3VwZXIoIG1vZGVscywgb3B0aW9ucyApXG5cdFxuXHRfc3ViQ29sbGVjY3Rpb25PcHRpb25zOiA9PlxuXHRcdG9wdCA9IHN1cGVyXG5cdFx0b3B0LmRpciA9IGlmIEBmb3J3YXJkIHRoZW4gXCJhc2NcIiBlbHNlIFwiZGVzY1wiXG5cdFx0cmV0dXJuIG9wdFxuXHRcblx0bW9kZWxJZDogKGF0dHJzKS0+XG5cdFx0cmV0dXJuIGF0dHJzLm5hbWVcblx0XHRcbm1vZHVsZS5leHBvcnRzID0gSWdneUZhY2V0c1xuIiwiY2xhc3MgSWdneVJlc3VsdCBleHRlbmRzIEJhY2tib25lLk1vZGVsXG5cdGlkQXR0cmlidXRlOiBcIm5hbWVcIlxuXHRkZWZhdWx0czpcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0bmFtZTogbnVsbFxuXHRcdHZhbHVlOiBudWxsXG5cbmNsYXNzIElnZ3lSZXN1bHRzIGV4dGVuZHMgQmFja2JvbmUuQ29sbGVjdGlvblxuXHRtb2RlbDogSWdneVJlc3VsdFxuXHRpbml0aWFsaXplOiAoIG1kbHMsIG9wdHMgKT0+XG5cdFx0aWYgb3B0cy5tb2RpZnlLZXk/Lmxlbmd0aFxuXHRcdFx0QG1vZGlmeUtleSA9IG9wdHMubW9kaWZ5S2V5XG5cdFx0cmV0dXJuXG5cdHBhcnNlOiAoIGF0dHIsIG9wdGlvbnMgKT0+XG5cdFx0X2tleSA9IG9wdGlvbnMuX2ZhY2V0LmdldCggXCJtb2RpZnlLZXlcIiApIG9yIEBtb2RpZnlLZXkgb3IgXCJ2YWx1ZVwiXG5cdFx0X21vZGlmeSA9IG9wdGlvbnMuX2ZhY2V0Py5nZXQoIFwibW9kaWZ5XCIgKVxuXHRcdGlmIF9tb2RpZnk/IGFuZCBfLmlzRnVuY3Rpb24oIF9tb2RpZnkgKVxuXHRcdFx0YXR0clsgX2tleSBdID0gX21vZGlmeSggYXR0ci52YWx1ZSwgb3B0aW9ucy5fZmFjZXQsIGF0dHIgKVxuXHRcdHJldHVybiBhdHRyXG5cbm1vZHVsZS5leHBvcnRzID0gSWdneVJlc3VsdHNcbiIsImNsYXNzIEJhc2VSZXN1bHQgZXh0ZW5kcyBCYWNrYm9uZS5Nb2RlbFxuXHRpZEF0dHJpYnV0ZTogXCJ2YWx1ZVwiXG5cdGdldExhYmVsOiA9PlxuXHRcdHJldHVybiBAZ2V0KCBcImxhYmVsXCIgKSBvciBAZ2V0KCBAaWRBdHRyaWJ1dGUgKSBvciBcIlwiXG5cblxuY2xhc3MgQmFzZVJlc3VsdHMgZXh0ZW5kcyByZXF1aXJlKCBcIi4vYmFja2JvbmVfc3ViXCIgKVxuXHRtb2RlbDogQmFzZVJlc3VsdFxuXG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VSZXN1bHRzXG4iLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjdXN0b20sIGlkLCB0eHQpIHtcbmJ1Zi5wdXNoKFwiPHNwYW4gY2xhc3M9XFxcInR4dFxcXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSB0eHQpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvc3Bhbj48c3BhbiBjbGFzcz1cXFwiYnRuLXdycFxcXCI+PGlcIiArIChqYWRlLmF0dHIoXCJkYXRhLWlkXCIsIGlkLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcInJtLXJlc3VsdC1idG4gZmEgZmEtcmVtb3ZlXFxcIj48L2k+XCIpO1xuaWYgKCBjdXN0b20pXG57XG5idWYucHVzaChcIjxpXCIgKyAoamFkZS5hdHRyKFwiZGF0YS1pZFwiLCBpZCwgdHJ1ZSwgZmFsc2UpKSArIFwiIGNsYXNzPVxcXCJlZGl0LXJlc3VsdC1idG4gZmEgZmEtcGVuY2lsXFxcIj48L2k+XCIpO1xufVxuYnVmLnB1c2goXCI8L3NwYW4+XCIpO30uY2FsbCh0aGlzLFwiY3VzdG9tXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jdXN0b206dHlwZW9mIGN1c3RvbSE9PVwidW5kZWZpbmVkXCI/Y3VzdG9tOnVuZGVmaW5lZCxcImlkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5pZDp0eXBlb2YgaWQhPT1cInVuZGVmaW5lZFwiP2lkOnVuZGVmaW5lZCxcInR4dFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudHh0OnR5cGVvZiB0eHQhPT1cInVuZGVmaW5lZFwiP3R4dDp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQpIHtcbmJ1Zi5wdXNoKFwiPGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgY2lkLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcImRhdGVyYW5nZS1pbnBcXFwiLz5cIik7fS5jYWxsKHRoaXMsXCJjaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmNpZDp0eXBlb2YgY2lkIT09XCJ1bmRlZmluZWRcIj9jaWQ6dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwidmFyIGphZGUgPSByZXF1aXJlKFwiamFkZS9ydW50aW1lXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlbXBsYXRlKGxvY2Fscykge1xudmFyIGJ1ZiA9IFtdO1xudmFyIGphZGVfbWl4aW5zID0ge307XG52YXIgamFkZV9pbnRlcnA7XG47dmFyIGxvY2Fsc19mb3Jfd2l0aCA9IChsb2NhbHMgfHwge30pOyhmdW5jdGlvbiAoY2lkLCBvcGVyYXRvciwgb3BlcmF0b3JzLCB1bmRlZmluZWQsIHZhbHVlKSB7XG5pZiAoIG9wZXJhdG9ycyAmJiBvcGVyYXRvcnMubGVuZ3RoKVxue1xuYnVmLnB1c2goXCI8ZGl2IGNsYXNzPVxcXCJvcGVyYXRvclxcXCI+PHNlbGVjdFwiICsgKGphZGUuYXR0cihcImlkXCIsIFwiXCIgKyAoY2lkKSArIFwib3BcIiwgdHJ1ZSwgZmFsc2UpKSArIFwiPlwiKTtcbi8vIGl0ZXJhdGUgb3BlcmF0b3JzXG47KGZ1bmN0aW9uKCl7XG4gIHZhciAkJG9iaiA9IG9wZXJhdG9ycztcbiAgaWYgKCdudW1iZXInID09IHR5cGVvZiAkJG9iai5sZW5ndGgpIHtcblxuICAgIGZvciAodmFyIGlkeCA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgaWR4IDwgJCRsOyBpZHgrKykge1xuICAgICAgdmFyIG9wID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgb3AsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCBvcGVyYXRvciA9PSBvcCApLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBvcCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9vcHRpb24+XCIpO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHZhciAkJGwgPSAwO1xuICAgIGZvciAodmFyIGlkeCBpbiAkJG9iaikge1xuICAgICAgJCRsKys7ICAgICAgdmFyIG9wID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgb3AsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCBvcGVyYXRvciA9PSBvcCApLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBvcCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9vcHRpb24+XCIpO1xuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG5idWYucHVzaChcIjwvc2VsZWN0PjwvZGl2PlwiKTtcbn1cbmJ1Zi5wdXNoKFwiPGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgY2lkLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInZhbHVlXCIsIHZhbHVlLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcIm51bWJlci1pbnBcXFwiLz5cIik7fS5jYWxsKHRoaXMsXCJjaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmNpZDp0eXBlb2YgY2lkIT09XCJ1bmRlZmluZWRcIj9jaWQ6dW5kZWZpbmVkLFwib3BlcmF0b3JcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLm9wZXJhdG9yOnR5cGVvZiBvcGVyYXRvciE9PVwidW5kZWZpbmVkXCI/b3BlcmF0b3I6dW5kZWZpbmVkLFwib3BlcmF0b3JzXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5vcGVyYXRvcnM6dHlwZW9mIG9wZXJhdG9ycyE9PVwidW5kZWZpbmVkXCI/b3BlcmF0b3JzOnVuZGVmaW5lZCxcInVuZGVmaW5lZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudW5kZWZpbmVkOnR5cGVvZiB1bmRlZmluZWQhPT1cInVuZGVmaW5lZFwiP3VuZGVmaW5lZDp1bmRlZmluZWQsXCJ2YWx1ZVwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudmFsdWU6dHlwZW9mIHZhbHVlIT09XCJ1bmRlZmluZWRcIj92YWx1ZTp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQsIHZhbHVlKSB7XG5idWYucHVzaChcIjxkaXYgY2xhc3M9XFxcInJhbmdlaW5wXFxcIj5cIik7XG52YXIgX3ZhbHMgPSB2YWx1ZSA/IHZhbHVlIDogW11cbmJ1Zi5wdXNoKFwiPGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgXCJcIiArIChjaWQpICsgXCJfZnJvbVwiLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInZhbHVlXCIsIF92YWxzWzBdLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcIm51bWJlci1pbnAgcmFuZ2UtZnJvbVxcXCIvPjxzcGFuIGNsYXNzPVxcXCJzZXBhcmF0b3JcXFwiPi08L3NwYW4+PGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgXCJcIiArIChjaWQpICsgXCJfdG9cIiwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBfdmFsc1sxXSwgdHJ1ZSwgZmFsc2UpKSArIFwiIGNsYXNzPVxcXCJudW1iZXItaW5wIHJhbmdlLXRvXFxcIi8+PC9kaXY+XCIpO30uY2FsbCh0aGlzLFwiY2lkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jaWQ6dHlwZW9mIGNpZCE9PVwidW5kZWZpbmVkXCI/Y2lkOnVuZGVmaW5lZCxcInZhbHVlXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC52YWx1ZTp0eXBlb2YgdmFsdWUhPT1cInVuZGVmaW5lZFwiP3ZhbHVlOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuXG47cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQsIG11bHRpcGxlLCBvcHRpb25Hcm91cHMsIG9wdGlvbnMsIHVuZGVmaW5lZCwgdmFsdWUpIHtcbmJ1Zi5wdXNoKFwiPHNlbGVjdFwiICsgKGphZGUuYXR0cihcImlkXCIsIGNpZCwgdHJ1ZSwgZmFsc2UpKSArIFwiIG11bHRpcGxlPVxcXCJtdWx0aXBsZVxcXCIgY2xhc3M9XFxcInNlbGVjdC1pbnBcXFwiPlwiKTtcbmlmICggb3B0aW9uR3JvdXBzKVxue1xuLy8gaXRlcmF0ZSBvcHRpb25Hcm91cHNcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gb3B0aW9uR3JvdXBzO1xuICBpZiAoJ251bWJlcicgPT0gdHlwZW9mICQkb2JqLmxlbmd0aCkge1xuXG4gICAgZm9yICh2YXIgZ25hbWUgPSAwLCAkJGwgPSAkJG9iai5sZW5ndGg7IGduYW1lIDwgJCRsOyBnbmFtZSsrKSB7XG4gICAgICB2YXIgb3B0cyA9ICQkb2JqW2duYW1lXTtcblxuYnVmLnB1c2goXCI8b3B0Z3JvdXBcIiArIChqYWRlLmF0dHIoXCJsYWJlbFwiLCBnbmFtZSwgdHJ1ZSwgZmFsc2UpKSArIFwiPjwvb3B0Z3JvdXA+XCIpO1xuLy8gaXRlcmF0ZSBvcHRzXG47KGZ1bmN0aW9uKCl7XG4gIHZhciAkJG9iaiA9IG9wdHM7XG4gIGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgJCRvYmoubGVuZ3RoKSB7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwLCAkJGwgPSAkJG9iai5sZW5ndGg7IGlkeCA8ICQkbDsgaWR4KyspIHtcbiAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPG9wdGlvblwiICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGVsLnZhbHVlLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInNlbGVjdGVkXCIsICggdmFsdWUgJiYgdmFsdWUuaW5kZXhPZiggZWwudmFsdWUgKSA+PSAwICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsLmxhYmVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH0gZWxzZSB7XG4gICAgdmFyICQkbCA9IDA7XG4gICAgZm9yICh2YXIgaWR4IGluICQkb2JqKSB7XG4gICAgICAkJGwrKzsgICAgICB2YXIgZWwgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxvcHRpb25cIiArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBlbC52YWx1ZSwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJzZWxlY3RlZFwiLCAoIHZhbHVlICYmIHZhbHVlLmluZGV4T2YoIGVsLnZhbHVlICkgPj0gMCApLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBlbC5sYWJlbCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9vcHRpb24+XCIpO1xuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG4gICAgfVxuXG4gIH0gZWxzZSB7XG4gICAgdmFyICQkbCA9IDA7XG4gICAgZm9yICh2YXIgZ25hbWUgaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBvcHRzID0gJCRvYmpbZ25hbWVdO1xuXG5idWYucHVzaChcIjxvcHRncm91cFwiICsgKGphZGUuYXR0cihcImxhYmVsXCIsIGduYW1lLCB0cnVlLCBmYWxzZSkpICsgXCI+PC9vcHRncm91cD5cIik7XG4vLyBpdGVyYXRlIG9wdHNcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gb3B0cztcbiAgaWYgKCdudW1iZXInID09IHR5cGVvZiAkJG9iai5sZW5ndGgpIHtcblxuICAgIGZvciAodmFyIGlkeCA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgaWR4IDwgJCRsOyBpZHgrKykge1xuICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgZWwudmFsdWUsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCB2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKCBlbC52YWx1ZSApID49IDAgKSwgdHJ1ZSwgZmFsc2UpKSArIFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvb3B0aW9uPlwiKTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBpZHggaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPG9wdGlvblwiICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGVsLnZhbHVlLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInNlbGVjdGVkXCIsICggdmFsdWUgJiYgdmFsdWUuaW5kZXhPZiggZWwudmFsdWUgKSA+PSAwICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsLmxhYmVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH1cbn0pLmNhbGwodGhpcyk7XG5cbiAgICB9XG5cbiAgfVxufSkuY2FsbCh0aGlzKTtcblxufVxuZWxzZVxue1xuLy8gaXRlcmF0ZSBvcHRpb25zXG47KGZ1bmN0aW9uKCl7XG4gIHZhciAkJG9iaiA9IG9wdGlvbnM7XG4gIGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgJCRvYmoubGVuZ3RoKSB7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwLCAkJGwgPSAkJG9iai5sZW5ndGg7IGlkeCA8ICQkbDsgaWR4KyspIHtcbiAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPG9wdGlvblwiICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGVsLnZhbHVlLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInNlbGVjdGVkXCIsICggdmFsdWUgJiYgdmFsdWUuaW5kZXhPZiggZWwudmFsdWUgKSA+PSAwICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsLmxhYmVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH0gZWxzZSB7XG4gICAgdmFyICQkbCA9IDA7XG4gICAgZm9yICh2YXIgaWR4IGluICQkb2JqKSB7XG4gICAgICAkJGwrKzsgICAgICB2YXIgZWwgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxvcHRpb25cIiArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBlbC52YWx1ZSwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJzZWxlY3RlZFwiLCAoIHZhbHVlICYmIHZhbHVlLmluZGV4T2YoIGVsLnZhbHVlICkgPj0gMCApLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBlbC5sYWJlbCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9vcHRpb24+XCIpO1xuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG59XG5idWYucHVzaChcIjwvc2VsZWN0PlwiKTtcbmlmICggbXVsdGlwbGUpXG57XG5idWYucHVzaChcIjxzcGFuIGNsYXNzPVxcXCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzIHNlbGVjdC1jaGVjayBmYSBmYS1jaGVja1xcXCI+PC9zcGFuPlwiKTtcbn19LmNhbGwodGhpcyxcImNpZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguY2lkOnR5cGVvZiBjaWQhPT1cInVuZGVmaW5lZFwiP2NpZDp1bmRlZmluZWQsXCJtdWx0aXBsZVwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgubXVsdGlwbGU6dHlwZW9mIG11bHRpcGxlIT09XCJ1bmRlZmluZWRcIj9tdWx0aXBsZTp1bmRlZmluZWQsXCJvcHRpb25Hcm91cHNcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLm9wdGlvbkdyb3Vwczp0eXBlb2Ygb3B0aW9uR3JvdXBzIT09XCJ1bmRlZmluZWRcIj9vcHRpb25Hcm91cHM6dW5kZWZpbmVkLFwib3B0aW9uc1wiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgub3B0aW9uczp0eXBlb2Ygb3B0aW9ucyE9PVwidW5kZWZpbmVkXCI/b3B0aW9uczp1bmRlZmluZWQsXCJ1bmRlZmluZWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnVuZGVmaW5lZDp0eXBlb2YgdW5kZWZpbmVkIT09XCJ1bmRlZmluZWRcIj91bmRlZmluZWQ6dW5kZWZpbmVkLFwidmFsdWVcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnZhbHVlOnR5cGVvZiB2YWx1ZSE9PVwidW5kZWZpbmVkXCI/dmFsdWU6dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwidmFyIGphZGUgPSByZXF1aXJlKFwiamFkZS9ydW50aW1lXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlbXBsYXRlKGxvY2Fscykge1xudmFyIGJ1ZiA9IFtdO1xudmFyIGphZGVfbWl4aW5zID0ge307XG52YXIgamFkZV9pbnRlcnA7XG47dmFyIGxvY2Fsc19mb3Jfd2l0aCA9IChsb2NhbHMgfHwge30pOyhmdW5jdGlvbiAoY2lkLCBpbnB2YWwpIHtcbmJ1Zi5wdXNoKFwiPGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgY2lkLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGlucHZhbCwgdHJ1ZSwgZmFsc2UpKSArIFwiIGNsYXNzPVxcXCJzZWxlY3Rvci1pbnBcXFwiLz48dWxcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBcIlwiICsgKGNpZCkgKyBcInR5cGVsaXN0XCIsIHRydWUsIGZhbHNlKSkgKyBcIiBjbGFzcz1cXFwidHlwZWxpc3RcXFwiPjwvdWw+XCIpO30uY2FsbCh0aGlzLFwiY2lkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jaWQ6dHlwZW9mIGNpZCE9PVwidW5kZWZpbmVkXCI/Y2lkOnVuZGVmaW5lZCxcImlucHZhbFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguaW5wdmFsOnR5cGVvZiBpbnB2YWwhPT1cInVuZGVmaW5lZFwiP2lucHZhbDp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChhY3RpdmVJZHgsIGN1c3RvbSwgbGlzdCwgcXVlcnksIHVuZGVmaW5lZCkge1xudmFyIGFkZCA9IDA7XG5pZiAoIGN1c3RvbSAmJiBxdWVyeSlcbntcbmFkZCA9IDE7XG5idWYucHVzaChcIjxsaT48YSBkYXRhLWlkPVxcXCJfY3VzdG9tXFxcIiBkYXRhLWlkeD1cXFwiLTFcXFwiXCIgKyAoamFkZS5jbHMoW3thY3RpdmU6MCA9PT0gYWN0aXZlSWR4fV0sIFt0cnVlXSkpICsgXCI+PGk+XFxcIlwiICsgKCgoamFkZV9pbnRlcnAgPSBxdWVyeSkgPT0gbnVsbCA/ICcnIDogamFkZV9pbnRlcnApKSArIFwiXFxcIjwvaT48L2E+PC9saT5cIik7XG59XG5pZiAoIGxpc3QubGVuZ3RoKVxue1xuLy8gaXRlcmF0ZSBsaXN0XG47KGZ1bmN0aW9uKCl7XG4gIHZhciAkJG9iaiA9IGxpc3Q7XG4gIGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgJCRvYmoubGVuZ3RoKSB7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwLCAkJGwgPSAkJG9iai5sZW5ndGg7IGlkeCA8ICQkbDsgaWR4KyspIHtcbiAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPGxpXCIgKyAoamFkZS5jbHMoW2VsLmNzc2NsYXNzXSwgW3RydWVdKSkgKyBcIj48YVwiICsgKGphZGUuYXR0cihcImRhdGEtaWRcIiwgZWwuaWQsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwiZGF0YS1pZHhcIiwgaWR4LCB0cnVlLCBmYWxzZSkpICsgKGphZGUuY2xzKFt7YWN0aXZlOihpZHggKyBhZGQpID09PSBhY3RpdmVJZHh9XSwgW3RydWVdKSkgKyBcIj5cIiArICgoKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID09IG51bGwgPyAnJyA6IGphZGVfaW50ZXJwKSkgKyBcIjwvYT48L2xpPlwiKTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBpZHggaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPGxpXCIgKyAoamFkZS5jbHMoW2VsLmNzc2NsYXNzXSwgW3RydWVdKSkgKyBcIj48YVwiICsgKGphZGUuYXR0cihcImRhdGEtaWRcIiwgZWwuaWQsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwiZGF0YS1pZHhcIiwgaWR4LCB0cnVlLCBmYWxzZSkpICsgKGphZGUuY2xzKFt7YWN0aXZlOihpZHggKyBhZGQpID09PSBhY3RpdmVJZHh9XSwgW3RydWVdKSkgKyBcIj5cIiArICgoKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID09IG51bGwgPyAnJyA6IGphZGVfaW50ZXJwKSkgKyBcIjwvYT48L2xpPlwiKTtcbiAgICB9XG5cbiAgfVxufSkuY2FsbCh0aGlzKTtcblxufVxuZWxzZSBpZiAoICFjdXN0b20pXG57XG5idWYucHVzaChcIjxsaT48YSBjbGFzcz1cXFwiZW1wdHlyZXNcXFwiPm5vIHJlc3VsdCBmb3IgXFxcIlwiICsgKGphZGUuZXNjYXBlKChqYWRlX2ludGVycCA9IHF1ZXJ5KSA9PSBudWxsID8gJycgOiBqYWRlX2ludGVycCkpICsgXCJcXFwiPC9hPjwvbGk+XCIpO1xufX0uY2FsbCh0aGlzLFwiYWN0aXZlSWR4XCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5hY3RpdmVJZHg6dHlwZW9mIGFjdGl2ZUlkeCE9PVwidW5kZWZpbmVkXCI/YWN0aXZlSWR4OnVuZGVmaW5lZCxcImN1c3RvbVwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguY3VzdG9tOnR5cGVvZiBjdXN0b20hPT1cInVuZGVmaW5lZFwiP2N1c3RvbTp1bmRlZmluZWQsXCJsaXN0XCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5saXN0OnR5cGVvZiBsaXN0IT09XCJ1bmRlZmluZWRcIj9saXN0OnVuZGVmaW5lZCxcInF1ZXJ5XCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5xdWVyeTp0eXBlb2YgcXVlcnkhPT1cInVuZGVmaW5lZFwiP3F1ZXJ5OnVuZGVmaW5lZCxcInVuZGVmaW5lZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudW5kZWZpbmVkOnR5cGVvZiB1bmRlZmluZWQhPT1cInVuZGVmaW5lZFwiP3VuZGVmaW5lZDp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQsIHZhbHVlKSB7XG5idWYucHVzaChcIjxpbnB1dFwiICsgKGphZGUuYXR0cihcImlkXCIsIGNpZCwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCB2YWx1ZSwgdHJ1ZSwgZmFsc2UpKSArIFwiIGNsYXNzPVxcXCJzdHJpbmctaW5wXFxcIi8+XCIpO30uY2FsbCh0aGlzLFwiY2lkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jaWQ6dHlwZW9mIGNpZCE9PVwidW5kZWZpbmVkXCI/Y2lkOnVuZGVmaW5lZCxcInZhbHVlXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC52YWx1ZTp0eXBlb2YgdmFsdWUhPT1cInVuZGVmaW5lZFwiP3ZhbHVlOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGxhYmVsLCBwaW5uZWQsIHNlbGVjdGVkLCB1bmRlZmluZWQpIHtcbmlmICggIXBpbm5lZClcbntcbmJ1Zi5wdXNoKFwiPGRpdiBjbGFzcz1cXFwicm0tZmFjZXQtYnRuIGZhIGZhLXJlbW92ZVxcXCI+PC9kaXY+XCIpO1xufVxuYnVmLnB1c2goXCI8c3BhbiBjbGFzcz1cXFwic3VibGFiZWxcXFwiPlwiICsgKGphZGUuZXNjYXBlKChqYWRlX2ludGVycCA9IGxhYmVsKSA9PSBudWxsID8gJycgOiBqYWRlX2ludGVycCkpICsgXCI6PC9zcGFuPjx1bCBjbGFzcz1cXFwic3VicmVzdWx0c1xcXCI+XCIpO1xuaWYgKCBzZWxlY3RlZCAmJiBzZWxlY3RlZC5sZW5ndGgpXG57XG4vLyBpdGVyYXRlIHNlbGVjdGVkXG47KGZ1bmN0aW9uKCl7XG4gIHZhciAkJG9iaiA9IHNlbGVjdGVkO1xuICBpZiAoJ251bWJlcicgPT0gdHlwZW9mICQkb2JqLmxlbmd0aCkge1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMCwgJCRsID0gJCRvYmoubGVuZ3RoOyBpZHggPCAkJGw7IGlkeCsrKSB7XG4gICAgICB2YXIgZWwgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxsaT48c3BhbiBjbGFzcz1cXFwidHh0XFxcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L3NwYW4+PGkgY2xhc3M9XFxcInJtLWZhY2V0LWJ0biBmYSBmYS1yZW1vdmVcXFwiPjwvaT48L2xpPlwiKTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBpZHggaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPGxpPjxzcGFuIGNsYXNzPVxcXCJ0eHRcXFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvc3Bhbj48aSBjbGFzcz1cXFwicm0tZmFjZXQtYnRuIGZhIGZhLXJlbW92ZVxcXCI+PC9pPjwvbGk+XCIpO1xuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG59XG5idWYucHVzaChcIjwvdWw+PGRpdiBjbGFzcz1cXFwic3Vic2VsZWN0IGNsb3NlZFxcXCI+PC9kaXY+PGRpdiBjbGFzcz1cXFwibG9hZGVyXFxcIj48aSBjbGFzcz1cXFwiZmEgZmEtY29nIGZhLXNwaW5cXFwiPjwvaT48L2Rpdj5cIik7fS5jYWxsKHRoaXMsXCJsYWJlbFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgubGFiZWw6dHlwZW9mIGxhYmVsIT09XCJ1bmRlZmluZWRcIj9sYWJlbDp1bmRlZmluZWQsXCJwaW5uZWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnBpbm5lZDp0eXBlb2YgcGlubmVkIT09XCJ1bmRlZmluZWRcIj9waW5uZWQ6dW5kZWZpbmVkLFwic2VsZWN0ZWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnNlbGVjdGVkOnR5cGVvZiBzZWxlY3RlZCE9PVwidW5kZWZpbmVkXCI/c2VsZWN0ZWQ6dW5kZWZpbmVkLFwidW5kZWZpbmVkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC51bmRlZmluZWQ6dHlwZW9mIHVuZGVmaW5lZCE9PVwidW5kZWZpbmVkXCI/dW5kZWZpbmVkOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKHNlYXJjaEJ1dHRvbikge1xuYnVmLnB1c2goXCI8YnV0dG9uIGNsYXNzPVxcXCJhZGQtZmFjZXQtYnRuIGZhIGZhLXBsdXNcXFwiPjwvYnV0dG9uPlwiKTtcbmlmICggc2VhcmNoQnV0dG9uICE9IHVuZGVmaW5lZCAmJiBzZWFyY2hCdXR0b24udGVtcGxhdGUgIT0gdW5kZWZpbmVkICYmIHNlYXJjaEJ1dHRvbi50ZW1wbGF0ZS5sZW5ndGggPj0gMClcbntcbmJ1Zi5wdXNoKFwiPGJ1dHRvblwiICsgKGphZGUuY2xzKFsnc2VhcmNoLWJ0bicsc2VhcmNoQnV0dG9uLmNzc2NsYXNzLHtcInNlYXJjaC1idG4tcHVsbHJpZ2h0XCI6c2VhcmNoQnV0dG9uLnB1bGxyaWdodH1dLCBbbnVsbCx0cnVlLHRydWVdKSkgKyBcIj5cIiArIChudWxsID09IChqYWRlX2ludGVycCA9IHNlYXJjaEJ1dHRvbi50ZW1wbGF0ZSkgPyBcIlwiIDogamFkZV9pbnRlcnApICsgXCI8L2J1dHRvbj5cIik7XG59fS5jYWxsKHRoaXMsXCJzZWFyY2hCdXR0b25cIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnNlYXJjaEJ1dHRvbjp0eXBlb2Ygc2VhcmNoQnV0dG9uIT09XCJ1bmRlZmluZWRcIj9zZWFyY2hCdXR0b246dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPVxuXHRcIkxFRlRcIjogMzdcblx0XCJSSUdIVFwiOiAzOVxuXHRcIlVQXCI6IDM4XG5cdFwiRE9XTlwiOiA0MFxuXHRcIkVTQ1wiOiBbIDIyOSwgMjcgXVxuXHRcIkVOVEVSXCI6IDEzXG5cdFwiVEFCXCI6IDlcbiIsIktFWUNPREVTID0gcmVxdWlyZSggXCIuLi8uLi91dGlscy9rZXljb2Rlc1wiIClcblN1YlJlc3VsdHMgPSByZXF1aXJlKCBcIi4uLy4uL21vZGVscy9zdWJyZXN1bHRzXCIgKVxuXG5jbGFzcyBGYWNldFN1YnNCYXNlIGV4dGVuZHMgQmFja2JvbmUuVmlld1xuXHRyZXN1bHRUZW1wbGF0ZTogcmVxdWlyZSggXCIuLi8uLi90bXBscy9yZXN1bHRfYmFzZS5qYWRlXCIgKVxuXG5cdGluaXRpYWxpemU6ICggb3B0aW9ucyApPT5cblx0XHRAc3ViID0gb3B0aW9ucy5zdWJcblx0XHRAcmVzdWx0ID0gbmV3IFN1YlJlc3VsdHMoKVxuXHRcdHJldHVyblxuXG5cdGV2ZW50czogPT5cblx0XHRcImtleXVwICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblx0XHRcImtleWRvd24gI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwiaW5wdXRcIlxuXG5cdGZvY3VzOiA9PlxuXHRcdEAkZWwucmVtb3ZlQ2xhc3MoIFwiY2xvc2VkXCIgKVxuXHRcdEBmb2N1c2VkID0gdHJ1ZVxuXHRcdEAkaW5wLmZvY3VzKClcblx0XHRyZXR1cm5cblxuXHRyZW5kZXJSZXN1bHQ6ICggcmVuZGVyRW1wdHkgPSBmYWxzZSApPT5cblx0XHRpZiByZW5kZXJFbXB0eVxuXHRcdFx0cmV0dXJuIFwiXCJcblx0XHRfbGlzdCA9IFtdXG5cdFx0Zm9yIG1vZGVsLCBpZHggaW4gQHJlc3VsdC5tb2RlbHNcblx0XHRcdF9sYmwgPSBtb2RlbC5nZXRMYWJlbCgpXG5cdFx0XHRpZiBfbGJsPyBhbmQgX2xibCBpc250IFwiXCJcblx0XHRcdFx0X2xpc3QucHVzaCBtb2RlbC5nZXRMYWJlbCgpXG5cdFx0aWYgX2xpc3QubGVuZ3RoXG5cdFx0XHRyZXR1cm4gXCI8bGk+XCIgKyBfbGlzdC5qb2luKCBcIjwvbGk+PGxpPlwiICkgKyBcIjwvbGk+XCJcblx0XHRyZXR1cm4gXCJcIlxuXHRcdFxuXHRcdFxuXHRvcGVuOiA9PlxuXHRcdEAkZWwucmVtb3ZlQ2xhc3MoIFwiY2xvc2VkXCIgKVxuXHRcdEAkZWwuYWRkQ2xhc3MoIFwib3BlblwiIClcblx0XHRAaXNPcGVuID0gdHJ1ZVxuXHRcdEB0cmlnZ2VyKCBcIm9wZW5lZFwiIClcblx0XHRyZXR1cm5cblxuXHRpbnB1dDogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQudHlwZSBpcyBcImtleWRvd25cIlxuXHRcdFx0c3dpdGNoIGV2bnQua2V5Q29kZVxuXHRcdFx0XHR3aGVuIEtFWUNPREVTLkVOVEVSXG5cdFx0XHRcdFx0QHNlbGVjdCgpXG5cdFx0cmV0dXJuXG5cdFxuXHRfb25LZXk6ICggZXZudCApPT5cblx0XHRpZiBldm50LmtleUNvZGUgaXMgS0VZQ09ERVMuVEFCIG9yIGV2bnQua2V5Q29kZSBpbiBLRVlDT0RFUy5UQUJcblx0XHRcdEBfb25UYWJBY3Rpb24oIGV2bnQgKVxuXHRcdFx0cmV0dXJuXG5cdFx0cmV0dXJuXG5cdFx0XG5cdGdldFRlbXBsYXRlRGF0YTogPT5cblx0XHRyZXQgPVxuXHRcdFx0Y2lkOiBAY2lkXG5cdFx0XHQjdGFiX2luZGV4OiAoICggQG1vZGVsPy5faWR4ICogMTAgKSBvciAxICkgKyAoICggQHN1Yj8ucGFyZW50Py5pZHggb3IgMSApICogMTAwMCApXG5cdFx0XHR2YWx1ZTogQG1vZGVsPy5nZXQoIFwidmFsdWVcIiApXG5cdFx0cmV0dXJuIHJldFxuXG5cdF9nZXRJbnBTZWxlY3RvcjogPT5cblx0XHRyZXR1cm4gXCJpbnB1dCMje0BjaWR9XCJcblx0XG5cdHJlb3BlbjogKCBwVmlldyApPT5cblx0XHRAJGVsLnJlbW92ZUNsYXNzKCBcImNsb3NlZFwiIClcblx0XHRAJGVsLmFkZENsYXNzKCBcIm9wZW5cIiApXG5cdFx0QHJlbmRlcigpXG5cdFx0cFZpZXc/Lm9wZW4oKVxuXHRcdHJldHVyblxuXHRcblx0cmVuZGVyOiAoIGluaXRpYWxBZGQgKT0+XG5cdFx0X3RtcGwgPSBAdGVtcGxhdGUoICBAZ2V0VGVtcGxhdGVEYXRhKCkgKVxuXHRcdEAkZWwuaHRtbCggX3RtcGwgKVxuXHRcdGlmIG5vdCBpbml0aWFsQWRkXG5cdFx0XHRAJGVsLnJlbW92ZUNsYXNzKCBcImNsb3NlZFwiIClcblx0XHRAJGlucCA9IEAkZWwuZmluZCggQF9nZXRJbnBTZWxlY3RvcigpIClcblx0XHQjJCggZG9jdW1lbnQgKS5vbiBAX2hhc1RhYkV2ZW50KCksIEBfb25LZXkgaWYgQF9oYXNUYWJMaXN0ZW5lciggdHJ1ZSApXG5cdFx0cmV0dXJuXG5cdFxuXHRfaGFzVGFiRXZlbnQ6IC0+XG5cdFx0cmV0dXJuIFwia2V5ZG93blwiXG5cdFx0XG5cdF9oYXNUYWJMaXN0ZW5lcjogLT5cblx0XHRyZXR1cm4gdHJ1ZVxuXHRcblx0X29uVGFiQWN0aW9uOiAoIGV2bnQgKT0+XG5cdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdEBzZWxlY3QoKVxuXHRcdHJldHVybiB0cnVlXG5cblx0Y2xvc2U6ICggZXZudCApPT5cblx0XHRAZm9jdXNlZCA9IGZhbHNlXG5cdFx0IyQoIGRvY3VtZW50ICkub2ZmIEBfaGFzVGFiRXZlbnQoKSwgQF9vbktleSBpZiBAX2hhc1RhYkxpc3RlbmVyKCBmYWxzZSApXG5cdFx0QCRlbC5yZW1vdmVDbGFzcyggXCJvcGVuXCIgKVxuXHRcdEAkZWwuYWRkQ2xhc3MoIFwiY2xvc2VkXCIgKVxuXHRcdEBpc09wZW4gPSBmYWxzZVxuXHRcdEB0cmlnZ2VyKCBcImNsb3NlZFwiLCBAcmVzdWx0IClcblx0XHRyZXR1cm5cblxuXHRnZXRSZXN1bHRzOiA9PlxuXHRcdHZhbHVlOiBAZ2V0VmFsdWUoKVxuXG5cdGdldFZhbHVlOiA9PlxuXHRcdHJldHVybiBAJGlucC52YWwoKVxuXG5cdGdldFNlbGVjdE1vZGVsOiAtPlxuXHRcdHJldHVybiBTdWJSZXN1bHRzLnByb3RvdHlwZS5tb2RlbFxuXG5cdF9jaGVja1NlbGVjdEVtcHR5OiAoIF92YWwgKT0+XG5cdFx0aWYgXy5pc0VtcHR5KCBfdmFsICkgYW5kIG5vdCBfLmlzTnVtYmVyKCBfdmFsICkgYW5kIG5vdCBfLmlzQm9vbGVhbiggX3ZhbCApIGFuZCBub3QgQG1vZGVsLmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHRAY2xvc2UoKVxuXHRcdFx0cmV0dXJuIHRydWVcblx0XHRyZXR1cm4gZmFsc2VcblxuXHRzZWxlY3Q6ID0+XG5cdFx0X3ZhbCA9IEBnZXRWYWx1ZSgpXG5cdFx0cmV0dXJuIGlmIEBfY2hlY2tTZWxlY3RFbXB0eSggX3ZhbCApXG5cdFx0QHNldCggX3ZhbCApXG5cdFx0cmV0dXJuXG5cblx0c2V0OiAoIHZhbCApPT5cblx0XHRfbW9kZWwgPSBAcmVzdWx0LmZpcnN0KClcblx0XHRpZiBub3QgX21vZGVsP1xuXHRcdFx0X01vZGVsQ29uc3QgPSBAZ2V0U2VsZWN0TW9kZWwoKVxuXHRcdFx0X21vZGVsID0gbmV3IF9Nb2RlbENvbnN0KCB2YWx1ZTogdmFsIClcblx0XHRcdEByZXN1bHQuYWRkKCBfbW9kZWwgKVxuXHRcdGVsc2Vcblx0XHRcdF9tb2RlbC5zZXQoIHZhbHVlOiB2YWwgKVxuXHRcdEB0cmlnZ2VyKCBcInNlbGVjdGVkXCIsIF9tb2RlbCApXG5cdFx0QGNsb3NlKClcblx0XHRyZXR1cm5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3Vic0Jhc2VcbiIsIktFWUNPREVTID0gcmVxdWlyZSggXCIuLi8uLi91dGlscy9rZXljb2Rlc1wiIClcblxuY2xhc3MgRmFjZXRTdWJzRGF0ZVJhbmdlIGV4dGVuZHMgcmVxdWlyZSggXCIuL2Jhc2VcIiApXG5cdHRlbXBsYXRlOiByZXF1aXJlKCBcIi4uLy4uL3RtcGxzL2RhdGVyYW5nZS5qYWRlXCIgKVxuXG5cdGZvcmNlZERhdGVSYW5nZU9wdHM6ID0+XG5cdFx0X29wdHMgPVxuXHRcdFx0b3BlbnM6IFwicmlnaHRcIlxuXHRcdFx0XG5cdFx0aWYgQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKVxuXHRcdFx0X29wdHMubG9jYWxlID1cblx0XHRcdFx0Zm9ybWF0OiBAbW9kZWwuZ2V0KCBcImRhdGVmb3JtYXRcIiApXG5cdFx0XG5cdFx0aWYgQG1vZGVsLmdldChcInZhbHVlXCIpP1swXT9cblx0XHRcdF9zZCA9IG1vbWVudCggQG1vZGVsLmdldChcInZhbHVlXCIpWzBdLCBAbW9kZWwuZ2V0KCBcImRhdGVmb3JtYXRcIiApIClcblx0XHRcdGlmIF9zZC5pc1ZhbGlkKClcblx0XHRcdFx0X29wdHMuc3RhcnREYXRlID0gX3NkLl9kXG5cblx0XHRpZiBAbW9kZWwuZ2V0KFwidmFsdWVcIik/WzFdP1xuXHRcdFx0X2VkID0gbW9tZW50KCBAbW9kZWwuZ2V0KFwidmFsdWVcIilbMV0sIEBtb2RlbC5nZXQoIFwiZGF0ZWZvcm1hdFwiICkgKVxuXHRcdFx0aWYgX2VkLmlzVmFsaWQoKVxuXHRcdFx0XHRfb3B0cy5lbmREYXRlID0gX2VkLl9kXG5cdFx0cmV0dXJuIF9vcHRzXG5cblx0ZXZlbnRzOiA9PlxuXHRcdHJldHVyblxuXG5cdGZvY3VzOiAoKT0+XG5cdFx0aWYgbm90IEBkYXRlcmFuZ2VwaWNrZXI/XG5cdFx0XHRfb3B0cyA9IF8uZXh0ZW5kKCB7fSwgQG1vZGVsLmdldCggXCJvcHRzXCIgKSwgQGZvcmNlZERhdGVSYW5nZU9wdHMoKSApXG5cdFx0XHRAJGlucC5kYXRlcmFuZ2VwaWNrZXIoIF9vcHRzLCBAX2RhdGVSZXR1cm4gKVxuXHRcdFx0QGRhdGVyYW5nZXBpY2tlciA9IEAkaW5wLmRhdGEoIFwiZGF0ZXJhbmdlcGlja2VyXCIgKVxuXHRcdFx0QGRhdGVyYW5nZXBpY2tlci5jb250YWluZXI/LmFkZENsYXNzKCBcImRhdGVyYW5nZS1pZ2d5XCIgKVxuXHRcdFx0XG5cdFx0XHQjIHByZXZlbnQgZnJvbSBoYW5kbGljaCB0aGUgb3V0ZXJjbGljayBleGl0IGZyb20gTWFpblZpZXdcblx0XHRcdEBkYXRlcmFuZ2VwaWNrZXIuY29udGFpbmVyLm9uIFwiY2xpY2tcIiwgKCBldm50ICktPlxuXHRcdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdGVsc2Vcblx0XHRcdEBkYXRlcmFuZ2VwaWNrZXIuZWxlbWVudCA9IEAkaW5wXG5cdFx0XHRAZGF0ZXJhbmdlcGlja2VyLnNob3coKVxuXHRcdFx0XG5cdFx0QCRpbnAub24oIFwiY2FuY2VsLmRhdGVyYW5nZXBpY2tlclwiLCBAY2xvc2UgKVxuXHRcdEAkaW5wLm9uKCBcImhpZGUuZGF0ZXJhbmdlcGlja2VyXCIsIEBjbG9zZSApXG5cdFx0cmV0dXJuIHN1cGVyXG5cdFx0XG5cdGNsb3NlOiA9PlxuXHRcdHN1cGVyXG5cdFx0QCRpbnAub2ZmKCBcImNhbmNlbC5kYXRlcmFuZ2VwaWNrZXJcIiwgQGNsb3NlIClcblx0XHRAJGlucC5vZmYoIFwiaGlkZS5kYXRlcmFuZ2VwaWNrZXJcIiwgQGNsb3NlIClcblx0XHRyZXR1cm5cblxuXHRyZW1vdmU6ID0+XG5cdFx0QGRhdGVyYW5nZXBpY2tlcj8ucmVtb3ZlKClcblx0XHRAZGF0ZXJhbmdlcGlja2VyID0gbnVsbFxuXHRcdHJldHVybiBzdXBlclxuXG5cdHJlbmRlclJlc3VsdDogPT5cblx0XHRfcmVzID0gQGdldFJlc3VsdHMoKVxuXHRcdFxuXHRcdGlmIF8uaXNOdW1iZXIoIF9yZXMudmFsdWVbIDAgXSApXG5cdFx0XHRfc3RhcnREYXRlID0gbW9tZW50KCBfcmVzLnZhbHVlWyAwIF0gKVxuXHRcdGVsc2Vcblx0XHRcdF9zdGFydERhdGUgPSBtb21lbnQoIF9yZXMudmFsdWVbIDAgXSwgQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKSApXG5cdFx0XHRcblx0XHRpZiBfcmVzLnZhbHVlWyAxIF0/XG5cdFx0XHRpZiBfLmlzTnVtYmVyKCBfcmVzLnZhbHVlWyAxIF0gKVxuXHRcdFx0XHRfZW5kRGF0ZSA9IG1vbWVudCggX3Jlcy52YWx1ZVsgMSBdIClcblx0XHRcdGVsc2Vcblx0XHRcdFx0X2VuZERhdGUgPSBtb21lbnQoIF9yZXMudmFsdWVbIDEgXSwgQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKSApXG5cblx0XHRfdGltZSA9IEBtb2RlbC5nZXQoIFwib3B0c1wiICkudGltZVBpY2tlclxuXG5cdFx0X3MgPSBcIjxsaT5cIlxuXHRcdGlmIEBtb2RlbC5nZXQoIFwiZGF0ZWZvcm1hdFwiICk/XG5cdFx0XHRfZnJtdCA9IEBtb2RlbC5nZXQoIFwiZGF0ZWZvcm1hdFwiIClcblx0XHRlbHNlIGlmIF90aW1lXG5cdFx0XHRfZnJtdCA9IFwiTExMTFwiXG5cdFx0ZWxzZVxuXHRcdFx0X2ZybXQgPSBcIkxMXCJcblx0XHRfcyArPSBfc3RhcnREYXRlLmZvcm1hdCggX2ZybXQgKVxuXG5cdFx0aWYgX2VuZERhdGU/XG5cdFx0XHRfcyArPSBcIiAtIFwiXG5cdFx0XHRfcyArPSBfZW5kRGF0ZS5mb3JtYXQoIF9mcm10IClcblxuXHRcdF9zICs9IFwiPC9saT5cIlxuXG5cdFx0cmV0dXJuIF9zXG5cdFxuXHRfaGFzVGFiTGlzdGVuZXI6IC0+XG5cdFx0cmV0dXJuIGZhbHNlXG5cdFxuXHRfZGF0ZVJldHVybjogKCBAc3RhcnREYXRlLCBAZW5kRGF0ZSApPT5cblx0XHRAbW9kZWwuc2V0KCBcInZhbHVlXCIsIEBnZXRWYWx1ZSggZmFsc2UgKSApXG5cdFx0QHNlbGVjdCgpXG5cdFx0cmV0dXJuXG5cblx0Z2V0VGVtcGxhdGVEYXRhOiA9PlxuXHRcdHJldHVybiBzdXBlclxuXG5cdGdldFZhbHVlOiAoIHByZWRlZiA9IHRydWUgKT0+XG5cdFx0aWYgcHJlZGVmXG5cdFx0XHRfcHJlZGVmVmFsID0gQG1vZGVsLmdldCggXCJ2YWx1ZVwiIClcblx0XHRcdGlmIF9wcmVkZWZWYWw/XG5cdFx0XHRcdGlmIG5vdCBfLmlzQXJyYXkoIF9wcmVkZWZWYWwgKVxuXHRcdFx0XHRcdF9wcmVkZWZWYWwgPSAgWyBfcHJlZGVmVmFsIF1cblx0XHRcdFx0WyBAc3RhcnREYXRlLCBAZW5kRGF0ZSBdID0gX3ByZWRlZlZhbFxuXHRcdFx0XHRyZXR1cm4gX3ByZWRlZlZhbFxuXHRcdF9vdXQgPSBbIEBzdGFydERhdGUudmFsdWVPZigpIF1cblx0XHRfb3V0LnB1c2ggQGVuZERhdGUudmFsdWVPZigpIGlmIEBlbmREYXRlP1xuXHRcdHJldHVybiBfb3V0XG5cblx0c2VsZWN0OiA9PlxuXHRcdF9Nb2RlbENvbnN0ID0gQGdldFNlbGVjdE1vZGVsKClcblx0XHRfbW9kZWwgPSBuZXcgX01vZGVsQ29uc3QoIHZhbHVlOiBAZ2V0VmFsdWUoKSApXG5cdFx0QHJlc3VsdC5hZGQoIF9tb2RlbCApXG5cdFx0QHRyaWdnZXIoIFwic2VsZWN0ZWRcIiwgX21vZGVsIClcblx0XHRAY2xvc2UoKVxuXHRcdHJldHVyblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3Vic0RhdGVSYW5nZVxuIiwiS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uLy4uL3V0aWxzL2tleWNvZGVzXCIgKVxuXG5uZWFyZXN0ID0gKG4sIHYpLT5cblx0biA9IG4gLyB2XG5cdG4gPSBNYXRoLnJvdW5kKG4pICogdlxuXHRyZXR1cm4gblxuXHRcbnByZWNpc2lvbiA9IChuLCBkcCktPlxuXHRkcCA9IE1hdGgucG93KDEwLCBkcClcblx0biA9IG4gKiBkcFxuXHRuID0gTWF0aC5yb3VuZChuKVxuXHRuID0gbiAvIGRwXG5cdHJldHVybiBuXG5cbmNsYXNzIEZhY2V0TnVtYmVyQmFzZSBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYXNlXCIgKVxuXG5cdGNvbnN0cnVjdG9yOiAtPlxuXHRcdEBzZXROdW1iZXIgPSBfLnRocm90dGxlKCBAX3NldE51bWJlciwgMzAwLCB7bGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiBmYWxzZX0gKVxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cblx0ZXZlbnRzOiA9PlxuXHRcdFwia2V5dXAgI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwiaW5wdXRcIlxuXHRcdFwia2V5ZG93biAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJpbnB1dFwiXG5cblxuXG5cdGlucHV0OiAoIGV2bnQgKT0+XG5cdFx0XyRlbCA9ICQoIGV2bnQuY3VycmVudFRhcmdldCApXG5cdFx0aWYgZXZudC50eXBlIGlzIFwia2V5ZG93blwiXG5cdFx0XHRzd2l0Y2ggZXZudC5rZXlDb2RlXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuVVBcblx0XHRcdFx0XHRAY3JlbWVudCggQG1vZGVsLmdldCggXCJzdGVwXCIgKSwgXyRlbCApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuRE9XTlxuXHRcdFx0XHRcdEBjcmVtZW50KCBAbW9kZWwuZ2V0KCBcInN0ZXBcIiApICogLTEsIF8kZWwgKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR3aGVuIEtFWUNPREVTLkVOVEVSXG5cdFx0XHRcdFx0QHNlbGVjdCgpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0aWYgZXZudC50eXBlIGlzIFwia2V5dXBcIlxuXHRcdFx0X3YgPSBldm50LmN1cnJlbnRUYXJnZXQudmFsdWUucmVwbGFjZSggL1teXFxkXT9bXi1cXGRdKy9nLCBcIlwiIClcblx0XHRcdF92ID0gcGFyc2VJbnQoIF92LCAxMCApXG5cdFx0XHQgXG5cdFx0XHRAc2V0TnVtYmVyKCBfdiwgXyRlbCApXG5cdFx0cmV0dXJuXG5cblx0Y3JlbWVudDogKCBjaGFuZ2UsIGVsID0gQCRpbnAgKT0+XG5cdFx0X3YgPSBlbC52YWwoKVxuXHRcdGlmIG5vdCBfdj8ubGVuZ3RoXG5cdFx0XHRfdiA9IEBtb2RlbC5nZXQoIFwidmFsdWVcIiApXG5cdFx0ZWxzZVxuXHRcdFx0X3YgPSBwYXJzZUludCggX3YsIDEwIClcblxuXHRcdEBfc2V0TnVtYmVyKCBfdiArIGNoYW5nZSwgZWwgKVxuXHRcdHJldHVyblxuXG5cdGdldFZhbHVlOiA9PlxuXHRcdF92ID0gQCRpbnAudmFsKClcblx0XHRpZiBub3QgX3Y/Lmxlbmd0aFxuXHRcdFx0cmV0dXJuIG51bGxcblx0XHRyZXR1cm4gcGFyc2VJbnQoIEB2YWx1ZUJ5RGVmaW5pdGlvbiggX3YpLCAxMCApXG5cblx0X3NldE51bWJlcjogKCBfdiwgZWwgPSBAJGlucCApPT5cblx0XHRpZiBpc05hTiggX3YgKVxuXHRcdFx0I0AkaW5wLnZhbChcIlwiKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRfY3VyciA9IGVsLnZhbCgpXG5cblx0XHRfdiA9IEB2YWx1ZUJ5RGVmaW5pdGlvbiggX3YpXG5cdFx0aWYgX2N1cnIgIT0gX3YudG9TdHJpbmcoKVxuXHRcdFx0ZWwudmFsKCBfdiApXG5cdFx0cmV0dXJuXG5cblx0dmFsdWVCeURlZmluaXRpb246ICggX3ZhbHVlICktPlxuXHRcdG1heCA9IEBtb2RlbC5nZXQoIFwibWF4XCIgKVxuXHRcdG1pbiA9IEBtb2RlbC5nZXQoIFwibWluXCIgKVxuXHRcdHN0ZXAgPSBAbW9kZWwuZ2V0KCBcInN0ZXBcIiApXG5cdFx0XG5cdFx0IyBmaXggcmV2ZXJzZWQgbWluL21heCBzZXR0aW5nXG5cdFx0aWYgbWluID4gbWF4XG5cdFx0XHRfdG1wID0gbWluXG5cdFx0XHRtaW4gPSBtYXhcblx0XHRcdG1heCA9IF90bXBcblx0XHRcblx0XHQjIG9uIGV4eGVkZGluZyB0aGUgbGltaXRzIHVzZSB0aGUgbGltaXRcblx0XHRpZiBtaW4/IGFuZCBfdmFsdWUgPCBtaW5cblx0XHRcdHJldHVybiBtaW5cblx0XHRpZiBtYXg/IGFuZCBfdmFsdWUgPiBtYXhcblx0XHRcdHJldHVybiBtYXhcblxuXHRcdCMgc2VhcmNoIHRoZSBuZWFyZXN0IF92YWx1ZSB0byB0aGUgc3RlcFxuXHRcdGlmIHN0ZXAgaXNudCAxXG5cdFx0XHRfdmFsdWUgPSBuZWFyZXN0KCBfdmFsdWUsIHN0ZXAgKVxuXHRcdFxuXHRcdCMgY2FsYyB0aGUgcHJlY2lzaW9uIGJ5IHN0ZXBcblx0XHRfcHJlY2lzaW9uID0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbCggTWF0aC5sb2coIDEvc3RlcCApIC8gTWF0aC5sb2coIDEwICkgKSApXG5cdFx0aWYgX3ByZWNpc2lvbiA+IDBcblx0XHRcdF92YWx1ZSA9IHByZWNpc2lvbiggX3ZhbHVlLCBfcHJlY2lzaW9uIClcblx0XHRlbHNlXG5cdFx0XHRfdmFsdWUgPSBNYXRoLnJvdW5kKCBfdmFsdWUgKVxuXHRcdFx0XG5cdFx0cmV0dXJuIF92YWx1ZVxuXG5cbm1vZHVsZS5leHBvcnRzID0gRmFjZXROdW1iZXJCYXNlXG4iLCJTdWJSZXN1bHRzID0gcmVxdWlyZSggXCIuLi8uLi9tb2RlbHMvc3VicmVzdWx0c1wiIClcbktFWUNPREVTID0gcmVxdWlyZSggXCIuLi8uLi91dGlscy9rZXljb2Rlc1wiIClcblxuY2xhc3MgU3RyaW5nT3B0aW9uIGV4dGVuZHMgU3ViUmVzdWx0cy5wcm90b3R5cGUubW9kZWxcblx0bWF0Y2g6ICggY3JpdCApPT5cblx0XHRfcyA9ICBAZ2V0KCBcInZhbHVlXCIgKSArIFwiIFwiICsgQGdldCggXCJsYWJlbFwiIClcblx0XHRmb3VuZCA9IF9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggY3JpdC50b0xvd2VyQ2FzZSgpIClcblx0XHRyZXR1cm4gZm91bmQgPj0gMFxuXG5jbGFzcyBTdHJpbmdPcHRpb25zIGV4dGVuZHMgU3ViUmVzdWx0c1xuXHRtb2RlbDogU3RyaW5nT3B0aW9uXG5cblxuY2xhc3MgQXJyYXlPcHRpb24gZXh0ZW5kcyBCYWNrYm9uZS5Nb2RlbFxuXHRpZEF0dHJpYnV0ZTogXCJ2YWx1ZVwiXG5cdGdldExhYmVsOiA9PlxuXHRcdHJldHVybiBAZ2V0KCBcImxhYmVsXCIgKSBvciBAZ2V0KCBcIm5hbWVcIiApIG9yIFwiLVwiXG5cblx0bWF0Y2g6ICggY3JpdCApPT5cblx0XHRfcyA9ICBAZ2V0KCBcInZhbHVlXCIgKSArIFwiIFwiICsgQGdldCggXCJsYWJlbFwiIClcblx0XHRmb3VuZCA9IF9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggY3JpdC50b0xvd2VyQ2FzZSgpIClcblx0XHRyZXR1cm4gZm91bmQgPj0gMFxuXG5jbGFzcyBBcnJheU9wdGlvbnMgZXh0ZW5kcyByZXF1aXJlKCBcIi4uLy4uL21vZGVscy9iYWNrYm9uZV9zdWJcIiApXG5cdG1vZGVsOiBBcnJheU9wdGlvblxuXG5jbGFzcyBGYWNldFN1YkFycmF5IGV4dGVuZHMgcmVxdWlyZSggXCIuLi9zZWxlY3RvclwiIClcblx0XG5cdHRlbXBsYXRlUmVzTGk6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvYXJyYXlfcmVzdWx0bGkuamFkZVwiIClcblx0XG5cdG9wdERlZmF1bHQ6XG5cdFx0bGFiZWw6IFwiLVwiXG5cdFx0dmFsdWU6IFwiLVwiXG5cblx0c2VsZWN0Q291bnQ6IDBcblxuXHRvcHRDb2xsOiBTdHJpbmdPcHRpb25zXG5cdFxuXHRjb25zdHJ1Y3RvcjogKCBvcHRpb25zICktPlxuXHRcdEBsb2FkaW5nID0gZmFsc2Vcblx0XHRpZiBvcHRpb25zLm1vZGVsLmdldCggXCJjb3VudFwiICk/XG5cdFx0XHRAc2VsZWN0Q291bnQgPSBvcHRpb25zLm1vZGVsLmdldCggXCJjb3VudFwiIClcblx0XHRvcHRpb25zLmN1c3RvbSA9IHRydWVcblx0XHRpZiBvcHRpb25zLm1vZGVsLmdldCggXCJjdXN0b21cIiApP1xuXHRcdFx0b3B0aW9ucy5jdXN0b20gPSBCb29sZWFuKCBvcHRpb25zLm1vZGVsLmdldCggXCJjdXN0b21cIiApIClcblx0XHRcdFxuXHRcdEBjb2xsZWN0aW9uID0gQF9jcmVhdGVPcHRpb25Db2xsZWN0aW9uKCBvcHRpb25zLm1vZGVsLmdldCggXCJvcHRpb25zXCIgKSApXG5cdFx0XG5cdFx0aWYgbm90IG9wdGlvbnMuY3VzdG9tIGFuZCBAc2VsZWN0Q291bnQgPD0gMFxuXHRcdFx0QHNlbGVjdENvdW50ID0gQGNvbGxlY3Rpb24ubGVuZ3RoXG5cdFx0XHRcblx0XHRzdXBlciggb3B0aW9ucyApXG5cdFx0XG5cdFx0QHJlc3VsdC5vbiBcInJlbW92ZVwiLCAoIG1kbCwgY29sbCApPT5cblx0XHRcdGlmIGNvbGwubGVuZ3RoXG5cdFx0XHRcdG9wdGlvbnMuc3ViLnJlbmRlclJlc3VsdCgpXG5cdFx0XHRAc2VhcmNoY29sbC5hZGQoIG1kbCApXG5cdFx0XHRAdHJpZ2dlciggXCJyZW1vdmVkXCIsIG1kbCApXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblx0XG5cdGluaXRpYWxpemU6ID0+XG5cdFx0QGVkaXRNb2RlID0gZmFsc2Vcblx0XHRyZXR1cm4gc3VwZXJcblx0XHRcblx0ZXZlbnRzOiA9PlxuXHRcdF9ldm50cyA9IHN1cGVyXG5cdFx0I2lmIG5vdCBAbW9kZWwuZ2V0KCBcIm9wZXJhdG9yc1wiICk/Lmxlbmd0aFxuXHRcdF9ldm50c1sgXCJibHVyIGlucHV0IyN7QGNpZH1cIiBdID0gXCJjbG9zZVwiXG5cdFx0cmV0dXJuIF9ldm50c1xuXHRcblx0Y2xvc2U6ICggZXZudCApPT5cblx0XHQjIGNoZWNrIGlmIHRoZSBjbG9zZSBpcyBpbml0aWVkIGZyb20gdGhlIGVkaXQgbW9kZVxuXHRcdF9kZWxTdWIgPSBmYWxzZVxuXHRcdGlmIEBlZGl0TW9kZVxuXHRcdFx0X2RlbFN1YiA9IHRydWVcblx0XHRcdFxuXHRcdEBlZGl0TW9kZSA9IGZhbHNlXG5cdFx0aWYgQGxvYWRpbmdcblx0XHRcdGV2bnQ/LnByZXZlbnREZWZhdWx0KClcblx0XHRcdGV2bnQ/LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRAZm9jdXMoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRpZiBAbW9kZWw/LmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHRyZXR1cm4gc3VwZXJcblx0XHRcblx0XHRpZiBfZGVsU3ViIGFuZCBAcmVzdWx0Lmxlbmd0aCA8PSAwXG5cdFx0XHRAc3ViLmRlbCgpXG5cdFx0cmV0dXJuIHN1cGVyXG5cdFxuXHRybVJlczogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQ/LnRhcmdldD9cblx0XHRcdF9pZCA9ICQoIGV2bnQudGFyZ2V0ICk/LmRhdGEoIFwiaWRcIiApXG5cdFx0ZWxzZSBpZiBldm50P1xuXHRcdFx0X2lkID0gZXZudFxuXHRcdF9tZGwgPSBAcmVzdWx0LmdldCggX2lkIClcblx0XHRpZiBfbWRsP1xuXHRcdFx0QHJlc3VsdC5yZW1vdmUoIF9pZCApXG5cdFx0XHRpZiBfbWRsPy5nZXQoIFwiY3VzdG9tXCIgKVxuXHRcdFx0XHRAc2VhcmNoY29sbC5yZW1vdmUoIF9pZCApXG5cdFx0cmV0dXJuXG5cdFx0XG5cdGVkaXRSZXM6ICggZXZudCApPT5cblx0XHRAZWRpdE1vZGUgPSB0cnVlXG5cdFx0X2lkID0gJCggZXZudC50YXJnZXQgKT8uZGF0YSggXCJpZFwiIClcblx0XHRfdiA9IEBfZWRpdHZhbCA9IEByZXN1bHQuZ2V0KCBfaWQgKS5nZXQoIFwidmFsdWVcIiApXG5cdFx0XG5cdFx0QHJlc3VsdC5yZW1vdmUoIF9pZCApXG5cdFx0QHNlYXJjaGNvbGwucmVtb3ZlKCBfaWQgKVxuXHRcdEBzdWIucmVvcGVuKClcblx0XHRcblx0XHRAc2VhcmNoKF92KVxuXHRcdHJldHVyblxuXHRcblx0Z2V0VGVtcGxhdGVEYXRhOiA9PlxuXHRcdF9kYXRhID0gc3VwZXJcblx0XHRpZiBAX2VkaXR2YWw/Lmxlbmd0aFxuXHRcdFx0X2RhdGEuaW5wdmFsID0gQF9lZGl0dmFsXG5cdFx0XHRAX2VkaXR2YWwgPSBudWxsXG5cdFx0cmV0dXJuIF9kYXRhXG5cdFxuXHRyZW5kZXJSZXN1bHQ6ICggcmVuZGVyRW1wdHkgPSBmYWxzZSApPT5cblx0XHRpZiByZW5kZXJFbXB0eVxuXHRcdFx0cmV0dXJuIFwiPGxpPjwvbGk+XCJcblx0XHRfbGlzdCA9IFtdXG5cdFx0Zm9yIG1vZGVsLCBpZHggaW4gQHJlc3VsdC5tb2RlbHNcblx0XHRcdF9saXN0LnB1c2ggQHRlbXBsYXRlUmVzTGkoIHR4dDogbW9kZWwuZ2V0TGFiZWwoKSwgaWQ6IG1vZGVsLmlkLCBjdXN0b206IG1vZGVsLmdldCggXCJjdXN0b21cIiApICApXG5cblx0XHRyZXR1cm4gXCI8bGk+XCIgKyBfbGlzdC5qb2luKCBcIjwvbGk+PGxpPlwiICkgKyBcIjwvbGk+XCJcblxuXHRcblx0X2lzRnVsbDogPT5cblx0XHRpZiBAc2VsZWN0Q291bnQgPD0gMFxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0cmV0dXJuICggQHJlc3VsdCBvciBbXSkubGVuZ3RoID49IEBzZWxlY3RDb3VudFxuXHRcdFxuXHRzZWxlY3Q6ID0+XG5cdFx0aWYgQGxvYWRpbmdcblx0XHRcdHJldHVyblxuXHRcdFx0XG5cdFx0X3ZhbHMgPSBAbW9kZWwuZ2V0KCBcInZhbHVlXCIgKVxuXHRcdGlmIF92YWxzPyBhbmQgbm90IF8uaXNBcnJheSggX3ZhbHMgKVxuXHRcdFx0X3ZhbHMgPSBbIF92YWxzIF1cblx0XHRpZiBub3QgX3ZhbHM/Lmxlbmd0aFxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRmb3IgX3ZhbCBpbiAoIGlmIEBzZWxlY3RDb3VudCA8PSAwIHRoZW4gX3ZhbHMgZWxzZSBfdmFsc1suLi5Ac2VsZWN0Q291bnRdIClcblx0XHRcdF9tZGwgPSBAY29sbGVjdGlvbi5nZXQoIF92YWwgKVxuXHRcdFx0aWYgbm90IF9tZGw/XG5cdFx0XHRcdF9tZGwgPSBuZXcgQGNvbGxlY3Rpb24ubW9kZWwoIHZhbHVlOiBfdmFsLCBjdXN0b206IHRydWUgKVxuXHRcdFx0QHNlbGVjdGVkKCBfbWRsIClcblx0XHRcblx0XHRAY2xvc2UoKVxuXHRcdHJldHVyblxuXHRcblx0cmVvcGVuOiAoIHBWaWV3ICk9PlxuXHRcdGlmIEBfaXNGdWxsKClcblx0XHRcdCMgaWYgQG1vZGVsLmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHQjIFx0X2lkID0gQHJlc3VsdC5sYXN0KCk/LmlkXG5cdFx0XHQjIFx0QHJtUmVzKCBfaWQgKVxuXHRcdFx0c3VwZXJcblx0XHRcdHJldHVyblxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFxuXHRnZXRSZXN1bHRzOiA9PlxuXHRcdHZhbHVlOiBAcmVzdWx0LnBsdWNrKCBcInZhbHVlXCIgKVxuXHRcblx0X29uVGFiQWN0aW9uOiAoIGV2bnQgKT0+XG5cdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdHNlYXJjaENvbnRlbnQgPSBAJGlucC52YWwoKVxuXHRcdGlmIHNlYXJjaENvbnRlbnQ/Lmxlbmd0aFxuXHRcdFx0QHNlbGVjdEFjdGl2ZSgpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdEBjbG9zZSgpXG5cdFx0cmV0dXJuIHRydWVcblx0XHRcblx0X2NyZWF0ZU9wdGlvbkNvbGxlY3Rpb246ICggb3B0aW9ucyApPT5cblx0XHRpZiBfLmlzRnVuY3Rpb24oIG9wdGlvbnMgKVxuXHRcdFx0QGxvYWRpbmcgPSB0cnVlXG5cdFx0XHRfY29sbCA9IG5ldyBAb3B0Q29sbCggW10gKVxuXHRcdFx0XG5cdFx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0XHRAJGVsLnBhcmVudCgpLmFkZENsYXNzKCBcImxvYWRpbmdcIiApXG5cdFx0XHRcdG9wdGlvbnMgQHJlc3VsdCwgQG1vZGVsLCAoIGFPcHRzICk9PlxuXHRcdFx0XHRcdGZvciBfb3B0LCBpZHggaW4gYU9wdHNcblx0XHRcdFx0XHRcdGFPcHRzW2lkeF0gPSBfLmV4dGVuZCgge30sIEBvcHREZWZhdWx0LCBfb3B0LCB7IGN1c3RvbTogZmFsc2UgfSApXG5cdFx0XHRcdFx0X2NvbGwuYWRkKCBhT3B0cyApXG5cdFx0XHRcdFx0QGxvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdEAkZWwucGFyZW50KCkucmVtb3ZlQ2xhc3MoIFwibG9hZGluZ1wiIClcblx0XHRcdFx0XHRAc2VsZWN0KClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcblx0XHRcdCwgMCApXG5cdFx0XHRyZXR1cm4gX2NvbGxcblxuXHRcdF9vcHRzID0gW11cblx0XHRmb3Igb3B0IGluIG9wdGlvbnNcblx0XHRcdGlmIF8uaXNTdHJpbmcoIG9wdCApIG9yIF8uaXNOdW1iZXIoIG9wdCApXG5cdFx0XHRcdF9vcHRzLnB1c2ggeyB2YWx1ZTogb3B0LCBsYWJlbDogb3B0IH1cblx0XHRcdGVsc2UgaWYgXy5pc09iamVjdChvcHQpXG5cdFx0XHRcdF9vcHRzLnB1c2ggXy5leHRlbmQoIHt9LCBAb3B0RGVmYXVsdCwgb3B0IClcblx0XHRyZXR1cm4gbmV3IEBvcHRDb2xsKCBfb3B0cyApXG5cblxubW9kdWxlLmV4cG9ydHMgPSBGYWNldFN1YkFycmF5XG4iLCJjbGFzcyBGYWNldFN1YnNOdW1iZXIgZXh0ZW5kcyByZXF1aXJlKCBcIi4vbnVtYmVyX2Jhc2VcIiApXG5cdHRlbXBsYXRlOiByZXF1aXJlKCBcIi4uLy4uL3RtcGxzL251bWJlci5qYWRlXCIgKVxuXG5cdGV2ZW50czogPT5cblx0XHRfZXZudHMgPSBzdXBlclxuXHRcdCNpZiBub3QgQG1vZGVsLmdldCggXCJvcGVyYXRvcnNcIiApPy5sZW5ndGhcblx0XHRfZXZudHNbIFwiYmx1ciAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIiBdID0gXCJzZWxlY3RcIlxuXHRcdHJldHVybiBfZXZudHNcblxuXHRyZW5kZXI6ID0+XG5cdFx0c3VwZXJcblx0XHRpZiBAbW9kZWwuZ2V0KCBcIm9wZXJhdG9yc1wiICk/Lmxlbmd0aFxuXHRcdFx0QCRpbnBPcCA9IEAkZWwuZmluZCggXCJzZWxlY3QjI3tAY2lkfW9wXCIgKVxuXHRcdFx0QCRpbnBPcC5zZWxlY3QyKCB7IHdpZHRoOiBcImF1dG9cIiB9IClcblx0XHRcdEAkaW5wT3Aub24oIFwic2VsZWN0MjpjbG9zZVwiLCBAX29wU2VsZWN0ZWQgKVxuXHRcdHJldHVyblxuXG5cdHJlbmRlclJlc3VsdDogKCByZW5kZXJFbXB0eSA9IGZhbHNlICk9PlxuXHRcdGlmIHJlbmRlckVtcHR5XG5cdFx0XHRyZXR1cm4gXCI8bGk+PC9saT5cIlxuXHRcdF9yZXMgPSBAZ2V0UmVzdWx0cygpXG5cdFx0X3MgPSBcIjxsaT5cIlxuXHRcdF9zICs9IF9yZXMub3BlcmF0b3IgKyBcIiBcIiBpZiBfcmVzLm9wZXJhdG9yP1xuXHRcdF9zICs9IF9yZXMudmFsdWVcblx0XHRfcyArPSBcIjwvbGk+XCJcblxuXHRcdHJldHVybiBfc1xuXG5cdGNsb3NlOiAoIGV2bnQgKT0+XG5cdFx0aWYgQCRpbnBPcD9cblx0XHRcdEAkaW5wT3Auc2VsZWN0MiggXCJkZXN0cm95XCIgKVxuXHRcdFx0QCRpbnBPcC5yZW1vdmUoKVxuXHRcdFx0QCRpbnBPcCA9IG51bGxcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcdFxuXHRzZWxlY3Q6ICggZXZudCApPT5cblx0XHRpZiBldm50Py5yZWxhdGVkVGFyZ2V0P1xuXHRcdFx0X3Bvc1dycCA9IEBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZXZudD8ucmVsYXRlZFRhcmdldCApXG5cdFx0XHRpZiBub3QgKCBfcG9zV3JwIGlzIDAgb3IgX3Bvc1dycCAtIDE2ID49IDAgKVxuXHRcdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRcdHJldHVyblxuXHRcdGlmIGV2bnQ/IGFuZCAoIGV2bnQ/LnJlbGF0ZWRUYXJnZXQgaXMgQCRpbnAuZ2V0KDApIG9yIGV2bnQ/LnJlbGF0ZWRUYXJnZXQgaXMgQCRpbnBPcD8uZ2V0KDApIClcblx0XHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdHJldHVyblxuXHRcdGlmIEAkaW5wT3A/XG5cdFx0XHRAbW9kZWwuc2V0KCB7IG9wZXJhdG9yOiBAJGlucE9wLnZhbCgpIH0gKVxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFxuXG5cdF9vcFNlbGVjdGVkOiA9PlxuXHRcdEBzZWxlY3RlZE9QID0gdHJ1ZVxuXHRcdEBmb2N1cygpXG5cdFx0cmV0dXJuXG5cblx0Zm9jdXM6ICggaW5wID0gZmFsc2UgKT0+XG5cdFx0aWYgQCRpbnBPcD8gYW5kIG5vdCBAc2VsZWN0ZWRPUFxuXHRcdFx0QCRpbnBPcC5zZWxlY3QyKCBcIm9wZW5cIiApXG5cdFx0XHRyZXR1cm5cblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcblx0cmVvcGVuOiAoIHBWaWV3ICk9PlxuXHRcdF9vbGRWYWwgPSBAcmVzdWx0LmZpcnN0KCkuZ2V0KCBcInZhbHVlXCIgKVxuXHRcdF9vbGRPcCA9IEByZXN1bHQuZmlyc3QoKVxuXHRcdEBtb2RlbC5zZXQoIHZhbHVlOiBfb2xkVmFsIClcblx0XHRwVmlldy4kcmVzdWx0cy5lbXB0eSgpLmh0bWwoIEByZW5kZXJSZXN1bHQoIHRydWUgKSApXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblxuXHRnZXRUZW1wbGF0ZURhdGE6ID0+XG5cdFx0cmV0dXJuIF8uZXh0ZW5kKCBzdXBlciwgeyBvcGVyYXRvcnM6IEBtb2RlbC5nZXQoIFwib3BlcmF0b3JzXCIgKSwgb3BlcmF0b3I6IEBtb2RlbC5nZXQoIFwib3BlcmF0b3JcIiApfSApXG5cblx0X29uVGFiQWN0aW9uOiAoIGV2bnQgKT0+XG5cdFx0X3ZhbCA9IEBnZXRWYWx1ZSgpXG5cdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdGlmIG5vdCBpc05hTiggX3ZhbCApXG5cdFx0XHRAc2VsZWN0KClcblx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFxuXHRnZXRSZXN1bHRzOiA9PlxuXHRcdGlmIEAkaW5wT3A/XG5cdFx0XHRfcmV0ID1cblx0XHRcdFx0dmFsdWU6IEBnZXRWYWx1ZSgpXG5cdFx0XHRcdG9wZXJhdG9yOiBAJGlucE9wLnZhbCgpXG5cdFx0ZWxzZVxuXHRcdFx0X3JldCA9XG5cdFx0XHRcdHZhbHVlOiBAZ2V0VmFsdWUoKVxuXHRcdHJldHVybiBfcmV0XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3Vic051bWJlclxuIiwiY2xhc3MgRmFjZXRTdWJzUmFuZ2UgZXh0ZW5kcyByZXF1aXJlKCBcIi4vbnVtYmVyX2Jhc2VcIiApXG5cdHRlbXBsYXRlOiByZXF1aXJlKCBcIi4uLy4uL3RtcGxzL3JhbmdlLmphZGVcIiApXG5cblx0X2dldElucFNlbGVjdG9yOiAoIGV4dCA9IFwiX2Zyb21cIiApPT5cblx0XHRyZXR1cm4gXCJpbnB1dCMje0BjaWR9I3tleHR9XCJcblxuXHRldmVudHM6ID0+XG5cdFx0XCJrZXl1cCAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJpbnB1dFwiXG5cdFx0XCJrZXlkb3duICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblx0XHRcImtleXVwICN7QF9nZXRJbnBTZWxlY3RvciggXCJfdG9cIiApfVwiOiBcImlucHV0XCJcblx0XHRcImtleWRvd24gI3tAX2dldElucFNlbGVjdG9yKCBcIl90b1wiICl9XCI6IFwiaW5wdXRcIlxuXHRcdFwiYmx1ciAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJzZWxlY3RcIlxuXHRcdFwiYmx1ciAje0BfZ2V0SW5wU2VsZWN0b3IoIFwiX3RvXCIgKX1cIjogXCJzZWxlY3RcIlxuXG5cdHJlbmRlclJlc3VsdDogKCByZW5kZXJFbXB0eSA9IGZhbHNlICk9PlxuXHRcdGlmIHJlbmRlckVtcHR5XG5cdFx0XHRyZXR1cm4gXCI8bGk+PC9saT5cIlxuXHRcdF9yZXMgPSBAZ2V0UmVzdWx0cygpXG5cdFx0cmV0dXJuIFwiPGxpPlwiICtfcmVzLnZhbHVlLmpvaW4oIFwiIC0gXCIgKSArIFwiPC9saT5cIlxuXG5cdHJlbmRlcjogPT5cblx0XHRzdXBlclxuXHRcdEAkaW5wVG8gPSBAJGVsLmZpbmQoIEBfZ2V0SW5wU2VsZWN0b3IoIFwiX3RvXCIgKSApXG5cdFx0cmV0dXJuXG5cblx0Zm9jdXM6ICggaW5wID0gZmFsc2UgKT0+XG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdFxuXHRyZW9wZW46ICggcFZpZXcgKT0+XG5cdFx0X29sZFZhbCA9IEByZXN1bHQuZmlyc3QoKS5nZXQoIFwidmFsdWVcIiApXG5cdFx0QG1vZGVsLnNldCggdmFsdWU6IF9vbGRWYWwgKVxuXHRcdHBWaWV3LiRyZXN1bHRzLmVtcHR5KCkuaHRtbCggQHJlbmRlclJlc3VsdCggdHJ1ZSApIClcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcdFxuXHRzZWxlY3Q6ICggZXZudCApPT5cblx0XHRpZiBldm50PyBhbmQgKCBldm50Py5yZWxhdGVkVGFyZ2V0IGlzIEAkaW5wLmdldCgwKSBvciBldm50Py5yZWxhdGVkVGFyZ2V0IGlzIEAkaW5wVG8uZ2V0KDApIClcblx0XHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdHJldHVyblxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFxuXHRjbG9zZTogPT5cblx0XHR0cnlcblx0XHRcdEAkKCBcIi5yYW5nZWlucFwiICkucmVtb3ZlKClcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXG5cdGdldFJlc3VsdHM6ID0+XG5cdFx0X3JldCA9XG5cdFx0XHR2YWx1ZTogQGdldFZhbHVlKClcblx0XHRyZXR1cm4gX3JldFxuXHRcblx0Z2V0VmFsdWU6ID0+XG5cdFx0X3ZGcm9tID0gc3VwZXJcblx0XHRfdiA9IEAkaW5wVG8udmFsKClcblx0XHRpZiBub3QgX3Y/Lmxlbmd0aFxuXHRcdFx0cmV0dXJuIG51bGxcblx0XHRfdlRvID0gcGFyc2VJbnQoIEB2YWx1ZUJ5RGVmaW5pdGlvbiggX3YpLCAxMCApXG5cblx0XHRyZXR1cm4gWyBfdkZyb20sIF92VG8gXVxuXHRcblx0X29uVGFiQWN0aW9uOiAoIGV2bnQgKT0+XG5cdFx0aWYgQCRpbnAuaXMoIGV2bnQudGFyZ2V0ICkgYW5kIG5vdCBldm50LnNoaWZ0S2V5XG5cdFx0XHRAJGlucFRvLmZvY3VzKClcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFxuXHRcdGlmIEAkaW5wVG8uaXMoIGV2bnQudGFyZ2V0ICkgYW5kIGV2bnQuc2hpZnRLZXlcblx0XHRcdEAkaW5wLmZvY3VzKClcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0XG5cdFx0X3ZhbCA9IEBnZXRWYWx1ZSgpXG5cdFx0aWYgX3ZhbD8ubGVuZ3RoID49IDJcblx0XHRcdGV2bnQucHJldmVudERlZmF1bHQoKVxuXHRcdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdFx0QHNlbGVjdCgpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0XG5cdFx0IyByZXR1cm4gZmFsc2UgdG8gcHJldmVudCBqdW1wIHRvIG5leHQgZmFjZXRcblx0XHRyZXR1cm4gdHJ1ZVxuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBGYWNldFN1YnNSYW5nZVxuIiwiS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uLy4uL3V0aWxzL2tleWNvZGVzXCIgKVxuXG5jbGFzcyBGYWNldFN1YnNTZWxlY3QgZXh0ZW5kcyByZXF1aXJlKCBcIi4vYmFzZVwiIClcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvc2VsZWN0LmphZGVcIiApXG5cblx0Zm9yY2VkTW9kdWxlT3B0czp7fVxuXHQjXHRtdWx0aXBsZTogdHJ1ZVxuXG5cdGRlZmF1bHRNb2R1bGVPcHRzOlxuXHRcdCNtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAxXG5cdFx0d2lkdGg6IFwiYXV0b1wiXG5cdFx0bXVsdGlwbGU6IGZhbHNlXG5cdFxuXHRpbml0aWFsaXplOiAtPlxuXHRcdEBjb252ZXJ0VmFsdWVUb0ludCA9IEBfY2hlY2tJbnRWYWx1ZSggQG1vZGVsLmdldCggXCJvcHRpb25zXCIgKSApXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdGV2ZW50czogPT5cblx0XHRfZXZudHMgPSB7fVxuXHRcdF9ldm50c1sgXCJjbGljayAuc2VsZWN0LWNoZWNrXCIgXSA9IFwic2VsZWN0XCIgaWYgQG1vZGVsLmdldCggXCJtdWx0aXBsZVwiIClcblx0XHRyZXR1cm4gX2V2bnRzXG5cblx0X2dldElucFNlbGVjdG9yOiA9PlxuXHRcdHJldHVybiBcInNlbGVjdCMje0BjaWR9XCJcblx0XHRcblx0cmVuZGVyOiA9PlxuXHRcdHN1cGVyXG5cdFx0aWYgQG1vZGVsLmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHRAX2luaXRTZWxlY3QyKClcblx0XHRyZXR1cm5cblxuXHRmb2N1czogKCk9PlxuXHRcdCMgcHJldmVudCBmcm9tIGFzeW5jIGxpc3RlbmluZyBvbiBtYW51YWwgYWNjZXNzXG5cdFx0QG1vZGVsLnNldCggXCJ3YWl0Rm9yQXN5bmNcIiwgZmFsc2UgKVxuXHRcdEBfaW5pdFNlbGVjdDIoKVxuXHRcdEBzZWxlY3QyLiRjb250YWluZXIuc2hvdygpXG5cdFx0QHNlbGVjdDIub3BlbigpXG5cdFx0I2Vsc2Vcblx0XHRcdCNAJGlucC5zZWxlY3QyKCBcIm9wZW5cIiApXG5cdFx0cmV0dXJuIHN1cGVyXG5cdFxuXHRfaXNGdWxsOiA9PlxuXHRcdGlmIEBzZWxlY3RDb3VudCA8PSAwXG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRyZXR1cm4gKCBAcmVzdWx0IG9yIFtdKS5sZW5ndGggPj0gQHNlbGVjdENvdW50XG5cdFxuXHRyZW9wZW46ICggcFZpZXcgKT0+XG5cdFx0aWYgQF9pc0Z1bGwoKVxuXHRcdFx0cmV0dXJuXG5cdFx0IyBzZXQgdGhlIGN1cnJlbnQgdmFsdWVzXG5cdFx0X29sZFZhbHMgPSBAcmVzdWx0LnBsdWNrKCBcInZhbHVlXCIgKVxuXHRcdEBtb2RlbC5zZXQoIHZhbHVlOiBfb2xkVmFscyApXG5cdFx0XG5cdFx0IyByZXNldCByZXN1bHRzIGFuZCBzZWxlY3QyXG5cdFx0cFZpZXcuJHJlc3VsdHMuZW1wdHkoKVxuXHRcdEBzZWxlY3QyLiRjb250YWluZXIub2ZmKClcblx0XHRAc2VsZWN0Mi5kZXN0cm95KClcblx0XHRAcmVzdWx0LnJlc2V0KClcblx0XHRAc2VsZWN0MiA9IG51bGxcblx0XHRcblx0XHRyZXR1cm4gc3VwZXJcblx0XHRcblx0X2NoZWNrSW50VmFsdWU6ICggX29wdHMgPSBbXSApPT5cblx0XHRpZiBub3QgX29wdHMgb3Igbm90IF9vcHRzLmxlbmd0aFxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0Zm9yIF92IGluIF9vcHRzXG5cdFx0XHRpZiBfdi52YWx1ZT8gYW5kIF8uaXNTdHJpbmcoIF92LnZhbHVlIClcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRpZiBfdi5pZD8gYW5kIF8uaXNTdHJpbmcoIF92LmlkIClcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRpZiBfdj8gYW5kIF8uaXNTdHJpbmcoIF92IClcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRcblx0XHRyZXR1cm4gdHJ1ZVxuXG5cdF9pbml0U2VsZWN0MjogPT5cblx0XHRcblx0XHRpZiBub3QgQHNlbGVjdDI/XG5cdFx0XHRfb3B0cyA9IF8uZXh0ZW5kKCB7fSwgQGRlZmF1bHRNb2R1bGVPcHRzLCBAbW9kZWwuZ2V0KCBcIm9wdHNcIiApLCB7IG11bHRpcGxlOiBAbW9kZWwuZ2V0KCBcIm11bHRpcGxlXCIgKSBvciBmYWxzZSB9LCBAZm9yY2VkTW9kdWxlT3B0cyApXG5cdFx0XHRAJGlucC5zZWxlY3QyKCBfb3B0cyApXG5cdFx0XHRAc2VsZWN0MiA9IEAkaW5wLmRhdGEoIFwic2VsZWN0MlwiIClcblx0XHRcdGlmIG5vdCBAbW9kZWwuZ2V0KCBcIm11bHRpcGxlXCIgKVxuXHRcdFx0XHRAJGlucC5vbiBcInNlbGVjdDI6c2VsZWN0IHNlbGVjdDI6Y2xvc2VcIiwgQHNlbGVjdFxuXHRcdFx0XG5cdFx0XHQjIGFmdGVyIGxvYWRpbmcgdHJ5IHRvIHNldCB0aGUgY3Vyc29yIGZvY3VzXG5cdFx0XHRAc2VsZWN0Mi5vbiBcInJlc3VsdHM6YWxsXCIsICggcmVzdWx0cyApPT5cblx0XHRcdFx0QGNvbnZlcnRWYWx1ZVRvSW50ID0gQF9jaGVja0ludFZhbHVlKCByZXN1bHRzPy5kYXRhPy5yZXN1bHRzIClcblx0XHRcdFx0QHNlbGVjdDIuc2VsZWN0aW9uPy4kc2VhcmNoPy5mb2N1cz8oKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdFx0IyBsaXN0ZW4gdG8gYXN5bmMgcmVzdWx0IGNoYW5nZXMgYW5kIHNldCB0aGUgc2VsZWN0aW9uXG5cdFx0XHRAc2VsZWN0Mi5kYXRhQWRhcHRlci5jdXJyZW50ICggcmVzdWx0cyApPT5cblx0XHRcdFx0aWYgQG1vZGVsLmdldCggXCJ3YWl0Rm9yQXN5bmNcIiApXG5cdFx0XHRcdFx0X2RhdGEgPSBbXVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGZvciByZXN1bHQgaW4gcmVzdWx0c1xuXHRcdFx0XHRcdFx0X2RhdGEucHVzaCBAX2NvbnZlcnRWYWx1ZSggcmVzdWx0IClcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdCMgc2VsZWN0IHRoZSBhY3RpdmUvcHJlZGVmaW5lZCByZXN1bHRzXG5cdFx0XHRcdFx0QF9zZWxlY3QoIF9kYXRhIClcblx0XHRcdFx0XHRAY2xvc2UoKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XG5cdFx0XHRAc2VsZWN0Mi4kY29udGFpbmVyLm9uIFwiY2xpY2tcIiwgQF9zZWwyb3BlblxuXHRcdFx0QHNlbGVjdDIuJGVsZW1lbnQuaGlkZSgpXG5cdFx0XHQjJCggZG9jdW1lbnQgKS5vbiBAX2hhc1RhYkV2ZW50KCksIEBfb25LZXkgaWYgQG1vZGVsLmdldCggXCJtdWx0aXBsZVwiIClcblx0XHRyZXR1cm4gQHNlbGVjdDJcblxuXHRfc2VsMm9wZW46ICggZXZudCApLT5cblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0cmV0dXJuIGZhbHNlXG5cdFxuXHRyZW1vdmU6ID0+XG5cdFx0I0AkaW5wLnNlbGVjdDIoIFwiZGVzdHJveVwiIClcblx0XHRyZXR1cm4gc3VwZXJcblxuXHRnZXRUZW1wbGF0ZURhdGE6ID0+XG5cdFx0X2RhdGEgPSBfLmV4dGVuZCgge30sIHN1cGVyLCB7IG11bHRpcGxlOiBAbW9kZWwuZ2V0KCBcIm11bHRpcGxlXCIgKSwgb3B0aW9uczogQF9jcmVhdGVPcHRpb25Db2xsZWN0aW9uKCBAbW9kZWwuZ2V0KCBcIm9wdGlvbnNcIiApICkgfSApXG5cdFx0aWYgX2RhdGEudmFsdWU/IGFuZCBfLmlzQXJyYXkoIF9kYXRhLnZhbHVlIClcblx0XHRcdGZvciBfdiwgX2lkeCBpbiBfZGF0YS52YWx1ZVxuXHRcdFx0XHRfZGF0YS52YWx1ZVsgX2lkeCBdID0gaWYgQGNvbnZlcnRWYWx1ZVRvSW50IHRoZW4gcGFyc2VGbG9hdCggX3YgKSBlbHNlIF92LnRvU3RyaW5nKClcblx0XHRlbHNlIGlmIF9kYXRhLnZhbHVlP1xuXHRcdFx0X2RhdGEudmFsdWUgPSBbIGlmIEBjb252ZXJ0VmFsdWVUb0ludCB0aGVuIHBhcnNlRmxvYXQoIF9kYXRhLnZhbHVlICkgZWxzZSBfZGF0YS52YWx1ZS50b1N0cmluZygpIF1cblx0XHRcblx0XHRpZiBfZGF0YS52YWx1ZT9cblx0XHRcdF92bGlzdCA9IF8ucGx1Y2soIF9kYXRhLm9wdGlvbnMsIFwidmFsdWVcIiApXG5cdFx0XHRmb3IgX3YgaW4gX2RhdGEudmFsdWUgd2hlbiBfdiBub3QgaW4gX3ZsaXN0XG5cdFx0XHRcdF9kYXRhLm9wdGlvbnMucHVzaCB7IHZhbHVlOiAoIGlmIEBjb252ZXJ0VmFsdWVUb0ludCB0aGVuIHBhcnNlRmxvYXQoIF92ICkgZWxzZSBfdi50b1N0cmluZygpICksIGxhYmVsOiBfdiwgZ3JvdXA6IHVuZGVmaW5lZCB9XG5cdFx0XG5cdFx0X2dyb3VwcyA9IF8uZ3JvdXBCeSggX2RhdGEub3B0aW9ucywgXCJncm91cFwiIClcblx0XHRpZiBfLmNvbXBhY3QoIF8ua2V5cyggX2dyb3VwcyBvciB7fSApICkubGVuZ3RoID4gMVxuXHRcdFx0X2RhdGEub3B0aW9uR3JvdXBzID0gX2dyb3Vwc1xuXHRcdHJldHVybiBfZGF0YVxuXHRcblx0X2hhc1RhYkxpc3RlbmVyOiAoIGNyZWF0ZSApPT5cblx0XHRpZiBjcmVhdGVcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdHJldHVybiBAbW9kZWwuZ2V0KFwibXVsdGlwbGVcIilcblx0XG5cdF9oYXNUYWJFdmVudDogLT5cblx0XHRyZXR1cm4gXCJrZXl1cFwiXG5cdFx0XG5cdGdldFZhbHVlOiA9PlxuXHRcdF92YWxzID0gW11cblx0XHRmb3IgZGF0YSBpbiBAX2luaXRTZWxlY3QyKCk/LmRhdGEoKSBvciBbXVxuXHRcdFx0XG5cdFx0XHRfdmFscy5wdXNoKCBAX2NvbnZlcnRWYWx1ZSggZGF0YSApIClcblx0XHRyZXR1cm4gX3ZhbHNcblx0XG5cdF9jb252ZXJ0VmFsdWU6ICggZGF0YSApPT5cblx0XHRfZGF0YSA9IHt9XG5cdFx0aWYgQGNvbnZlcnRWYWx1ZVRvSW50XG5cdFx0XHRfZGF0YS52YWx1ZSA9IHBhcnNlRmxvYXQoIGRhdGEuaWQgKVxuXHRcdGVsc2Vcblx0XHRcdF9kYXRhLnZhbHVlID0gZGF0YS5pZFxuXHRcdGlmIGRhdGEudGV4dD9cblx0XHRcdGlmIGRhdGEudGV4dCBpbnN0YW5jZW9mIGpRdWVyeVxuXHRcdFx0XHRfZGF0YS5sYWJlbCA9IGRhdGEudGV4dC5odG1sKClcblx0XHRcdGVsc2Vcblx0XHRcdFx0X2RhdGEubGFiZWwgPSBkYXRhLnRleHRcblx0XHRcdFxuXHRcdHJldHVybiBfZGF0YVxuXG5cdGdldFJlc3VsdHM6ID0+XG5cdFx0dmFsdWU6IEByZXN1bHQucGx1Y2soIFwidmFsdWVcIiApXG5cblx0X2NyZWF0ZU9wdGlvbkNvbGxlY3Rpb246ICggb3B0aW9ucyApPT5cblx0XHRpZiBfLmlzRnVuY3Rpb24oIG9wdGlvbnMgKVxuXHRcdFx0cmV0dXJuIG9wdGlvbnMoIEBfY3JlYXRlT3B0aW9uQ29sbGVjdGlvbiApXG5cblx0XHRfb3B0cyA9IFtdXG5cdFx0Zm9yIG9wdCBpbiBvcHRpb25zXG5cdFx0XHRpZiBfLmlzU3RyaW5nKCBvcHQgKSBvciBfLmlzTnVtYmVyKCBvcHQgKVxuXHRcdFx0XHRfb3B0cy5wdXNoIHsgdmFsdWU6ICggaWYgQGNvbnZlcnRWYWx1ZVRvSW50IHRoZW4gcGFyc2VGbG9hdCggb3B0ICkgZWxzZSBvcHQudG9TdHJpbmcoKSApLCBsYWJlbDogb3B0LCBncm91cDogbnVsbCB9XG5cdFx0XHRlbHNlIGlmIF8uaXNPYmplY3QoIG9wdCApXG5cdFx0XHRcdG9wdC52YWx1ZSA9IGlmIEBjb252ZXJ0VmFsdWVUb0ludCB0aGVuIHBhcnNlRmxvYXQoIG9wdC52YWx1ZSApIGVsc2Ugb3B0LnZhbHVlLnRvU3RyaW5nKClcblx0XHRcdFx0X29wdHMucHVzaCBfLmV4dGVuZCgge30sIEBvcHREZWZhdWx0LCBvcHQgKVxuXHRcdHJldHVybiBfb3B0c1xuXG5cdHVuc2VsZWN0OiAoIGV2bnQgKT0+XG5cdFx0QHJlc3VsdC5yZW1vdmUoIGV2bnQucGFyYW1zPy5kYXRhPy5pZCApXG5cdFx0cmV0dXJuXG5cblx0Y2xvc2U6ID0+XG5cdFx0aWYgQG1vZGVsLmdldCggXCJ3YWl0Rm9yQXN5bmNcIiApXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRpZiBAc2VsZWN0Mj9cblx0XHRcdCNAc2VsZWN0Mj8uZGVzdHJveSgpXG5cdFx0XHRAc2VsZWN0Mi4kY29udGFpbmVyLmhpZGUoKVxuXHRcdEAkaW5wPy5yZW1vdmUoKVxuXHRcdEAkKCBcIi5zZWxlY3QtY2hlY2tcIiApLnJlbW92ZSgpXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdHNlbGVjdDogKCBldm50ICk9PlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKCkgaWYgZXZudD8uc3RvcFByb3BhZ2F0aW9uXG5cdFx0X3ZhbHMgPSBAZ2V0VmFsdWUoKVxuXHRcdGlmIG5vdCBfdmFscz8ubGVuZ3RoXG5cdFx0XHQjIElzc3VlIzQ5IGlmIG5vdGhpbmcgd2FzIHNlbGVjdGVkIGNsb3NlIHRoZSBzZWxlY3QtdmlldyBhbmQgcmVtb3ZlIHRoZSB3aG9sZSBmYWNldFxuXHRcdFx0QGNsb3NlKClcblx0XHRcdGlmIG5vdCBAbW9kZWwuZ2V0KCBcIndhaXRGb3JBc3luY1wiIClcblx0XHRcdFx0QHN1Yi5kZWwoKVxuXHRcdFx0cmV0dXJuXG5cdFx0QF9zZWxlY3QoIF92YWxzIClcblxuXHRcdEBjbG9zZSgpXG5cdFx0cmV0dXJuXG5cdFxuXHRfc2VsZWN0OiAoIF92YWxzICk9PlxuXHRcdEBtb2RlbC5zZXQoIFwid2FpdEZvckFzeW5jXCIsIGZhbHNlIClcblx0XHRNb2RlbENvbnN0ID0gQGdldFNlbGVjdE1vZGVsKClcblx0XHRmb3IgX3ZhbCBpbiBfdmFsc1xuXHRcdFx0QHJlc3VsdC5hZGQoIG5ldyBNb2RlbENvbnN0KCBfdmFsICkgKVxuXHRcdEB0cmlnZ2VyKCBcInNlbGVjdGVkXCIsIEByZXN1bHQgKVxuXHRcdHJldHVyblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3Vic1NlbGVjdFxuIiwiY2xhc3MgRmFjZXRTdWJTdHJpbmcgZXh0ZW5kcyByZXF1aXJlKCBcIi4vYmFzZVwiIClcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvc3RyaW5nLmphZGVcIiApXG5cdFxuXHRldmVudHM6ID0+XG5cdFx0XCJrZXl1cCAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJpbnB1dFwiXG5cdFx0XCJrZXlkb3duICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblx0XHRcImJsdXIgI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwic2VsZWN0XCJcblxuXHRjbG9zZTogKCBldm50ICk9PlxuXHRcdHN1cGVyXG5cdFx0dHJ5XG5cdFx0XHRAJGlucD8ucmVtb3ZlPygpXG5cdFx0cmV0dXJuXG5cdFxuXHRyZW9wZW46ICggcFZpZXcgKT0+XG5cdFx0X29sZFZhbCA9IEByZXN1bHQ/LmZpcnN0KCk/LmdldCggXCJ2YWx1ZVwiIClcblx0XHRAbW9kZWwuc2V0KCB2YWx1ZTogX29sZFZhbCApXG5cdFx0cFZpZXcuJHJlc3VsdHMuZW1wdHkoKS5odG1sKCBAcmVuZGVyUmVzdWx0KCB0cnVlICkgKVxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFx0XHRcdFxubW9kdWxlLmV4cG9ydHMgPSBGYWNldFN1YlN0cmluZ1xuIiwiU3ViVmlldyA9IHJlcXVpcmUoIFwiLi9zdWJcIiApXG5TZWxlY3RvclZpZXcgPSByZXF1aXJlKCBcIi4vc2VsZWN0b3JcIiApXG5cbktFWUNPREVTID0gcmVxdWlyZSggXCIuLi91dGlscy9rZXljb2Rlc1wiIClcblxuY2xhc3MgTWFpblZpZXcgZXh0ZW5kcyBCYWNrYm9uZS5WaWV3XG5cdHRlbXBsYXRlOiByZXF1aXJlKCBcIi4uL3RtcGxzL3dyYXBwZXIuamFkZVwiIClcblxuXHRldmVudHM6XG5cdFx0XCJjbGljayAuc2VhcmNoLWJ0blwiOiBcIl9vblNlYXJjaFwiXG5cdFx0XCJmb2N1cyAuc2VhcmNoLWJ0blwiOiBcIl9vbkZvY3VzU2VhcmNoXCJcblx0XHRcImNsaWNrIC5hZGQtZmFjZXQtYnRuXCI6IFwiX2FkZEZhY2V0XCJcblx0XHRcImNsaWNrXCI6IFwiX2FkZEZhY2V0XCJcblxuXHRpbml0aWFsaXplOiAoIG9wdGlvbnMgKT0+XG5cdFx0XG5cdFx0QG1haW4gPSBvcHRpb25zLm1haW5cblx0XHRAaWR4ID0gb3B0aW9ucy5pZHhcblx0XHRAcmVzdWx0cyA9IG9wdGlvbnMucmVzdWx0c1xuXHRcdEBzZWFyY2hCdXR0b24gPSBvcHRpb25zLnNlYXJjaEJ1dHRvblxuXHRcdFxuXHRcdEBmYWNldHMgPSB7fVxuXHRcdFxuXHRcdEBjb2xsZWN0aW9uLm9uIFwiaWdneTpyZW1cIiwgQHJlbUZhY2V0XG5cdFx0XG5cdFx0X2NsID0gXCJpZ2d5IGNsZWFyZml4XCJcblx0XHRpZiBAZWwuY2xhc3NOYW1lPy5sZW5ndGhcblx0XHRcdF9jbCA9IFwiIFwiICsgX2NsXG5cdFx0QGVsLmNsYXNzTmFtZSArPSBfY2xcblx0XHRAcmVuZGVyKClcblx0XHRAX291dGVyQ2xpY2tMaXN0ZW4oKVxuXHRcdEBfa2V5TGlzdGVuKClcblx0XHRcblx0XHRfdmFsdWVGYWNldHMgPSBAY29sbGVjdGlvbi5maWx0ZXIoICggZmN0ICktPnJldHVybiBmY3Q/LmdldCggXCJ2YWx1ZVwiICk/IG9yIGZjdD8uZ2V0KCBcInBpbm5lZFwiICkgKVxuXHRcdFxuXHRcdF9mblNvcnQgPSAoIGtleSApLT5cblx0XHRcdHJldHVybiAoIHYxLCB2MiApLT5cblx0XHRcdFx0aWYgdjFbIGtleSBdID4gdjJbIGtleSBdXG5cdFx0XHRcdFx0cmV0dXJuIDFcblx0XHRcdFx0aWYgdjFbIGtleSBdIDwgdjJbIGtleSBdXG5cdFx0XHRcdFx0cmV0dXJuIC0xXG5cdFx0XHRcdHJldHVybiAwXG5cdFx0XG5cdFx0Zm9yIGZjdCBpbiBfdmFsdWVGYWNldHMuc29ydCggX2ZuU29ydCggXCJfaWR4XCIgKSApXG5cdFx0XHRAZ2VuU3ViKCBmY3QsIGZhbHNlLCB0cnVlIClcblx0XHRcblx0XHRAY29sbGVjdGlvbi5vbiBcImFkZFwiLCA9PlxuXHRcdFx0QCRhZGRCdG4uc2hvdygpXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0X2FjdGl2ZSA9IEBjb2xsZWN0aW9uLmZpbHRlciggKCBmY3QgKS0+cmV0dXJuIGZjdD8uZ2V0KCBcImFjdGl2ZVwiICkgYW5kIGZjdD8uZ2V0KCBcInBpbm5lZFwiICkgKVxuXHRcdFx0aWYgX2FjdGl2ZS5sZW5ndGhcblx0XHRcdFx0dmlldyA9IEBmYWNldHNbIF9hY3RpdmVbIDAgXS5pZCBdXG5cdFx0XHRcdCNAc3VidmlldyA9IHZpZXdcblx0XHRcdFx0dmlldz8ucmVvcGVuKClcblx0XHRcdFx0dmlldz8uZm9jdXMoKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCAwIClcblx0XHRcblx0XHRyZXR1cm5cblx0XG5cdHRlbXBsYXRlRGF0YTogPT5cblx0XHRfcmV0ID1cblx0XHRcdHRhYl9pbmRleDogKCAoICggQGlkeCBvciAxICkgKyAxICkgKiAxMDAwICkgLSAxMFxuXHRcdGlmICBAc2VhcmNoQnV0dG9uP1xuXHRcdFx0X3JldC5zZWFyY2hCdXR0b24gPVxuXHRcdFx0XHR0ZW1wbGF0ZTogQHNlYXJjaEJ1dHRvbi50ZW1wbGF0ZSBvciBcIlwiXG5cdFx0XHRcdGV2ZW50OiBAc2VhcmNoQnV0dG9uLmV2ZW50IG9yIFwic2VhcmNoXCJcblx0XHRcdFx0cHVsbHJpZ2h0OiBAc2VhcmNoQnV0dG9uLnB1bGxyaWdodCBvciBmYWxzZVxuXHRcdFx0XHRjc3NjbGFzczogQHNlYXJjaEJ1dHRvbi5jc3NjbGFzcyBvciBcImJ0biBidG4tcHJpbWFyeSBmYSBmYS1zZWFyY2hcIlxuXHRcdFxuXHRcdHJldHVybiBfcmV0XG5cdFxuXHRyZW5kZXI6ID0+XG5cdFx0X3RwbERhdGEgPSBAdGVtcGxhdGVEYXRhKClcblx0XHRAJGVsLmh0bWwoIEB0ZW1wbGF0ZSggX3RwbERhdGEgKSApXG5cdFx0QCRhZGRCdG4gPSBAJCggXCIuYWRkLWZhY2V0LWJ0blwiIClcblx0XHRpZiBfdHBsRGF0YS5zZWFyY2hCdXR0b24/XG5cdFx0XHRAJHNlYXJjaEJ0biA9IEAkKCBcIi5zZWFyY2gtYnRuXCIgKVxuXHRcdHJldHVyblxuXG5cdF9hZGRGYWNldDogKCBldm50ICk9PlxuXHRcdEBhZGRGYWNldCgpXG5cdFx0cmV0dXJuXG5cblx0ZXhpdDogKCBuZXh0QWRkID0gdHJ1ZSApPT5cblx0XHRpZiBAc3Vidmlld1xuXHRcdFx0QHN1YnZpZXcuY2xvc2UoKVxuXHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRAYWRkRmFjZXQoKSBpZiBuZXh0QWRkXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRpZiBAc2VsZWN0dmlld1xuXHRcdFx0I2NvbnNvbGUubG9nIFwiTUFJTiBSRU1PVkUgU0VMRUNUXCJcblx0XHRcdEBzZWxlY3R2aWV3LmNsb3NlKClcblx0XHRcdEBzZWxlY3R2aWV3ID0gbnVsbFxuXG5cdFx0XG5cdFx0cmV0dXJuXG5cblx0cmVtRmFjZXQ6ICggZmFjZXRNICk9PlxuXHRcdEByZXN1bHRzLnJlbW92ZSggZmFjZXRNLmdldCggXCJuYW1lXCIgKSApXG5cdFx0cmV0dXJuXG5cblx0c2V0RmFjZXQ6ICggZmFjZXRNLCBkYXRhICk9PlxuXHRcdEBjb2xsZWN0aW9uLnJlbW92ZSggZmFjZXRNIClcblxuXHRcdEByZXN1bHRzLmFkZCggXy5leHRlbmQoIGRhdGEsIHsgbmFtZTogZmFjZXRNLmdldCggXCJuYW1lXCIgKSwgdHlwZTogZmFjZXRNLmdldCggXCJ0eXBlXCIgKSB9ICksIHsgbWVyZ2U6IHRydWUsIHBhcnNlOiB0cnVlLCBfZmFjZXQ6IGZhY2V0TSB9IClcblx0XHRpZiBub3QgQGNvbGxlY3Rpb24ubGVuZ3RoXG5cdFx0XHRAJGFkZEJ0bi5oaWRlKClcblx0XHRyZXR1cm5cblxuXHRnZW5TdWI6ICggZmFjZXRNLCBhZGRBZnRlciA9IHRydWUsIGluaXRpYWxBZGQ9ZmFsc2UgKT0+XG5cdFx0c3VidmlldyA9IG5ldyBTdWJWaWV3KCBtb2RlbDogZmFjZXRNLCBjb2xsZWN0aW9uOiBAY29sbGVjdGlvbiwgcGFyZW50OiBAIClcblx0XHRcblx0XHRzdWJ2aWV3Lm9uIFwiY2xvc2VkXCIsICggcmVzdWx0cyApPT5cblx0XHRcdCNjb25zb2xlLmxvZyBcImdlblN1YiAtIGNsb3NlZFwiLCByZXN1bHRzLCBzdWJ2aWV3Lm1vZGVsLmlkXG5cdFx0XHRpZiBzdWJ2aWV3Py5tb2RlbD8uZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0I2NvbnNvbGUubG9nIFwiU1VCIFZJRVcgQ0xPU0VEXCIsIHJlc3VsdHM/Lmxlbmd0aFxuXHRcdFx0I3N1YnZpZXcub2ZmKClcblx0XHRcdHN1YnZpZXcucmVtb3ZlKCkgaWYgbm90IHJlc3VsdHM/Lmxlbmd0aFxuXHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRAYWRkRmFjZXQoKSBpZiBhZGRBZnRlclxuXHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0c3Vidmlldy5vbiBcInJlb3BlblwiLCA9PlxuXHRcdFx0QHNlbGVjdHZpZXc/LmNsb3NlKClcblx0XHRcdHJldHVyblxuXHRcdFx0XG5cdFx0X3NlbGYgPSBAXG5cdFx0c3Vidmlldy5vbiBcInNlbGVjdGVkXCIsICggZmFjZXRNLCBkYXRhICktPlxuXHRcdFx0I2NvbnNvbGUubG9nIFwic3VidmlldyAtIHNlbGVjdGVkXCIsIEBcblx0XHRcdF9zZWxmLnNldEZhY2V0KCBmYWNldE0sIGRhdGEgKVxuXHRcdFx0aWYgbm90IEBzZWxlY3R2aWV3Ll9pc0Z1bGw/IG9yIEBzZWxlY3R2aWV3Ll9pc0Z1bGwoKVxuXHRcdFx0XHRfc2VsZi5fbmV4dEZhY2V0KCBudWxsLCBAIClcblx0XHRcdHJldHVyblxuXHRcdFxuXHRcdEAkYWRkQnRuLmJlZm9yZSggc3Vidmlldy5yZW5kZXIoIGluaXRpYWxBZGQgKSApXG5cdFx0QGZhY2V0c1sgZmFjZXRNLmlkIF0gPSBzdWJ2aWV3XG5cdFx0cmV0dXJuIHN1YnZpZXdcblxuXHRhZGRGYWNldDogPT5cblx0XHRpZiBAc2VsZWN0dmlldz9cblx0XHRcdCNjb25zb2xlLmxvZyBcIlNUT1AgQCBTRUxFQ1QgRVhJU1RcIlxuXHRcdFx0QHNlbGVjdHZpZXcuZm9jdXMoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRpZiBAc3Vidmlldz9cblx0XHRcdCNjb25zb2xlLmxvZyBcIlNUT1AgQCBTVUIgRVhJU1RcIlxuXHRcdFx0QHN1YnZpZXcuY2xvc2UoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRpZiBub3QgQGNvbGxlY3Rpb24ubGVuZ3RoXG5cdFx0XHQjY29uc29sZS5sb2cgXCJTVE9QIEAgRU1QVFkgQ09MTFwiXG5cdFx0XHRyZXR1cm5cblxuXHRcdEBzZWxlY3R2aWV3ID0gbmV3IFNlbGVjdG9yVmlldyggY29sbGVjdGlvbjogQGNvbGxlY3Rpb24sIGN1c3RvbTogZmFsc2UsIG1haW46IEAgKVxuXG5cdFx0QHNlbGVjdHZpZXcub24gXCJvcGVuZWRcIiwgPT5cblx0XHRcdEBfb25PcGVuZWQoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRAc2VsZWN0dmlldy5vbiBcImNsb3NlZFwiLCAoIHJlc3VsdHMgKT0+XG5cdFx0XHRAX29uQ2xvc2VkKClcblx0XHRcdCNjb25zb2xlLmxvZyBcIlNFTEVDVCBWSUVXIENMT1NFRFwiLCByZXN1bHRzPy5sZW5ndGhcblx0XHRcdCNAc2VsZWN0dmlldy5vZmYoKVxuXHRcdFx0QHNlbGVjdHZpZXcucmVtb3ZlKClcblx0XHRcdEBzZWxlY3R2aWV3ID0gbnVsbFxuXHRcdFx0aWYgbm90IHJlc3VsdHM/Lmxlbmd0aCBhbmQgQHN1YnZpZXc/XG5cdFx0XHRcdCNAc3Vidmlldy5vZmYoKVxuXHRcdFx0XHRAc3Vidmlldy5yZW1vdmUoKVxuXHRcdFx0XHRAc3VidmlldyA9IG51bGxcblx0XHRcdHJldHVyblxuXG5cdFx0QHNlbGVjdHZpZXcub24gXCJzZWxlY3RlZFwiLCAoIGZhY2V0TSApPT5cblx0XHRcdGZhY2V0TS5zZXQoIFwidmFsdWVcIiwgbnVsbCApXG5cdFx0XHRAc3VidmlldyA9IEBnZW5TdWIoIGZhY2V0TSApXG5cdFx0XHRAc3Vidmlldy5vcGVuKClcblx0XHRcdHJldHVyblxuXHRcblx0XHRAJGFkZEJ0bi5iZWZvcmUoIEBzZWxlY3R2aWV3LnJlbmRlcigpIClcblx0XHRAc2VsZWN0dmlldy5mb2N1cygpXG5cdFx0cmV0dXJuXG5cdFxuXHRfb25PcGVuZWQ6ID0+XG5cdFx0QCRhZGRCdG4/LmhpZGUoKVxuXHRcdHJldHVyblxuXHRcblx0X29uQ2xvc2VkOiA9PlxuXHRcdEAkYWRkQnRuPy5zaG93KClcblx0XHRyZXR1cm5cblx0XG5cdF9vdXRlckNsaWNrTGlzdGVuOiA9PlxuXHRcdGpRdWVyeSggZG9jdW1lbnQgKS5vbiBcImNsaWNrXCIsIEBfb3V0ZXJDbGlja1xuXHRcdHJldHVyblxuXHRcblx0X2tleUxpc3RlbjogPT5cblx0XHRqUXVlcnkoIGRvY3VtZW50ICkub24gXCJrZXlkb3duXCIsICggZXZudCApPT5cblx0XHRcdGlmIGV2bnQua2V5Q29kZSBpcyBLRVlDT0RFUy5UQUIgb3IgZXZudC5rZXlDb2RlIGluIEtFWUNPREVTLlRBQlxuXHRcdFx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblx0XHRcdFx0XG5cdFx0XHRcdGlmICQoIGV2bnQudGFyZ2V0ICkuaXMoIFwiLnNlYXJjaC1idG5cIiApXG5cdFx0XHRcdFx0c2V0VGltZW91dCggPT5cblx0XHRcdFx0XHRcdEBhZGRGYWNldCgpXG5cdFx0XHRcdFx0LCAwIClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcblx0XHRcdFx0IyBjYXNlIG9ubHkgdGhlIGZhY2V0IHNlbGVjdG9yIGlzIG9wZW5cblx0XHRcdFx0aWYgQHNlbGVjdHZpZXc/LmlzT3BlblxuXHRcdFx0XHRcdGlmIGV2bnQ/LnNoaWZ0S2V5XG5cdFx0XHRcdFx0XHRfcHJldklkID0gQCRhZGRCdG4/LnByZXZBbGwoIFwiLnN1YlwiICk/LmZpcnN0KCk/LmRhdGEoIFwiZmN0aWRcIiApXG5cdFx0XHRcdFx0XHRpZiBfcHJldklkP1xuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0XHRcdFx0XHRcdEBmYWNldHNbIF9wcmV2SWQgXT8ucmVvcGVuKClcblx0XHRcdFx0XHRcdFx0LCAwIClcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRAc2VsZWN0dmlldy5jbG9zZSgpXG5cdFx0XHRcdFx0XHRAZm9jdXNTZWFyY2goKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcblx0XHRcdFx0XG5cdFx0XHRcdCMgb3RoZXJ3aXNlIHRyaWdnZXIgZXNjYXBlIGV2ZW50IGFuZCBsaXN0ZW4gZm9yIHRoZSByZXNwb25zZSBvZiB0aGUgb3BlbiBmYWNldFxuXHRcdFx0XHRAdHJpZ2dlciBcImVzY2FwZVwiLCBldm50LCBAX25leHRGYWNldFxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdGlmIGV2bnQua2V5Q29kZSBpcyBLRVlDT0RFUy5FU0Mgb3IgZXZudC5rZXlDb2RlIGluIEtFWUNPREVTLkVTQ1xuXHRcdFx0XHRAZXhpdCgpXG5cdFx0XHRcdEB0cmlnZ2VyKCBcImVzY2FwZVwiLCBldm50IClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblx0XG5cdF9uZXh0RmFjZXQ6ICggZXZudCwgc3ViVmlldyApPT5cblx0XHRfbmV4dEZuID0gaWYgZXZudD8uc2hpZnRLZXkgdGhlbiBcInByZXZcIiBlbHNlIFwibmV4dFwiXG5cdFx0X25leHQgPSBzdWJWaWV3LiRlbD9bIF9uZXh0Rm4gXT8oKVxuXHRcdFxuXHRcdGlmIF9uZXh0Lmhhc0NsYXNzKCBcImFkZC1mYWNldC1idG5cIiApXG5cdFx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0XHRAYWRkRmFjZXQoKVxuXHRcdFx0LCAwIClcblx0XHRcdHJldHVyblxuXHRcdF9uZXh0SWQgPSBfbmV4dD8uZGF0YSggXCJmY3RpZFwiIClcblx0XHRpZiBfbmV4dElkP1xuXHRcdFx0c2V0VGltZW91dCggPT5cblx0XHRcdFx0QGZhY2V0c1sgX25leHRJZCBdPy5yZW9wZW4oKVxuXHRcdFx0LCAwIClcblx0XHRyZXR1cm5cblx0XHRcblx0Zm9jdXNTZWFyY2g6ID0+XG5cdFx0aWYgQCRzZWFyY2hCdG4/XG5cdFx0XHRAJHNlYXJjaEJ0bi5mb2N1cygpXG5cdFx0cmV0dXJuXG5cdFx0XG5cdF9vblNlYXJjaDogKCBldm50ICk9PlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRAZXhpdCgpXG5cdFx0QHRyaWdnZXIoIFwic2VhcmNoYnV0dG9uXCIsIEBzZWFyY2hCdXR0b24uZXZlbnQgKVxuXHRcdHJldHVyblxuXHRcblx0X29uRm9jdXNTZWFyY2g6ICggZXZudCApPT5cblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0QHNlbGVjdHZpZXc/LmNsb3NlPygpXG5cdFx0cmV0dXJuXG5cdFx0XG5cdF9vdXRlckNsaWNrOiAoIGV2bnQgKT0+XG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdF9wb3NXcnAgPSBAZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGV2bnQudGFyZ2V0IClcblx0XHRpZiBub3QgKCBfcG9zV3JwIGlzIDAgb3IgX3Bvc1dycCAtIDE2ID49IDAgKVxuXHRcdFx0QGV4aXQoIGZhbHNlIClcblx0XHRyZXR1cm5cblx0XG5cbm1vZHVsZS5leHBvcnRzID0gTWFpblZpZXdcbiIsIktFWUNPREVTID0gcmVxdWlyZSggXCIuLi91dGlscy9rZXljb2Rlc1wiIClcblxuY2xhc3MgU2VsZWN0b3JWaWV3IGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0cy9iYXNlXCIgKVxuXHR0ZW1wbGF0ZTogcmVxdWlyZSggXCIuLi90bXBscy9zZWxlY3Rvci5qYWRlXCIgKVxuXHR0ZW1wbGF0ZUVsOiByZXF1aXJlKCBcIi4uL3RtcGxzL3NlbGVjdG9ybGkuamFkZVwiIClcblx0c2VsZWN0Q291bnQ6IDFcblxuXHRjbGFzc05hbWU6ID0+XG5cdFx0Y2xzID0gWyBcImFkZC1mYWNldFwiIF1cblx0XHRpZiBAY3VzdG9tXG5cdFx0XHRjbHMucHVzaCBcImN1c3RvbVwiXG5cdFx0cmV0dXJuIGNscy5qb2luKCBcIiBcIiApXG5cblx0ZXZlbnRzOiA9PlxuXHRcdFwibW91c2Vkb3duIGFcIjogXCJfb25DbGlja1wiXG5cdFx0XCJmb2N1cyBpbnB1dCMje0BjaWR9XCI6IFwib3BlblwiXG5cdFx0I1wiYmx1ciBpbnB1dCMje0BjaWR9XCI6IFwiY2xvc2VcIlxuXHRcdFwia2V5ZG93biBpbnB1dCMje0BjaWR9XCI6IFwic2VhcmNoXCJcblx0XHRcImtleXVwIGlucHV0IyN7QGNpZH1cIjogXCJzZWFyY2hcIlxuXG5cdGNvbnN0cnVjdG9yOiAoIG9wdGlvbnMgKS0+XG5cdFx0QGN1c3RvbSA9IG9wdGlvbnMuY3VzdG9tIG9yIGZhbHNlXG5cdFx0QGFjdGl2ZUlkeCA9IDBcblx0XHRAY3VyclF1ZXJ5ID0gXCJcIlxuXHRcdFxuXHRcdGlmIG9wdGlvbnMubWFpbj9cblx0XHRcdEBtYWluID0gb3B0aW9ucy5tYWluXG5cdFx0XG5cdFx0c3VwZXIoIG9wdGlvbnMgKVxuXHRcdHJldHVyblxuXHRcdFxuXHRpbml0aWFsaXplOiAoIG9wdGlvbnMgKT0+XG5cdFx0c3VwZXJcblx0XHRAc2VhcmNoY29sbCA9IEBjb2xsZWN0aW9uLnN1YiggLT50cnVlIClcblx0XHRAcmVzdWx0ID0gbmV3IEBjb2xsZWN0aW9uLmNvbnN0cnVjdG9yKClcblx0XHRcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcImFkZFwiLCBAcmVuZGVyUmVzIClcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcInJlbW92ZVwiLCBAcmVuZGVyUmVzIClcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcInJlbW92ZVwiLCBAY2hlY2tPcHRpb25zRW1wdHkgKVxuXHRcdFxuXHRcdHJldHVyblxuXG5cdGdldFRlbXBsYXRlRGF0YTogPT5cblx0XHRyZXR1cm4gXy5leHRlbmQoIHN1cGVyLCBjdXN0b206IEBjdXN0b20gKVxuXG5cdHJlbmRlcjogPT5cblx0XHRzdXBlclxuXHRcdEAkbGlzdCA9IEAkZWwuZmluZCggXCIjI3tAY2lkfXR5cGVsaXN0XCIgKVxuXHRcdEByZW5kZXJSZXMoKVxuXHRcdHJldHVybiBAZWxcblxuXHRyZW5kZXJSZXM6ID0+XG5cdFx0QCRsaXN0LmVtcHR5KClcblxuXHRcdF9saXN0ID0gW11cblx0XHRmb3IgbW9kZWwsIGlkeCBpbiBAc2VhcmNoY29sbC5tb2RlbHMgd2hlbiBub3QgbW9kZWwuZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdF9sYmwgPSBtb2RlbC5nZXRMYWJlbCgpXG5cdFx0XHRfdG1wbCA9IG1vZGVsLmdldCggXCJsYWJlbHRlbXBsYXRlXCIgKVxuXHRcdFx0aWYgX3RtcGw/XG5cdFx0XHRcdF9sYmwgPSBfdG1wbC5yZXBsYWNlKCBcInt7bGFiZWx9fVwiLCBfbGJsIClcblx0XHRcdFx0XG5cdFx0XHRfaWQgPSBtb2RlbC5pZFxuXHRcdFx0X2Nzc2NsYXNzID0gbW9kZWwuZ2V0KCBcImNzc2NsYXNzXCIgKVxuXHRcdFx0aWYgQGN1cnJRdWVyeT8ubGVuZ3RoID4gMVxuXHRcdFx0XHRfbGJsID0gX2xibC5yZXBsYWNlKCBuZXcgUmVnRXhwKCBAY3VyclF1ZXJ5LCBcImdpXCIgKSwgKCggc3RyICktPnJldHVybiBcIjxiPiN7c3RyfTwvYj5cIiApIClcblx0XHRcdF9saXN0LnB1c2ggbGFiZWw6IF9sYmwsIGlkOiBfaWQsIGNzc2NsYXNzOiBfY3NzY2xhc3Ncblx0XHQjaWYgX2xpc3QubGVuZ3RoXG5cdFx0QCRsaXN0LmFwcGVuZCggQHRlbXBsYXRlRWwoXG5cdFx0XHRsaXN0OiBfbGlzdCxcblx0XHRcdHF1ZXJ5OiBAY3VyclF1ZXJ5LFxuXHRcdFx0YWN0aXZlSWR4OiBAYWN0aXZlSWR4LFxuXHRcdFx0Y3VzdG9tOiBAY3VzdG9tXG5cdFx0KSApXG5cblx0XHRAX2NoZWNrU2Nyb2xsKClcblx0XHRcblx0XHRyZXR1cm4gQCRsaXN0XG5cblx0X3Njcm9sbFRpbGw6IDE5OFxuXHRfY2hlY2tTY3JvbGw6ID0+XG5cdFx0X2hlaWdodCA9IEAkbGlzdC5oZWlnaHQoKVxuXHRcdGlmIF9oZWlnaHQgPiAwXG5cdFx0XHRAc2Nyb2xsSGVscGVyKCBfaGVpZ2h0IClcblx0XHRcdHJldHVyblxuXG5cdFx0IyBleGl0IHRoZSB0aGUgY2FsbCBzdGFjayB0byBjaGVjayBoZWlnaHQgYWZ0ZXIgdGhlIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZG9tXG5cdFx0c2V0VGltZW91dCggPT5cblx0XHRcdEBzY3JvbGxIZWxwZXIoIEAkbGlzdC5oZWlnaHQoKSApXG5cdFx0LCAwIClcblx0XHRyZXR1cm5cblxuXHRzY3JvbGxIZWxwZXI6ICggaGVpZ2h0ICk9PlxuXHRcdGlmIGhlaWdodCA+PSBAX3Njcm9sbFRpbGxcblx0XHRcdEBzY3JvbGxpbmcgPSB0cnVlXG5cdFx0ZWxzZVxuXHRcdFx0QHNjcm9sbGluZyA9IGZhbHNlXG5cdFx0cmV0dXJuXG5cblx0Y2hlY2tPcHRpb25zRW1wdHk6ID0+XG5cdFx0I2lmIEBzZWFyY2hjb2xsLmxlbmd0aCA8PSAwXG5cdFx0I1x0QGNsb3NlKClcblx0XHRyZXR1cm5cblxuXHRfb25DbGljazogKCBldm50ICk9PlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblxuXHRcdF9pZCA9IEAkKCBldm50LmN1cnJlbnRUYXJnZXQgKS5kYXRhKCBcImlkXCIgKVxuXHRcdGlmIG5vdCBfaWQ/XG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdF9tZGwgPSBAY29sbGVjdGlvbi5nZXQoIF9pZCApXG5cdFx0aWYgbm90IF9tZGw/XG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdEBzZWxlY3RlZCggX21kbCApXG5cdFx0cmV0dXJuIGZhbHNlXG5cdFxuXHRfaXNGdWxsOiA9PlxuXHRcdHJldHVybiB0cnVlXG5cdFx0XG5cdF9vblRhYkFjdGlvbjogKCBldm50ICk9PlxuXHRcdGlmIEBtYWluP1xuXHRcdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRAbWFpbi5mb2N1c1NlYXJjaCgpXG5cdFx0ZWxzZVxuXHRcdFx0c3VwZXIoIGV2ZW50IClcblx0XHRyZXR1cm5cblx0XHRcblx0c2VsZWN0ZWQ6ICggbWRsICk9PlxuXHRcdHRyeVxuXHRcdFx0aWYgbWRsLm9ubHlFeGVjP1xuXHRcdFx0XHRtZGw/LmV4ZWM/KClcblx0XHRcdFx0cmV0dXJuXG5cdFx0Y2F0Y2ggX2VyclxuXHRcdFx0dHJ5XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IgXCJJc3N1ZSAjMjM6IENBVENIIC0gQ2xhc3M6I3sgQGNvbnN0cnVjdG9yLm5hbWUgfSAtIGFjdGl2ZUlkeDoje0BhY3RpdmVJZHh9IC0gY29sbGVjdGlvbjoje0pTT04uc3RyaW5naWZ5KCBAY29sbGVjdGlvbi50b0pTT04oKSl9XCJcblx0XHRcdGNhdGNoIF9lcnJlcnJcblx0XHRcdFx0Y29uc29sZS5lcnJvciBcIklzc3VlICMyMzogQ0FUQ0hcIlxuXHRcdFxuXHRcdGlmIG1kbD9cblx0XHRcdEBzZWFyY2hjb2xsLnJlbW92ZSggbWRsIClcblx0XHRcdEByZXN1bHQuYWRkKCBtZGwgKVxuXHRcdFx0QHRyaWdnZXIgXCJzZWxlY3RlZFwiLCBtZGxcblx0XHRcblx0XHRpZiBAX2lzRnVsbCgpXG5cdFx0XHRAY2xvc2UoKVxuXHRcdHJldHVyblxuXG5cdGZvY3VzOiA9PlxuXHRcdEAkaW5wLmZvY3VzKClcblx0XHRfZWwgPSBAJGlucC5nZXQoMClcblx0XHRcblx0XHRfZWwuc2VsZWN0aW9uU3RhcnQgPSBfZWwuc2VsZWN0aW9uRW5kID0gX2VsLnZhbHVlLmxlbmd0aFxuXHRcdHJldHVyblxuXHRcblx0b3BlbjogPT5cblx0XHQjY29uc29sZS5sb2cgXCJzZWxlY3RvciBvcGVuXCJcblx0XHRAdHJpZ2dlciggXCJvcGVuZWRcIiApXG5cdFx0cmV0dXJuIHN1cGVyXG5cblx0c2VhcmNoOiAoIGV2bnQgKT0+XG5cdFx0aWYgZXZudD8udHlwZSBpcyBcImtleWRvd25cIlxuXHRcdFx0c3dpdGNoIGV2bnQua2V5Q29kZVxuXHRcdFx0XHR3aGVuIEtFWUNPREVTLlVQXG5cdFx0XHRcdFx0QG1vdmUoIHRydWUgKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR3aGVuIEtFWUNPREVTLkRPV05cblx0XHRcdFx0XHRAbW92ZSggZmFsc2UgKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHR3aGVuIEtFWUNPREVTLkVOVEVSXG5cdFx0XHRcdFx0QHNlbGVjdEFjdGl2ZSggdHJ1ZSApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRpZiBfLmlzU3RyaW5nKCBldm50IClcblx0XHRcdF9xID0gZXZudFxuXHRcdGVsc2Vcblx0XHRcdF9xID0gZXZudC5jdXJyZW50VGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKClcblx0XHRpZiBfcSBpcyBAY3VyclF1ZXJ5XG5cdFx0XHRyZXR1cm5cblxuXHRcdEBjdXJyUXVlcnkgPSBfcVxuXG5cdFx0QHNlYXJjaGNvbGwudXBkYXRlU3ViRmlsdGVyKCAoIG1kbCApPT5cblx0XHRcdGlmIEByZXN1bHQuZ2V0KCBtZGwuaWQgKT9cblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRpZiBub3QgX3E/Lmxlbmd0aFxuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0X21hdGNoID0gbWRsLm1hdGNoKCBfcSApXG5cdFx0XHRyZXR1cm4gX21hdGNoXG5cdFx0LCBmYWxzZSApXG5cblxuXHRcdEBhY3RpdmVJZHggPSAwXG5cdFx0QHJlbmRlclJlcygpXG5cdFx0cmV0dXJuXG5cblx0bW92ZTogKCB1cCA9IGZhbHNlICk9PlxuXHRcdF9saXN0ID0gQCRlbC5maW5kKCBcIi50eXBlbGlzdCBhXCIgKVxuXHRcblx0XHRfY3VzdG9tRWxlbWVudENoYW5nZSA9IGlmIEBjdXJyUXVlcnk/Lmxlbmd0aCB0aGVuIDAgZWxzZSAxXG5cdFx0X3RvcCA9IDBcblx0XHRpZiB1cFxuXHRcdFx0aWYgKCBAYWN0aXZlSWR4IC0gMSApIDwgX3RvcFxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdF9uZXdpZHggPSBAYWN0aXZlSWR4IC0gMVxuXHRcdGVsc2Vcblx0XHRcdGlmIEBzZWFyY2hjb2xsLmxlbmd0aCAtIF9jdXN0b21FbGVtZW50Q2hhbmdlIDw9IEBhY3RpdmVJZHhcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHRfbmV3aWR4ID0gQGFjdGl2ZUlkeCArIDFcblxuXHRcdFxuXHRcdEAkKCBfbGlzdFsgQGFjdGl2ZUlkeCBdICkucmVtb3ZlQ2xhc3MoIFwiYWN0aXZlXCIgKVxuXHRcdF8kZWxuZXcgPSBAJCggX2xpc3RbIF9uZXdpZHggXSApLmFkZENsYXNzKCBcImFjdGl2ZVwiIClcblxuXHRcdGlmIEBzY3JvbGxpbmdcblx0XHRcdF9lbEggPSBfJGVsbmV3Lm91dGVySGVpZ2h0KClcblx0XHRcdF9wb3MgPSBfZWxIICogKCBfbmV3aWR4ICsgMSApXG5cdFx0XHRfJGxpc3QgPSBAJGVsLmZpbmQoIFwiLnR5cGVsaXN0XCIgKVxuXHRcdFx0X3Njcm9sbFQgPSBfJGxpc3Quc2Nyb2xsVG9wKClcblx0XHRcdGlmIF9wb3MgPiBfc2Nyb2xsVCArIEBfc2Nyb2xsVGlsbFxuXHRcdFx0XHRfJGxpc3Quc2Nyb2xsVG9wKCBfcG9zIC0gQF9zY3JvbGxUaWxsIClcblx0XHRcdGVsc2UgaWYgX3BvcyA8IF9zY3JvbGxUICsgX2VsSFxuXHRcdFx0XHRfJGxpc3Quc2Nyb2xsVG9wKCBfcG9zIC0gX2VsSCApXG5cblx0XHRAYWN0aXZlSWR4ID0gX25ld2lkeFxuXHRcdHJldHVyblxuXG5cdHNlbGVjdDo9PlxuXHRcdHJldHVyblxuXG5cdHNlbGVjdEFjdGl2ZTogKCBpc0VudGVyRXZlbnQ9ZmFsc2UgKT0+XG5cdFx0aWYgbm90IEBtYWluPyBhbmQgQF9pc0Z1bGwoKVxuXHRcdFx0X2lkID0gQHJlc3VsdC5sYXN0KCk/LmlkXG5cdFx0XHRAcm1SZXMoIF9pZCApXG5cdFx0XHRcdFxuXHRcdF9zZWwgPSBAJGVsLmZpbmQoIFwiLnR5cGVsaXN0IGEuYWN0aXZlXCIgKS5yZW1vdmVDbGFzcyggXCJhY3RpdmVcIiApLmRhdGEoKVxuXHRcdFx0XG5cdFx0X3NlYXJjaCA9IEAkaW5wLnZhbCgpXG5cdFx0XG5cdFx0aWYgIG5vdCBfc2VsPyBhbmQgQHNlbGVjdENvdW50IGlzbnQgMSBhbmQgaXNFbnRlckV2ZW50IGFuZCBub3QgX3NlYXJjaD8ubGVuZ3RoXG5cdFx0XHRAY2xvc2UoKVxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRpZiBub3QgX3NlbD9cblx0XHRcdHJldHVyblxuXHRcdFxuXHRcdEBhY3RpdmVJZHggPSAwXG5cdFx0aWYgX3NlbD8uaWR4ID49IDAgYW5kIEBzZWFyY2hjb2xsLmxlbmd0aFxuXHRcdFx0QHNlbGVjdGVkKCBAY29sbGVjdGlvbi5nZXQoIF9zZWwuaWQgKSApXG5cdFx0ZWxzZSBpZiBAY3VyclF1ZXJ5Py5sZW5ndGhcblx0XHRcdEBzZWxlY3RlZCggbmV3IEBjb2xsZWN0aW9uLm1vZGVsKCB2YWx1ZTogQGN1cnJRdWVyeSwgY3VzdG9tOiB0cnVlICkgKVxuXHRcdFx0QCRpbnAudmFsKCBcIlwiIClcblx0XHRlbHNlXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblxubW9kdWxlLmV4cG9ydHMgPSBTZWxlY3RvclZpZXdcbiIsImNsYXNzIFZpZXdTdWIgZXh0ZW5kcyBCYWNrYm9uZS5WaWV3XG5cdHRlbXBsYXRlOiByZXF1aXJlKCBcIi4uL3RtcGxzL3N1Yi5qYWRlXCIgKVxuXHRjbGFzc05hbWU6ID0+XG5cdFx0X3N0ZCA9IFwic3ViXCJcblx0XHRfdHlwZSA9IEBtb2RlbC5nZXQoIFwidHlwZVwiIClcblx0XHRpZiBfdHlwZT9cblx0XHRcdF9zdGQgKz0gXCIgc3ViLXR5cGUtXCIgKyBfdHlwZVxuXHRcdFxuXHRcdF9uYW1lID0gQG1vZGVsLmdldCggXCJuYW1lXCIgKVxuXHRcdGlmIF9uYW1lP1xuXHRcdFx0X3N0ZCArPSBcIiBzdWItbmFtZS1cIiArIF9uYW1lXG5cdFx0cmV0dXJuIF9zdGRcblxuXHRpbml0aWFsaXplOiAoIG9wdGlvbnMgKT0+XG5cdFx0QF9pc09wZW4gPSBmYWxzZVxuXHRcdEByZXN1bHQgPSBuZXcgQmFja2JvbmUuQ29sbGVjdGlvbigpXG5cdFx0QCRlbC5vbiBcImNsaWNrXCIsIEByZW9wZW5cblx0XHRAcGFyZW50ID0gb3B0aW9ucy5wYXJlbnRcblx0XHRcblx0XHRAJGVsLmRhdGEoIFwiZmN0aWRcIiwgQG1vZGVsLmlkIClcblx0XHRcblx0XHRAcGFyZW50Lm9uIFwiZXNjYXBlXCIsICggZXZudCwgY2IgKT0+XG5cdFx0XHRpZiBAX2lzT3BlblxuXHRcdFx0XHRpZiBAc2VsZWN0dmlldz8uX29uVGFiQWN0aW9uKCBldm50IClcblx0XHRcdFx0XHRjYiggZXZudCwgQCApIGlmIGNiP1xuXHRcdFx0cmV0dXJuXG5cdFx0cmV0dXJuXG5cblx0ZXZlbnRzOlxuXHRcdFwiY2xpY2sgLnJtLWZhY2V0LWJ0blwiOiBcImRlbFwiXG5cblx0cmVuZGVyOiAoIGluaXRpYWxBZGQgKT0+XG5cdFx0X2xpc3QgPSBbXVxuXHRcdGZvciBtb2RlbCwgaWR4IGluIEByZXN1bHQubW9kZWxzXG5cdFx0XHR0cnlcblx0XHRcdFx0X2xpc3QucHVzaCBtb2RlbC5nZXRMYWJlbCgpXG5cdFx0XHRjYXRjaCBfZXJyXG5cdFx0XHRcdHRyeVxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IgXCJJc3N1ZSAjMjQ6IENBVENIIC0gQ2xhc3M6I3sgQGNvbnN0cnVjdG9yLm5hbWUgfSAtIG1vZGVsOiN7SlNPTi5zdHJpbmdpZnkoQG1vZGVsLnRvSlNPTigpKX0gLSByZXN1bHQ6I3tKU09OLnN0cmluZ2lmeSggQHJlc3VsdC50b0pTT04oKSl9XCJcblx0XHRcdFx0Y2F0Y2ggX2VycmVyclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IgXCJJc3N1ZSAjMjQ6IENBVENIXCJcblx0XHRcblx0XHRAJGVsLmh0bWwgQHRlbXBsYXRlXG5cdFx0XHRsYWJlbDogQG1vZGVsLmdldExhYmVsKClcblx0XHRcdHNlbGVjdGVkOiBfbGlzdFxuXHRcdFx0dHlwZTogQG1vZGVsLmdldCggXCJ0eXBlXCIgKVxuXHRcdFx0bmFtZTogQG1vZGVsLmdldCggXCJuYW1lXCIgKVxuXHRcdFx0cGlubmVkOiBAbW9kZWwuZ2V0KCBcInBpbm5lZFwiICkgb3IgZmFsc2Vcblx0XHRcdFx0XG5cdFx0QCRzdWIgPSBAJCggXCIuc3Vic2VsZWN0XCIgKVxuXHRcdEAkcmVzdWx0cyA9IEAkKCBcIi5zdWJyZXN1bHRzXCIgKVxuXG5cdFx0QGdlbmVyYXRlU3ViKCBpbml0aWFsQWRkIClcblx0XHRyZXR1cm4gQGVsXG5cdFxuXHRyZW9wZW46ICggZXZudCApPT5cblx0XHRpZiBldm50PyBhbmQgJCggZXZudC50YXJnZXQgKS5pcyggXCIucm0tcmVzdWx0LWJ0blwiICkgYW5kIEBzZWxlY3R2aWV3Py5ybVJlcz9cblx0XHRcdEBzZWxlY3R2aWV3LnJtUmVzKCBldm50IClcblx0XHRcdGV2bnQucHJldmVudERlZmF1bHQoKVxuXHRcdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRpZiBldm50PyBhbmQgJCggZXZudC50YXJnZXQgKS5pcyggXCIuZWRpdC1yZXN1bHQtYnRuXCIgKSBhbmQgQHNlbGVjdHZpZXc/LmVkaXRSZXM/XG5cdFx0XHRAc2VsZWN0dmlldy5lZGl0UmVzKCBldm50IClcblx0XHRcdGV2bnQucHJldmVudERlZmF1bHQoKVxuXHRcdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRpZiBub3QgQF9pc09wZW4gYW5kIEBzZWxlY3R2aWV3P1xuXHRcdFx0QHNlbGVjdHZpZXcucmVvcGVuKCBAIClcblx0XHRldm50Py5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0ZXZudD8uc3RvcFByb3BhZ2F0aW9uKClcblx0XHRAdHJpZ2dlciggXCJyZW9wZW5cIiApXG5cdFx0cmV0dXJuXG5cdFx0XG5cdGRlbDogKCBldm50ICk9PlxuXHRcdGlmIEBtb2RlbC5nZXQoIFwicGlubmVkXCIgKVxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRldm50Py5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdGV2bnQ/LnByZXZlbnREZWZhdWx0KClcblx0XHRAY29sbGVjdGlvbi50cmlnZ2VyKCBcImlnZ3k6cmVtXCIsIEBtb2RlbCApXG5cdFx0QGNvbGxlY3Rpb24uYWRkKCBAbW9kZWwgKVxuXHRcdEByZW1vdmUoKVxuXHRcdEB0cmlnZ2VyKCBcImNsb3NlZFwiIClcblx0XHRyZXR1cm4gZmFsc2VcblxuXHRyZW1vdmU6ID0+XG5cdFx0QF9pc09wZW4gPSBmYWxzZVxuXHRcdEBzZWxlY3R2aWV3Py5yZW1vdmUoKVxuXHRcdEBwYXJlbnQgPSBudWxsXG5cdFx0cmV0dXJuIHN1cGVyXG5cblx0c2VsZWN0ZWQ6ICggb3B0TWRsICk9PlxuXHRcdEByZXN1bHQuYWRkKCBvcHRNZGwsIHsgbWVyZ2U6IHRydWUgfSApXG5cdFx0QHJlbmRlclJlc3VsdCgpXG5cdFx0QHRyaWdnZXIoIFwic2VsZWN0ZWRcIiwgQG1vZGVsLCBAc2VsZWN0dmlldy5nZXRSZXN1bHRzKCkgKVxuXHRcdHJldHVyblxuXHRcblx0cmVtb3ZlZDogKCBvcHRNZGwgKT0+XG5cdFx0QHJlc3VsdC5yZW1vdmUoIG9wdE1kbCApXG5cdFx0QHJlbmRlclJlc3VsdCgpXG5cdFx0QHRyaWdnZXIoIFwic2VsZWN0ZWRcIiwgQG1vZGVsLCBAc2VsZWN0dmlldy5nZXRSZXN1bHRzKCkgKVxuXHRcdFxuXHRcdCMgcmVtb3ZlIGZhY2V0IGlmIGNvbnRlbnQgbGVuZ3RoIG9yIHRoZSBmYWNldCBpcyBpbiBlZGl0TW9kZVxuXHRcdGlmIEByZXN1bHQubGVuZ3RoIDw9IDAgYW5kIG5vdCBAc2VsZWN0dmlldy5lZGl0TW9kZVxuXHRcdFx0QGRlbCgpXG5cdFx0cmV0dXJuXG5cblx0cmVuZGVyUmVzdWx0OiA9PlxuXHRcdEAkcmVzdWx0cy5odG1sKCBAc2VsZWN0dmlldy5yZW5kZXJSZXN1bHQoKSApXG5cdFx0cmV0dXJuXG5cblx0aXNPcGVuOiA9PlxuXHRcdHJldHVybiBAc2VsZWN0dmlldz9cblxuXHRmb2N1czogPT5cblx0XHRpZiBAc2VsZWN0dmlldz9cblx0XHRcdEBzZWxlY3R2aWV3Py5mb2N1cygpXG5cdFx0XHRyZXR1cm5cblx0XHRAb3BlbigpXG5cdFx0cmV0dXJuXG5cblx0Y2xvc2U6ID0+XG5cdFx0QF9pc09wZW4gPSBmYWxzZVxuXHRcdGlmIEBzZWxlY3R2aWV3P1xuXHRcdFx0QHNlbGVjdHZpZXc/Lm9mZigpXG5cdFx0XHRAc2VsZWN0dmlldz8uY2xvc2UoKVxuXHRcdFx0cmV0dXJuXG5cdFx0cmV0dXJuXG5cblx0Z2VuZXJhdGVTdWI6ICggaW5pdGlhbEFkZCApPT5cblx0XHRpZiBAc2VsZWN0dmlldz9cblx0XHRcdEBhdHRhY2hTdWJFdmVudHMoKVxuXHRcdFx0cmV0dXJuIEBzZWxlY3R2aWV3XG5cdFx0XHRcblx0XHRAc2VsZWN0dmlldyA9IG5ldyBAbW9kZWwuU3ViVmlldyggc3ViOiBALCBtb2RlbDogQG1vZGVsLCBlbDogQCRzdWIgKVxuXHRcdEBhdHRhY2hTdWJFdmVudHMoKVxuXHRcdFx0XG5cdFx0QCRlbC5hcHBlbmQoIEBzZWxlY3R2aWV3LnJlbmRlciggaW5pdGlhbEFkZCApIClcblx0XHRpZiBAbW9kZWw/LmdldCggXCJ2YWx1ZVwiICk/XG5cdFx0XHRAc2VsZWN0dmlldy5zZWxlY3QoKVxuXHRcdHJldHVyblxuXHRcdFxuXHRhdHRhY2hTdWJFdmVudHM6ID0+XG5cdFx0QHNlbGVjdHZpZXcub24gXCJjbG9zZWRcIiwgKCByZXN1bHQgKT0+XG5cdFx0XHQjY29uc29sZS5sb2cgXCJTdWIgY2xvc2VkXCIsIEBzZWxlY3R2aWV3Lm1vZGVsLmlkXG5cdFx0XHRAX2lzT3BlbiA9IGZhbHNlXG5cdFx0XHRcblx0XHRcdGlmIEBtb2RlbC5nZXQoIFwicGlubmVkXCIgKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdCNAc2VsZWN0dmlldy5vZmYoKVxuXHRcdFx0QHNlbGVjdHZpZXcucmVtb3ZlKCkgaWYgbm90IHJlc3VsdC5sZW5ndGhcblx0XHRcdCNAc2VsZWN0dmlldyA9IG51bGxcblx0XHRcdEB0cmlnZ2VyKCBcImNsb3NlZFwiLCByZXN1bHQgKVxuXHRcdFx0QHJlbW92ZSgpIGlmIG5vdCByZXN1bHQubGVuZ3RoXG5cdFx0XHRyZXR1cm5cblxuXHRcdEBzZWxlY3R2aWV3Lm9uIFwic2VsZWN0ZWRcIiwgKCBtZGwgKT0+XG5cdFx0XHRpZiBtZGxcblx0XHRcdFx0QHNlbGVjdGVkKCBtZGwgKVxuXHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0QHNlbGVjdHZpZXcub24gXCJyZW1vdmVkXCIsICggbWRsICk9PlxuXHRcdFx0aWYgbWRsXG5cdFx0XHRcdEByZW1vdmVkKCBtZGwgKVxuXHRcdFx0cmV0dXJuXG5cdFx0cmV0dXJuXG5cdFx0XG5cdG9wZW46ID0+XG5cdFx0QGdlbmVyYXRlU3ViKClcblxuXHRcdEBzZWxlY3R2aWV3Py5mb2N1cygpXG5cdFx0QF9pc09wZW4gPSB0cnVlXG5cdFx0XG5cdFx0IyBAcGFyZW50LnN1YnZpZXcgPSBAXG5cdFx0IyBAcGFyZW50LnNlbGVjdHZpZXcgPSBAc2VsZWN0dmlld1xuXHRcdHJldHVyblxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXdTdWJcbiIsIiIsIihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PVwib2JqZWN0XCImJnR5cGVvZiBtb2R1bGUhPT1cInVuZGVmaW5lZFwiKXttb2R1bGUuZXhwb3J0cz1mKCl9ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09XCJ1bmRlZmluZWRcIil7Zz1nbG9iYWx9ZWxzZSBpZih0eXBlb2Ygc2VsZiE9PVwidW5kZWZpbmVkXCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLmphZGUgPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTWVyZ2UgdHdvIGF0dHJpYnV0ZSBvYmplY3RzIGdpdmluZyBwcmVjZWRlbmNlXG4gKiB0byB2YWx1ZXMgaW4gb2JqZWN0IGBiYC4gQ2xhc3NlcyBhcmUgc3BlY2lhbC1jYXNlZFxuICogYWxsb3dpbmcgZm9yIGFycmF5cyBhbmQgbWVyZ2luZy9qb2luaW5nIGFwcHJvcHJpYXRlbHlcbiAqIHJlc3VsdGluZyBpbiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYVxuICogQHBhcmFtIHtPYmplY3R9IGJcbiAqIEByZXR1cm4ge09iamVjdH0gYVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5tZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICB2YXIgYXR0cnMgPSBhWzBdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgYXR0cnMgPSBtZXJnZShhdHRycywgYVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBhdHRycztcbiAgfVxuICB2YXIgYWMgPSBhWydjbGFzcyddO1xuICB2YXIgYmMgPSBiWydjbGFzcyddO1xuXG4gIGlmIChhYyB8fCBiYykge1xuICAgIGFjID0gYWMgfHwgW107XG4gICAgYmMgPSBiYyB8fCBbXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWMpKSBhYyA9IFthY107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGJjKSkgYmMgPSBbYmNdO1xuICAgIGFbJ2NsYXNzJ10gPSBhYy5jb25jYXQoYmMpLmZpbHRlcihudWxscyk7XG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gYikge1xuICAgIGlmIChrZXkgIT0gJ2NsYXNzJykge1xuICAgICAgYVtrZXldID0gYltrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgbnVsbCBgdmFsYHMuXG4gKlxuICogQHBhcmFtIHsqfSB2YWxcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBudWxscyh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPSBudWxsICYmIHZhbCAhPT0gJyc7XG59XG5cbi8qKlxuICogam9pbiBhcnJheSBhcyBjbGFzc2VzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydHMuam9pbkNsYXNzZXMgPSBqb2luQ2xhc3NlcztcbmZ1bmN0aW9uIGpvaW5DbGFzc2VzKHZhbCkge1xuICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbC5tYXAoam9pbkNsYXNzZXMpIDpcbiAgICAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSA/IE9iamVjdC5rZXlzKHZhbCkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHZhbFtrZXldOyB9KSA6XG4gICAgW3ZhbF0pLmZpbHRlcihudWxscykuam9pbignICcpO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgZ2l2ZW4gY2xhc3Nlcy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBjbGFzc2VzXG4gKiBAcGFyYW0ge0FycmF5LjxCb29sZWFuPn0gZXNjYXBlZFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnRzLmNscyA9IGZ1bmN0aW9uIGNscyhjbGFzc2VzLCBlc2NhcGVkKSB7XG4gIHZhciBidWYgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGVzY2FwZWQgJiYgZXNjYXBlZFtpXSkge1xuICAgICAgYnVmLnB1c2goZXhwb3J0cy5lc2NhcGUoam9pbkNsYXNzZXMoW2NsYXNzZXNbaV1dKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWYucHVzaChqb2luQ2xhc3NlcyhjbGFzc2VzW2ldKSk7XG4gICAgfVxuICB9XG4gIHZhciB0ZXh0ID0gam9pbkNsYXNzZXMoYnVmKTtcbiAgaWYgKHRleHQubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcgY2xhc3M9XCInICsgdGV4dCArICdcIic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5cbmV4cG9ydHMuc3R5bGUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsKS5tYXAoZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICByZXR1cm4gc3R5bGUgKyAnOicgKyB2YWxbc3R5bGVdO1xuICAgIH0pLmpvaW4oJzsnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG59O1xuLyoqXG4gKiBSZW5kZXIgdGhlIGdpdmVuIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGVzY2FwZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdGVyc2VcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZXhwb3J0cy5hdHRyID0gZnVuY3Rpb24gYXR0cihrZXksIHZhbCwgZXNjYXBlZCwgdGVyc2UpIHtcbiAgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xuICAgIHZhbCA9IGV4cG9ydHMuc3R5bGUodmFsKTtcbiAgfVxuICBpZiAoJ2Jvb2xlYW4nID09IHR5cGVvZiB2YWwgfHwgbnVsbCA9PSB2YWwpIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICByZXR1cm4gJyAnICsgKHRlcnNlID8ga2V5IDoga2V5ICsgJz1cIicgKyBrZXkgKyAnXCInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSBlbHNlIGlmICgwID09IGtleS5pbmRleE9mKCdkYXRhJykgJiYgJ3N0cmluZycgIT0gdHlwZW9mIHZhbCkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpLmluZGV4T2YoJyYnKSAhPT0gLTEpIHtcbiAgICAgIGNvbnNvbGUud2FybignU2luY2UgSmFkZSAyLjAuMCwgYW1wZXJzYW5kcyAoYCZgKSBpbiBkYXRhIGF0dHJpYnV0ZXMgJyArXG4gICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgZXNjYXBlZCB0byBgJmFtcDtgJyk7XG4gICAgfTtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwudG9JU09TdHJpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2FybignSmFkZSB3aWxsIGVsaW1pbmF0ZSB0aGUgZG91YmxlIHF1b3RlcyBhcm91bmQgZGF0ZXMgaW4gJyArXG4gICAgICAgICAgICAgICAgICAgJ0lTTyBmb3JtIGFmdGVyIDIuMC4wJyk7XG4gICAgfVxuICAgIHJldHVybiAnICcgKyBrZXkgKyBcIj0nXCIgKyBKU09OLnN0cmluZ2lmeSh2YWwpLnJlcGxhY2UoLycvZywgJyZhcG9zOycpICsgXCInXCI7XG4gIH0gZWxzZSBpZiAoZXNjYXBlZCkge1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbC50b0lTT1N0cmluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKCdKYWRlIHdpbGwgc3RyaW5naWZ5IGRhdGVzIGluIElTTyBmb3JtIGFmdGVyIDIuMC4wJyk7XG4gICAgfVxuICAgIHJldHVybiAnICcgKyBrZXkgKyAnPVwiJyArIGV4cG9ydHMuZXNjYXBlKHZhbCkgKyAnXCInO1xuICB9IGVsc2Uge1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbC50b0lTT1N0cmluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKCdKYWRlIHdpbGwgc3RyaW5naWZ5IGRhdGVzIGluIElTTyBmb3JtIGFmdGVyIDIuMC4wJyk7XG4gICAgfVxuICAgIHJldHVybiAnICcgKyBrZXkgKyAnPVwiJyArIHZhbCArICdcIic7XG4gIH1cbn07XG5cbi8qKlxuICogUmVuZGVyIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0ge09iamVjdH0gZXNjYXBlZFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnRzLmF0dHJzID0gZnVuY3Rpb24gYXR0cnMob2JqLCB0ZXJzZSl7XG4gIHZhciBidWYgPSBbXTtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cbiAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXVxuICAgICAgICAsIHZhbCA9IG9ialtrZXldO1xuXG4gICAgICBpZiAoJ2NsYXNzJyA9PSBrZXkpIHtcbiAgICAgICAgaWYgKHZhbCA9IGpvaW5DbGFzc2VzKHZhbCkpIHtcbiAgICAgICAgICBidWYucHVzaCgnICcgKyBrZXkgKyAnPVwiJyArIHZhbCArICdcIicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWYucHVzaChleHBvcnRzLmF0dHIoa2V5LCB2YWwsIGZhbHNlLCB0ZXJzZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWYuam9pbignJyk7XG59O1xuXG4vKipcbiAqIEVzY2FwZSB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGBodG1sYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxudmFyIGphZGVfZW5jb2RlX2h0bWxfcnVsZXMgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7J1xufTtcbnZhciBqYWRlX21hdGNoX2h0bWwgPSAvWyY8PlwiXS9nO1xuXG5mdW5jdGlvbiBqYWRlX2VuY29kZV9jaGFyKGMpIHtcbiAgcmV0dXJuIGphZGVfZW5jb2RlX2h0bWxfcnVsZXNbY10gfHwgYztcbn1cblxuZXhwb3J0cy5lc2NhcGUgPSBqYWRlX2VzY2FwZTtcbmZ1bmN0aW9uIGphZGVfZXNjYXBlKGh0bWwpe1xuICB2YXIgcmVzdWx0ID0gU3RyaW5nKGh0bWwpLnJlcGxhY2UoamFkZV9tYXRjaF9odG1sLCBqYWRlX2VuY29kZV9jaGFyKTtcbiAgaWYgKHJlc3VsdCA9PT0gJycgKyBodG1sKSByZXR1cm4gaHRtbDtcbiAgZWxzZSByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBSZS10aHJvdyB0aGUgZ2l2ZW4gYGVycmAgaW4gY29udGV4dCB0byB0aGVcbiAqIHRoZSBqYWRlIGluIGBmaWxlbmFtZWAgYXQgdGhlIGdpdmVuIGBsaW5lbm9gLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gbGluZW5vXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnJldGhyb3cgPSBmdW5jdGlvbiByZXRocm93KGVyciwgZmlsZW5hbWUsIGxpbmVubywgc3RyKXtcbiAgaWYgKCEoZXJyIGluc3RhbmNlb2YgRXJyb3IpKSB0aHJvdyBlcnI7XG4gIGlmICgodHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyB8fCAhZmlsZW5hbWUpICYmICFzdHIpIHtcbiAgICBlcnIubWVzc2FnZSArPSAnIG9uIGxpbmUgJyArIGxpbmVubztcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgdHJ5IHtcbiAgICBzdHIgPSBzdHIgfHwgcmVxdWlyZSgnZnMnKS5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsICd1dGY4JylcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXRocm93KGVyciwgbnVsbCwgbGluZW5vKVxuICB9XG4gIHZhciBjb250ZXh0ID0gM1xuICAgICwgbGluZXMgPSBzdHIuc3BsaXQoJ1xcbicpXG4gICAgLCBzdGFydCA9IE1hdGgubWF4KGxpbmVubyAtIGNvbnRleHQsIDApXG4gICAgLCBlbmQgPSBNYXRoLm1pbihsaW5lcy5sZW5ndGgsIGxpbmVubyArIGNvbnRleHQpO1xuXG4gIC8vIEVycm9yIGNvbnRleHRcbiAgdmFyIGNvbnRleHQgPSBsaW5lcy5zbGljZShzdGFydCwgZW5kKS5tYXAoZnVuY3Rpb24obGluZSwgaSl7XG4gICAgdmFyIGN1cnIgPSBpICsgc3RhcnQgKyAxO1xuICAgIHJldHVybiAoY3VyciA9PSBsaW5lbm8gPyAnICA+ICcgOiAnICAgICcpXG4gICAgICArIGN1cnJcbiAgICAgICsgJ3wgJ1xuICAgICAgKyBsaW5lO1xuICB9KS5qb2luKCdcXG4nKTtcblxuICAvLyBBbHRlciBleGNlcHRpb24gbWVzc2FnZVxuICBlcnIucGF0aCA9IGZpbGVuYW1lO1xuICBlcnIubWVzc2FnZSA9IChmaWxlbmFtZSB8fCAnSmFkZScpICsgJzonICsgbGluZW5vXG4gICAgKyAnXFxuJyArIGNvbnRleHQgKyAnXFxuXFxuJyArIGVyci5tZXNzYWdlO1xuICB0aHJvdyBlcnI7XG59O1xuXG5leHBvcnRzLkRlYnVnSXRlbSA9IGZ1bmN0aW9uIERlYnVnSXRlbShsaW5lbm8sIGZpbGVuYW1lKSB7XG4gIHRoaXMubGluZW5vID0gbGluZW5vO1xuICB0aGlzLmZpbGVuYW1lID0gZmlsZW5hbWU7XG59XG5cbn0se1wiZnNcIjoyfV0sMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5cbn0se31dfSx7fSxbMV0pKDEpXG59KTsiLCIoZnVuY3Rpb24oKSB7XG4gIHZhciBfZ2V0S2V5LCBpc0FycmF5LCB0b1N0cmluZztcblxuICB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG4gIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKGFycikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gIH07XG5cbiAgX2dldEtleSA9IGZ1bmN0aW9uKGVsLCBrZXkpIHtcbiAgICByZXR1cm4gZWxba2V5XTtcbiAgfTtcblxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleXMsIGZvcndhcmQsIGdldEtleSkge1xuICAgIHZhciBmbnNvcnQsIHJlZjtcbiAgICBpZiAoZm9yd2FyZCA9PSBudWxsKSB7XG4gICAgICBmb3J3YXJkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGdldEtleSA9PSBudWxsKSB7XG4gICAgICBnZXRLZXkgPSBfZ2V0S2V5O1xuICAgIH1cbiAgICBpZiAoIWlzQXJyYXkoa2V5cykpIHtcbiAgICAgIGtleXMgPSBba2V5c107XG4gICAgfVxuICAgIGZuc29ydCA9IGZ1bmN0aW9uKGZvcndhcmQsIGtleSwgbmV4dGtleXMpIHtcbiAgICAgIHZhciBfZndyZCwgX2ssIG5leHRTb3J0LCByZWY7XG4gICAgICBpZiAobmV4dGtleXMgIT0gbnVsbCA/IG5leHRrZXlzLmxlbmd0aCA6IHZvaWQgMCkge1xuICAgICAgICBfayA9IChyZWYgPSBuZXh0a2V5cy5zcGxpY2UoMCwgMSkpICE9IG51bGwgPyByZWZbMF0gOiB2b2lkIDA7XG4gICAgICAgIGlmIChfayAhPSBudWxsKSB7XG4gICAgICAgICAgbmV4dFNvcnQgPSBmbnNvcnQoZm9yd2FyZCwgX2ssIG5leHRrZXlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2Z3cmQgPSAoZm9yd2FyZFtrZXldICE9IG51bGwgPyBmb3J3YXJkW2tleV0gOiAoZm9yd2FyZFtcIj9cIl0gIT0gbnVsbCA/IGZvcndhcmRbXCI/XCJdIDogZm9yd2FyZCkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGVsQSwgZWxCKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIF9hID0gZ2V0S2V5KGVsQSwga2V5KTtcbiAgICAgICAgX2IgPSBnZXRLZXkoZWxCLCBrZXkpO1xuICAgICAgICBpZiAoX2EgPCBfYikge1xuICAgICAgICAgIGlmIChfZndyZCkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoX2EgPiBfYikge1xuICAgICAgICAgIGlmIChfZndyZCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoX2EgPT09IF9iKSB7XG4gICAgICAgICAgaWYgKG5leHRTb3J0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0U29ydChlbEEsIGVsQik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBmbnNvcnQoZm9yd2FyZCwgKHJlZiA9IGtleXMuc3BsaWNlKDAsIDEpKSAhPSBudWxsID8gcmVmWzBdIDogdm9pZCAwLCBrZXlzKTtcbiAgfTtcblxufSkuY2FsbCh0aGlzKTtcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJfc3JjL2pzL21haW4uY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvYmFja2JvbmVfc3ViLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2FycmF5LmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2Jhc2UuY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvZmFjZXRfZGF0ZXJhbmdlLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X2V2ZW50LmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0X251bWJlci5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9mYWNldF9yYW5nZS5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9mYWNldF9zZWxlY3QuY29mZmVlIiwiX3NyYy9qcy9tb2RlbHMvZmFjZXRfc3RyaW5nLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL2ZhY2V0cy5jb2ZmZWUiLCJfc3JjL2pzL21vZGVscy9yZXN1bHRzLmNvZmZlZSIsIl9zcmMvanMvbW9kZWxzL3N1YnJlc3VsdHMuY29mZmVlIiwiX3NyYy9qcy90bXBscy9hcnJheV9yZXN1bHRsaS5qYWRlIiwiX3NyYy9qcy90bXBscy9kYXRlcmFuZ2UuamFkZSIsIl9zcmMvanMvdG1wbHMvbnVtYmVyLmphZGUiLCJfc3JjL2pzL3RtcGxzL3JhbmdlLmphZGUiLCJfc3JjL2pzL3RtcGxzL3Jlc3VsdF9iYXNlLmphZGUiLCJfc3JjL2pzL3RtcGxzL3NlbGVjdC5qYWRlIiwiX3NyYy9qcy90bXBscy9zZWxlY3Rvci5qYWRlIiwiX3NyYy9qcy90bXBscy9zZWxlY3RvcmxpLmphZGUiLCJfc3JjL2pzL3RtcGxzL3N0cmluZy5qYWRlIiwiX3NyYy9qcy90bXBscy9zdWIuamFkZSIsIl9zcmMvanMvdG1wbHMvd3JhcHBlci5qYWRlIiwiX3NyYy9qcy91dGlscy9rZXljb2Rlcy5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9iYXNlLmNvZmZlZSIsIl9zcmMvanMvdmlld3MvZmFjZXRzL2RhdGVyYW5nZS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9udW1iZXJfYmFzZS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9zdWJhcnJheS5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL2ZhY2V0cy9zdWJudW1iZXIuY29mZmVlIiwiX3NyYy9qcy92aWV3cy9mYWNldHMvc3VicmFuZ2UuY29mZmVlIiwiX3NyYy9qcy92aWV3cy9mYWNldHMvc3Vic2VsZWN0LmNvZmZlZSIsIl9zcmMvanMvdmlld3MvZmFjZXRzL3N1YnN0cmluZy5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL21haW4uY29mZmVlIiwiX3NyYy9qcy92aWV3cy9zZWxlY3Rvci5jb2ZmZWUiLCJfc3JjL2pzL3ZpZXdzL3N1Yi5jb2ZmZWUiLCJub2RlX21vZHVsZXMvYnJvd3Nlci1yZXNvbHZlL2VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL2phZGUvcnVudGltZS5qcyIsIm5vZGVfbW9kdWxlcy9zb3J0Y29sbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBLElBQUEsc0hBQUE7RUFBQTs7OztBQUFBLFFBQUEsR0FBVyxPQUFBLENBQVMsY0FBVDs7QUFDWCxNQUFBLEdBQVMsT0FBQSxDQUFTLGlCQUFUOztBQUNULFNBQUEsR0FBWSxPQUFBLENBQVMsdUJBQVQ7O0FBQ1osUUFBQSxHQUFXLE9BQUEsQ0FBUyxzQkFBVDs7QUFDWCxTQUFBLEdBQVksT0FBQSxDQUFTLHVCQUFUOztBQUNaLFNBQUEsR0FBWSxPQUFBLENBQVMsdUJBQVQ7O0FBQ1osUUFBQSxHQUFXLE9BQUEsQ0FBUyxzQkFBVDs7QUFDWCxZQUFBLEdBQWUsT0FBQSxDQUFTLDBCQUFUOztBQUNmLFFBQUEsR0FBVyxPQUFBLENBQVMsc0JBQVQ7O0FBQ1gsT0FBQSxHQUFVLE9BQUEsQ0FBUyxrQkFBVDs7QUFFVixRQUFBLEdBQVc7O0FBRUw7OztpQkFDTCxDQUFBLEdBQUc7O0VBQ1UsY0FBRSxFQUFGLEVBQU0sTUFBTixFQUFtQixPQUFuQjs7TUFBTSxTQUFTOzs7TUFBSSxVQUFVOzs7Ozs7Ozs7OztJQUN6QyxDQUFDLENBQUMsTUFBRixDQUFTLElBQVQsRUFBWSxRQUFRLENBQUMsTUFBckI7SUFDQSxJQUFDLENBQUEsV0FBRCxDQUFBO0lBR0EsSUFBQyxDQUFBLEdBQUQsR0FBTyxJQUFDLENBQUEsVUFBRCxDQUFhLEVBQWI7SUFDUCxJQUFDLENBQUEsRUFBRCxHQUFNLElBQUMsQ0FBQSxHQUFJLENBQUEsQ0FBQTtJQUNYLElBQUMsQ0FBQSxHQUFHLENBQUMsSUFBTCxDQUFXLE1BQVgsRUFBbUIsSUFBbkI7SUFHQSxJQUFDLENBQUEsTUFBRCxHQUFVLElBQUMsQ0FBQSxjQUFELENBQWlCLE1BQWpCLEVBQXlCLE9BQXpCO0lBQ1YsSUFBQyxDQUFBLE9BQUQsR0FBZSxJQUFBLE9BQUEsQ0FBUyxJQUFULEVBQWUsT0FBZjtJQUVmLElBQUMsQ0FBQSxPQUFPLENBQUMsRUFBVCxDQUFZLEtBQVosRUFBbUIsSUFBQyxDQUFBLGFBQXBCO0lBQ0EsSUFBQyxDQUFBLE9BQU8sQ0FBQyxFQUFULENBQVksUUFBWixFQUFzQixJQUFDLENBQUEsYUFBdkI7SUFDQSxJQUFDLENBQUEsT0FBTyxDQUFDLEVBQVQsQ0FBWSxRQUFaLEVBQXNCLElBQUMsQ0FBQSxhQUF2QjtJQUVBLElBQUMsQ0FBQSxJQUFELEdBQVksSUFBQSxRQUFBLENBQVU7TUFBQSxJQUFBLEVBQU0sSUFBTjtNQUFTLEVBQUEsRUFBSSxJQUFDLENBQUEsR0FBZDtNQUFtQixVQUFBLEVBQVksSUFBQyxDQUFBLE1BQWhDO01BQXdDLE9BQUEsRUFBUyxJQUFDLENBQUEsT0FBbEQ7TUFBMkQsWUFBQSxFQUFjLE9BQU8sQ0FBQyxZQUFqRjtNQUErRixHQUFBLEVBQUssUUFBQSxFQUFwRztLQUFWO0lBRVosSUFBQyxDQUFBLElBQUksQ0FBQyxFQUFOLENBQVMsY0FBVCxFQUF5QixJQUFDLENBQUEsWUFBMUI7SUFFQSxJQUFDLENBQUEsZUFBRCxHQUFtQixJQUFDLENBQUEsT0FBTyxDQUFDLEdBQVQsQ0FBYyxJQUFDLENBQUEsWUFBZjtBQUNuQjtFQXRCWTs7aUJBd0JiLFVBQUEsR0FBWSxTQUFFLEVBQUY7QUFFWCxRQUFBO0lBQUEsSUFBTyxVQUFQO0FBQ0MsWUFBTSxJQUFDLENBQUEsTUFBRCxDQUFTLFlBQVQsRUFEUDs7SUFHQSxJQUFHLENBQUMsQ0FBQyxRQUFGLENBQVksRUFBWixDQUFIO01BQ0MsSUFBRyxDQUFJLEVBQUUsQ0FBQyxNQUFWO0FBQ0MsY0FBTSxJQUFDLENBQUEsTUFBRCxDQUFTLGdCQUFULEVBRFA7O01BR0EsSUFBQSxHQUFPLElBQUMsQ0FBQSxDQUFELENBQUksRUFBSjtNQUNQLElBQUcsaUJBQUksSUFBSSxDQUFFLGdCQUFiO0FBQ0MsY0FBTSxJQUFDLENBQUEsTUFBRCxDQUFTLGtCQUFULEVBRFA7O0FBR0EsYUFBTyxLQVJSOztJQVVBLElBQUcsRUFBQSxZQUFjLE1BQWpCO01BQ0MsSUFBRyxDQUFJLEVBQUUsQ0FBQyxNQUFWO0FBQ0MsY0FBTSxJQUFDLENBQUEsTUFBRCxDQUFTLGdCQUFULEVBRFA7O01BSUEsSUFBRyxFQUFFLENBQUMsTUFBSCxHQUFZLENBQWY7QUFDQyxjQUFNLElBQUMsQ0FBQSxNQUFELENBQVMsZUFBVCxFQURQOztBQUdBLGFBQU8sR0FSUjs7SUFVQSxJQUFHLEVBQUEsWUFBYyxPQUFqQjtBQUNDLGFBQU8sSUFBQyxDQUFBLENBQUQsQ0FBSSxFQUFKLEVBRFI7O0FBR0EsVUFBTSxJQUFDLENBQUEsTUFBRCxDQUFTLGdCQUFUO0VBNUJLOztpQkFnQ1osY0FBQSxHQUFnQixTQUFFLE1BQUYsRUFBVSxPQUFWO0FBQ2YsUUFBQTs7TUFEeUIsVUFBUTs7SUFDakMsSUFBQSxHQUFPO0FBQ1AsU0FBQSxzREFBQTs7WUFBK0I7OztNQUM5QixJQUFJLENBQUMsSUFBTCxHQUFZO01BQ1osSUFBSSxDQUFDLElBQUwsQ0FBVSxJQUFWO0FBRkQ7QUFJQSxXQUFXLElBQUEsTUFBQSxDQUFRLElBQVIsRUFBYyxPQUFkO0VBTkk7O2lCQVFoQixZQUFBLEdBQWMsU0FBRSxLQUFGO0FBQ2IsWUFBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVgsQ0FBQSxDQUFQO0FBQUEsV0FDTSxRQUROO0FBQ29CLGVBQVcsSUFBQSxTQUFBLENBQVcsS0FBWCxFQUFrQjtVQUFBLElBQUEsRUFBTSxJQUFOO1NBQWxCO0FBRC9CLFdBRU0sUUFGTjtBQUVvQixlQUFXLElBQUEsU0FBQSxDQUFXLEtBQVgsRUFBa0I7VUFBQSxJQUFBLEVBQU0sSUFBTjtTQUFsQjtBQUYvQixXQUdNLE9BSE47QUFHbUIsZUFBVyxJQUFBLFFBQUEsQ0FBVSxLQUFWLEVBQWlCO1VBQUEsSUFBQSxFQUFNLElBQU47U0FBakI7QUFIOUIsV0FJTSxRQUpOO0FBSW9CLGVBQVcsSUFBQSxTQUFBLENBQVcsS0FBWCxFQUFrQjtVQUFBLElBQUEsRUFBTSxJQUFOO1NBQWxCO0FBSi9CLFdBS00sT0FMTjtBQUttQixlQUFXLElBQUEsUUFBQSxDQUFVLEtBQVYsRUFBaUI7VUFBQSxJQUFBLEVBQU0sSUFBTjtTQUFqQjtBQUw5QixXQU1NLFdBTk47QUFNdUIsZUFBVyxJQUFBLFlBQUEsQ0FBYyxLQUFkLEVBQXFCO1VBQUEsSUFBQSxFQUFNLElBQU47U0FBckI7QUFObEMsV0FPTSxPQVBOO0FBT21CLGVBQVcsSUFBQSxRQUFBLENBQVUsS0FBVixFQUFpQjtVQUFBLElBQUEsRUFBTSxJQUFOO1NBQWpCO0FBUDlCO0VBRGE7O2lCQVVkLFFBQUEsR0FBVSxTQUFFLEtBQUY7QUFDVCxRQUFBO0lBQUEsSUFBTyxtQkFBUDtBQUNDLGFBREQ7O0lBRUEsSUFBRyx5Q0FBSDtNQUNDLElBQUMsQ0FBQSxNQUFNLENBQUMsR0FBUixDQUFhLElBQWIsRUFERDs7QUFFQSxXQUFPO0VBTEU7O2lCQU9WLE1BQUEsR0FBUSxTQUFFLElBQUYsRUFBUSxJQUFSO0FBQ1AsUUFBQTs7TUFEZSxPQUFPOztJQUN0QixJQUFHLHlCQUFIO01BQ0MsSUFBQSxHQUFPLElBQUMsQ0FBQSxNQUFRLENBQUEsSUFBQSxDQUFULENBQWlCLElBQWpCLEVBRFI7S0FBQSxNQUFBO01BR0MsSUFBQSxHQUFPLElBSFI7O0lBSUEsSUFBQSxHQUFXLElBQUEsS0FBQSxDQUFBO0lBQ1gsSUFBSSxDQUFDLElBQUwsR0FBWTtJQUNaLElBQUksQ0FBQyxPQUFMLEdBQWU7QUFDZixXQUFPO0VBUkE7O2lCQVVSLFlBQUEsR0FBYyxTQUFFLEtBQUY7QUFDYixRQUFBO0lBQUEsRUFBQSxHQUFLLEtBQUssQ0FBQyxHQUFOLENBQVcsT0FBWDtJQUNMLElBQU8sVUFBUDtBQUNDLGFBQU8sTUFEUjs7SUFFQSxJQUFHLEVBQUUsQ0FBQyxNQUFILElBQWEsQ0FBaEI7QUFDQyxhQUFPLE1BRFI7O0FBR0EsV0FBTztFQVBNOztpQkFTZCxRQUFBLEdBQVUsU0FBQTtBQUNULFdBQU8sSUFBQyxDQUFBO0VBREM7O2lCQUdWLGFBQUEsR0FBZSxTQUFBO0lBQ2QsT0FBTyxDQUFDLEdBQVIsQ0FBWSxJQUFDLENBQUEsZUFBYjtJQUNBLFVBQUEsQ0FBWSxDQUFBLFNBQUEsS0FBQTthQUFBLFNBQUE7ZUFDWCxLQUFDLENBQUEsT0FBRCxDQUFVLFFBQVYsRUFBb0IsS0FBQyxDQUFBLGVBQXJCO01BRFc7SUFBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQVosRUFFRSxDQUZGO0VBRmM7O2lCQU9mLFlBQUEsR0FBYyxTQUFFLFNBQUY7SUFDYixVQUFBLENBQVksQ0FBQSxTQUFBLEtBQUE7YUFBQSxTQUFBO2VBQ1gsS0FBQyxDQUFBLE9BQUQsQ0FBVSxTQUFWLEVBQXFCLEtBQUMsQ0FBQSxlQUF0QjtNQURXO0lBQUEsQ0FBQSxDQUFBLENBQUEsSUFBQSxDQUFaLEVBRUUsQ0FGRjtFQURhOztpQkFNZCxXQUFBLEdBQWEsU0FBQTtBQUNaLFFBQUE7SUFBQSxJQUFDLENBQUEsTUFBRCxHQUFVO0FBQ1Y7QUFBQSxTQUFBLFNBQUE7O01BQ0MsSUFBQyxDQUFBLE1BQVEsQ0FBQSxFQUFBLENBQVQsR0FBZ0IsQ0FBQyxDQUFDLFFBQUYsQ0FBWSxLQUFaO0FBRGpCO0VBRlk7O2lCQU1iLE1BQUEsR0FBUSxTQUFBO1dBQ1A7TUFBQSxrQkFBQSxFQUFvQiwyRkFBcEI7TUFDQSxnQkFBQSxFQUFrQixzQ0FEbEI7TUFFQSxnQkFBQSxFQUFrQiwyREFGbEI7TUFHQSxlQUFBLEVBQWlCLDBEQUhqQjtNQUlBLGdCQUFBLEVBQWtCLDBFQUpsQjtNQUtBLFlBQUEsRUFBYyw2QkFMZDs7RUFETzs7OztHQTVIVSxRQUFRLENBQUM7O0FBb0k1QixNQUFNLENBQUMsT0FBUCxHQUFpQjs7Ozs7QUNqSmpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUEsV0FBQTtFQUFBOzs7OztBQXdCTTs7Ozs7Ozs7Ozs7QUFDTDs7Ozs7Ozs7Ozs7Ozs7O3dCQWNBLEdBQUEsR0FBSyxTQUFFLE1BQUY7QUFDSixRQUFBO0lBQUEsSUFBQyxDQUFBLGFBQUQsSUFBQyxDQUFBLFdBQWE7SUFDZCxRQUFBLEdBQVcsSUFBQyxDQUFBLGtCQUFELENBQXFCLE1BQXJCO0lBR1gsT0FBQSxHQUFVLElBQUMsQ0FBQSxNQUFELENBQVEsUUFBUjtJQUVWLElBQUEsR0FBVyxJQUFBLElBQUMsQ0FBQSxXQUFELENBQWMsT0FBZCxFQUF1QixJQUFDLENBQUEscUJBQUQsQ0FBQSxDQUF2QjtJQUVYLElBQUksQ0FBQyxVQUFMLEdBQWtCO0lBQ2xCLElBQUksQ0FBQyxTQUFMLEdBQWlCO0lBS2pCLElBQUMsQ0FBQSxFQUFELENBQUksUUFBSixFQUFjLENBQUMsQ0FBQyxJQUFGLENBQVEsU0FBRSxFQUFGO0FBQ3JCLFVBQUE7TUFBQSxLQUFBLEdBQVEsSUFBQyxDQUFBLFNBQUQsQ0FBWSxFQUFaO01BQ1IsS0FBQSxHQUFRO01BQ1IsSUFBRyxLQUFBLElBQVUsQ0FBSSxLQUFqQjtRQUNDLElBQUMsQ0FBQSxNQUFELENBQVMsRUFBVCxFQUREO09BQUEsTUFFSyxJQUFHLENBQUksS0FBSixJQUFjLEtBQWpCO1FBQ0osSUFBQyxDQUFBLEdBQUQsQ0FBTSxFQUFOLEVBREk7O0lBTGdCLENBQVIsRUFRWixJQVJZLENBQWQ7SUFXQSxJQUFJLENBQUMsRUFBTCxDQUFRLEtBQVIsRUFBZSxDQUFDLENBQUMsSUFBRixDQUFRLFNBQUUsRUFBRjtNQUN0QixJQUFDLENBQUEsR0FBRCxDQUFNLEVBQU47SUFEc0IsQ0FBUixFQUdiLElBSGEsQ0FBZjtJQU1BLElBQUMsQ0FBQSxFQUFELENBQUksS0FBSixFQUFXLENBQUMsQ0FBQyxJQUFGLENBQVEsU0FBRSxFQUFGO01BQ2xCLElBQUcsSUFBQyxDQUFBLFNBQUQsQ0FBWSxFQUFaLENBQUg7UUFDQyxJQUFDLENBQUEsR0FBRCxDQUFNLEVBQU4sRUFERDs7SUFEa0IsQ0FBUixFQUlULElBSlMsQ0FBWDtJQU9BLElBQUksQ0FBQyxFQUFMLENBQVEsUUFBUixFQUFrQixDQUFDLENBQUMsSUFBRixDQUFRLFNBQUUsRUFBRixHQUFBLENBQVIsRUFHaEIsSUFIZ0IsQ0FBbEI7SUFNQSxJQUFDLENBQUEsRUFBRCxDQUFJLFFBQUosRUFBYyxDQUFDLENBQUMsSUFBRixDQUFRLFNBQUUsRUFBRjtNQUNyQixJQUFDLENBQUEsTUFBRCxDQUFTLEVBQVQ7SUFEcUIsQ0FBUixFQUdaLElBSFksQ0FBZDtJQU1BLElBQUMsQ0FBQSxFQUFELENBQUksT0FBSixFQUFhLENBQUMsQ0FBQyxJQUFGLENBQVEsU0FBRSxFQUFGO01BQ3BCLElBQUMsQ0FBQSxlQUFELENBQUE7SUFEb0IsQ0FBUixFQUdYLElBSFcsQ0FBYjtJQU1BLElBQUMsQ0FBQSxRQUFRLENBQUMsSUFBVixDQUFnQixJQUFoQjtBQUVBLFdBQU87RUEzREg7OztBQTZETDs7Ozs7Ozs7Ozs7O3dCQVdBLHFCQUFBLEdBQXVCLFNBQUE7QUFDdEIsUUFBQTtJQUFBLEtBQUEsR0FDQztNQUFBLFVBQUEsRUFBWSxJQUFDLENBQUEsVUFBYjs7QUFDRCxXQUFPO0VBSGU7OztBQUt2Qjs7Ozs7Ozs7Ozs7Ozs7d0JBYUEsZUFBQSxHQUFpQixTQUFFLE1BQUYsRUFBVSxPQUFWO0FBQ2hCLFFBQUE7O01BRDBCLFVBQVU7O0lBQ3BDLElBQUcsdUJBQUg7TUFHQyxJQUE4QyxjQUE5QztRQUFBLElBQUMsQ0FBQSxTQUFELEdBQWEsSUFBQyxDQUFBLGtCQUFELENBQXFCLE1BQXJCLEVBQWI7O01BRUEsT0FBQSxHQUFVLElBQUMsQ0FBQSxVQUFVLENBQUMsTUFBWixDQUFvQixJQUFDLENBQUEsU0FBckI7TUFHVixJQUFHLE9BQUg7UUFDQyxJQUFDLENBQUEsS0FBRCxDQUFRLE9BQVI7QUFDQSxlQUFPLEtBRlI7O01BSUEsTUFBQSxHQUFTLENBQUMsQ0FBQyxLQUFGLENBQVMsT0FBVCxFQUFrQixLQUFsQjtNQUNULE9BQUEsR0FBVSxDQUFDLENBQUMsS0FBRixDQUFTLElBQUMsQ0FBQSxNQUFWLEVBQWtCLEtBQWxCO0FBQ1Y7QUFBQSxXQUFBLHFDQUFBOztRQUNDLElBQUMsQ0FBQSxNQUFELENBQVMsR0FBVDtBQUREO01BR0EsT0FBQSxHQUFVLENBQUMsQ0FBQyxVQUFGLENBQWMsTUFBZCxFQUFzQixPQUF0QjtBQUNWLFdBQUEsMkNBQUE7O21CQUF3QixHQUFHLENBQUMsR0FBSixFQUFBLGFBQVcsT0FBWCxFQUFBLElBQUE7VUFDdkIsSUFBQyxDQUFBLEdBQUQsQ0FBTSxHQUFOOztBQURELE9BbEJEOztBQXFCQSxXQUFPO0VBdEJTOzs7QUF5QmpCOzs7Ozs7Ozs7Ozs7Ozt3QkFhQSxrQkFBQSxHQUFvQixTQUFFLE1BQUY7QUFFbkIsUUFBQTtJQUFBLElBQUcsQ0FBQyxDQUFDLFVBQUYsQ0FBYyxNQUFkLENBQUg7TUFDQyxRQUFBLEdBQVcsT0FEWjtLQUFBLE1BRUssSUFBRyxDQUFDLENBQUMsT0FBRixDQUFXLE1BQVgsQ0FBSDtNQUNKLFFBQUEsR0FBVyxTQUFFLEVBQUY7QUFDVixZQUFBO3FCQUFBLEVBQUUsQ0FBQyxFQUFILEVBQUEsYUFBUyxNQUFULEVBQUEsR0FBQTtNQURVLEVBRFA7S0FBQSxNQUdBLElBQUcsQ0FBQyxDQUFDLFFBQUYsQ0FBWSxNQUFaLENBQUEsSUFBd0IsQ0FBQyxDQUFDLFFBQUYsQ0FBWSxNQUFaLENBQTNCO01BQ0osUUFBQSxHQUFXLFNBQUUsRUFBRjtlQUNWLEVBQUUsQ0FBQyxFQUFILEtBQVM7TUFEQyxFQURQO0tBQUEsTUFBQTtNQUlKLFFBQUEsR0FBVyxTQUFFLEVBQUY7QUFDVixZQUFBO0FBQUEsYUFBQSxhQUFBOztVQUNDLElBQUcsRUFBRSxDQUFDLEdBQUgsQ0FBUSxHQUFSLENBQUEsS0FBbUIsR0FBdEI7QUFDQyxtQkFBTyxNQURSOztBQUREO0FBR0EsZUFBTztNQUpHLEVBSlA7O0FBVUwsV0FBTztFQWpCWTs7OztHQS9JSyxRQUFRLENBQUM7O0FBa0tuQyxNQUFNLENBQUMsT0FBUCxHQUFpQjs7OztBQzFMakIsSUFBQSxRQUFBO0VBQUE7OztBQUFNOzs7Ozs7O3FCQUNMLE9BQUEsR0FBUyxPQUFBLENBQVMsMEJBQVQ7Ozs7R0FEYSxPQUFBLENBQVMsZ0JBQVQ7O0FBSXZCLE1BQU0sQ0FBQyxPQUFQLEdBQWlCOzs7O0FDSmpCLElBQUEsU0FBQTtFQUFBOzs7O0FBQU07OztzQkFDTCxXQUFBLEdBQWE7O3NCQUNiLE9BQUEsR0FBUyxPQUFBLENBQVMsc0JBQVQ7O0VBRUksbUJBQUUsS0FBRixFQUFTLE9BQVQ7OztJQUNaLElBQUMsQ0FBQSxJQUFELEdBQVEsT0FBTyxDQUFDO0lBQ2hCLDRDQUFBLFNBQUE7QUFDQTtFQUhZOztzQkFLYixRQUFBLEdBQVUsU0FBQTtXQUNUO01BQUEsSUFBQSxFQUFNLFFBQU47TUFDQSxJQUFBLEVBQU0sTUFETjtNQUVBLEtBQUEsRUFBTyxhQUZQO01BR0EsSUFBQSxFQUFNLENBSE47O0VBRFM7O3NCQU1WLFFBQUEsR0FBVSxTQUFBO0FBQ1QsV0FBTyxJQUFDLENBQUEsR0FBRCxDQUFNLE9BQU47RUFERTs7c0JBR1YsS0FBQSxHQUFPLFNBQUUsSUFBRjtBQUNOLFFBQUE7SUFBQSxFQUFBLEdBQU0sSUFBQyxDQUFBLEdBQUQsQ0FBTSxNQUFOLENBQUEsR0FBaUIsR0FBakIsR0FBdUIsSUFBQyxDQUFBLEdBQUQsQ0FBTSxPQUFOO0lBQzdCLEtBQUEsR0FBUSxFQUFFLENBQUMsV0FBSCxDQUFBLENBQWdCLENBQUMsT0FBakIsQ0FBMEIsSUFBSSxDQUFDLFdBQUwsQ0FBQSxDQUExQjtBQUNSLFdBQU8sS0FBQSxJQUFTO0VBSFY7O3NCQUtQLFVBQUEsR0FBWSxTQUFFLEdBQUY7QUFDWCxXQUFPLEdBQUcsQ0FBQztFQURBOzs7O0dBdkJXLFFBQVEsQ0FBQzs7QUEwQmpDLE1BQU0sQ0FBQyxPQUFQLEdBQWlCOzs7O0FDMUJqQixJQUFBLFlBQUE7RUFBQTs7OztBQUFNOzs7Ozs7Ozt5QkFDTCxPQUFBLEdBQVMsT0FBQSxDQUFTLDJCQUFUOzt5QkFDVCxRQUFBLEdBQVUsU0FBQTtBQUNULFdBQU8sQ0FBQyxDQUFDLE1BQUYsQ0FBUyw0Q0FBQSxTQUFBLENBQVQsRUFDTjtNQUFBLElBQUEsRUFBTSxFQUFOO01BQ0EsS0FBQSxFQUFPLElBRFA7S0FETTtFQURFOzs7O0dBRmdCLE9BQUEsQ0FBUyxjQUFUOztBQU8zQixNQUFNLENBQUMsT0FBUCxHQUFpQjs7OztBQ1BqQixJQUFBLFFBQUE7RUFBQTs7OztBQUFNOzs7Ozs7Ozs7cUJBQ0wsT0FBQSxHQUFTOztxQkFDVCxRQUFBLEdBQVU7O3FCQUNWLFFBQUEsR0FBVSxTQUFBO0FBQ1QsV0FBTyxDQUFDLENBQUMsTUFBRixDQUFTLHdDQUFBLFNBQUEsQ0FBVCxFQUNOO01BQUEsT0FBQSxFQUFTLEVBQVQ7S0FETTtFQURFOztxQkFJVixJQUFBLEdBQU0sU0FBQTtJQUNMLElBQUMsQ0FBQSxJQUFJLENBQUMsT0FBTixDQUFlLElBQUMsQ0FBQSxHQUFELENBQU0sT0FBTixDQUFmLEVBQWdDLElBQUMsQ0FBQSxNQUFELENBQUEsQ0FBaEM7RUFESzs7OztHQVBnQixPQUFBLENBQVMsY0FBVDs7QUFVdkIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNWakIsSUFBQSxTQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozs7c0JBQ0wsT0FBQSxHQUFTLE9BQUEsQ0FBUywyQkFBVDs7c0JBQ1QsUUFBQSxHQUFVLFNBQUE7QUFDVCxXQUFPLENBQUMsQ0FBQyxNQUFGLENBQVMseUNBQUEsU0FBQSxDQUFULEVBQ047TUFBQSxHQUFBLEVBQUssSUFBTDtNQUNBLEdBQUEsRUFBSyxJQURMO01BRUEsSUFBQSxFQUFNLENBRk47TUFHQSxLQUFBLEVBQU8sSUFIUDtLQURNO0VBREU7Ozs7R0FGYSxPQUFBLENBQVMsY0FBVDs7QUFTeEIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNUakIsSUFBQSxRQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozs7cUJBQ0wsT0FBQSxHQUFTLE9BQUEsQ0FBUywwQkFBVDs7cUJBQ1QsUUFBQSxHQUFVLFNBQUE7QUFDVCxXQUFPLENBQUMsQ0FBQyxNQUFGLENBQVMsd0NBQUEsU0FBQSxDQUFULEVBQ047TUFBQSxHQUFBLEVBQUssSUFBTDtNQUNBLEdBQUEsRUFBSyxJQURMO01BRUEsSUFBQSxFQUFNLENBRk47TUFHQSxLQUFBLEVBQU8sSUFIUDtLQURNO0VBREU7Ozs7R0FGWSxPQUFBLENBQVMsY0FBVDs7QUFTdkIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNUakIsSUFBQSxTQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozs7c0JBQ0wsT0FBQSxHQUFTLE9BQUEsQ0FBUywyQkFBVDs7c0JBQ1QsUUFBQSxHQUFVLFNBQUE7QUFDVCxXQUFPLENBQUMsQ0FBQyxNQUFGLENBQVUseUNBQUEsU0FBQSxDQUFWLEVBQWlCO01BQ3ZCLE9BQUEsRUFBUyxFQURjO01BRXZCLFlBQUEsRUFBYyxJQUZTO0tBQWpCO0VBREU7Ozs7R0FGYSxPQUFBLENBQVMsY0FBVDs7QUFReEIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNSakIsSUFBQSxTQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozs7c0JBQ0wsT0FBQSxHQUFTLE9BQUEsQ0FBUywyQkFBVDs7c0JBQ1QsUUFBQSxHQUFVLFNBQUE7QUFDVCxXQUFPLENBQUMsQ0FBQyxNQUFGLENBQVMseUNBQUEsU0FBQSxDQUFULEVBQ047TUFBQSxPQUFBLEVBQVMsRUFBVDtLQURNO0VBREU7Ozs7R0FGYSxPQUFBLENBQVMsY0FBVDs7QUFNeEIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNOakIsSUFBQSwyQkFBQTtFQUFBOzs7O0FBQUEsUUFBQSxHQUFXLE9BQUEsQ0FBUyxVQUFUOztBQUVYLEtBQUEsR0FBUSxTQUFFLEVBQUYsRUFBTSxHQUFOO0FBQ1AsU0FBTyxFQUFFLENBQUMsR0FBSCxDQUFRLEdBQVI7QUFEQTs7QUFHRjs7O0VBRVEsb0JBQUUsTUFBRixFQUFVLE9BQVY7QUFDWixRQUFBOztNQURzQixVQUFROzs7SUFDOUIsSUFBTywwQkFBUDtNQUNDLFFBQUE7QUFBVyxnQkFBTyxPQUFPLENBQUMsR0FBZjtBQUFBLGVBQ0wsS0FESzttQkFDTTtBQUROLGVBRUwsTUFGSzttQkFFTztBQUZQO21CQUdMO0FBSEs7O01BS1gsT0FBTyxDQUFDLFVBQVIsR0FBcUIsUUFBQSxDQUFVLENBQUUsTUFBRixDQUFVLENBQUMsTUFBWCxDQUFtQixPQUFPLENBQUMsTUFBUixJQUFrQixNQUFyQyxDQUFWLEVBQXlEO1FBQUUsSUFBQSxFQUFNLEtBQVI7UUFBZSxHQUFBLEVBQUssUUFBcEI7T0FBekQsRUFBeUYsS0FBekYsRUFOdEI7O0FBT0EsV0FBTyw0Q0FBTyxNQUFQLEVBQWUsT0FBZjtFQVJLOzt1QkFVYixzQkFBQSxHQUF3QixTQUFBO0FBQ3ZCLFFBQUE7SUFBQSxHQUFBLEdBQU0sd0RBQUEsU0FBQTtJQUNOLEdBQUcsQ0FBQyxHQUFKLEdBQWEsSUFBQyxDQUFBLE9BQUosR0FBaUIsS0FBakIsR0FBNEI7QUFDdEMsV0FBTztFQUhnQjs7dUJBS3hCLE9BQUEsR0FBUyxTQUFDLEtBQUQ7QUFDUixXQUFPLEtBQUssQ0FBQztFQURMOzs7O0dBakJlLE9BQUEsQ0FBUyxnQkFBVDs7QUFvQnpCLE1BQU0sQ0FBQyxPQUFQLEdBQWlCOzs7O0FDekJqQixJQUFBLHVCQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozt1QkFDTCxXQUFBLEdBQWE7O3VCQUNiLFFBQUEsR0FDQztJQUFBLElBQUEsRUFBTSxRQUFOO0lBQ0EsSUFBQSxFQUFNLElBRE47SUFFQSxLQUFBLEVBQU8sSUFGUDs7Ozs7R0FIdUIsUUFBUSxDQUFDOztBQU81Qjs7Ozs7Ozs7O3dCQUNMLEtBQUEsR0FBTzs7d0JBQ1AsVUFBQSxHQUFZLFNBQUUsSUFBRixFQUFRLElBQVI7QUFDWCxRQUFBO0lBQUEsd0NBQWlCLENBQUUsZUFBbkI7TUFDQyxJQUFDLENBQUEsU0FBRCxHQUFhLElBQUksQ0FBQyxVQURuQjs7RUFEVzs7d0JBSVosS0FBQSxHQUFPLFNBQUUsSUFBRixFQUFRLE9BQVI7QUFDTixRQUFBO0lBQUEsSUFBQSxHQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBZixDQUFvQixXQUFwQixDQUFBLElBQXFDLElBQUMsQ0FBQSxTQUF0QyxJQUFtRDtJQUMxRCxPQUFBLHVDQUF3QixDQUFFLEdBQWhCLENBQXFCLFFBQXJCO0lBQ1YsSUFBRyxpQkFBQSxJQUFhLENBQUMsQ0FBQyxVQUFGLENBQWMsT0FBZCxDQUFoQjtNQUNDLElBQU0sQ0FBQSxJQUFBLENBQU4sR0FBZSxPQUFBLENBQVMsSUFBSSxDQUFDLEtBQWQsRUFBcUIsT0FBTyxDQUFDLE1BQTdCLEVBQXFDLElBQXJDLEVBRGhCOztBQUVBLFdBQU87RUFMRDs7OztHQU5rQixPQUFBLENBQVMsZ0JBQVQ7O0FBYTFCLE1BQU0sQ0FBQyxPQUFQLEdBQWlCOzs7O0FDcEJqQixJQUFBLHVCQUFBO0VBQUE7Ozs7QUFBTTs7Ozs7Ozs7dUJBQ0wsV0FBQSxHQUFhOzt1QkFDYixRQUFBLEdBQVUsU0FBQTtBQUNULFdBQU8sSUFBQyxDQUFBLEdBQUQsQ0FBTSxPQUFOLENBQUEsSUFBbUIsSUFBQyxDQUFBLEdBQUQsQ0FBTSxJQUFDLENBQUEsV0FBUCxDQUFuQixJQUEyQztFQUR6Qzs7OztHQUZjLFFBQVEsQ0FBQzs7QUFNNUI7Ozs7Ozs7d0JBQ0wsS0FBQSxHQUFPOzs7O0dBRGtCLE9BQUEsQ0FBUyxnQkFBVDs7QUFHMUIsTUFBTSxDQUFDLE9BQVAsR0FBaUI7Ozs7QUNUakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIk1haW5WaWV3ID0gcmVxdWlyZSggXCIuL3ZpZXdzL21haW5cIiApXG5GYWNldHMgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0c1wiIClcbkZjdFN0cmluZyA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRfc3RyaW5nXCIgKVxuRmN0QXJyYXkgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0X2FycmF5XCIgKVxuRmN0U2VsZWN0ID0gcmVxdWlyZSggXCIuL21vZGVscy9mYWNldF9zZWxlY3RcIiApXG5GY3ROdW1iZXIgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0X251bWJlclwiIClcbkZjdFJhbmdlID0gcmVxdWlyZSggXCIuL21vZGVscy9mYWNldF9yYW5nZVwiIClcbkZjdERhdGVSYW5nZSA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvZmFjZXRfZGF0ZXJhbmdlXCIgKVxuRmN0RXZlbnQgPSByZXF1aXJlKCBcIi4vbW9kZWxzL2ZhY2V0X2V2ZW50XCIgKVxuUmVzdWx0cyA9IHJlcXVpcmUoIFwiLi9tb2RlbHMvcmVzdWx0c1wiIClcblxuSUdHWV9JRFggPSAxXG5cbmNsYXNzIElHR1kgZXh0ZW5kcyBCYWNrYm9uZS5FdmVudHNcblx0JDogalF1ZXJ5XG5cdGNvbnN0cnVjdG9yOiAoIGVsLCBmYWNldHMgPSBbXSwgb3B0aW9ucyA9IHt9ICktPlxuXHRcdF8uZXh0ZW5kIEAsIEJhY2tib25lLkV2ZW50c1xuXHRcdEBfaW5pdEVycm9ycygpXG5cdFx0XG5cdFx0IyBpbml0IGVsZW1lbnRcblx0XHRAJGVsID0gQF9wcmVwYXJlRWwoIGVsIClcblx0XHRAZWwgPSBAJGVsWzBdXG5cdFx0QCRlbC5kYXRhKCBcImlnZ3lcIiwgQCApXG5cblx0XHQjIGluaXQgZmFjZXRzXG5cdFx0QGZhY2V0cyA9IEBfcHJlcGFyZUZhY2V0cyggZmFjZXRzLCBvcHRpb25zIClcblx0XHRAcmVzdWx0cyA9IG5ldyBSZXN1bHRzKCBudWxsLCBvcHRpb25zIClcblxuXHRcdEByZXN1bHRzLm9uIFwiYWRkXCIsIEB0cmlnZ2VyQ2hhbmdlXG5cdFx0QHJlc3VsdHMub24gXCJyZW1vdmVcIiwgQHRyaWdnZXJDaGFuZ2Vcblx0XHRAcmVzdWx0cy5vbiBcImNoYW5nZVwiLCBAdHJpZ2dlckNoYW5nZVxuXG5cdFx0QHZpZXcgPSBuZXcgTWFpblZpZXcoIG1haW46IEAsIGVsOiBAJGVsLCBjb2xsZWN0aW9uOiBAZmFjZXRzLCByZXN1bHRzOiBAcmVzdWx0cywgc2VhcmNoQnV0dG9uOiBvcHRpb25zLnNlYXJjaEJ1dHRvbiwgaWR4OiBJR0dZX0lEWCsrIClcblx0XHRcblx0XHRAdmlldy5vbiBcInNlYXJjaGJ1dHRvblwiLCBAdHJpZ2dlckV2ZW50XG5cblx0XHRAbm9uRW1wdHlSZXN1bHRzID0gQHJlc3VsdHMuc3ViKCBAX2ZpbHRlckVtcHR5IClcblx0XHRyZXR1cm5cblxuXHRfcHJlcGFyZUVsOiAoIGVsICk9PlxuXG5cdFx0aWYgbm90IGVsP1xuXHRcdFx0dGhyb3cgQF9lcnJvciggXCJFTUlTU0lOR0VMXCIgKVxuXG5cdFx0aWYgXy5pc1N0cmluZyggZWwgKVxuXHRcdFx0aWYgbm90IGVsLmxlbmd0aFxuXHRcdFx0XHR0aHJvdyBAX2Vycm9yKCBcIkVFTVBUWUVMU1RSSU5HXCIgKVxuXG5cdFx0XHRfJGVsID0gQCQoIGVsIClcblx0XHRcdGlmIG5vdCBfJGVsPy5sZW5ndGhcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFSU5WQUxJREVMU1RSSU5HXCIgKVxuXG5cdFx0XHRyZXR1cm4gXyRlbFxuXG5cdFx0aWYgZWwgaW5zdGFuY2VvZiBqUXVlcnlcblx0XHRcdGlmIG5vdCBlbC5sZW5ndGhcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFRU1QVFlFTEpRVUVSWVwiIClcblxuXHRcdFx0IyBUT0RPIGhhbmRsZSBtdWx0aXBsZSBqUXVlcnkgZWxlbWVudHMgdG8gSUdHWSBpbnN0YW5jZXNcblx0XHRcdGlmIGVsLmxlbmd0aCA+IDFcblx0XHRcdFx0dGhyb3cgQF9lcnJvciggXCJFU0laRUVMSlFVRVJZXCIgKVxuXG5cdFx0XHRyZXR1cm4gZWxcblxuXHRcdGlmIGVsIGluc3RhbmNlb2YgRWxlbWVudFxuXHRcdFx0cmV0dXJuIEAkKCBlbCApXG5cblx0XHR0aHJvdyBAX2Vycm9yKCBcIkVJTlZBTElERUxUWVBFXCIgKVxuXG5cdFx0cmV0dXJuXG5cblx0X3ByZXBhcmVGYWNldHM6ICggZmFjZXRzLCBvcHRpb25zPXt9ICk9PlxuXHRcdF9yZXQgPSBbXVxuXHRcdGZvciBmYWNldCwgX2lkeCBpbiBmYWNldHMgd2hlbiAoIF9mY3QgPSBAX2NyZWF0ZUZhY2V0KCBmYWNldCApICk/XG5cdFx0XHRfZmN0Ll9pZHggPSBfaWR4XG5cdFx0XHRfcmV0LnB1c2ggX2ZjdFxuXHRcdFxuXHRcdHJldHVybiBuZXcgRmFjZXRzKCBfcmV0LCBvcHRpb25zIClcblxuXHRfY3JlYXRlRmFjZXQ6ICggZmFjZXQgKS0+XG5cdFx0c3dpdGNoIGZhY2V0LnR5cGUudG9Mb3dlckNhc2UoKVxuXHRcdFx0d2hlbiBcInN0cmluZ1wiIHRoZW4gcmV0dXJuIG5ldyBGY3RTdHJpbmcoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJzZWxlY3RcIiB0aGVuIHJldHVybiBuZXcgRmN0U2VsZWN0KCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwiYXJyYXlcIiB0aGVuIHJldHVybiBuZXcgRmN0QXJyYXkoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJudW1iZXJcIiB0aGVuIHJldHVybiBuZXcgRmN0TnVtYmVyKCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwicmFuZ2VcIiB0aGVuIHJldHVybiBuZXcgRmN0UmFuZ2UoIGZhY2V0LCBtYWluOiBAIClcblx0XHRcdHdoZW4gXCJkYXRlcmFuZ2VcIiB0aGVuIHJldHVybiBuZXcgRmN0RGF0ZVJhbmdlKCBmYWNldCwgbWFpbjogQCApXG5cdFx0XHR3aGVuIFwiZXZlbnRcIiB0aGVuIHJldHVybiBuZXcgRmN0RXZlbnQoIGZhY2V0LCBtYWluOiBAIClcblxuXHRhZGRGYWNldDogKCBmYWNldCApPT5cblx0XHRpZiBub3QgQGZhY2V0cz9cblx0XHRcdHJldHVyblxuXHRcdGlmICggX2ZjdCA9IEBfY3JlYXRlRmFjZXQoIGZhY2V0ICkgKT9cblx0XHRcdEBmYWNldHMuYWRkKCBfZmN0IClcblx0XHRyZXR1cm4gQFxuXG5cdF9lcnJvcjogKCB0eXBlLCBkYXRhID0ge30gKT0+XG5cdFx0aWYgQGVycm9yc1sgdHlwZSBdP1xuXHRcdFx0X21zZyA9IEBlcnJvcnNbIHR5cGUgXSggZGF0YSApXG5cdFx0ZWxzZVxuXHRcdFx0X21zZyA9IFwiLVwiXG5cdFx0X2VyciA9IG5ldyBFcnJvcigpXG5cdFx0X2Vyci5uYW1lID0gdHlwZVxuXHRcdF9lcnIubWVzc2FnZSA9IF9tc2dcblx0XHRyZXR1cm4gX2VyclxuXG5cdF9maWx0ZXJFbXB0eTogKCBtb2RlbCApPT5cblx0XHRfdiA9IG1vZGVsLmdldCggXCJ2YWx1ZVwiIClcblx0XHRpZiBub3QgX3Y/XG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRpZiBfdi5sZW5ndGggPD0gMFxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XG5cdFx0cmV0dXJuIHRydWVcblx0XG5cdGdldFF1ZXJ5OiA9PlxuXHRcdHJldHVybiBAbm9uRW1wdHlSZXN1bHRzXG5cblx0dHJpZ2dlckNoYW5nZTogPT5cblx0XHRjb25zb2xlLmxvZyBAbm9uRW1wdHlSZXN1bHRzXG5cdFx0c2V0VGltZW91dCggPT5cblx0XHRcdEB0cmlnZ2VyKCBcImNoYW5nZVwiLCBAbm9uRW1wdHlSZXN1bHRzIClcblx0XHQsIDAgKVxuXHRcdHJldHVyblxuXHRcblx0dHJpZ2dlckV2ZW50OiAoIGV2ZW50TmFtZSApPT5cblx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0QHRyaWdnZXIoIGV2ZW50TmFtZSwgQG5vbkVtcHR5UmVzdWx0cyApXG5cdFx0LCAwIClcblx0XHRyZXR1cm5cblx0XHRcblx0X2luaXRFcnJvcnM6ID0+XG5cdFx0QGVycm9ycyA9IHt9XG5cdFx0Zm9yIF9rLCBfdG1wbCBvZiBARVJST1JTKClcblx0XHRcdEBlcnJvcnNbIF9rIF0gPSBfLnRlbXBsYXRlKCBfdG1wbCApXG5cdFx0cmV0dXJuXG5cblx0RVJST1JTOiAtPlxuXHRcdFwiRUlOVkFMSURFTFNUUklOR1wiOiBcIklmIHlvdSBkZWZpbmUgYSBgZWxgIGFzIFN0cmluZyBpdCBoYXMgdG8gYmUgYSB2YWxpZCBzZWxlY3RvciBmb3IgYW4gZXhpc3RpbmcgRE9NIGVsZW1lbnQuXCJcblx0XHRcIkVFTVBUWUVMU1RSSU5HXCI6IFwiVGhlIGBlbGAgYXMgc3RyaW5nIGNhbiBub3QgYmUgZW1wdHkuXCJcblx0XHRcIkVFTVBUWUVMSlFVRVJZXCI6IFwiVGhlIGBlbGAgYXMgak91ZXJ5IG9iamVjdCBjYW4gbm90IGJlIGFuIGVtcHR5IGNvbGxlY3Rpb24uXCJcblx0XHRcIkVTSVpFRUxKUVVFUllcIjogXCJUaGUgYGVsYCBhcyBqT3Vlcnkgb2JqZWN0IGNhbiBub3QgYmUgYSByZXN1bHQgb2Ygb25lIGVsLlwiXG5cdFx0XCJFSU5WQUxJREVMVFlQRVwiOiBcIlRoZSBgZWxgIGNhbiBvbmx5IGJlIGEgc2VsZWN0b3Igc3RyaW5nLCBkb20gZWxlbWVudCBvciBqUXVlcnkgY29sbGVjdGlvblwiXG5cdFx0XCJFTUlTU0lOR0VMXCI6IFwiUGxlYXNlIGRlZmluZSBhIHRhcmdldCBgZWxgXCJcblxubW9kdWxlLmV4cG9ydHMgPSBJR0dZXG4iLCIjIyNcbkVYQU1QTEUgVVNBR0VcblxuXHRwYXJlbnRDb2xsID0gbmV3IEJhY2tib25lLkNvbGxlY3Rpb24uU3ViKClcblx0XG5cdCMgYnkgQXJyYXlcblx0c3ViQ29sbEEgPSBwYXJlbnRDb2xsLnN1YiggWyAxLCAyLCAzIF0gKVxuXHRcblx0IyBvciBieSBPYmplY3Rcblx0c3ViQ29sbE8gPSBwYXJlbnRDb2xsLnN1YiggeyBuYW1lOiBcIkZvb1wiLCBhZ2U6IDQyIH0gKVxuXHRcblx0IyBvciBieSBOdW1iZXJcblx0c3ViQ29sbE4gPSBwYXJlbnRDb2xsLnN1YiggMTMgKVxuXHRcblx0IyBvciBieSBGdW5jdGlvblxuXHRzdWJDb2xsRiA9IHBhcmVudENvbGwuc3ViKCAoKCBtb2RlbCApLT4gaWYgbW9kZWwuZ2V0KCBcImFnZVwiICkgPiAyMyApIClcblx0XG5cdCMgc3ViY29sbGVjdGlvbiBvZiBzdWJjb2xsZWN0aW9uXG5cdHN1YkNvbGxBX08gPSBzdWJDb2xsQS5zdWIoIHsgbmFtZTogXCJGb29cIiwgYWdlOiA0MiB9IClcblx0XG5cdCMgdXBkYXRlIHRoZSBmaWx0ZXIgb2YgYSBzdWJjb2xsZWN0aW9uLiBGb3IgdGhpcyBhIGByZXNldGAgd2lsbCBiZSBmaXJlZCBvbiB0aGUgc3ViY29sbGVjdGlvblxuXHRzdWJDb2xsQSA9IHN1YkNvbGxBLnVwZGF0ZVN1YkZpbHRlciggeyBuYW1lOiBcIkJhclwiLCBhZ2U6IDQyIH0gKVxuIyMjXG5cbmNsYXNzIEJhY2tib25lU3ViIGV4dGVuZHMgQmFja2JvbmUuQ29sbGVjdGlvblxuXHQjIyNcblx0IyMgc3ViXG5cdFxuXHRgY29sbGVjdGlvbi5zdWIoIGZpbHRlciApYFxuXHRcblx0R2VuZXJhdGUgYSBzdWItY29sbGVjdGlvbiBieSBhIGZpbHRlci5cblx0VGhlIG1vZGVscyB3aWxsIGJlIGRpc3RyaWJ1dGVkIHdpdGhpbiBhbGwgaW52b2x2ZWQgY29sbGVjdGlvbnMgdW5kZXIgY29uc2lkZXJhdGlvbiBvZiB0aGUgZmlsdGVyLlxuXHRcblx0QHBhcmFtIHsgRnVuY3Rpb258QXJyYXl8U3RyaW5nfE51bWJlcnxPYmplY3QgfSBmaWx0ZXIgVGhlIGZpbHRlciB0byByZWR1Y2UgdGhlIGN1cnJlbnQgY29sbGVjdGlvbi4gQ2FuIGJlIGEgZnVuY3Rpb24gbGlrZSB1bmRlcnNjb3JlIGBfLmZpbHRlcmAgb3IgYW4gYXJyYXkgb2YgaWRzLCBhIHNpbmdsZSBpZCBhcyBzdHJpbmcgb3IgbnVtYmVyIG9yIGEgZmlsdGVyIG9iamVjdCBjb250YWluaW5ncyBrZXkgdmFsdWUgZmlsdGVycy5cblx0XG5cdEByZXR1cm4geyBDb2xsZWN0aW9uIH0gQSBTdWItQ29sbGVjdGlvbiBiYXNlZCBvbiB0aGUgZmlsdGVyXG5cdFxuXHRAYXBpIHB1YmxpY1xuXHQjIyNcblx0c3ViOiAoIGZpbHRlciApPT5cblx0XHRAc3ViQ29sbHMgb3I9IFtdXG5cdFx0Zm5GaWx0ZXIgPSBAX2dlbmVyYXRlU3ViRmlsdGVyKCBmaWx0ZXIgKVxuXG5cdFx0IyBmaWx0ZXIgdGhlIGNvbGxlY3Rpb25cblx0XHRfbW9kZWxzID0gQGZpbHRlciBmbkZpbHRlclxuXHRcdCMgY3JlYXRlIHRoZSBzdWJjb2xsZWN0aW9uXG5cdFx0X3N1YiA9IG5ldyBAY29uc3RydWN0b3IoIF9tb2RlbHMsIEBfc3ViQ29sbGVjdGlvbk9wdGlvbnMoKSApXG5cblx0XHRfc3ViLl9wYXJlbnRDb2wgPSBAXG5cdFx0X3N1Yi5fZm5GaWx0ZXIgPSBmbkZpbHRlclxuXG5cdFx0IyBhZGQgZXZlbnQgaGFuZGxlcnMgdG8gZGlzdHJpYnV0ZSB0aGUgbW9kZWxzIHRocm91Z2ggdGhlIHN1YiBjb2xsZWN0aW9ucyB0cmVlXG5cblx0XHQjIHJlY2hlY2sgdGhlIG1vZGVsIGFnYWluc3QgdGhlIGZpbHRlciBvbiBjaGFuZ2Vcblx0XHRAb24gXCJjaGFuZ2VcIiwgXy5iaW5kKCAoIF9tICktPlxuXHRcdFx0dG9BZGQgPSBAX2ZuRmlsdGVyKCBfbSApXG5cdFx0XHRhZGRlZCA9IEBnZXQoIF9tICk/XG5cdFx0XHRpZiBhZGRlZCBhbmQgbm90IHRvQWRkXG5cdFx0XHRcdEByZW1vdmUoIF9tIClcblx0XHRcdGVsc2UgaWYgbm90IGFkZGVkIGFuZCB0b0FkZFxuXHRcdFx0XHRAYWRkKCBfbSApXG5cdFx0XHRyZXR1cm5cblx0XHQsIF9zdWIgKVxuXG5cdFx0IyBhZGQgbW9kZWwgdG8gYmFzZSBjb2xsZWN0aW9uIG9uIGFkZCB0byBzdWJcblx0XHRfc3ViLm9uIFwiYWRkXCIsIF8uYmluZCggKCBfbSApLT5cblx0XHRcdEBhZGQoIF9tIClcblx0XHRcdHJldHVyblxuXHRcdCwgQClcblxuXHRcdCMgYWRkIG1vZGVsIHRvIHN1YiBjb2xsZWN0aW9uIG9uIGFkZCB0byBiYXNlIGlmIGl0IG1hdGNoZXMgdGhlIGZpbHRlclxuXHRcdEBvbiBcImFkZFwiLCBfLmJpbmQoICggX20gKS0+XG5cdFx0XHRpZiBAX2ZuRmlsdGVyKCBfbSApXG5cdFx0XHRcdEBhZGQoIF9tIClcblx0XHRcdHJldHVyblxuXHRcdCwgX3N1YiApXG5cblx0XHQjIHJlbW92ZSBtb2RlbCBmcm9tIGJhc2UgY29sbGVjdGlvbiBvbiByZW1vdmUgb2Ygc3ViXG5cdFx0X3N1Yi5vbiBcInJlbW92ZVwiLCBfLmJpbmQoICggX20gKS0+XG5cdFx0XHQjQHJlbW92ZSggX20gKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCBAKVxuXG5cdFx0IyByZW1vdmUgbW9kZWwgZnJvbSBiYXNlIGNvbGxlY3Rpb24gb24gcmVtb3ZlIG9mIHN1YlxuXHRcdEBvbiBcInJlbW92ZVwiLCBfLmJpbmQoICggX20gKS0+XG5cdFx0XHRAcmVtb3ZlKCBfbSApXG5cdFx0XHRyZXR1cm5cblx0XHQsIF9zdWIgKVxuXG5cdFx0IyByZW1vdmUgbW9kZWwgZnJvbSBiYXNlIGNvbGxlY3Rpb24gb24gcmVtb3ZlIG9mIHN1YlxuXHRcdEBvbiBcInJlc2V0XCIsIF8uYmluZCggKCBfbSApLT5cblx0XHRcdEB1cGRhdGVTdWJGaWx0ZXIoKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCBfc3ViIClcblxuXHRcdCMgc3RvcmUgdGhlIHN1YmNvbGxlY3Rpb24gdW5kZXIgdGhlIGN1cnJlbnQgY29sbGVjdGlvblxuXHRcdEBzdWJDb2xscy5wdXNoKCBfc3ViIClcblxuXHRcdHJldHVybiBfc3ViXG5cdFxuXHQjIyNcblx0IyMgX3N1YkNvbGxlY3Rpb25PcHRpb25zXG5cdFxuXHRgY29sbGVjdGlvbi5fc3ViQ29sbGVjdGlvbk9wdGlvbnMoKWBcblx0XG5cdE92ZXJ3cml0YWJsZSBtZXRob2QgdG8gc2V0IHRoZSBjb25zdHJ1Y3RvciBvcHRpb25zIGZvciBzdWIgY29sbGVjdGlvbnNcblx0XG5cdEByZXR1cm4geyBPYmplY3QgfSBUaGUgb3B0aW9ucyBvYmplY3Rcblx0XG5cdEBhcGkgcHJpdmF0ZVxuXHQjIyNcblx0X3N1YkNvbGxlY3Rpb25PcHRpb25zOiA9PlxuXHRcdF9vcHRzID1cblx0XHRcdGNvbXBhcmF0b3I6IEBjb21wYXJhdG9yXG5cdFx0cmV0dXJuIF9vcHRzXG5cblx0IyMjXG5cdCMjIHVwZGF0ZVN1YkZpbHRlclxuXHRcblx0YGNvbGxlY3Rpb24udXBkYXRlU3ViRmlsdGVyKCBmaWx0ZXIgKWBcblx0XG5cdE1ldGhvZCB0byB1cGRhdGUgdGhlIGZpbHRlciBvZiBhIHN1YmNvbGxlY3Rpb24uIFRoZW4gYWxsIG1vZGVscyB3aWxsIGJlIHJlc2V0ZSBieSB0aGUgbmV3IGZpbHRlci4gU28geW91IGhhdmUgdG8gbGlzdGVuIHRvIHRlaCByZXNldCBldmVudFxuXHRcblx0QHBhcmFtIHsgRnVuY3Rpb258QXJyYXl8U3RyaW5nfE51bWJlcnxPYmplY3QgfSBmaWx0ZXIgVGhlIGZpbHRlciB0byByZWR1Y2UgdGhlIGN1cnJlbnQgY29sbGVjdGlvbi4gQ2FuIGJlIGEgZnVuY3Rpb24gbGlrZSB1bmRlcnNjb3JlIGBfLmZpbHRlcmAgb3IgYW4gYXJyYXkgb2YgaWRzLCBhIHNpbmdsZSBpZCBhcyBzdHJpbmcgb3IgbnVtYmVyIG9yIGEgZmlsdGVyIG9iamVjdCBjb250YWluaW5ncyBrZXkgdmFsdWUgZmlsdGVycy5cblx0XG5cdEByZXR1cm4geyBTZWxmIH0gaXRzZWxmXG5cdFxuXHRAYXBpIHB1YmxpY1xuXHQjIyNcblx0dXBkYXRlU3ViRmlsdGVyOiAoIGZpbHRlciwgYXNSZXNldCA9IHRydWUgKT0+XG5cdFx0aWYgQF9wYXJlbnRDb2w/XG5cblx0XHRcdCMgc2V0IHRoZSBuZXcgZmlsdGVyIG1ldGhvZFxuXHRcdFx0QF9mbkZpbHRlciA9IEBfZ2VuZXJhdGVTdWJGaWx0ZXIoIGZpbHRlciApIGlmIGZpbHRlcj9cblxuXHRcdFx0X21vZGVscyA9IEBfcGFyZW50Q29sLmZpbHRlciggQF9mbkZpbHRlciApXG5cblx0XHRcdCMgcmVzZXQgdGhlIGNvbGxlY3Rpb24gd2l0aCB0aGUgbmV3IG1vZGVsc1xuXHRcdFx0aWYgYXNSZXNldFxuXHRcdFx0XHRAcmVzZXQoIF9tb2RlbHMgKVxuXHRcdFx0XHRyZXR1cm4gQFxuXG5cdFx0XHRuZXdpZHMgPSBfLnBsdWNrKCBfbW9kZWxzLCBcImNpZFwiIClcblx0XHRcdGN1cnJpZHMgPSBfLnBsdWNrKCBAbW9kZWxzLCBcImNpZFwiIClcblx0XHRcdGZvciByaWQgaW4gXy5kaWZmZXJlbmNlKCBjdXJyaWRzLCBuZXdpZHMgKVxuXHRcdFx0XHRAcmVtb3ZlKCByaWQgKVxuXHRcdFx0XHRcblx0XHRcdF9hZGRJZHMgPSBfLmRpZmZlcmVuY2UoIG5ld2lkcywgY3VycmlkcyApXG5cdFx0XHRmb3IgbWRsIGluIF9tb2RlbHMgd2hlbiBtZGwuY2lkIGluIF9hZGRJZHNcblx0XHRcdFx0QGFkZCggbWRsIClcblxuXHRcdHJldHVybiBAXG5cblxuXHQjIyNcblx0IyMgX2dlbmVyYXRlU3ViRmlsdGVyXG5cdFxuXHRgY29sbGVjdGlvbi5fZ2VuZXJhdGVTdWJGaWx0ZXIoIGZpbHRlciApYFxuXHRcblx0SW50ZXJuYWwgbWV0aG9kIHRoIGNvbnZlcnQgYSBmaWx0ZXIgYXJndW1lbnQgdG8gYSBmaWx0ZXIgZnVuY3Rpb25cblx0XG5cdEBwYXJhbSB7IEZ1bmN0aW9ufEFycmF5fFN0cmluZ3xOdW1iZXJ8T2JqZWN0IH0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gcmVkdWNlIHRoZSBjdXJyZW50IGNvbGxlY3Rpb24uIENhbiBiZSBhIGZ1bmN0aW9uIGxpa2UgdW5kZXJzY29yZSBgXy5maWx0ZXJgIG9yIGFuIGFycmF5IG9mIGlkcywgYSBzaW5nbGUgaWQgYXMgc3RyaW5nIG9yIG51bWJlciBvciBhIGZpbHRlciBvYmplY3QgY29udGFpbmluZ3Mga2V5IHZhbHVlIGZpbHRlcnMuXG5cdFxuXHRAcmV0dXJuIHsgRnVuY3Rpb24gfSBUaGUgZ2VuZXJhdGVkIGZpbHRlciBmdW5jdGlvblxuXHRcblx0QGFwaSBwcml2YXRlXG5cdCMjI1xuXHRfZ2VuZXJhdGVTdWJGaWx0ZXI6ICggZmlsdGVyICktPlxuXHRcdCMgY29uc3RydWN0IHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRpZiBfLmlzRnVuY3Rpb24oIGZpbHRlciApXG5cdFx0XHRmbkZpbHRlciA9IGZpbHRlclxuXHRcdGVsc2UgaWYgXy5pc0FycmF5KCBmaWx0ZXIgKVxuXHRcdFx0Zm5GaWx0ZXIgPSAoIF9tICktPlxuXHRcdFx0XHRfbS5pZCBpbiBmaWx0ZXJcblx0XHRlbHNlIGlmIF8uaXNTdHJpbmcoIGZpbHRlciApIG9yIF8uaXNOdW1iZXIoIGZpbHRlciApXG5cdFx0XHRmbkZpbHRlciA9ICggX20gKS0+XG5cdFx0XHRcdF9tLmlkIGlzIGZpbHRlclxuXHRcdGVsc2Vcblx0XHRcdGZuRmlsdGVyID0gKCBfbSApLT5cblx0XHRcdFx0Zm9yIF9ubSwgX3ZsIG9mIGZpbHRlclxuXHRcdFx0XHRcdGlmIF9tLmdldCggX25tICkgaXNudCBfdmxcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXG5cdFx0cmV0dXJuIGZuRmlsdGVyXG5cbm1vZHVsZS5leHBvcnRzID0gQmFja2JvbmVTdWJcbiIsImNsYXNzIEZjdEFycmF5IGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X3N0cmluZ1wiIClcblx0U3ViVmlldzogcmVxdWlyZSggXCIuLi92aWV3cy9mYWNldHMvc3ViYXJyYXlcIiApXG5cblxubW9kdWxlLmV4cG9ydHMgPSBGY3RBcnJheVxuIiwiY2xhc3MgRmFjZXRCYXNlIGV4dGVuZHMgQmFja2JvbmUuTW9kZWxcblx0aWRBdHRyaWJ1dGU6IFwibmFtZVwiXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL2Jhc2VcIiApXG5cdFxuXHRjb25zdHJ1Y3RvcjogKCBhdHRycywgb3B0aW9ucyApLT5cblx0XHRAbWFpbiA9IG9wdGlvbnMubWFpblxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFxuXHRkZWZhdWx0czogLT5cblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0bmFtZTogXCJuYW1lXCJcblx0XHRsYWJlbDogXCJEZXNjcmlwdGlvblwiXG5cdFx0c29ydDogMFxuXG5cdGdldExhYmVsOiA9PlxuXHRcdHJldHVybiBAZ2V0KCBcImxhYmVsXCIgKVxuXG5cdG1hdGNoOiAoIGNyaXQgKT0+XG5cdFx0X3MgPSAgQGdldCggXCJuYW1lXCIgKSArIFwiIFwiICsgQGdldCggXCJsYWJlbFwiIClcblx0XHRmb3VuZCA9IF9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggY3JpdC50b0xvd2VyQ2FzZSgpIClcblx0XHRyZXR1cm4gZm91bmQgPj0gMFxuXG5cdGNvbXBhcmF0b3I6ICggbWRsICktPlxuXHRcdHJldHVybiBtZGwuaWRcblxubW9kdWxlLmV4cG9ydHMgPSBGYWNldEJhc2VcbiIsImNsYXNzIEZjdERhdGVSYW5nZSBleHRlbmRzIHJlcXVpcmUoIFwiLi9mYWNldF9iYXNlXCIgKVxuXHRTdWJWaWV3OiByZXF1aXJlKCBcIi4uL3ZpZXdzL2ZhY2V0cy9kYXRlcmFuZ2VcIiApXG5cdGRlZmF1bHRzOiA9PlxuXHRcdHJldHVybiAkLmV4dGVuZCBzdXBlcixcblx0XHRcdG9wdHM6IHt9XG5cdFx0XHR2YWx1ZTogbnVsbFxuXG5tb2R1bGUuZXhwb3J0cyA9IEZjdERhdGVSYW5nZVxuIiwiY2xhc3MgRmN0RXZlbnQgZXh0ZW5kcyByZXF1aXJlKCBcIi4vZmFjZXRfYmFzZVwiIClcblx0U3ViVmlldzogbnVsbFxuXHRvbmx5RXhlYzogdHJ1ZVxuXHRkZWZhdWx0czogPT5cblx0XHRyZXR1cm4gJC5leHRlbmQgc3VwZXIsXG5cdFx0XHRvcHRpb25zOiBbXVxuXHRcdFxuXHRleGVjOiAoICk9PlxuXHRcdEBtYWluLnRyaWdnZXIoIEBnZXQoIFwiZXZlbnRcIiApLCBAdG9KU09OKCkgKVxuXHRcdHJldHVyblxubW9kdWxlLmV4cG9ydHMgPSBGY3RFdmVudFxuIiwiY2xhc3MgRmN0TnVtYmVyIGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X2Jhc2VcIiApXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL3N1Ym51bWJlclwiIClcblx0ZGVmYXVsdHM6ID0+XG5cdFx0cmV0dXJuICQuZXh0ZW5kIHN1cGVyLFxuXHRcdFx0bWluOiBudWxsXG5cdFx0XHRtYXg6IG51bGxcblx0XHRcdHN0ZXA6IDFcblx0XHRcdHZhbHVlOiBudWxsXG5cbm1vZHVsZS5leHBvcnRzID0gRmN0TnVtYmVyXG4iLCJjbGFzcyBGY3RSYW5nZSBleHRlbmRzIHJlcXVpcmUoIFwiLi9mYWNldF9iYXNlXCIgKVxuXHRTdWJWaWV3OiByZXF1aXJlKCBcIi4uL3ZpZXdzL2ZhY2V0cy9zdWJyYW5nZVwiIClcblx0ZGVmYXVsdHM6ID0+XG5cdFx0cmV0dXJuICQuZXh0ZW5kIHN1cGVyLFxuXHRcdFx0bWluOiBudWxsXG5cdFx0XHRtYXg6IG51bGxcblx0XHRcdHN0ZXA6IDFcblx0XHRcdHZhbHVlOiBudWxsXG5cbm1vZHVsZS5leHBvcnRzID0gRmN0UmFuZ2VcbiIsImNsYXNzIEZjdFNlbGVjdCBleHRlbmRzIHJlcXVpcmUoIFwiLi9mYWNldF9iYXNlXCIgKVxuXHRTdWJWaWV3OiByZXF1aXJlKCBcIi4uL3ZpZXdzL2ZhY2V0cy9zdWJzZWxlY3RcIiApXG5cdGRlZmF1bHRzOiA9PlxuXHRcdHJldHVybiAkLmV4dGVuZCggc3VwZXIsIHtcblx0XHRcdG9wdGlvbnM6IFtdXG5cdFx0XHR3YWl0Rm9yQXN5bmM6IHRydWVcblx0XHR9KVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZjdFNlbGVjdFxuIiwiY2xhc3MgRmN0U3RyaW5nIGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0X2Jhc2VcIiApXG5cdFN1YlZpZXc6IHJlcXVpcmUoIFwiLi4vdmlld3MvZmFjZXRzL3N1YnN0cmluZ1wiIClcblx0ZGVmYXVsdHM6ID0+XG5cdFx0cmV0dXJuICQuZXh0ZW5kIHN1cGVyLFxuXHRcdFx0b3B0aW9uczogW11cblxubW9kdWxlLmV4cG9ydHMgPSBGY3RTdHJpbmdcbiIsInNvcnRDb2xsID0gcmVxdWlyZSggXCJzb3J0Y29sbFwiIClcblxuZm5HZXQgPSAoIGVsLCBrZXkgKS0+XG5cdHJldHVybiBlbC5nZXQoIGtleSApXG5cbmNsYXNzIElnZ3lGYWNldHMgZXh0ZW5kcyByZXF1aXJlKCBcIi4vYmFja2JvbmVfc3ViXCIgKVxuXHRcblx0Y29uc3RydWN0b3I6ICggbW9kZWxzLCBvcHRpb25zPXt9ICktPlxuXHRcdGlmIG5vdCBvcHRpb25zLmNvbXBhcmF0b3I/XG5cdFx0XHRfZm9yd2FyZCA9IHN3aXRjaCBvcHRpb25zLmRpclxuXHRcdFx0XHR3aGVuIFwiYXNjXCIgdGhlbiB0cnVlXG5cdFx0XHRcdHdoZW4gXCJkZXNjXCIgdGhlbiBmYWxzZVxuXHRcdFx0XHRlbHNlIHRydWVcblx0XHRcdFxuXHRcdFx0b3B0aW9ucy5jb21wYXJhdG9yID0gc29ydENvbGwoIFsgXCJzb3J0XCIgXS5jb25jYXQoIG9wdGlvbnMuc29ydGJ5IG9yIFwibmFtZVwiICksIHsgc29ydDogZmFsc2UsIFwiP1wiOiBfZm9yd2FyZCB9LCBmbkdldCApXG5cdFx0cmV0dXJuIHN1cGVyKCBtb2RlbHMsIG9wdGlvbnMgKVxuXHRcblx0X3N1YkNvbGxlY2N0aW9uT3B0aW9uczogPT5cblx0XHRvcHQgPSBzdXBlclxuXHRcdG9wdC5kaXIgPSBpZiBAZm9yd2FyZCB0aGVuIFwiYXNjXCIgZWxzZSBcImRlc2NcIlxuXHRcdHJldHVybiBvcHRcblx0XG5cdG1vZGVsSWQ6IChhdHRycyktPlxuXHRcdHJldHVybiBhdHRycy5uYW1lXG5cdFx0XG5tb2R1bGUuZXhwb3J0cyA9IElnZ3lGYWNldHNcbiIsImNsYXNzIElnZ3lSZXN1bHQgZXh0ZW5kcyBCYWNrYm9uZS5Nb2RlbFxuXHRpZEF0dHJpYnV0ZTogXCJuYW1lXCJcblx0ZGVmYXVsdHM6XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHRcdG5hbWU6IG51bGxcblx0XHR2YWx1ZTogbnVsbFxuXG5jbGFzcyBJZ2d5UmVzdWx0cyBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYWNrYm9uZV9zdWJcIiApXG5cdG1vZGVsOiBJZ2d5UmVzdWx0XG5cdGluaXRpYWxpemU6ICggbWRscywgb3B0cyApPT5cblx0XHRpZiBvcHRzLm1vZGlmeUtleT8ubGVuZ3RoXG5cdFx0XHRAbW9kaWZ5S2V5ID0gb3B0cy5tb2RpZnlLZXlcblx0XHRyZXR1cm5cblx0cGFyc2U6ICggYXR0ciwgb3B0aW9ucyApPT5cblx0XHRfa2V5ID0gb3B0aW9ucy5fZmFjZXQuZ2V0KCBcIm1vZGlmeUtleVwiICkgb3IgQG1vZGlmeUtleSBvciBcInZhbHVlXCJcblx0XHRfbW9kaWZ5ID0gb3B0aW9ucy5fZmFjZXQ/LmdldCggXCJtb2RpZnlcIiApXG5cdFx0aWYgX21vZGlmeT8gYW5kIF8uaXNGdW5jdGlvbiggX21vZGlmeSApXG5cdFx0XHRhdHRyWyBfa2V5IF0gPSBfbW9kaWZ5KCBhdHRyLnZhbHVlLCBvcHRpb25zLl9mYWNldCwgYXR0ciApXG5cdFx0cmV0dXJuIGF0dHJcblxubW9kdWxlLmV4cG9ydHMgPSBJZ2d5UmVzdWx0c1xuIiwiY2xhc3MgQmFzZVJlc3VsdCBleHRlbmRzIEJhY2tib25lLk1vZGVsXG5cdGlkQXR0cmlidXRlOiBcInZhbHVlXCJcblx0Z2V0TGFiZWw6ID0+XG5cdFx0cmV0dXJuIEBnZXQoIFwibGFiZWxcIiApIG9yIEBnZXQoIEBpZEF0dHJpYnV0ZSApIG9yIFwiXCJcblxuXG5jbGFzcyBCYXNlUmVzdWx0cyBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYWNrYm9uZV9zdWJcIiApXG5cdG1vZGVsOiBCYXNlUmVzdWx0XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZVJlc3VsdHNcbiIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGN1c3RvbSwgaWQsIHR4dCkge1xuYnVmLnB1c2goXCI8c3BhbiBjbGFzcz1cXFwidHh0XFxcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IHR4dCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9zcGFuPjxzcGFuIGNsYXNzPVxcXCJidG4td3JwXFxcIj48aVwiICsgKGphZGUuYXR0cihcImRhdGEtaWRcIiwgaWQsIHRydWUsIGZhbHNlKSkgKyBcIiBjbGFzcz1cXFwicm0tcmVzdWx0LWJ0biBmYSBmYS1yZW1vdmVcXFwiPjwvaT5cIik7XG5pZiAoIGN1c3RvbSlcbntcbmJ1Zi5wdXNoKFwiPGlcIiArIChqYWRlLmF0dHIoXCJkYXRhLWlkXCIsIGlkLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcImVkaXQtcmVzdWx0LWJ0biBmYSBmYS1wZW5jaWxcXFwiPjwvaT5cIik7XG59XG5idWYucHVzaChcIjwvc3Bhbj5cIik7fS5jYWxsKHRoaXMsXCJjdXN0b21cIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmN1c3RvbTp0eXBlb2YgY3VzdG9tIT09XCJ1bmRlZmluZWRcIj9jdXN0b206dW5kZWZpbmVkLFwiaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmlkOnR5cGVvZiBpZCE9PVwidW5kZWZpbmVkXCI/aWQ6dW5kZWZpbmVkLFwidHh0XCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC50eHQ6dHlwZW9mIHR4dCE9PVwidW5kZWZpbmVkXCI/dHh0OnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGNpZCkge1xuYnVmLnB1c2goXCI8aW5wdXRcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBjaWQsIHRydWUsIGZhbHNlKSkgKyBcIiBjbGFzcz1cXFwiZGF0ZXJhbmdlLWlucFxcXCIvPlwiKTt9LmNhbGwodGhpcyxcImNpZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguY2lkOnR5cGVvZiBjaWQhPT1cInVuZGVmaW5lZFwiP2NpZDp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQsIG9wZXJhdG9yLCBvcGVyYXRvcnMsIHVuZGVmaW5lZCwgdmFsdWUpIHtcbmlmICggb3BlcmF0b3JzICYmIG9wZXJhdG9ycy5sZW5ndGgpXG57XG5idWYucHVzaChcIjxkaXYgY2xhc3M9XFxcIm9wZXJhdG9yXFxcIj48c2VsZWN0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgXCJcIiArIChjaWQpICsgXCJvcFwiLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIpO1xuLy8gaXRlcmF0ZSBvcGVyYXRvcnNcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gb3BlcmF0b3JzO1xuICBpZiAoJ251bWJlcicgPT0gdHlwZW9mICQkb2JqLmxlbmd0aCkge1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMCwgJCRsID0gJCRvYmoubGVuZ3RoOyBpZHggPCAkJGw7IGlkeCsrKSB7XG4gICAgICB2YXIgb3AgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxvcHRpb25cIiArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBvcCwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJzZWxlY3RlZFwiLCAoIG9wZXJhdG9yID09IG9wICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IG9wKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH0gZWxzZSB7XG4gICAgdmFyICQkbCA9IDA7XG4gICAgZm9yICh2YXIgaWR4IGluICQkb2JqKSB7XG4gICAgICAkJGwrKzsgICAgICB2YXIgb3AgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxvcHRpb25cIiArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBvcCwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJzZWxlY3RlZFwiLCAoIG9wZXJhdG9yID09IG9wICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IG9wKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH1cbn0pLmNhbGwodGhpcyk7XG5cbmJ1Zi5wdXNoKFwiPC9zZWxlY3Q+PC9kaXY+XCIpO1xufVxuYnVmLnB1c2goXCI8aW5wdXRcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBjaWQsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgdmFsdWUsIHRydWUsIGZhbHNlKSkgKyBcIiBjbGFzcz1cXFwibnVtYmVyLWlucFxcXCIvPlwiKTt9LmNhbGwodGhpcyxcImNpZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguY2lkOnR5cGVvZiBjaWQhPT1cInVuZGVmaW5lZFwiP2NpZDp1bmRlZmluZWQsXCJvcGVyYXRvclwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgub3BlcmF0b3I6dHlwZW9mIG9wZXJhdG9yIT09XCJ1bmRlZmluZWRcIj9vcGVyYXRvcjp1bmRlZmluZWQsXCJvcGVyYXRvcnNcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLm9wZXJhdG9yczp0eXBlb2Ygb3BlcmF0b3JzIT09XCJ1bmRlZmluZWRcIj9vcGVyYXRvcnM6dW5kZWZpbmVkLFwidW5kZWZpbmVkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC51bmRlZmluZWQ6dHlwZW9mIHVuZGVmaW5lZCE9PVwidW5kZWZpbmVkXCI/dW5kZWZpbmVkOnVuZGVmaW5lZCxcInZhbHVlXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC52YWx1ZTp0eXBlb2YgdmFsdWUhPT1cInVuZGVmaW5lZFwiP3ZhbHVlOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGNpZCwgdmFsdWUpIHtcbmJ1Zi5wdXNoKFwiPGRpdiBjbGFzcz1cXFwicmFuZ2VpbnBcXFwiPlwiKTtcbnZhciBfdmFscyA9IHZhbHVlID8gdmFsdWUgOiBbXVxuYnVmLnB1c2goXCI8aW5wdXRcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBcIlwiICsgKGNpZCkgKyBcIl9mcm9tXCIsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgX3ZhbHNbMF0sIHRydWUsIGZhbHNlKSkgKyBcIiBjbGFzcz1cXFwibnVtYmVyLWlucCByYW5nZS1mcm9tXFxcIi8+PHNwYW4gY2xhc3M9XFxcInNlcGFyYXRvclxcXCI+LTwvc3Bhbj48aW5wdXRcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBcIlwiICsgKGNpZCkgKyBcIl90b1wiLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInZhbHVlXCIsIF92YWxzWzFdLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcIm51bWJlci1pbnAgcmFuZ2UtdG9cXFwiLz48L2Rpdj5cIik7fS5jYWxsKHRoaXMsXCJjaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmNpZDp0eXBlb2YgY2lkIT09XCJ1bmRlZmluZWRcIj9jaWQ6dW5kZWZpbmVkLFwidmFsdWVcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnZhbHVlOnR5cGVvZiB2YWx1ZSE9PVwidW5kZWZpbmVkXCI/dmFsdWU6dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwidmFyIGphZGUgPSByZXF1aXJlKFwiamFkZS9ydW50aW1lXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlbXBsYXRlKGxvY2Fscykge1xudmFyIGJ1ZiA9IFtdO1xudmFyIGphZGVfbWl4aW5zID0ge307XG52YXIgamFkZV9pbnRlcnA7XG5cbjtyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGNpZCwgbXVsdGlwbGUsIG9wdGlvbkdyb3Vwcywgb3B0aW9ucywgdW5kZWZpbmVkLCB2YWx1ZSkge1xuYnVmLnB1c2goXCI8c2VsZWN0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgY2lkLCB0cnVlLCBmYWxzZSkpICsgXCIgbXVsdGlwbGU9XFxcIm11bHRpcGxlXFxcIiBjbGFzcz1cXFwic2VsZWN0LWlucFxcXCI+XCIpO1xuaWYgKCBvcHRpb25Hcm91cHMpXG57XG4vLyBpdGVyYXRlIG9wdGlvbkdyb3Vwc1xuOyhmdW5jdGlvbigpe1xuICB2YXIgJCRvYmogPSBvcHRpb25Hcm91cHM7XG4gIGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgJCRvYmoubGVuZ3RoKSB7XG5cbiAgICBmb3IgKHZhciBnbmFtZSA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgZ25hbWUgPCAkJGw7IGduYW1lKyspIHtcbiAgICAgIHZhciBvcHRzID0gJCRvYmpbZ25hbWVdO1xuXG5idWYucHVzaChcIjxvcHRncm91cFwiICsgKGphZGUuYXR0cihcImxhYmVsXCIsIGduYW1lLCB0cnVlLCBmYWxzZSkpICsgXCI+PC9vcHRncm91cD5cIik7XG4vLyBpdGVyYXRlIG9wdHNcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gb3B0cztcbiAgaWYgKCdudW1iZXInID09IHR5cGVvZiAkJG9iai5sZW5ndGgpIHtcblxuICAgIGZvciAodmFyIGlkeCA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgaWR4IDwgJCRsOyBpZHgrKykge1xuICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgZWwudmFsdWUsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCB2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKCBlbC52YWx1ZSApID49IDAgKSwgdHJ1ZSwgZmFsc2UpKSArIFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvb3B0aW9uPlwiKTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBpZHggaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPG9wdGlvblwiICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGVsLnZhbHVlLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInNlbGVjdGVkXCIsICggdmFsdWUgJiYgdmFsdWUuaW5kZXhPZiggZWwudmFsdWUgKSA+PSAwICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsLmxhYmVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH1cbn0pLmNhbGwodGhpcyk7XG5cbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBnbmFtZSBpbiAkJG9iaikge1xuICAgICAgJCRsKys7ICAgICAgdmFyIG9wdHMgPSAkJG9ialtnbmFtZV07XG5cbmJ1Zi5wdXNoKFwiPG9wdGdyb3VwXCIgKyAoamFkZS5hdHRyKFwibGFiZWxcIiwgZ25hbWUsIHRydWUsIGZhbHNlKSkgKyBcIj48L29wdGdyb3VwPlwiKTtcbi8vIGl0ZXJhdGUgb3B0c1xuOyhmdW5jdGlvbigpe1xuICB2YXIgJCRvYmogPSBvcHRzO1xuICBpZiAoJ251bWJlcicgPT0gdHlwZW9mICQkb2JqLmxlbmd0aCkge1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMCwgJCRsID0gJCRvYmoubGVuZ3RoOyBpZHggPCAkJGw7IGlkeCsrKSB7XG4gICAgICB2YXIgZWwgPSAkJG9ialtpZHhdO1xuXG5idWYucHVzaChcIjxvcHRpb25cIiArIChqYWRlLmF0dHIoXCJ2YWx1ZVwiLCBlbC52YWx1ZSwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJzZWxlY3RlZFwiLCAoIHZhbHVlICYmIHZhbHVlLmluZGV4T2YoIGVsLnZhbHVlICkgPj0gMCApLCB0cnVlLCBmYWxzZSkpICsgXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBlbC5sYWJlbCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9vcHRpb24+XCIpO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHZhciAkJGwgPSAwO1xuICAgIGZvciAodmFyIGlkeCBpbiAkJG9iaikge1xuICAgICAgJCRsKys7ICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgZWwudmFsdWUsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCB2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKCBlbC52YWx1ZSApID49IDAgKSwgdHJ1ZSwgZmFsc2UpKSArIFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvb3B0aW9uPlwiKTtcbiAgICB9XG5cbiAgfVxufSkuY2FsbCh0aGlzKTtcblxuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG59XG5lbHNlXG57XG4vLyBpdGVyYXRlIG9wdGlvbnNcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gb3B0aW9ucztcbiAgaWYgKCdudW1iZXInID09IHR5cGVvZiAkJG9iai5sZW5ndGgpIHtcblxuICAgIGZvciAodmFyIGlkeCA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgaWR4IDwgJCRsOyBpZHgrKykge1xuICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8b3B0aW9uXCIgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgZWwudmFsdWUsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwic2VsZWN0ZWRcIiwgKCB2YWx1ZSAmJiB2YWx1ZS5pbmRleE9mKCBlbC52YWx1ZSApID49IDAgKSwgdHJ1ZSwgZmFsc2UpKSArIFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwubGFiZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvb3B0aW9uPlwiKTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB2YXIgJCRsID0gMDtcbiAgICBmb3IgKHZhciBpZHggaW4gJCRvYmopIHtcbiAgICAgICQkbCsrOyAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPG9wdGlvblwiICsgKGphZGUuYXR0cihcInZhbHVlXCIsIGVsLnZhbHVlLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInNlbGVjdGVkXCIsICggdmFsdWUgJiYgdmFsdWUuaW5kZXhPZiggZWwudmFsdWUgKSA+PSAwICksIHRydWUsIGZhbHNlKSkgKyBcIj5cIiArIChqYWRlLmVzY2FwZShudWxsID09IChqYWRlX2ludGVycCA9IGVsLmxhYmVsKSA/IFwiXCIgOiBqYWRlX2ludGVycCkpICsgXCI8L29wdGlvbj5cIik7XG4gICAgfVxuXG4gIH1cbn0pLmNhbGwodGhpcyk7XG5cbn1cbmJ1Zi5wdXNoKFwiPC9zZWxlY3Q+XCIpO1xuaWYgKCBtdWx0aXBsZSlcbntcbmJ1Zi5wdXNoKFwiPHNwYW4gY2xhc3M9XFxcImJ0biBidG4teHMgYnRuLXN1Y2Nlc3Mgc2VsZWN0LWNoZWNrIGZhIGZhLWNoZWNrXFxcIj48L3NwYW4+XCIpO1xufX0uY2FsbCh0aGlzLFwiY2lkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jaWQ6dHlwZW9mIGNpZCE9PVwidW5kZWZpbmVkXCI/Y2lkOnVuZGVmaW5lZCxcIm11bHRpcGxlXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5tdWx0aXBsZTp0eXBlb2YgbXVsdGlwbGUhPT1cInVuZGVmaW5lZFwiP211bHRpcGxlOnVuZGVmaW5lZCxcIm9wdGlvbkdyb3Vwc1wiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgub3B0aW9uR3JvdXBzOnR5cGVvZiBvcHRpb25Hcm91cHMhPT1cInVuZGVmaW5lZFwiP29wdGlvbkdyb3Vwczp1bmRlZmluZWQsXCJvcHRpb25zXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5vcHRpb25zOnR5cGVvZiBvcHRpb25zIT09XCJ1bmRlZmluZWRcIj9vcHRpb25zOnVuZGVmaW5lZCxcInVuZGVmaW5lZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudW5kZWZpbmVkOnR5cGVvZiB1bmRlZmluZWQhPT1cInVuZGVmaW5lZFwiP3VuZGVmaW5lZDp1bmRlZmluZWQsXCJ2YWx1ZVwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgudmFsdWU6dHlwZW9mIHZhbHVlIT09XCJ1bmRlZmluZWRcIj92YWx1ZTp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJ2YXIgamFkZSA9IHJlcXVpcmUoXCJqYWRlL3J1bnRpbWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGVtcGxhdGUobG9jYWxzKSB7XG52YXIgYnVmID0gW107XG52YXIgamFkZV9taXhpbnMgPSB7fTtcbnZhciBqYWRlX2ludGVycDtcbjt2YXIgbG9jYWxzX2Zvcl93aXRoID0gKGxvY2FscyB8fCB7fSk7KGZ1bmN0aW9uIChjaWQsIGlucHZhbCkge1xuYnVmLnB1c2goXCI8aW5wdXRcIiArIChqYWRlLmF0dHIoXCJpZFwiLCBjaWQsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5hdHRyKFwidmFsdWVcIiwgaW5wdmFsLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcInNlbGVjdG9yLWlucFxcXCIvPjx1bFwiICsgKGphZGUuYXR0cihcImlkXCIsIFwiXCIgKyAoY2lkKSArIFwidHlwZWxpc3RcIiwgdHJ1ZSwgZmFsc2UpKSArIFwiIGNsYXNzPVxcXCJ0eXBlbGlzdFxcXCI+PC91bD5cIik7fS5jYWxsKHRoaXMsXCJjaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmNpZDp0eXBlb2YgY2lkIT09XCJ1bmRlZmluZWRcIj9jaWQ6dW5kZWZpbmVkLFwiaW5wdmFsXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5pbnB2YWw6dHlwZW9mIGlucHZhbCE9PVwidW5kZWZpbmVkXCI/aW5wdmFsOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGFjdGl2ZUlkeCwgY3VzdG9tLCBsaXN0LCBxdWVyeSwgdW5kZWZpbmVkKSB7XG52YXIgYWRkID0gMDtcbmlmICggY3VzdG9tICYmIHF1ZXJ5KVxue1xuYWRkID0gMTtcbmJ1Zi5wdXNoKFwiPGxpPjxhIGRhdGEtaWQ9XFxcIl9jdXN0b21cXFwiIGRhdGEtaWR4PVxcXCItMVxcXCJcIiArIChqYWRlLmNscyhbe2FjdGl2ZTowID09PSBhY3RpdmVJZHh9XSwgW3RydWVdKSkgKyBcIj48aT5cXFwiXCIgKyAoKChqYWRlX2ludGVycCA9IHF1ZXJ5KSA9PSBudWxsID8gJycgOiBqYWRlX2ludGVycCkpICsgXCJcXFwiPC9pPjwvYT48L2xpPlwiKTtcbn1cbmlmICggbGlzdC5sZW5ndGgpXG57XG4vLyBpdGVyYXRlIGxpc3RcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gbGlzdDtcbiAgaWYgKCdudW1iZXInID09IHR5cGVvZiAkJG9iai5sZW5ndGgpIHtcblxuICAgIGZvciAodmFyIGlkeCA9IDAsICQkbCA9ICQkb2JqLmxlbmd0aDsgaWR4IDwgJCRsOyBpZHgrKykge1xuICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8bGlcIiArIChqYWRlLmNscyhbZWwuY3NzY2xhc3NdLCBbdHJ1ZV0pKSArIFwiPjxhXCIgKyAoamFkZS5hdHRyKFwiZGF0YS1pZFwiLCBlbC5pZCwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJkYXRhLWlkeFwiLCBpZHgsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5jbHMoW3thY3RpdmU6KGlkeCArIGFkZCkgPT09IGFjdGl2ZUlkeH1dLCBbdHJ1ZV0pKSArIFwiPlwiICsgKCgoamFkZV9pbnRlcnAgPSBlbC5sYWJlbCkgPT0gbnVsbCA/ICcnIDogamFkZV9pbnRlcnApKSArIFwiPC9hPjwvbGk+XCIpO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHZhciAkJGwgPSAwO1xuICAgIGZvciAodmFyIGlkeCBpbiAkJG9iaikge1xuICAgICAgJCRsKys7ICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8bGlcIiArIChqYWRlLmNscyhbZWwuY3NzY2xhc3NdLCBbdHJ1ZV0pKSArIFwiPjxhXCIgKyAoamFkZS5hdHRyKFwiZGF0YS1pZFwiLCBlbC5pZCwgdHJ1ZSwgZmFsc2UpKSArIChqYWRlLmF0dHIoXCJkYXRhLWlkeFwiLCBpZHgsIHRydWUsIGZhbHNlKSkgKyAoamFkZS5jbHMoW3thY3RpdmU6KGlkeCArIGFkZCkgPT09IGFjdGl2ZUlkeH1dLCBbdHJ1ZV0pKSArIFwiPlwiICsgKCgoamFkZV9pbnRlcnAgPSBlbC5sYWJlbCkgPT0gbnVsbCA/ICcnIDogamFkZV9pbnRlcnApKSArIFwiPC9hPjwvbGk+XCIpO1xuICAgIH1cblxuICB9XG59KS5jYWxsKHRoaXMpO1xuXG59XG5lbHNlIGlmICggIWN1c3RvbSlcbntcbmJ1Zi5wdXNoKFwiPGxpPjxhIGNsYXNzPVxcXCJlbXB0eXJlc1xcXCI+bm8gcmVzdWx0IGZvciBcXFwiXCIgKyAoamFkZS5lc2NhcGUoKGphZGVfaW50ZXJwID0gcXVlcnkpID09IG51bGwgPyAnJyA6IGphZGVfaW50ZXJwKSkgKyBcIlxcXCI8L2E+PC9saT5cIik7XG59fS5jYWxsKHRoaXMsXCJhY3RpdmVJZHhcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmFjdGl2ZUlkeDp0eXBlb2YgYWN0aXZlSWR4IT09XCJ1bmRlZmluZWRcIj9hY3RpdmVJZHg6dW5kZWZpbmVkLFwiY3VzdG9tXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5jdXN0b206dHlwZW9mIGN1c3RvbSE9PVwidW5kZWZpbmVkXCI/Y3VzdG9tOnVuZGVmaW5lZCxcImxpc3RcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmxpc3Q6dHlwZW9mIGxpc3QhPT1cInVuZGVmaW5lZFwiP2xpc3Q6dW5kZWZpbmVkLFwicXVlcnlcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnF1ZXJ5OnR5cGVvZiBxdWVyeSE9PVwidW5kZWZpbmVkXCI/cXVlcnk6dW5kZWZpbmVkLFwidW5kZWZpbmVkXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC51bmRlZmluZWQ6dHlwZW9mIHVuZGVmaW5lZCE9PVwidW5kZWZpbmVkXCI/dW5kZWZpbmVkOnVuZGVmaW5lZCkpOztyZXR1cm4gYnVmLmpvaW4oXCJcIik7XG59OyIsInZhciBqYWRlID0gcmVxdWlyZShcImphZGUvcnVudGltZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZW1wbGF0ZShsb2NhbHMpIHtcbnZhciBidWYgPSBbXTtcbnZhciBqYWRlX21peGlucyA9IHt9O1xudmFyIGphZGVfaW50ZXJwO1xuO3ZhciBsb2NhbHNfZm9yX3dpdGggPSAobG9jYWxzIHx8IHt9KTsoZnVuY3Rpb24gKGNpZCwgdmFsdWUpIHtcbmJ1Zi5wdXNoKFwiPGlucHV0XCIgKyAoamFkZS5hdHRyKFwiaWRcIiwgY2lkLCB0cnVlLCBmYWxzZSkpICsgKGphZGUuYXR0cihcInZhbHVlXCIsIHZhbHVlLCB0cnVlLCBmYWxzZSkpICsgXCIgY2xhc3M9XFxcInN0cmluZy1pbnBcXFwiLz5cIik7fS5jYWxsKHRoaXMsXCJjaWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLmNpZDp0eXBlb2YgY2lkIT09XCJ1bmRlZmluZWRcIj9jaWQ6dW5kZWZpbmVkLFwidmFsdWVcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnZhbHVlOnR5cGVvZiB2YWx1ZSE9PVwidW5kZWZpbmVkXCI/dmFsdWU6dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwidmFyIGphZGUgPSByZXF1aXJlKFwiamFkZS9ydW50aW1lXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlbXBsYXRlKGxvY2Fscykge1xudmFyIGJ1ZiA9IFtdO1xudmFyIGphZGVfbWl4aW5zID0ge307XG52YXIgamFkZV9pbnRlcnA7XG47dmFyIGxvY2Fsc19mb3Jfd2l0aCA9IChsb2NhbHMgfHwge30pOyhmdW5jdGlvbiAobGFiZWwsIHBpbm5lZCwgc2VsZWN0ZWQsIHVuZGVmaW5lZCkge1xuaWYgKCAhcGlubmVkKVxue1xuYnVmLnB1c2goXCI8ZGl2IGNsYXNzPVxcXCJybS1mYWNldC1idG4gZmEgZmEtcmVtb3ZlXFxcIj48L2Rpdj5cIik7XG59XG5idWYucHVzaChcIjxzcGFuIGNsYXNzPVxcXCJzdWJsYWJlbFxcXCI+XCIgKyAoamFkZS5lc2NhcGUoKGphZGVfaW50ZXJwID0gbGFiZWwpID09IG51bGwgPyAnJyA6IGphZGVfaW50ZXJwKSkgKyBcIjo8L3NwYW4+PHVsIGNsYXNzPVxcXCJzdWJyZXN1bHRzXFxcIj5cIik7XG5pZiAoIHNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aClcbntcbi8vIGl0ZXJhdGUgc2VsZWN0ZWRcbjsoZnVuY3Rpb24oKXtcbiAgdmFyICQkb2JqID0gc2VsZWN0ZWQ7XG4gIGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgJCRvYmoubGVuZ3RoKSB7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwLCAkJGwgPSAkJG9iai5sZW5ndGg7IGlkeCA8ICQkbDsgaWR4KyspIHtcbiAgICAgIHZhciBlbCA9ICQkb2JqW2lkeF07XG5cbmJ1Zi5wdXNoKFwiPGxpPjxzcGFuIGNsYXNzPVxcXCJ0eHRcXFwiPlwiICsgKGphZGUuZXNjYXBlKG51bGwgPT0gKGphZGVfaW50ZXJwID0gZWwpID8gXCJcIiA6IGphZGVfaW50ZXJwKSkgKyBcIjwvc3Bhbj48aSBjbGFzcz1cXFwicm0tZmFjZXQtYnRuIGZhIGZhLXJlbW92ZVxcXCI+PC9pPjwvbGk+XCIpO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHZhciAkJGwgPSAwO1xuICAgIGZvciAodmFyIGlkeCBpbiAkJG9iaikge1xuICAgICAgJCRsKys7ICAgICAgdmFyIGVsID0gJCRvYmpbaWR4XTtcblxuYnVmLnB1c2goXCI8bGk+PHNwYW4gY2xhc3M9XFxcInR4dFxcXCI+XCIgKyAoamFkZS5lc2NhcGUobnVsbCA9PSAoamFkZV9pbnRlcnAgPSBlbCkgPyBcIlwiIDogamFkZV9pbnRlcnApKSArIFwiPC9zcGFuPjxpIGNsYXNzPVxcXCJybS1mYWNldC1idG4gZmEgZmEtcmVtb3ZlXFxcIj48L2k+PC9saT5cIik7XG4gICAgfVxuXG4gIH1cbn0pLmNhbGwodGhpcyk7XG5cbn1cbmJ1Zi5wdXNoKFwiPC91bD48ZGl2IGNsYXNzPVxcXCJzdWJzZWxlY3QgY2xvc2VkXFxcIj48L2Rpdj48ZGl2IGNsYXNzPVxcXCJsb2FkZXJcXFwiPjxpIGNsYXNzPVxcXCJmYSBmYS1jb2cgZmEtc3BpblxcXCI+PC9pPjwvZGl2PlwiKTt9LmNhbGwodGhpcyxcImxhYmVsXCIgaW4gbG9jYWxzX2Zvcl93aXRoP2xvY2Fsc19mb3Jfd2l0aC5sYWJlbDp0eXBlb2YgbGFiZWwhPT1cInVuZGVmaW5lZFwiP2xhYmVsOnVuZGVmaW5lZCxcInBpbm5lZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGgucGlubmVkOnR5cGVvZiBwaW5uZWQhPT1cInVuZGVmaW5lZFwiP3Bpbm5lZDp1bmRlZmluZWQsXCJzZWxlY3RlZFwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguc2VsZWN0ZWQ6dHlwZW9mIHNlbGVjdGVkIT09XCJ1bmRlZmluZWRcIj9zZWxlY3RlZDp1bmRlZmluZWQsXCJ1bmRlZmluZWRcIiBpbiBsb2NhbHNfZm9yX3dpdGg/bG9jYWxzX2Zvcl93aXRoLnVuZGVmaW5lZDp0eXBlb2YgdW5kZWZpbmVkIT09XCJ1bmRlZmluZWRcIj91bmRlZmluZWQ6dW5kZWZpbmVkKSk7O3JldHVybiBidWYuam9pbihcIlwiKTtcbn07IiwidmFyIGphZGUgPSByZXF1aXJlKFwiamFkZS9ydW50aW1lXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRlbXBsYXRlKGxvY2Fscykge1xudmFyIGJ1ZiA9IFtdO1xudmFyIGphZGVfbWl4aW5zID0ge307XG52YXIgamFkZV9pbnRlcnA7XG47dmFyIGxvY2Fsc19mb3Jfd2l0aCA9IChsb2NhbHMgfHwge30pOyhmdW5jdGlvbiAoc2VhcmNoQnV0dG9uKSB7XG5idWYucHVzaChcIjxidXR0b24gY2xhc3M9XFxcImFkZC1mYWNldC1idG4gZmEgZmEtcGx1c1xcXCI+PC9idXR0b24+XCIpO1xuaWYgKCBzZWFyY2hCdXR0b24gIT0gdW5kZWZpbmVkICYmIHNlYXJjaEJ1dHRvbi50ZW1wbGF0ZSAhPSB1bmRlZmluZWQgJiYgc2VhcmNoQnV0dG9uLnRlbXBsYXRlLmxlbmd0aCA+PSAwKVxue1xuYnVmLnB1c2goXCI8YnV0dG9uXCIgKyAoamFkZS5jbHMoWydzZWFyY2gtYnRuJyxzZWFyY2hCdXR0b24uY3NzY2xhc3Mse1wic2VhcmNoLWJ0bi1wdWxscmlnaHRcIjpzZWFyY2hCdXR0b24ucHVsbHJpZ2h0fV0sIFtudWxsLHRydWUsdHJ1ZV0pKSArIFwiPlwiICsgKG51bGwgPT0gKGphZGVfaW50ZXJwID0gc2VhcmNoQnV0dG9uLnRlbXBsYXRlKSA/IFwiXCIgOiBqYWRlX2ludGVycCkgKyBcIjwvYnV0dG9uPlwiKTtcbn19LmNhbGwodGhpcyxcInNlYXJjaEJ1dHRvblwiIGluIGxvY2Fsc19mb3Jfd2l0aD9sb2NhbHNfZm9yX3dpdGguc2VhcmNoQnV0dG9uOnR5cGVvZiBzZWFyY2hCdXR0b24hPT1cInVuZGVmaW5lZFwiP3NlYXJjaEJ1dHRvbjp1bmRlZmluZWQpKTs7cmV0dXJuIGJ1Zi5qb2luKFwiXCIpO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9XG5cdFwiTEVGVFwiOiAzN1xuXHRcIlJJR0hUXCI6IDM5XG5cdFwiVVBcIjogMzhcblx0XCJET1dOXCI6IDQwXG5cdFwiRVNDXCI6IFsgMjI5LCAyNyBdXG5cdFwiRU5URVJcIjogMTNcblx0XCJUQUJcIjogOVxuIiwiS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uLy4uL3V0aWxzL2tleWNvZGVzXCIgKVxuU3ViUmVzdWx0cyA9IHJlcXVpcmUoIFwiLi4vLi4vbW9kZWxzL3N1YnJlc3VsdHNcIiApXG5cbmNsYXNzIEZhY2V0U3Vic0Jhc2UgZXh0ZW5kcyBCYWNrYm9uZS5WaWV3XG5cdHJlc3VsdFRlbXBsYXRlOiByZXF1aXJlKCBcIi4uLy4uL3RtcGxzL3Jlc3VsdF9iYXNlLmphZGVcIiApXG5cblx0aW5pdGlhbGl6ZTogKCBvcHRpb25zICk9PlxuXHRcdEBzdWIgPSBvcHRpb25zLnN1YlxuXHRcdEByZXN1bHQgPSBuZXcgU3ViUmVzdWx0cygpXG5cdFx0cmV0dXJuXG5cblx0ZXZlbnRzOiA9PlxuXHRcdFwia2V5dXAgI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwiaW5wdXRcIlxuXHRcdFwia2V5ZG93biAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJpbnB1dFwiXG5cblx0Zm9jdXM6ID0+XG5cdFx0QCRlbC5yZW1vdmVDbGFzcyggXCJjbG9zZWRcIiApXG5cdFx0QGZvY3VzZWQgPSB0cnVlXG5cdFx0QCRpbnAuZm9jdXMoKVxuXHRcdHJldHVyblxuXG5cdHJlbmRlclJlc3VsdDogKCByZW5kZXJFbXB0eSA9IGZhbHNlICk9PlxuXHRcdGlmIHJlbmRlckVtcHR5XG5cdFx0XHRyZXR1cm4gXCJcIlxuXHRcdF9saXN0ID0gW11cblx0XHRmb3IgbW9kZWwsIGlkeCBpbiBAcmVzdWx0Lm1vZGVsc1xuXHRcdFx0X2xibCA9IG1vZGVsLmdldExhYmVsKClcblx0XHRcdGlmIF9sYmw/IGFuZCBfbGJsIGlzbnQgXCJcIlxuXHRcdFx0XHRfbGlzdC5wdXNoIG1vZGVsLmdldExhYmVsKClcblx0XHRpZiBfbGlzdC5sZW5ndGhcblx0XHRcdHJldHVybiBcIjxsaT5cIiArIF9saXN0LmpvaW4oIFwiPC9saT48bGk+XCIgKSArIFwiPC9saT5cIlxuXHRcdHJldHVybiBcIlwiXG5cdFx0XG5cdFx0XG5cdG9wZW46ID0+XG5cdFx0QCRlbC5yZW1vdmVDbGFzcyggXCJjbG9zZWRcIiApXG5cdFx0QCRlbC5hZGRDbGFzcyggXCJvcGVuXCIgKVxuXHRcdEBpc09wZW4gPSB0cnVlXG5cdFx0QHRyaWdnZXIoIFwib3BlbmVkXCIgKVxuXHRcdHJldHVyblxuXG5cdGlucHV0OiAoIGV2bnQgKT0+XG5cdFx0aWYgZXZudC50eXBlIGlzIFwia2V5ZG93blwiXG5cdFx0XHRzd2l0Y2ggZXZudC5rZXlDb2RlXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuRU5URVJcblx0XHRcdFx0XHRAc2VsZWN0KClcblx0XHRyZXR1cm5cblx0XG5cdF9vbktleTogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQua2V5Q29kZSBpcyBLRVlDT0RFUy5UQUIgb3IgZXZudC5rZXlDb2RlIGluIEtFWUNPREVTLlRBQlxuXHRcdFx0QF9vblRhYkFjdGlvbiggZXZudCApXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblx0XHRcblx0Z2V0VGVtcGxhdGVEYXRhOiA9PlxuXHRcdHJldCA9XG5cdFx0XHRjaWQ6IEBjaWRcblx0XHRcdCN0YWJfaW5kZXg6ICggKCBAbW9kZWw/Ll9pZHggKiAxMCApIG9yIDEgKSArICggKCBAc3ViPy5wYXJlbnQ/LmlkeCBvciAxICkgKiAxMDAwIClcblx0XHRcdHZhbHVlOiBAbW9kZWw/LmdldCggXCJ2YWx1ZVwiIClcblx0XHRyZXR1cm4gcmV0XG5cblx0X2dldElucFNlbGVjdG9yOiA9PlxuXHRcdHJldHVybiBcImlucHV0IyN7QGNpZH1cIlxuXHRcblx0cmVvcGVuOiAoIHBWaWV3ICk9PlxuXHRcdEAkZWwucmVtb3ZlQ2xhc3MoIFwiY2xvc2VkXCIgKVxuXHRcdEAkZWwuYWRkQ2xhc3MoIFwib3BlblwiIClcblx0XHRAcmVuZGVyKClcblx0XHRwVmlldz8ub3BlbigpXG5cdFx0cmV0dXJuXG5cdFxuXHRyZW5kZXI6ICggaW5pdGlhbEFkZCApPT5cblx0XHRfdG1wbCA9IEB0ZW1wbGF0ZSggIEBnZXRUZW1wbGF0ZURhdGEoKSApXG5cdFx0QCRlbC5odG1sKCBfdG1wbCApXG5cdFx0aWYgbm90IGluaXRpYWxBZGRcblx0XHRcdEAkZWwucmVtb3ZlQ2xhc3MoIFwiY2xvc2VkXCIgKVxuXHRcdEAkaW5wID0gQCRlbC5maW5kKCBAX2dldElucFNlbGVjdG9yKCkgKVxuXHRcdCMkKCBkb2N1bWVudCApLm9uIEBfaGFzVGFiRXZlbnQoKSwgQF9vbktleSBpZiBAX2hhc1RhYkxpc3RlbmVyKCB0cnVlIClcblx0XHRyZXR1cm5cblx0XG5cdF9oYXNUYWJFdmVudDogLT5cblx0XHRyZXR1cm4gXCJrZXlkb3duXCJcblx0XHRcblx0X2hhc1RhYkxpc3RlbmVyOiAtPlxuXHRcdHJldHVybiB0cnVlXG5cdFxuXHRfb25UYWJBY3Rpb246ICggZXZudCApPT5cblx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0QHNlbGVjdCgpXG5cdFx0cmV0dXJuIHRydWVcblxuXHRjbG9zZTogKCBldm50ICk9PlxuXHRcdEBmb2N1c2VkID0gZmFsc2Vcblx0XHQjJCggZG9jdW1lbnQgKS5vZmYgQF9oYXNUYWJFdmVudCgpLCBAX29uS2V5IGlmIEBfaGFzVGFiTGlzdGVuZXIoIGZhbHNlIClcblx0XHRAJGVsLnJlbW92ZUNsYXNzKCBcIm9wZW5cIiApXG5cdFx0QCRlbC5hZGRDbGFzcyggXCJjbG9zZWRcIiApXG5cdFx0QGlzT3BlbiA9IGZhbHNlXG5cdFx0QHRyaWdnZXIoIFwiY2xvc2VkXCIsIEByZXN1bHQgKVxuXHRcdHJldHVyblxuXG5cdGdldFJlc3VsdHM6ID0+XG5cdFx0dmFsdWU6IEBnZXRWYWx1ZSgpXG5cblx0Z2V0VmFsdWU6ID0+XG5cdFx0cmV0dXJuIEAkaW5wLnZhbCgpXG5cblx0Z2V0U2VsZWN0TW9kZWw6IC0+XG5cdFx0cmV0dXJuIFN1YlJlc3VsdHMucHJvdG90eXBlLm1vZGVsXG5cblx0X2NoZWNrU2VsZWN0RW1wdHk6ICggX3ZhbCApPT5cblx0XHRpZiBfLmlzRW1wdHkoIF92YWwgKSBhbmQgbm90IF8uaXNOdW1iZXIoIF92YWwgKSBhbmQgbm90IF8uaXNCb29sZWFuKCBfdmFsICkgYW5kIG5vdCBAbW9kZWwuZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdEBjbG9zZSgpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdHJldHVybiBmYWxzZVxuXG5cdHNlbGVjdDogPT5cblx0XHRfdmFsID0gQGdldFZhbHVlKClcblx0XHRyZXR1cm4gaWYgQF9jaGVja1NlbGVjdEVtcHR5KCBfdmFsIClcblx0XHRAc2V0KCBfdmFsIClcblx0XHRyZXR1cm5cblxuXHRzZXQ6ICggdmFsICk9PlxuXHRcdF9tb2RlbCA9IEByZXN1bHQuZmlyc3QoKVxuXHRcdGlmIG5vdCBfbW9kZWw/XG5cdFx0XHRfTW9kZWxDb25zdCA9IEBnZXRTZWxlY3RNb2RlbCgpXG5cdFx0XHRfbW9kZWwgPSBuZXcgX01vZGVsQ29uc3QoIHZhbHVlOiB2YWwgKVxuXHRcdFx0QHJlc3VsdC5hZGQoIF9tb2RlbCApXG5cdFx0ZWxzZVxuXHRcdFx0X21vZGVsLnNldCggdmFsdWU6IHZhbCApXG5cdFx0QHRyaWdnZXIoIFwic2VsZWN0ZWRcIiwgX21vZGVsIClcblx0XHRAY2xvc2UoKVxuXHRcdHJldHVyblxuXG5cbm1vZHVsZS5leHBvcnRzID0gRmFjZXRTdWJzQmFzZVxuIiwiS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uLy4uL3V0aWxzL2tleWNvZGVzXCIgKVxuXG5jbGFzcyBGYWNldFN1YnNEYXRlUmFuZ2UgZXh0ZW5kcyByZXF1aXJlKCBcIi4vYmFzZVwiIClcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvZGF0ZXJhbmdlLmphZGVcIiApXG5cblx0Zm9yY2VkRGF0ZVJhbmdlT3B0czogPT5cblx0XHRfb3B0cyA9XG5cdFx0XHRvcGVuczogXCJyaWdodFwiXG5cdFx0XHRcblx0XHRpZiBAbW9kZWwuZ2V0KCBcImRhdGVmb3JtYXRcIiApXG5cdFx0XHRfb3B0cy5sb2NhbGUgPVxuXHRcdFx0XHRmb3JtYXQ6IEBtb2RlbC5nZXQoIFwiZGF0ZWZvcm1hdFwiIClcblx0XHRcblx0XHRpZiBAbW9kZWwuZ2V0KFwidmFsdWVcIik/WzBdP1xuXHRcdFx0X3NkID0gbW9tZW50KCBAbW9kZWwuZ2V0KFwidmFsdWVcIilbMF0sIEBtb2RlbC5nZXQoIFwiZGF0ZWZvcm1hdFwiICkgKVxuXHRcdFx0aWYgX3NkLmlzVmFsaWQoKVxuXHRcdFx0XHRfb3B0cy5zdGFydERhdGUgPSBfc2QuX2RcblxuXHRcdGlmIEBtb2RlbC5nZXQoXCJ2YWx1ZVwiKT9bMV0/XG5cdFx0XHRfZWQgPSBtb21lbnQoIEBtb2RlbC5nZXQoXCJ2YWx1ZVwiKVsxXSwgQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKSApXG5cdFx0XHRpZiBfZWQuaXNWYWxpZCgpXG5cdFx0XHRcdF9vcHRzLmVuZERhdGUgPSBfZWQuX2Rcblx0XHRyZXR1cm4gX29wdHNcblxuXHRldmVudHM6ID0+XG5cdFx0cmV0dXJuXG5cblx0Zm9jdXM6ICgpPT5cblx0XHRpZiBub3QgQGRhdGVyYW5nZXBpY2tlcj9cblx0XHRcdF9vcHRzID0gXy5leHRlbmQoIHt9LCBAbW9kZWwuZ2V0KCBcIm9wdHNcIiApLCBAZm9yY2VkRGF0ZVJhbmdlT3B0cygpIClcblx0XHRcdEAkaW5wLmRhdGVyYW5nZXBpY2tlciggX29wdHMsIEBfZGF0ZVJldHVybiApXG5cdFx0XHRAZGF0ZXJhbmdlcGlja2VyID0gQCRpbnAuZGF0YSggXCJkYXRlcmFuZ2VwaWNrZXJcIiApXG5cdFx0XHRAZGF0ZXJhbmdlcGlja2VyLmNvbnRhaW5lcj8uYWRkQ2xhc3MoIFwiZGF0ZXJhbmdlLWlnZ3lcIiApXG5cdFx0XHRcblx0XHRcdCMgcHJldmVudCBmcm9tIGhhbmRsaWNoIHRoZSBvdXRlcmNsaWNrIGV4aXQgZnJvbSBNYWluVmlld1xuXHRcdFx0QGRhdGVyYW5nZXBpY2tlci5jb250YWluZXIub24gXCJjbGlja1wiLCAoIGV2bnQgKS0+XG5cdFx0XHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0ZWxzZVxuXHRcdFx0QGRhdGVyYW5nZXBpY2tlci5lbGVtZW50ID0gQCRpbnBcblx0XHRcdEBkYXRlcmFuZ2VwaWNrZXIuc2hvdygpXG5cdFx0XHRcblx0XHRAJGlucC5vbiggXCJjYW5jZWwuZGF0ZXJhbmdlcGlja2VyXCIsIEBjbG9zZSApXG5cdFx0QCRpbnAub24oIFwiaGlkZS5kYXRlcmFuZ2VwaWNrZXJcIiwgQGNsb3NlIClcblx0XHRyZXR1cm4gc3VwZXJcblx0XHRcblx0Y2xvc2U6ID0+XG5cdFx0c3VwZXJcblx0XHRAJGlucC5vZmYoIFwiY2FuY2VsLmRhdGVyYW5nZXBpY2tlclwiLCBAY2xvc2UgKVxuXHRcdEAkaW5wLm9mZiggXCJoaWRlLmRhdGVyYW5nZXBpY2tlclwiLCBAY2xvc2UgKVxuXHRcdHJldHVyblxuXG5cdHJlbW92ZTogPT5cblx0XHRAZGF0ZXJhbmdlcGlja2VyPy5yZW1vdmUoKVxuXHRcdEBkYXRlcmFuZ2VwaWNrZXIgPSBudWxsXG5cdFx0cmV0dXJuIHN1cGVyXG5cblx0cmVuZGVyUmVzdWx0OiA9PlxuXHRcdF9yZXMgPSBAZ2V0UmVzdWx0cygpXG5cdFx0XG5cdFx0aWYgXy5pc051bWJlciggX3Jlcy52YWx1ZVsgMCBdIClcblx0XHRcdF9zdGFydERhdGUgPSBtb21lbnQoIF9yZXMudmFsdWVbIDAgXSApXG5cdFx0ZWxzZVxuXHRcdFx0X3N0YXJ0RGF0ZSA9IG1vbWVudCggX3Jlcy52YWx1ZVsgMCBdLCBAbW9kZWwuZ2V0KCBcImRhdGVmb3JtYXRcIiApIClcblx0XHRcdFxuXHRcdGlmIF9yZXMudmFsdWVbIDEgXT9cblx0XHRcdGlmIF8uaXNOdW1iZXIoIF9yZXMudmFsdWVbIDEgXSApXG5cdFx0XHRcdF9lbmREYXRlID0gbW9tZW50KCBfcmVzLnZhbHVlWyAxIF0gKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHRfZW5kRGF0ZSA9IG1vbWVudCggX3Jlcy52YWx1ZVsgMSBdLCBAbW9kZWwuZ2V0KCBcImRhdGVmb3JtYXRcIiApIClcblxuXHRcdF90aW1lID0gQG1vZGVsLmdldCggXCJvcHRzXCIgKS50aW1lUGlja2VyXG5cblx0XHRfcyA9IFwiPGxpPlwiXG5cdFx0aWYgQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKT9cblx0XHRcdF9mcm10ID0gQG1vZGVsLmdldCggXCJkYXRlZm9ybWF0XCIgKVxuXHRcdGVsc2UgaWYgX3RpbWVcblx0XHRcdF9mcm10ID0gXCJMTExMXCJcblx0XHRlbHNlXG5cdFx0XHRfZnJtdCA9IFwiTExcIlxuXHRcdF9zICs9IF9zdGFydERhdGUuZm9ybWF0KCBfZnJtdCApXG5cblx0XHRpZiBfZW5kRGF0ZT9cblx0XHRcdF9zICs9IFwiIC0gXCJcblx0XHRcdF9zICs9IF9lbmREYXRlLmZvcm1hdCggX2ZybXQgKVxuXG5cdFx0X3MgKz0gXCI8L2xpPlwiXG5cblx0XHRyZXR1cm4gX3Ncblx0XG5cdF9oYXNUYWJMaXN0ZW5lcjogLT5cblx0XHRyZXR1cm4gZmFsc2Vcblx0XG5cdF9kYXRlUmV0dXJuOiAoIEBzdGFydERhdGUsIEBlbmREYXRlICk9PlxuXHRcdEBtb2RlbC5zZXQoIFwidmFsdWVcIiwgQGdldFZhbHVlKCBmYWxzZSApIClcblx0XHRAc2VsZWN0KClcblx0XHRyZXR1cm5cblxuXHRnZXRUZW1wbGF0ZURhdGE6ID0+XG5cdFx0cmV0dXJuIHN1cGVyXG5cblx0Z2V0VmFsdWU6ICggcHJlZGVmID0gdHJ1ZSApPT5cblx0XHRpZiBwcmVkZWZcblx0XHRcdF9wcmVkZWZWYWwgPSBAbW9kZWwuZ2V0KCBcInZhbHVlXCIgKVxuXHRcdFx0aWYgX3ByZWRlZlZhbD9cblx0XHRcdFx0aWYgbm90IF8uaXNBcnJheSggX3ByZWRlZlZhbCApXG5cdFx0XHRcdFx0X3ByZWRlZlZhbCA9ICBbIF9wcmVkZWZWYWwgXVxuXHRcdFx0XHRbIEBzdGFydERhdGUsIEBlbmREYXRlIF0gPSBfcHJlZGVmVmFsXG5cdFx0XHRcdHJldHVybiBfcHJlZGVmVmFsXG5cdFx0X291dCA9IFsgQHN0YXJ0RGF0ZS52YWx1ZU9mKCkgXVxuXHRcdF9vdXQucHVzaCBAZW5kRGF0ZS52YWx1ZU9mKCkgaWYgQGVuZERhdGU/XG5cdFx0cmV0dXJuIF9vdXRcblxuXHRzZWxlY3Q6ID0+XG5cdFx0X01vZGVsQ29uc3QgPSBAZ2V0U2VsZWN0TW9kZWwoKVxuXHRcdF9tb2RlbCA9IG5ldyBfTW9kZWxDb25zdCggdmFsdWU6IEBnZXRWYWx1ZSgpIClcblx0XHRAcmVzdWx0LmFkZCggX21vZGVsIClcblx0XHRAdHJpZ2dlciggXCJzZWxlY3RlZFwiLCBfbW9kZWwgKVxuXHRcdEBjbG9zZSgpXG5cdFx0cmV0dXJuXG5cbm1vZHVsZS5leHBvcnRzID0gRmFjZXRTdWJzRGF0ZVJhbmdlXG4iLCJLRVlDT0RFUyA9IHJlcXVpcmUoIFwiLi4vLi4vdXRpbHMva2V5Y29kZXNcIiApXG5cbm5lYXJlc3QgPSAobiwgdiktPlxuXHRuID0gbiAvIHZcblx0biA9IE1hdGgucm91bmQobikgKiB2XG5cdHJldHVybiBuXG5cdFxucHJlY2lzaW9uID0gKG4sIGRwKS0+XG5cdGRwID0gTWF0aC5wb3coMTAsIGRwKVxuXHRuID0gbiAqIGRwXG5cdG4gPSBNYXRoLnJvdW5kKG4pXG5cdG4gPSBuIC8gZHBcblx0cmV0dXJuIG5cblxuY2xhc3MgRmFjZXROdW1iZXJCYXNlIGV4dGVuZHMgcmVxdWlyZSggXCIuL2Jhc2VcIiApXG5cblx0Y29uc3RydWN0b3I6IC0+XG5cdFx0QHNldE51bWJlciA9IF8udGhyb3R0bGUoIEBfc2V0TnVtYmVyLCAzMDAsIHtsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IGZhbHNlfSApXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblxuXHRldmVudHM6ID0+XG5cdFx0XCJrZXl1cCAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJpbnB1dFwiXG5cdFx0XCJrZXlkb3duICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblxuXG5cblx0aW5wdXQ6ICggZXZudCApPT5cblx0XHRfJGVsID0gJCggZXZudC5jdXJyZW50VGFyZ2V0IClcblx0XHRpZiBldm50LnR5cGUgaXMgXCJrZXlkb3duXCJcblx0XHRcdHN3aXRjaCBldm50LmtleUNvZGVcblx0XHRcdFx0d2hlbiBLRVlDT0RFUy5VUFxuXHRcdFx0XHRcdEBjcmVtZW50KCBAbW9kZWwuZ2V0KCBcInN0ZXBcIiApLCBfJGVsIClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0d2hlbiBLRVlDT0RFUy5ET1dOXG5cdFx0XHRcdFx0QGNyZW1lbnQoIEBtb2RlbC5nZXQoIFwic3RlcFwiICkgKiAtMSwgXyRlbCApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuRU5URVJcblx0XHRcdFx0XHRAc2VsZWN0KClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcblx0XHRpZiBldm50LnR5cGUgaXMgXCJrZXl1cFwiXG5cdFx0XHRfdiA9IGV2bnQuY3VycmVudFRhcmdldC52YWx1ZS5yZXBsYWNlKCAvW15cXGRdP1teLVxcZF0rL2csIFwiXCIgKVxuXHRcdFx0X3YgPSBwYXJzZUludCggX3YsIDEwIClcblx0XHRcdCBcblx0XHRcdEBzZXROdW1iZXIoIF92LCBfJGVsIClcblx0XHRyZXR1cm5cblxuXHRjcmVtZW50OiAoIGNoYW5nZSwgZWwgPSBAJGlucCApPT5cblx0XHRfdiA9IGVsLnZhbCgpXG5cdFx0aWYgbm90IF92Py5sZW5ndGhcblx0XHRcdF92ID0gQG1vZGVsLmdldCggXCJ2YWx1ZVwiIClcblx0XHRlbHNlXG5cdFx0XHRfdiA9IHBhcnNlSW50KCBfdiwgMTAgKVxuXG5cdFx0QF9zZXROdW1iZXIoIF92ICsgY2hhbmdlLCBlbCApXG5cdFx0cmV0dXJuXG5cblx0Z2V0VmFsdWU6ID0+XG5cdFx0X3YgPSBAJGlucC52YWwoKVxuXHRcdGlmIG5vdCBfdj8ubGVuZ3RoXG5cdFx0XHRyZXR1cm4gbnVsbFxuXHRcdHJldHVybiBwYXJzZUludCggQHZhbHVlQnlEZWZpbml0aW9uKCBfdiksIDEwIClcblxuXHRfc2V0TnVtYmVyOiAoIF92LCBlbCA9IEAkaW5wICk9PlxuXHRcdGlmIGlzTmFOKCBfdiApXG5cdFx0XHQjQCRpbnAudmFsKFwiXCIpXG5cdFx0XHRyZXR1cm5cblxuXHRcdF9jdXJyID0gZWwudmFsKClcblxuXHRcdF92ID0gQHZhbHVlQnlEZWZpbml0aW9uKCBfdilcblx0XHRpZiBfY3VyciAhPSBfdi50b1N0cmluZygpXG5cdFx0XHRlbC52YWwoIF92IClcblx0XHRyZXR1cm5cblxuXHR2YWx1ZUJ5RGVmaW5pdGlvbjogKCBfdmFsdWUgKS0+XG5cdFx0bWF4ID0gQG1vZGVsLmdldCggXCJtYXhcIiApXG5cdFx0bWluID0gQG1vZGVsLmdldCggXCJtaW5cIiApXG5cdFx0c3RlcCA9IEBtb2RlbC5nZXQoIFwic3RlcFwiIClcblx0XHRcblx0XHQjIGZpeCByZXZlcnNlZCBtaW4vbWF4IHNldHRpbmdcblx0XHRpZiBtaW4gPiBtYXhcblx0XHRcdF90bXAgPSBtaW5cblx0XHRcdG1pbiA9IG1heFxuXHRcdFx0bWF4ID0gX3RtcFxuXHRcdFxuXHRcdCMgb24gZXh4ZWRkaW5nIHRoZSBsaW1pdHMgdXNlIHRoZSBsaW1pdFxuXHRcdGlmIG1pbj8gYW5kIF92YWx1ZSA8IG1pblxuXHRcdFx0cmV0dXJuIG1pblxuXHRcdGlmIG1heD8gYW5kIF92YWx1ZSA+IG1heFxuXHRcdFx0cmV0dXJuIG1heFxuXG5cdFx0IyBzZWFyY2ggdGhlIG5lYXJlc3QgX3ZhbHVlIHRvIHRoZSBzdGVwXG5cdFx0aWYgc3RlcCBpc250IDFcblx0XHRcdF92YWx1ZSA9IG5lYXJlc3QoIF92YWx1ZSwgc3RlcCApXG5cdFx0XG5cdFx0IyBjYWxjIHRoZSBwcmVjaXNpb24gYnkgc3RlcFxuXHRcdF9wcmVjaXNpb24gPSBNYXRoLm1heCggMCwgTWF0aC5jZWlsKCBNYXRoLmxvZyggMS9zdGVwICkgLyBNYXRoLmxvZyggMTAgKSApIClcblx0XHRpZiBfcHJlY2lzaW9uID4gMFxuXHRcdFx0X3ZhbHVlID0gcHJlY2lzaW9uKCBfdmFsdWUsIF9wcmVjaXNpb24gKVxuXHRcdGVsc2Vcblx0XHRcdF92YWx1ZSA9IE1hdGgucm91bmQoIF92YWx1ZSApXG5cdFx0XHRcblx0XHRyZXR1cm4gX3ZhbHVlXG5cblxubW9kdWxlLmV4cG9ydHMgPSBGYWNldE51bWJlckJhc2VcbiIsIlN1YlJlc3VsdHMgPSByZXF1aXJlKCBcIi4uLy4uL21vZGVscy9zdWJyZXN1bHRzXCIgKVxuS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uLy4uL3V0aWxzL2tleWNvZGVzXCIgKVxuXG5jbGFzcyBTdHJpbmdPcHRpb24gZXh0ZW5kcyBTdWJSZXN1bHRzLnByb3RvdHlwZS5tb2RlbFxuXHRtYXRjaDogKCBjcml0ICk9PlxuXHRcdF9zID0gIEBnZXQoIFwidmFsdWVcIiApICsgXCIgXCIgKyBAZ2V0KCBcImxhYmVsXCIgKVxuXHRcdGZvdW5kID0gX3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKCBjcml0LnRvTG93ZXJDYXNlKCkgKVxuXHRcdHJldHVybiBmb3VuZCA+PSAwXG5cbmNsYXNzIFN0cmluZ09wdGlvbnMgZXh0ZW5kcyBTdWJSZXN1bHRzXG5cdG1vZGVsOiBTdHJpbmdPcHRpb25cblxuXG5jbGFzcyBBcnJheU9wdGlvbiBleHRlbmRzIEJhY2tib25lLk1vZGVsXG5cdGlkQXR0cmlidXRlOiBcInZhbHVlXCJcblx0Z2V0TGFiZWw6ID0+XG5cdFx0cmV0dXJuIEBnZXQoIFwibGFiZWxcIiApIG9yIEBnZXQoIFwibmFtZVwiICkgb3IgXCItXCJcblxuXHRtYXRjaDogKCBjcml0ICk9PlxuXHRcdF9zID0gIEBnZXQoIFwidmFsdWVcIiApICsgXCIgXCIgKyBAZ2V0KCBcImxhYmVsXCIgKVxuXHRcdGZvdW5kID0gX3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKCBjcml0LnRvTG93ZXJDYXNlKCkgKVxuXHRcdHJldHVybiBmb3VuZCA+PSAwXG5cbmNsYXNzIEFycmF5T3B0aW9ucyBleHRlbmRzIHJlcXVpcmUoIFwiLi4vLi4vbW9kZWxzL2JhY2tib25lX3N1YlwiIClcblx0bW9kZWw6IEFycmF5T3B0aW9uXG5cbmNsYXNzIEZhY2V0U3ViQXJyYXkgZXh0ZW5kcyByZXF1aXJlKCBcIi4uL3NlbGVjdG9yXCIgKVxuXHRcblx0dGVtcGxhdGVSZXNMaTogcmVxdWlyZSggXCIuLi8uLi90bXBscy9hcnJheV9yZXN1bHRsaS5qYWRlXCIgKVxuXHRcblx0b3B0RGVmYXVsdDpcblx0XHRsYWJlbDogXCItXCJcblx0XHR2YWx1ZTogXCItXCJcblxuXHRzZWxlY3RDb3VudDogMFxuXG5cdG9wdENvbGw6IFN0cmluZ09wdGlvbnNcblx0XG5cdGNvbnN0cnVjdG9yOiAoIG9wdGlvbnMgKS0+XG5cdFx0QGxvYWRpbmcgPSBmYWxzZVxuXHRcdGlmIG9wdGlvbnMubW9kZWwuZ2V0KCBcImNvdW50XCIgKT9cblx0XHRcdEBzZWxlY3RDb3VudCA9IG9wdGlvbnMubW9kZWwuZ2V0KCBcImNvdW50XCIgKVxuXHRcdG9wdGlvbnMuY3VzdG9tID0gdHJ1ZVxuXHRcdGlmIG9wdGlvbnMubW9kZWwuZ2V0KCBcImN1c3RvbVwiICk/XG5cdFx0XHRvcHRpb25zLmN1c3RvbSA9IEJvb2xlYW4oIG9wdGlvbnMubW9kZWwuZ2V0KCBcImN1c3RvbVwiICkgKVxuXHRcdFx0XG5cdFx0QGNvbGxlY3Rpb24gPSBAX2NyZWF0ZU9wdGlvbkNvbGxlY3Rpb24oIG9wdGlvbnMubW9kZWwuZ2V0KCBcIm9wdGlvbnNcIiApIClcblx0XHRcblx0XHRpZiBub3Qgb3B0aW9ucy5jdXN0b20gYW5kIEBzZWxlY3RDb3VudCA8PSAwXG5cdFx0XHRAc2VsZWN0Q291bnQgPSBAY29sbGVjdGlvbi5sZW5ndGhcblx0XHRcdFxuXHRcdHN1cGVyKCBvcHRpb25zIClcblx0XHRcblx0XHRAcmVzdWx0Lm9uIFwicmVtb3ZlXCIsICggbWRsLCBjb2xsICk9PlxuXHRcdFx0aWYgY29sbC5sZW5ndGhcblx0XHRcdFx0b3B0aW9ucy5zdWIucmVuZGVyUmVzdWx0KClcblx0XHRcdEBzZWFyY2hjb2xsLmFkZCggbWRsIClcblx0XHRcdEB0cmlnZ2VyKCBcInJlbW92ZWRcIiwgbWRsIClcblx0XHRcdHJldHVyblxuXHRcdHJldHVyblxuXHRcblx0aW5pdGlhbGl6ZTogPT5cblx0XHRAZWRpdE1vZGUgPSBmYWxzZVxuXHRcdHJldHVybiBzdXBlclxuXHRcdFxuXHRldmVudHM6ID0+XG5cdFx0X2V2bnRzID0gc3VwZXJcblx0XHQjaWYgbm90IEBtb2RlbC5nZXQoIFwib3BlcmF0b3JzXCIgKT8ubGVuZ3RoXG5cdFx0X2V2bnRzWyBcImJsdXIgaW5wdXQjI3tAY2lkfVwiIF0gPSBcImNsb3NlXCJcblx0XHRyZXR1cm4gX2V2bnRzXG5cdFxuXHRjbG9zZTogKCBldm50ICk9PlxuXHRcdCMgY2hlY2sgaWYgdGhlIGNsb3NlIGlzIGluaXRpZWQgZnJvbSB0aGUgZWRpdCBtb2RlXG5cdFx0X2RlbFN1YiA9IGZhbHNlXG5cdFx0aWYgQGVkaXRNb2RlXG5cdFx0XHRfZGVsU3ViID0gdHJ1ZVxuXHRcdFx0XG5cdFx0QGVkaXRNb2RlID0gZmFsc2Vcblx0XHRpZiBAbG9hZGluZ1xuXHRcdFx0ZXZudD8ucHJldmVudERlZmF1bHQoKVxuXHRcdFx0ZXZudD8uc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdEBmb2N1cygpXG5cdFx0XHRyZXR1cm5cblxuXHRcdGlmIEBtb2RlbD8uZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdHJldHVybiBzdXBlclxuXHRcdFxuXHRcdGlmIF9kZWxTdWIgYW5kIEByZXN1bHQubGVuZ3RoIDw9IDBcblx0XHRcdEBzdWIuZGVsKClcblx0XHRyZXR1cm4gc3VwZXJcblx0XG5cdHJtUmVzOiAoIGV2bnQgKT0+XG5cdFx0aWYgZXZudD8udGFyZ2V0P1xuXHRcdFx0X2lkID0gJCggZXZudC50YXJnZXQgKT8uZGF0YSggXCJpZFwiIClcblx0XHRlbHNlIGlmIGV2bnQ/XG5cdFx0XHRfaWQgPSBldm50XG5cdFx0X21kbCA9IEByZXN1bHQuZ2V0KCBfaWQgKVxuXHRcdGlmIF9tZGw/XG5cdFx0XHRAcmVzdWx0LnJlbW92ZSggX2lkIClcblx0XHRcdGlmIF9tZGw/LmdldCggXCJjdXN0b21cIiApXG5cdFx0XHRcdEBzZWFyY2hjb2xsLnJlbW92ZSggX2lkIClcblx0XHRyZXR1cm5cblx0XHRcblx0ZWRpdFJlczogKCBldm50ICk9PlxuXHRcdEBlZGl0TW9kZSA9IHRydWVcblx0XHRfaWQgPSAkKCBldm50LnRhcmdldCApPy5kYXRhKCBcImlkXCIgKVxuXHRcdF92ID0gQF9lZGl0dmFsID0gQHJlc3VsdC5nZXQoIF9pZCApLmdldCggXCJ2YWx1ZVwiIClcblx0XHRcblx0XHRAcmVzdWx0LnJlbW92ZSggX2lkIClcblx0XHRAc2VhcmNoY29sbC5yZW1vdmUoIF9pZCApXG5cdFx0QHN1Yi5yZW9wZW4oKVxuXHRcdFxuXHRcdEBzZWFyY2goX3YpXG5cdFx0cmV0dXJuXG5cdFxuXHRnZXRUZW1wbGF0ZURhdGE6ID0+XG5cdFx0X2RhdGEgPSBzdXBlclxuXHRcdGlmIEBfZWRpdHZhbD8ubGVuZ3RoXG5cdFx0XHRfZGF0YS5pbnB2YWwgPSBAX2VkaXR2YWxcblx0XHRcdEBfZWRpdHZhbCA9IG51bGxcblx0XHRyZXR1cm4gX2RhdGFcblx0XG5cdHJlbmRlclJlc3VsdDogKCByZW5kZXJFbXB0eSA9IGZhbHNlICk9PlxuXHRcdGlmIHJlbmRlckVtcHR5XG5cdFx0XHRyZXR1cm4gXCI8bGk+PC9saT5cIlxuXHRcdF9saXN0ID0gW11cblx0XHRmb3IgbW9kZWwsIGlkeCBpbiBAcmVzdWx0Lm1vZGVsc1xuXHRcdFx0X2xpc3QucHVzaCBAdGVtcGxhdGVSZXNMaSggdHh0OiBtb2RlbC5nZXRMYWJlbCgpLCBpZDogbW9kZWwuaWQsIGN1c3RvbTogbW9kZWwuZ2V0KCBcImN1c3RvbVwiICkgIClcblxuXHRcdHJldHVybiBcIjxsaT5cIiArIF9saXN0LmpvaW4oIFwiPC9saT48bGk+XCIgKSArIFwiPC9saT5cIlxuXG5cdFxuXHRfaXNGdWxsOiA9PlxuXHRcdGlmIEBzZWxlY3RDb3VudCA8PSAwXG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRyZXR1cm4gKCBAcmVzdWx0IG9yIFtdKS5sZW5ndGggPj0gQHNlbGVjdENvdW50XG5cdFx0XG5cdHNlbGVjdDogPT5cblx0XHRpZiBAbG9hZGluZ1xuXHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0aWYgQF9pc0Z1bGwoKVxuXHRcdFx0cmV0dXJuXG5cdFx0XHRcblx0XHRfdmFscyA9IEBtb2RlbC5nZXQoIFwidmFsdWVcIiApXG5cdFx0aWYgX3ZhbHM/IGFuZCBub3QgXy5pc0FycmF5KCBfdmFscyApXG5cdFx0XHRfdmFscyA9IFsgX3ZhbHMgXVxuXHRcdGlmIG5vdCBfdmFscz8ubGVuZ3RoXG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdGZvciBfdmFsIGluICggaWYgQHNlbGVjdENvdW50IDw9IDAgdGhlbiBfdmFscyBlbHNlIF92YWxzWy4uLkBzZWxlY3RDb3VudF0gKVxuXHRcdFx0X21kbCA9IEBjb2xsZWN0aW9uLmdldCggX3ZhbCApXG5cdFx0XHRpZiBub3QgX21kbD9cblx0XHRcdFx0X21kbCA9IG5ldyBAY29sbGVjdGlvbi5tb2RlbCggdmFsdWU6IF92YWwsIGN1c3RvbTogdHJ1ZSApXG5cdFx0XHRAc2VsZWN0ZWQoIF9tZGwgKVxuXHRcdFxuXHRcdEBjbG9zZSgpXG5cdFx0cmV0dXJuXG5cdFxuXHRyZW9wZW46ICggcFZpZXcgKT0+XG5cdFx0aWYgQF9pc0Z1bGwoKVxuXHRcdFx0IyBpZiBAbW9kZWwuZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdCMgXHRfaWQgPSBAcmVzdWx0Lmxhc3QoKT8uaWRcblx0XHRcdCMgXHRAcm1SZXMoIF9pZCApXG5cdFx0XHRzdXBlclxuXHRcdFx0cmV0dXJuXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdGdldFJlc3VsdHM6ID0+XG5cdFx0dmFsdWU6IEByZXN1bHQucGx1Y2soIFwidmFsdWVcIiApXG5cdFxuXHRfb25UYWJBY3Rpb246ICggZXZudCApPT5cblx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0c2VhcmNoQ29udGVudCA9IEAkaW5wLnZhbCgpXG5cdFx0aWYgc2VhcmNoQ29udGVudD8ubGVuZ3RoXG5cdFx0XHRAc2VsZWN0QWN0aXZlKClcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0QGNsb3NlKClcblx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFxuXHRfY3JlYXRlT3B0aW9uQ29sbGVjdGlvbjogKCBvcHRpb25zICk9PlxuXHRcdGlmIF8uaXNGdW5jdGlvbiggb3B0aW9ucyApXG5cdFx0XHRAbG9hZGluZyA9IHRydWVcblx0XHRcdF9jb2xsID0gbmV3IEBvcHRDb2xsKCBbXSApXG5cdFx0XHRcblx0XHRcdHNldFRpbWVvdXQoID0+XG5cdFx0XHRcdEAkZWwucGFyZW50KCkuYWRkQ2xhc3MoIFwibG9hZGluZ1wiIClcblx0XHRcdFx0b3B0aW9ucyBAcmVzdWx0LCBAbW9kZWwsICggYU9wdHMgKT0+XG5cdFx0XHRcdFx0Zm9yIF9vcHQsIGlkeCBpbiBhT3B0c1xuXHRcdFx0XHRcdFx0YU9wdHNbaWR4XSA9IF8uZXh0ZW5kKCB7fSwgQG9wdERlZmF1bHQsIF9vcHQsIHsgY3VzdG9tOiBmYWxzZSB9IClcblx0XHRcdFx0XHRfY29sbC5hZGQoIGFPcHRzIClcblx0XHRcdFx0XHRAbG9hZGluZyA9IGZhbHNlXG5cdFx0XHRcdFx0QCRlbC5wYXJlbnQoKS5yZW1vdmVDbGFzcyggXCJsb2FkaW5nXCIgKVxuXHRcdFx0XHRcdEBzZWxlY3QoKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdFxuXHRcdFx0LCAwIClcblx0XHRcdHJldHVybiBfY29sbFxuXG5cdFx0X29wdHMgPSBbXVxuXHRcdGZvciBvcHQgaW4gb3B0aW9uc1xuXHRcdFx0aWYgXy5pc1N0cmluZyggb3B0ICkgb3IgXy5pc051bWJlciggb3B0IClcblx0XHRcdFx0X29wdHMucHVzaCB7IHZhbHVlOiBvcHQsIGxhYmVsOiBvcHQgfVxuXHRcdFx0ZWxzZSBpZiBfLmlzT2JqZWN0KG9wdClcblx0XHRcdFx0X29wdHMucHVzaCBfLmV4dGVuZCgge30sIEBvcHREZWZhdWx0LCBvcHQgKVxuXHRcdHJldHVybiBuZXcgQG9wdENvbGwoIF9vcHRzIClcblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3ViQXJyYXlcbiIsImNsYXNzIEZhY2V0U3Vic051bWJlciBleHRlbmRzIHJlcXVpcmUoIFwiLi9udW1iZXJfYmFzZVwiIClcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvbnVtYmVyLmphZGVcIiApXG5cblx0ZXZlbnRzOiA9PlxuXHRcdF9ldm50cyA9IHN1cGVyXG5cdFx0I2lmIG5vdCBAbW9kZWwuZ2V0KCBcIm9wZXJhdG9yc1wiICk/Lmxlbmd0aFxuXHRcdF9ldm50c1sgXCJibHVyICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiIF0gPSBcInNlbGVjdFwiXG5cdFx0cmV0dXJuIF9ldm50c1xuXG5cdHJlbmRlcjogPT5cblx0XHRzdXBlclxuXHRcdGlmIEBtb2RlbC5nZXQoIFwib3BlcmF0b3JzXCIgKT8ubGVuZ3RoXG5cdFx0XHRAJGlucE9wID0gQCRlbC5maW5kKCBcInNlbGVjdCMje0BjaWR9b3BcIiApXG5cdFx0XHRAJGlucE9wLnNlbGVjdDIoIHsgd2lkdGg6IFwiYXV0b1wiIH0gKVxuXHRcdFx0QCRpbnBPcC5vbiggXCJzZWxlY3QyOmNsb3NlXCIsIEBfb3BTZWxlY3RlZCApXG5cdFx0cmV0dXJuXG5cblx0cmVuZGVyUmVzdWx0OiAoIHJlbmRlckVtcHR5ID0gZmFsc2UgKT0+XG5cdFx0aWYgcmVuZGVyRW1wdHlcblx0XHRcdHJldHVybiBcIjxsaT48L2xpPlwiXG5cdFx0X3JlcyA9IEBnZXRSZXN1bHRzKClcblx0XHRfcyA9IFwiPGxpPlwiXG5cdFx0X3MgKz0gX3Jlcy5vcGVyYXRvciArIFwiIFwiIGlmIF9yZXMub3BlcmF0b3I/XG5cdFx0X3MgKz0gX3Jlcy52YWx1ZVxuXHRcdF9zICs9IFwiPC9saT5cIlxuXG5cdFx0cmV0dXJuIF9zXG5cblx0Y2xvc2U6ICggZXZudCApPT5cblx0XHRpZiBAJGlucE9wP1xuXHRcdFx0QCRpbnBPcC5zZWxlY3QyKCBcImRlc3Ryb3lcIiApXG5cdFx0XHRAJGlucE9wLnJlbW92ZSgpXG5cdFx0XHRAJGlucE9wID0gbnVsbFxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFx0XG5cdHNlbGVjdDogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQ/LnJlbGF0ZWRUYXJnZXQ/XG5cdFx0XHRfcG9zV3JwID0gQGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBldm50Py5yZWxhdGVkVGFyZ2V0IClcblx0XHRcdGlmIG5vdCAoIF9wb3NXcnAgaXMgMCBvciBfcG9zV3JwIC0gMTYgPj0gMCApXG5cdFx0XHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRcdFx0cmV0dXJuXG5cdFx0aWYgZXZudD8gYW5kICggZXZudD8ucmVsYXRlZFRhcmdldCBpcyBAJGlucC5nZXQoMCkgb3IgZXZudD8ucmVsYXRlZFRhcmdldCBpcyBAJGlucE9wPy5nZXQoMCkgKVxuXHRcdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdFx0cmV0dXJuXG5cdFx0aWYgQCRpbnBPcD9cblx0XHRcdEBtb2RlbC5zZXQoIHsgb3BlcmF0b3I6IEAkaW5wT3AudmFsKCkgfSApXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cblx0X29wU2VsZWN0ZWQ6ID0+XG5cdFx0QHNlbGVjdGVkT1AgPSB0cnVlXG5cdFx0QGZvY3VzKClcblx0XHRyZXR1cm5cblxuXHRmb2N1czogKCBpbnAgPSBmYWxzZSApPT5cblx0XHRpZiBAJGlucE9wPyBhbmQgbm90IEBzZWxlY3RlZE9QXG5cdFx0XHRAJGlucE9wLnNlbGVjdDIoIFwib3BlblwiIClcblx0XHRcdHJldHVyblxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFxuXHRyZW9wZW46ICggcFZpZXcgKT0+XG5cdFx0X29sZFZhbCA9IEByZXN1bHQuZmlyc3QoKS5nZXQoIFwidmFsdWVcIiApXG5cdFx0X29sZE9wID0gQHJlc3VsdC5maXJzdCgpXG5cdFx0QG1vZGVsLnNldCggdmFsdWU6IF9vbGRWYWwgKVxuXHRcdHBWaWV3LiRyZXN1bHRzLmVtcHR5KCkuaHRtbCggQHJlbmRlclJlc3VsdCggdHJ1ZSApIClcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXG5cdGdldFRlbXBsYXRlRGF0YTogPT5cblx0XHRyZXR1cm4gXy5leHRlbmQoIHN1cGVyLCB7IG9wZXJhdG9yczogQG1vZGVsLmdldCggXCJvcGVyYXRvcnNcIiApLCBvcGVyYXRvcjogQG1vZGVsLmdldCggXCJvcGVyYXRvclwiICl9IClcblxuXHRfb25UYWJBY3Rpb246ICggZXZudCApPT5cblx0XHRfdmFsID0gQGdldFZhbHVlKClcblx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0aWYgbm90IGlzTmFOKCBfdmFsIClcblx0XHRcdEBzZWxlY3QoKVxuXHRcdHJldHVybiB0cnVlXG5cdFx0XG5cdGdldFJlc3VsdHM6ID0+XG5cdFx0aWYgQCRpbnBPcD9cblx0XHRcdF9yZXQgPVxuXHRcdFx0XHR2YWx1ZTogQGdldFZhbHVlKClcblx0XHRcdFx0b3BlcmF0b3I6IEAkaW5wT3AudmFsKClcblx0XHRlbHNlXG5cdFx0XHRfcmV0ID1cblx0XHRcdFx0dmFsdWU6IEBnZXRWYWx1ZSgpXG5cdFx0cmV0dXJuIF9yZXRcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gRmFjZXRTdWJzTnVtYmVyXG4iLCJjbGFzcyBGYWNldFN1YnNSYW5nZSBleHRlbmRzIHJlcXVpcmUoIFwiLi9udW1iZXJfYmFzZVwiIClcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vLi4vdG1wbHMvcmFuZ2UuamFkZVwiIClcblxuXHRfZ2V0SW5wU2VsZWN0b3I6ICggZXh0ID0gXCJfZnJvbVwiICk9PlxuXHRcdHJldHVybiBcImlucHV0IyN7QGNpZH0je2V4dH1cIlxuXG5cdGV2ZW50czogPT5cblx0XHRcImtleXVwICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblx0XHRcImtleWRvd24gI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwiaW5wdXRcIlxuXHRcdFwia2V5dXAgI3tAX2dldElucFNlbGVjdG9yKCBcIl90b1wiICl9XCI6IFwiaW5wdXRcIlxuXHRcdFwia2V5ZG93biAje0BfZ2V0SW5wU2VsZWN0b3IoIFwiX3RvXCIgKX1cIjogXCJpbnB1dFwiXG5cdFx0XCJibHVyICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcInNlbGVjdFwiXG5cdFx0XCJibHVyICN7QF9nZXRJbnBTZWxlY3RvciggXCJfdG9cIiApfVwiOiBcInNlbGVjdFwiXG5cblx0cmVuZGVyUmVzdWx0OiAoIHJlbmRlckVtcHR5ID0gZmFsc2UgKT0+XG5cdFx0aWYgcmVuZGVyRW1wdHlcblx0XHRcdHJldHVybiBcIjxsaT48L2xpPlwiXG5cdFx0X3JlcyA9IEBnZXRSZXN1bHRzKClcblx0XHRyZXR1cm4gXCI8bGk+XCIgK19yZXMudmFsdWUuam9pbiggXCIgLSBcIiApICsgXCI8L2xpPlwiXG5cblx0cmVuZGVyOiA9PlxuXHRcdHN1cGVyXG5cdFx0QCRpbnBUbyA9IEAkZWwuZmluZCggQF9nZXRJbnBTZWxlY3RvciggXCJfdG9cIiApIClcblx0XHRyZXR1cm5cblxuXHRmb2N1czogKCBpbnAgPSBmYWxzZSApPT5cblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcblx0XG5cdHJlb3BlbjogKCBwVmlldyApPT5cblx0XHRfb2xkVmFsID0gQHJlc3VsdC5maXJzdCgpLmdldCggXCJ2YWx1ZVwiIClcblx0XHRAbW9kZWwuc2V0KCB2YWx1ZTogX29sZFZhbCApXG5cdFx0cFZpZXcuJHJlc3VsdHMuZW1wdHkoKS5odG1sKCBAcmVuZGVyUmVzdWx0KCB0cnVlICkgKVxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cdFx0XG5cdHNlbGVjdDogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQ/IGFuZCAoIGV2bnQ/LnJlbGF0ZWRUYXJnZXQgaXMgQCRpbnAuZ2V0KDApIG9yIGV2bnQ/LnJlbGF0ZWRUYXJnZXQgaXMgQCRpbnBUby5nZXQoMCkgKVxuXHRcdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdFx0cmV0dXJuXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XG5cdGNsb3NlOiA9PlxuXHRcdHRyeVxuXHRcdFx0QCQoIFwiLnJhbmdlaW5wXCIgKS5yZW1vdmUoKVxuXHRcdHN1cGVyXG5cdFx0cmV0dXJuXG5cblx0Z2V0UmVzdWx0czogPT5cblx0XHRfcmV0ID1cblx0XHRcdHZhbHVlOiBAZ2V0VmFsdWUoKVxuXHRcdHJldHVybiBfcmV0XG5cdFxuXHRnZXRWYWx1ZTogPT5cblx0XHRfdkZyb20gPSBzdXBlclxuXHRcdF92ID0gQCRpbnBUby52YWwoKVxuXHRcdGlmIG5vdCBfdj8ubGVuZ3RoXG5cdFx0XHRyZXR1cm4gbnVsbFxuXHRcdF92VG8gPSBwYXJzZUludCggQHZhbHVlQnlEZWZpbml0aW9uKCBfdiksIDEwIClcblxuXHRcdHJldHVybiBbIF92RnJvbSwgX3ZUbyBdXG5cdFxuXHRfb25UYWJBY3Rpb246ICggZXZudCApPT5cblx0XHRpZiBAJGlucC5pcyggZXZudC50YXJnZXQgKSBhbmQgbm90IGV2bnQuc2hpZnRLZXlcblx0XHRcdEAkaW5wVG8uZm9jdXMoKVxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XG5cdFx0aWYgQCRpbnBUby5pcyggZXZudC50YXJnZXQgKSBhbmQgZXZudC5zaGlmdEtleVxuXHRcdFx0QCRpbnAuZm9jdXMoKVxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0XHRcblx0XHRfdmFsID0gQGdldFZhbHVlKClcblx0XHRpZiBfdmFsPy5sZW5ndGggPj0gMlxuXHRcdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRAc2VsZWN0KClcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRcblx0XHQjIHJldHVybiBmYWxzZSB0byBwcmV2ZW50IGp1bXAgdG8gbmV4dCBmYWNldFxuXHRcdHJldHVybiB0cnVlXG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3Vic1JhbmdlXG4iLCJLRVlDT0RFUyA9IHJlcXVpcmUoIFwiLi4vLi4vdXRpbHMva2V5Y29kZXNcIiApXG5cbmNsYXNzIEZhY2V0U3Vic1NlbGVjdCBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYXNlXCIgKVxuXHR0ZW1wbGF0ZTogcmVxdWlyZSggXCIuLi8uLi90bXBscy9zZWxlY3QuamFkZVwiIClcblxuXHRmb3JjZWRNb2R1bGVPcHRzOnt9XG5cdCNcdG11bHRpcGxlOiB0cnVlXG5cblx0ZGVmYXVsdE1vZHVsZU9wdHM6XG5cdFx0I21heGltdW1TZWxlY3Rpb25MZW5ndGg6IDFcblx0XHR3aWR0aDogXCJhdXRvXCJcblx0XHRtdWx0aXBsZTogZmFsc2Vcblx0XG5cdGluaXRpYWxpemU6IC0+XG5cdFx0QGNvbnZlcnRWYWx1ZVRvSW50ID0gQF9jaGVja0ludFZhbHVlKCBAbW9kZWwuZ2V0KCBcIm9wdGlvbnNcIiApIClcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcblx0ZXZlbnRzOiA9PlxuXHRcdF9ldm50cyA9IHt9XG5cdFx0X2V2bnRzWyBcImNsaWNrIC5zZWxlY3QtY2hlY2tcIiBdID0gXCJzZWxlY3RcIiBpZiBAbW9kZWwuZ2V0KCBcIm11bHRpcGxlXCIgKVxuXHRcdHJldHVybiBfZXZudHNcblxuXHRfZ2V0SW5wU2VsZWN0b3I6ID0+XG5cdFx0cmV0dXJuIFwic2VsZWN0IyN7QGNpZH1cIlxuXHRcdFxuXHRyZW5kZXI6ID0+XG5cdFx0c3VwZXJcblx0XHRpZiBAbW9kZWwuZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdEBfaW5pdFNlbGVjdDIoKVxuXHRcdHJldHVyblxuXG5cdGZvY3VzOiAoKT0+XG5cdFx0IyBwcmV2ZW50IGZyb20gYXN5bmMgbGlzdGVuaW5nIG9uIG1hbnVhbCBhY2Nlc3Ncblx0XHRAbW9kZWwuc2V0KCBcIndhaXRGb3JBc3luY1wiLCBmYWxzZSApXG5cdFx0QF9pbml0U2VsZWN0MigpXG5cdFx0QHNlbGVjdDIuJGNvbnRhaW5lci5zaG93KClcblx0XHRAc2VsZWN0Mi5vcGVuKClcblx0XHQjZWxzZVxuXHRcdFx0I0AkaW5wLnNlbGVjdDIoIFwib3BlblwiIClcblx0XHRyZXR1cm4gc3VwZXJcblx0XG5cdF9pc0Z1bGw6ID0+XG5cdFx0aWYgQHNlbGVjdENvdW50IDw9IDBcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdHJldHVybiAoIEByZXN1bHQgb3IgW10pLmxlbmd0aCA+PSBAc2VsZWN0Q291bnRcblx0XG5cdHJlb3BlbjogKCBwVmlldyApPT5cblx0XHRpZiBAX2lzRnVsbCgpXG5cdFx0XHRyZXR1cm5cblx0XHQjIHNldCB0aGUgY3VycmVudCB2YWx1ZXNcblx0XHRfb2xkVmFscyA9IEByZXN1bHQucGx1Y2soIFwidmFsdWVcIiApXG5cdFx0QG1vZGVsLnNldCggdmFsdWU6IF9vbGRWYWxzIClcblx0XHRcblx0XHQjIHJlc2V0IHJlc3VsdHMgYW5kIHNlbGVjdDJcblx0XHRwVmlldy4kcmVzdWx0cy5lbXB0eSgpXG5cdFx0QHNlbGVjdDIuJGNvbnRhaW5lci5vZmYoKVxuXHRcdEBzZWxlY3QyLmRlc3Ryb3koKVxuXHRcdEByZXN1bHQucmVzZXQoKVxuXHRcdEBzZWxlY3QyID0gbnVsbFxuXHRcdFxuXHRcdHJldHVybiBzdXBlclxuXHRcdFxuXHRfY2hlY2tJbnRWYWx1ZTogKCBfb3B0cyA9IFtdICk9PlxuXHRcdGlmIG5vdCBfb3B0cyBvciBub3QgX29wdHMubGVuZ3RoXG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRmb3IgX3YgaW4gX29wdHNcblx0XHRcdGlmIF92LnZhbHVlPyBhbmQgXy5pc1N0cmluZyggX3YudmFsdWUgKVxuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdGlmIF92LmlkPyBhbmQgXy5pc1N0cmluZyggX3YuaWQgKVxuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdGlmIF92PyBhbmQgXy5pc1N0cmluZyggX3YgKVxuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdFxuXHRcdHJldHVybiB0cnVlXG5cblx0X2luaXRTZWxlY3QyOiA9PlxuXHRcdFxuXHRcdGlmIG5vdCBAc2VsZWN0Mj9cblx0XHRcdF9vcHRzID0gXy5leHRlbmQoIHt9LCBAZGVmYXVsdE1vZHVsZU9wdHMsIEBtb2RlbC5nZXQoIFwib3B0c1wiICksIHsgbXVsdGlwbGU6IEBtb2RlbC5nZXQoIFwibXVsdGlwbGVcIiApIG9yIGZhbHNlIH0sIEBmb3JjZWRNb2R1bGVPcHRzIClcblx0XHRcdEAkaW5wLnNlbGVjdDIoIF9vcHRzIClcblx0XHRcdEBzZWxlY3QyID0gQCRpbnAuZGF0YSggXCJzZWxlY3QyXCIgKVxuXHRcdFx0aWYgbm90IEBtb2RlbC5nZXQoIFwibXVsdGlwbGVcIiApXG5cdFx0XHRcdEAkaW5wLm9uIFwic2VsZWN0MjpzZWxlY3Qgc2VsZWN0MjpjbG9zZVwiLCBAc2VsZWN0XG5cdFx0XHRcblx0XHRcdCMgYWZ0ZXIgbG9hZGluZyB0cnkgdG8gc2V0IHRoZSBjdXJzb3IgZm9jdXNcblx0XHRcdEBzZWxlY3QyLm9uIFwicmVzdWx0czphbGxcIiwgKCByZXN1bHRzICk9PlxuXHRcdFx0XHRAY29udmVydFZhbHVlVG9JbnQgPSBAX2NoZWNrSW50VmFsdWUoIHJlc3VsdHM/LmRhdGE/LnJlc3VsdHMgKVxuXHRcdFx0XHRAc2VsZWN0Mi5zZWxlY3Rpb24/LiRzZWFyY2g/LmZvY3VzPygpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0XG5cdFx0XHQjIGxpc3RlbiB0byBhc3luYyByZXN1bHQgY2hhbmdlcyBhbmQgc2V0IHRoZSBzZWxlY3Rpb25cblx0XHRcdEBzZWxlY3QyLmRhdGFBZGFwdGVyLmN1cnJlbnQgKCByZXN1bHRzICk9PlxuXHRcdFx0XHRpZiBAbW9kZWwuZ2V0KCBcIndhaXRGb3JBc3luY1wiIClcblx0XHRcdFx0XHRfZGF0YSA9IFtdXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0Zm9yIHJlc3VsdCBpbiByZXN1bHRzXG5cdFx0XHRcdFx0XHRfZGF0YS5wdXNoIEBfY29udmVydFZhbHVlKCByZXN1bHQgKVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0IyBzZWxlY3QgdGhlIGFjdGl2ZS9wcmVkZWZpbmVkIHJlc3VsdHNcblx0XHRcdFx0XHRAX3NlbGVjdCggX2RhdGEgKVxuXHRcdFx0XHRcdEBjbG9zZSgpXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcblx0XHRcdEBzZWxlY3QyLiRjb250YWluZXIub24gXCJjbGlja1wiLCBAX3NlbDJvcGVuXG5cdFx0XHRAc2VsZWN0Mi4kZWxlbWVudC5oaWRlKClcblx0XHRcdCMkKCBkb2N1bWVudCApLm9uIEBfaGFzVGFiRXZlbnQoKSwgQF9vbktleSBpZiBAbW9kZWwuZ2V0KCBcIm11bHRpcGxlXCIgKVxuXHRcdHJldHVybiBAc2VsZWN0MlxuXG5cdF9zZWwyb3BlbjogKCBldm50ICktPlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRyZXR1cm4gZmFsc2Vcblx0XG5cdHJlbW92ZTogPT5cblx0XHQjQCRpbnAuc2VsZWN0MiggXCJkZXN0cm95XCIgKVxuXHRcdHJldHVybiBzdXBlclxuXG5cdGdldFRlbXBsYXRlRGF0YTogPT5cblx0XHRfZGF0YSA9IF8uZXh0ZW5kKCB7fSwgc3VwZXIsIHsgbXVsdGlwbGU6IEBtb2RlbC5nZXQoIFwibXVsdGlwbGVcIiApLCBvcHRpb25zOiBAX2NyZWF0ZU9wdGlvbkNvbGxlY3Rpb24oIEBtb2RlbC5nZXQoIFwib3B0aW9uc1wiICkgKSB9IClcblx0XHRpZiBfZGF0YS52YWx1ZT8gYW5kIF8uaXNBcnJheSggX2RhdGEudmFsdWUgKVxuXHRcdFx0Zm9yIF92LCBfaWR4IGluIF9kYXRhLnZhbHVlXG5cdFx0XHRcdF9kYXRhLnZhbHVlWyBfaWR4IF0gPSBpZiBAY29udmVydFZhbHVlVG9JbnQgdGhlbiBwYXJzZUZsb2F0KCBfdiApIGVsc2UgX3YudG9TdHJpbmcoKVxuXHRcdGVsc2UgaWYgX2RhdGEudmFsdWU/XG5cdFx0XHRfZGF0YS52YWx1ZSA9IFsgaWYgQGNvbnZlcnRWYWx1ZVRvSW50IHRoZW4gcGFyc2VGbG9hdCggX2RhdGEudmFsdWUgKSBlbHNlIF9kYXRhLnZhbHVlLnRvU3RyaW5nKCkgXVxuXHRcdFxuXHRcdGlmIF9kYXRhLnZhbHVlP1xuXHRcdFx0X3ZsaXN0ID0gXy5wbHVjayggX2RhdGEub3B0aW9ucywgXCJ2YWx1ZVwiIClcblx0XHRcdGZvciBfdiBpbiBfZGF0YS52YWx1ZSB3aGVuIF92IG5vdCBpbiBfdmxpc3Rcblx0XHRcdFx0X2RhdGEub3B0aW9ucy5wdXNoIHsgdmFsdWU6ICggaWYgQGNvbnZlcnRWYWx1ZVRvSW50IHRoZW4gcGFyc2VGbG9hdCggX3YgKSBlbHNlIF92LnRvU3RyaW5nKCkgKSwgbGFiZWw6IF92LCBncm91cDogdW5kZWZpbmVkIH1cblx0XHRcblx0XHRfZ3JvdXBzID0gXy5ncm91cEJ5KCBfZGF0YS5vcHRpb25zLCBcImdyb3VwXCIgKVxuXHRcdGlmIF8uY29tcGFjdCggXy5rZXlzKCBfZ3JvdXBzIG9yIHt9ICkgKS5sZW5ndGggPiAxXG5cdFx0XHRfZGF0YS5vcHRpb25Hcm91cHMgPSBfZ3JvdXBzXG5cdFx0cmV0dXJuIF9kYXRhXG5cdFxuXHRfaGFzVGFiTGlzdGVuZXI6ICggY3JlYXRlICk9PlxuXHRcdGlmIGNyZWF0ZVxuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0cmV0dXJuIEBtb2RlbC5nZXQoXCJtdWx0aXBsZVwiKVxuXHRcblx0X2hhc1RhYkV2ZW50OiAtPlxuXHRcdHJldHVybiBcImtleXVwXCJcblx0XHRcblx0Z2V0VmFsdWU6ID0+XG5cdFx0X3ZhbHMgPSBbXVxuXHRcdGZvciBkYXRhIGluIEBfaW5pdFNlbGVjdDIoKT8uZGF0YSgpIG9yIFtdXG5cdFx0XHRcblx0XHRcdF92YWxzLnB1c2goIEBfY29udmVydFZhbHVlKCBkYXRhICkgKVxuXHRcdHJldHVybiBfdmFsc1xuXHRcblx0X2NvbnZlcnRWYWx1ZTogKCBkYXRhICk9PlxuXHRcdF9kYXRhID0ge31cblx0XHRpZiBAY29udmVydFZhbHVlVG9JbnRcblx0XHRcdF9kYXRhLnZhbHVlID0gcGFyc2VGbG9hdCggZGF0YS5pZCApXG5cdFx0ZWxzZVxuXHRcdFx0X2RhdGEudmFsdWUgPSBkYXRhLmlkXG5cdFx0aWYgZGF0YS50ZXh0P1xuXHRcdFx0aWYgZGF0YS50ZXh0IGluc3RhbmNlb2YgalF1ZXJ5XG5cdFx0XHRcdF9kYXRhLmxhYmVsID0gZGF0YS50ZXh0Lmh0bWwoKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHRfZGF0YS5sYWJlbCA9IGRhdGEudGV4dFxuXHRcdFx0XG5cdFx0cmV0dXJuIF9kYXRhXG5cblx0Z2V0UmVzdWx0czogPT5cblx0XHR2YWx1ZTogQHJlc3VsdC5wbHVjayggXCJ2YWx1ZVwiIClcblxuXHRfY3JlYXRlT3B0aW9uQ29sbGVjdGlvbjogKCBvcHRpb25zICk9PlxuXHRcdGlmIF8uaXNGdW5jdGlvbiggb3B0aW9ucyApXG5cdFx0XHRyZXR1cm4gb3B0aW9ucyggQF9jcmVhdGVPcHRpb25Db2xsZWN0aW9uIClcblxuXHRcdF9vcHRzID0gW11cblx0XHRmb3Igb3B0IGluIG9wdGlvbnNcblx0XHRcdGlmIF8uaXNTdHJpbmcoIG9wdCApIG9yIF8uaXNOdW1iZXIoIG9wdCApXG5cdFx0XHRcdF9vcHRzLnB1c2ggeyB2YWx1ZTogKCBpZiBAY29udmVydFZhbHVlVG9JbnQgdGhlbiBwYXJzZUZsb2F0KCBvcHQgKSBlbHNlIG9wdC50b1N0cmluZygpICksIGxhYmVsOiBvcHQsIGdyb3VwOiBudWxsIH1cblx0XHRcdGVsc2UgaWYgXy5pc09iamVjdCggb3B0IClcblx0XHRcdFx0b3B0LnZhbHVlID0gaWYgQGNvbnZlcnRWYWx1ZVRvSW50IHRoZW4gcGFyc2VGbG9hdCggb3B0LnZhbHVlICkgZWxzZSBvcHQudmFsdWUudG9TdHJpbmcoKVxuXHRcdFx0XHRfb3B0cy5wdXNoIF8uZXh0ZW5kKCB7fSwgQG9wdERlZmF1bHQsIG9wdCApXG5cdFx0cmV0dXJuIF9vcHRzXG5cblx0dW5zZWxlY3Q6ICggZXZudCApPT5cblx0XHRAcmVzdWx0LnJlbW92ZSggZXZudC5wYXJhbXM/LmRhdGE/LmlkIClcblx0XHRyZXR1cm5cblxuXHRjbG9zZTogPT5cblx0XHRpZiBAbW9kZWwuZ2V0KCBcIndhaXRGb3JBc3luY1wiIClcblx0XHRcdHJldHVyblxuXHRcdFxuXHRcdGlmIEBzZWxlY3QyP1xuXHRcdFx0I0BzZWxlY3QyPy5kZXN0cm95KClcblx0XHRcdEBzZWxlY3QyLiRjb250YWluZXIuaGlkZSgpXG5cdFx0QCRpbnA/LnJlbW92ZSgpXG5cdFx0QCQoIFwiLnNlbGVjdC1jaGVja1wiICkucmVtb3ZlKClcblx0XHRzdXBlclxuXHRcdHJldHVyblxuXHRcblx0c2VsZWN0OiAoIGV2bnQgKT0+XG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKSBpZiBldm50Py5zdG9wUHJvcGFnYXRpb25cblx0XHRfdmFscyA9IEBnZXRWYWx1ZSgpXG5cdFx0aWYgbm90IF92YWxzPy5sZW5ndGhcblx0XHRcdCMgSXNzdWUjNDkgaWYgbm90aGluZyB3YXMgc2VsZWN0ZWQgY2xvc2UgdGhlIHNlbGVjdC12aWV3IGFuZCByZW1vdmUgdGhlIHdob2xlIGZhY2V0XG5cdFx0XHRAY2xvc2UoKVxuXHRcdFx0aWYgbm90IEBtb2RlbC5nZXQoIFwid2FpdEZvckFzeW5jXCIgKVxuXHRcdFx0XHRAc3ViLmRlbCgpXG5cdFx0XHRyZXR1cm5cblx0XHRAX3NlbGVjdCggX3ZhbHMgKVxuXG5cdFx0QGNsb3NlKClcblx0XHRyZXR1cm5cblx0XG5cdF9zZWxlY3Q6ICggX3ZhbHMgKT0+XG5cdFx0QG1vZGVsLnNldCggXCJ3YWl0Rm9yQXN5bmNcIiwgZmFsc2UgKVxuXHRcdE1vZGVsQ29uc3QgPSBAZ2V0U2VsZWN0TW9kZWwoKVxuXHRcdGZvciBfdmFsIGluIF92YWxzXG5cdFx0XHRAcmVzdWx0LmFkZCggbmV3IE1vZGVsQ29uc3QoIF92YWwgKSApXG5cdFx0QHRyaWdnZXIoIFwic2VsZWN0ZWRcIiwgQHJlc3VsdCApXG5cdFx0cmV0dXJuXG5cbm1vZHVsZS5leHBvcnRzID0gRmFjZXRTdWJzU2VsZWN0XG4iLCJjbGFzcyBGYWNldFN1YlN0cmluZyBleHRlbmRzIHJlcXVpcmUoIFwiLi9iYXNlXCIgKVxuXHR0ZW1wbGF0ZTogcmVxdWlyZSggXCIuLi8uLi90bXBscy9zdHJpbmcuamFkZVwiIClcblx0XG5cdGV2ZW50czogPT5cblx0XHRcImtleXVwICN7QF9nZXRJbnBTZWxlY3RvcigpfVwiOiBcImlucHV0XCJcblx0XHRcImtleWRvd24gI3tAX2dldElucFNlbGVjdG9yKCl9XCI6IFwiaW5wdXRcIlxuXHRcdFwiYmx1ciAje0BfZ2V0SW5wU2VsZWN0b3IoKX1cIjogXCJzZWxlY3RcIlxuXG5cdGNsb3NlOiAoIGV2bnQgKT0+XG5cdFx0c3VwZXJcblx0XHR0cnlcblx0XHRcdEAkaW5wPy5yZW1vdmU/KClcblx0XHRyZXR1cm5cblx0XG5cdHJlb3BlbjogKCBwVmlldyApPT5cblx0XHRfb2xkVmFsID0gQHJlc3VsdD8uZmlyc3QoKT8uZ2V0KCBcInZhbHVlXCIgKVxuXHRcdEBtb2RlbC5zZXQoIHZhbHVlOiBfb2xkVmFsIClcblx0XHRwVmlldy4kcmVzdWx0cy5lbXB0eSgpLmh0bWwoIEByZW5kZXJSZXN1bHQoIHRydWUgKSApXG5cdFx0c3VwZXJcblx0XHRyZXR1cm5cblx0XHRcdFx0XG5tb2R1bGUuZXhwb3J0cyA9IEZhY2V0U3ViU3RyaW5nXG4iLCJTdWJWaWV3ID0gcmVxdWlyZSggXCIuL3N1YlwiIClcblNlbGVjdG9yVmlldyA9IHJlcXVpcmUoIFwiLi9zZWxlY3RvclwiIClcblxuS0VZQ09ERVMgPSByZXF1aXJlKCBcIi4uL3V0aWxzL2tleWNvZGVzXCIgKVxuXG5jbGFzcyBNYWluVmlldyBleHRlbmRzIEJhY2tib25lLlZpZXdcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vdG1wbHMvd3JhcHBlci5qYWRlXCIgKVxuXG5cdGV2ZW50czpcblx0XHRcIm1vdXNlZG93biAuc2VhcmNoLWJ0blwiOiBcIl9vblNlYXJjaFwiXG5cdFx0XCJmb2N1cyAuc2VhcmNoLWJ0blwiOiBcIl9vbkZvY3VzU2VhcmNoXCJcblx0XHRcImNsaWNrIC5hZGQtZmFjZXQtYnRuXCI6IFwiX2FkZEZhY2V0XCJcblx0XHRcImNsaWNrXCI6IFwiX2FkZEZhY2V0XCJcblxuXHRpbml0aWFsaXplOiAoIG9wdGlvbnMgKT0+XG5cdFx0XG5cdFx0QG1haW4gPSBvcHRpb25zLm1haW5cblx0XHRAaWR4ID0gb3B0aW9ucy5pZHhcblx0XHRAcmVzdWx0cyA9IG9wdGlvbnMucmVzdWx0c1xuXHRcdEBzZWFyY2hCdXR0b24gPSBvcHRpb25zLnNlYXJjaEJ1dHRvblxuXHRcdFxuXHRcdEBmYWNldHMgPSB7fVxuXHRcdFxuXHRcdEBjb2xsZWN0aW9uLm9uIFwiaWdneTpyZW1cIiwgQHJlbUZhY2V0XG5cdFx0XG5cdFx0X2NsID0gXCJpZ2d5IGNsZWFyZml4XCJcblx0XHRpZiBAZWwuY2xhc3NOYW1lPy5sZW5ndGhcblx0XHRcdF9jbCA9IFwiIFwiICsgX2NsXG5cdFx0QGVsLmNsYXNzTmFtZSArPSBfY2xcblx0XHRAcmVuZGVyKClcblx0XHRAX291dGVyQ2xpY2tMaXN0ZW4oKVxuXHRcdEBfa2V5TGlzdGVuKClcblx0XHRcblx0XHRfdmFsdWVGYWNldHMgPSBAY29sbGVjdGlvbi5maWx0ZXIoICggZmN0ICktPnJldHVybiBmY3Q/LmdldCggXCJ2YWx1ZVwiICk/IG9yIGZjdD8uZ2V0KCBcInBpbm5lZFwiICkgKVxuXHRcdFxuXHRcdF9mblNvcnQgPSAoIGtleSApLT5cblx0XHRcdHJldHVybiAoIHYxLCB2MiApLT5cblx0XHRcdFx0aWYgdjFbIGtleSBdID4gdjJbIGtleSBdXG5cdFx0XHRcdFx0cmV0dXJuIDFcblx0XHRcdFx0aWYgdjFbIGtleSBdIDwgdjJbIGtleSBdXG5cdFx0XHRcdFx0cmV0dXJuIC0xXG5cdFx0XHRcdHJldHVybiAwXG5cdFx0XG5cdFx0Zm9yIGZjdCBpbiBfdmFsdWVGYWNldHMuc29ydCggX2ZuU29ydCggXCJfaWR4XCIgKSApXG5cdFx0XHRAZ2VuU3ViKCBmY3QsIGZhbHNlLCB0cnVlIClcblx0XHRcblx0XHRAY29sbGVjdGlvbi5vbiBcImFkZFwiLCA9PlxuXHRcdFx0QCRhZGRCdG4uc2hvdygpXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0X2FjdGl2ZSA9IEBjb2xsZWN0aW9uLmZpbHRlciggKCBmY3QgKS0+cmV0dXJuIGZjdD8uZ2V0KCBcImFjdGl2ZVwiICkgYW5kIGZjdD8uZ2V0KCBcInBpbm5lZFwiICkgKVxuXHRcdFx0aWYgX2FjdGl2ZS5sZW5ndGhcblx0XHRcdFx0dmlldyA9IEBmYWNldHNbIF9hY3RpdmVbIDAgXS5pZCBdXG5cdFx0XHRcdCNAc3VidmlldyA9IHZpZXdcblx0XHRcdFx0dmlldz8ucmVvcGVuKClcblx0XHRcdFx0dmlldz8uZm9jdXMoKVxuXHRcdFx0cmV0dXJuXG5cdFx0LCAwIClcblx0XHRcblx0XHRyZXR1cm5cblx0XG5cdHRlbXBsYXRlRGF0YTogPT5cblx0XHRfcmV0ID1cblx0XHRcdHRhYl9pbmRleDogKCAoICggQGlkeCBvciAxICkgKyAxICkgKiAxMDAwICkgLSAxMFxuXHRcdGlmICBAc2VhcmNoQnV0dG9uP1xuXHRcdFx0X3JldC5zZWFyY2hCdXR0b24gPVxuXHRcdFx0XHR0ZW1wbGF0ZTogQHNlYXJjaEJ1dHRvbi50ZW1wbGF0ZSBvciBcIlwiXG5cdFx0XHRcdGV2ZW50OiBAc2VhcmNoQnV0dG9uLmV2ZW50IG9yIFwic2VhcmNoXCJcblx0XHRcdFx0cHVsbHJpZ2h0OiBAc2VhcmNoQnV0dG9uLnB1bGxyaWdodCBvciBmYWxzZVxuXHRcdFx0XHRjc3NjbGFzczogQHNlYXJjaEJ1dHRvbi5jc3NjbGFzcyBvciBcImJ0biBidG4tcHJpbWFyeSBmYSBmYS1zZWFyY2hcIlxuXHRcdFxuXHRcdHJldHVybiBfcmV0XG5cdFxuXHRyZW5kZXI6ID0+XG5cdFx0X3RwbERhdGEgPSBAdGVtcGxhdGVEYXRhKClcblx0XHRAJGVsLmh0bWwoIEB0ZW1wbGF0ZSggX3RwbERhdGEgKSApXG5cdFx0QCRhZGRCdG4gPSBAJCggXCIuYWRkLWZhY2V0LWJ0blwiIClcblx0XHRpZiBfdHBsRGF0YS5zZWFyY2hCdXR0b24/XG5cdFx0XHRAJHNlYXJjaEJ0biA9IEAkKCBcIi5zZWFyY2gtYnRuXCIgKVxuXHRcdHJldHVyblxuXG5cdF9hZGRGYWNldDogKCBldm50ICk9PlxuXHRcdEBhZGRGYWNldCgpXG5cdFx0cmV0dXJuXG5cblx0ZXhpdDogKCBuZXh0QWRkID0gdHJ1ZSApPT5cblx0XHRpZiBAc3Vidmlld1xuXHRcdFx0QHN1YnZpZXcuY2xvc2UoKVxuXHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRAYWRkRmFjZXQoKSBpZiBuZXh0QWRkXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRpZiBAc2VsZWN0dmlld1xuXHRcdFx0I2NvbnNvbGUubG9nIFwiTUFJTiBSRU1PVkUgU0VMRUNUXCJcblx0XHRcdEBzZWxlY3R2aWV3LmNsb3NlKClcblx0XHRcdEBzZWxlY3R2aWV3ID0gbnVsbFxuXG5cdFx0XG5cdFx0cmV0dXJuXG5cblx0cmVtRmFjZXQ6ICggZmFjZXRNICk9PlxuXHRcdEByZXN1bHRzLnJlbW92ZSggZmFjZXRNLmdldCggXCJuYW1lXCIgKSApXG5cdFx0cmV0dXJuXG5cblx0c2V0RmFjZXQ6ICggZmFjZXRNLCBkYXRhICk9PlxuXHRcdEBjb2xsZWN0aW9uLnJlbW92ZSggZmFjZXRNIClcblxuXHRcdEByZXN1bHRzLmFkZCggXy5leHRlbmQoIGRhdGEsIHsgbmFtZTogZmFjZXRNLmdldCggXCJuYW1lXCIgKSwgdHlwZTogZmFjZXRNLmdldCggXCJ0eXBlXCIgKSB9ICksIHsgbWVyZ2U6IHRydWUsIHBhcnNlOiB0cnVlLCBfZmFjZXQ6IGZhY2V0TSB9IClcblx0XHRpZiBub3QgQGNvbGxlY3Rpb24ubGVuZ3RoXG5cdFx0XHRAJGFkZEJ0bi5oaWRlKClcblx0XHRyZXR1cm5cblxuXHRnZW5TdWI6ICggZmFjZXRNLCBhZGRBZnRlciA9IHRydWUsIGluaXRpYWxBZGQ9ZmFsc2UgKT0+XG5cdFx0c3VidmlldyA9IG5ldyBTdWJWaWV3KCBtb2RlbDogZmFjZXRNLCBjb2xsZWN0aW9uOiBAY29sbGVjdGlvbiwgcGFyZW50OiBAIClcblx0XHRcblx0XHRzdWJ2aWV3Lm9uIFwiY2xvc2VkXCIsICggcmVzdWx0cyApPT5cblx0XHRcdCNjb25zb2xlLmxvZyBcImdlblN1YiAtIGNsb3NlZFwiLCByZXN1bHRzLCBzdWJ2aWV3Lm1vZGVsLmlkXG5cdFx0XHRpZiBzdWJ2aWV3Py5tb2RlbD8uZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0I2NvbnNvbGUubG9nIFwiU1VCIFZJRVcgQ0xPU0VEXCIsIHJlc3VsdHM/Lmxlbmd0aFxuXHRcdFx0I3N1YnZpZXcub2ZmKClcblx0XHRcdHN1YnZpZXcucmVtb3ZlKCkgaWYgbm90IHJlc3VsdHM/Lmxlbmd0aFxuXHRcdFx0QHN1YnZpZXcgPSBudWxsXG5cdFx0XHRAYWRkRmFjZXQoKSBpZiBhZGRBZnRlclxuXHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0c3Vidmlldy5vbiBcInJlb3BlblwiLCA9PlxuXHRcdFx0QHNlbGVjdHZpZXc/LmNsb3NlKClcblx0XHRcdHJldHVyblxuXHRcdFx0XG5cdFx0X3NlbGYgPSBAXG5cdFx0c3Vidmlldy5vbiBcInNlbGVjdGVkXCIsICggZmFjZXRNLCBkYXRhICktPlxuXHRcdFx0I2NvbnNvbGUubG9nIFwic3VidmlldyAtIHNlbGVjdGVkXCIsIEBcblx0XHRcdF9zZWxmLnNldEZhY2V0KCBmYWNldE0sIGRhdGEgKVxuXHRcdFx0aWYgbm90IEBzZWxlY3R2aWV3Ll9pc0Z1bGw/IG9yIEBzZWxlY3R2aWV3Ll9pc0Z1bGwoKVxuXHRcdFx0XHRfc2VsZi5fbmV4dEZhY2V0KCBudWxsLCBAIClcblx0XHRcdHJldHVyblxuXHRcdFxuXHRcdEAkYWRkQnRuLmJlZm9yZSggc3Vidmlldy5yZW5kZXIoIGluaXRpYWxBZGQgKSApXG5cdFx0QGZhY2V0c1sgZmFjZXRNLmlkIF0gPSBzdWJ2aWV3XG5cdFx0cmV0dXJuIHN1YnZpZXdcblxuXHRhZGRGYWNldDogPT5cblx0XHRpZiBAc2VsZWN0dmlldz9cblx0XHRcdCNjb25zb2xlLmxvZyBcIlNUT1AgQCBTRUxFQ1QgRVhJU1RcIlxuXHRcdFx0QHNlbGVjdHZpZXcuZm9jdXMoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRpZiBAc3Vidmlldz9cblx0XHRcdCNjb25zb2xlLmxvZyBcIlNUT1AgQCBTVUIgRVhJU1RcIlxuXHRcdFx0QHN1YnZpZXcuY2xvc2UoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRpZiBub3QgQGNvbGxlY3Rpb24ubGVuZ3RoXG5cdFx0XHQjY29uc29sZS5sb2cgXCJTVE9QIEAgRU1QVFkgQ09MTFwiXG5cdFx0XHRyZXR1cm5cblxuXHRcdEBzZWxlY3R2aWV3ID0gbmV3IFNlbGVjdG9yVmlldyggY29sbGVjdGlvbjogQGNvbGxlY3Rpb24sIGN1c3RvbTogZmFsc2UsIG1haW46IEAgKVxuXG5cdFx0QHNlbGVjdHZpZXcub24gXCJvcGVuZWRcIiwgPT5cblx0XHRcdEBfb25PcGVuZWQoKVxuXHRcdFx0cmV0dXJuXG5cblx0XHRAc2VsZWN0dmlldy5vbiBcImNsb3NlZFwiLCAoIHJlc3VsdHMgKT0+XG5cdFx0XHRAX29uQ2xvc2VkKClcblx0XHRcdCNjb25zb2xlLmxvZyBcIlNFTEVDVCBWSUVXIENMT1NFRFwiLCByZXN1bHRzPy5sZW5ndGhcblx0XHRcdCNAc2VsZWN0dmlldy5vZmYoKVxuXHRcdFx0QHNlbGVjdHZpZXcucmVtb3ZlKClcblx0XHRcdEBzZWxlY3R2aWV3ID0gbnVsbFxuXHRcdFx0aWYgbm90IHJlc3VsdHM/Lmxlbmd0aCBhbmQgQHN1YnZpZXc/XG5cdFx0XHRcdCNAc3Vidmlldy5vZmYoKVxuXHRcdFx0XHRAc3Vidmlldy5yZW1vdmUoKVxuXHRcdFx0XHRAc3VidmlldyA9IG51bGxcblx0XHRcdHJldHVyblxuXG5cdFx0QHNlbGVjdHZpZXcub24gXCJzZWxlY3RlZFwiLCAoIGZhY2V0TSApPT5cblx0XHRcdGZhY2V0TS5zZXQoIFwidmFsdWVcIiwgbnVsbCApXG5cdFx0XHRAc3VidmlldyA9IEBnZW5TdWIoIGZhY2V0TSApXG5cdFx0XHRAc3Vidmlldy5vcGVuKClcblx0XHRcdHJldHVyblxuXHRcblx0XHRAJGFkZEJ0bi5iZWZvcmUoIEBzZWxlY3R2aWV3LnJlbmRlcigpIClcblx0XHRAc2VsZWN0dmlldy5mb2N1cygpXG5cdFx0cmV0dXJuXG5cdFxuXHRfb25PcGVuZWQ6ID0+XG5cdFx0QCRhZGRCdG4/LmhpZGUoKVxuXHRcdHJldHVyblxuXHRcblx0X29uQ2xvc2VkOiA9PlxuXHRcdEAkYWRkQnRuPy5zaG93KClcblx0XHRyZXR1cm5cblx0XG5cdF9vdXRlckNsaWNrTGlzdGVuOiA9PlxuXHRcdGpRdWVyeSggZG9jdW1lbnQgKS5vbiBcImNsaWNrXCIsIEBfb3V0ZXJDbGlja1xuXHRcdHJldHVyblxuXHRcblx0X2tleUxpc3RlbjogPT5cblx0XHRqUXVlcnkoIGRvY3VtZW50ICkub24gXCJrZXlkb3duXCIsICggZXZudCApPT5cblx0XHRcdGlmIGV2bnQua2V5Q29kZSBpcyBLRVlDT0RFUy5UQUIgb3IgZXZudC5rZXlDb2RlIGluIEtFWUNPREVTLlRBQlxuXHRcdFx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblx0XHRcdFx0XG5cdFx0XHRcdGlmICQoIGV2bnQudGFyZ2V0ICkuaXMoIFwiLnNlYXJjaC1idG5cIiApXG5cdFx0XHRcdFx0c2V0VGltZW91dCggPT5cblx0XHRcdFx0XHRcdEBhZGRGYWNldCgpXG5cdFx0XHRcdFx0LCAwIClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcblx0XHRcdFx0IyBjYXNlIG9ubHkgdGhlIGZhY2V0IHNlbGVjdG9yIGlzIG9wZW5cblx0XHRcdFx0aWYgQHNlbGVjdHZpZXc/LmlzT3BlblxuXHRcdFx0XHRcdGlmIGV2bnQ/LnNoaWZ0S2V5XG5cdFx0XHRcdFx0XHRfcHJldklkID0gQCRhZGRCdG4/LnByZXZBbGwoIFwiLnN1YlwiICk/LmZpcnN0KCk/LmRhdGEoIFwiZmN0aWRcIiApXG5cdFx0XHRcdFx0XHRpZiBfcHJldklkP1xuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0XHRcdFx0XHRcdEBmYWNldHNbIF9wcmV2SWQgXT8ucmVvcGVuKClcblx0XHRcdFx0XHRcdFx0LCAwIClcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRAc2VsZWN0dmlldy5jbG9zZSgpXG5cdFx0XHRcdFx0XHRAZm9jdXNTZWFyY2goKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcblx0XHRcdFx0XG5cdFx0XHRcdCMgb3RoZXJ3aXNlIHRyaWdnZXIgZXNjYXBlIGV2ZW50IGFuZCBsaXN0ZW4gZm9yIHRoZSByZXNwb25zZSBvZiB0aGUgb3BlbiBmYWNldFxuXHRcdFx0XHRAdHJpZ2dlciBcImVzY2FwZVwiLCBldm50LCBAX25leHRGYWNldFxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdGlmIGV2bnQua2V5Q29kZSBpcyBLRVlDT0RFUy5FU0Mgb3IgZXZudC5rZXlDb2RlIGluIEtFWUNPREVTLkVTQ1xuXHRcdFx0XHRAZXhpdCgpXG5cdFx0XHRcdEB0cmlnZ2VyKCBcImVzY2FwZVwiLCBldm50IClcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblx0XG5cdF9uZXh0RmFjZXQ6ICggZXZudCwgc3ViVmlldyApPT5cblx0XHRfbmV4dEZuID0gaWYgZXZudD8uc2hpZnRLZXkgdGhlbiBcInByZXZcIiBlbHNlIFwibmV4dFwiXG5cdFx0X25leHQgPSBzdWJWaWV3LiRlbD9bIF9uZXh0Rm4gXT8oKVxuXHRcdFxuXHRcdGlmIF9uZXh0Lmhhc0NsYXNzKCBcImFkZC1mYWNldC1idG5cIiApXG5cdFx0XHRzZXRUaW1lb3V0KCA9PlxuXHRcdFx0XHRAYWRkRmFjZXQoKVxuXHRcdFx0LCAwIClcblx0XHRcdHJldHVyblxuXHRcdF9uZXh0SWQgPSBfbmV4dD8uZGF0YSggXCJmY3RpZFwiIClcblx0XHRpZiBfbmV4dElkP1xuXHRcdFx0c2V0VGltZW91dCggPT5cblx0XHRcdFx0QGZhY2V0c1sgX25leHRJZCBdPy5yZW9wZW4oKVxuXHRcdFx0LCAwIClcblx0XHRyZXR1cm5cblx0XHRcblx0Zm9jdXNTZWFyY2g6ID0+XG5cdFx0aWYgQCRzZWFyY2hCdG4/XG5cdFx0XHRAJHNlYXJjaEJ0bi5mb2N1cygpXG5cdFx0cmV0dXJuXG5cdFx0XG5cdF9vblNlYXJjaDogKCBldm50ICk9PlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRAZXhpdCgpXG5cdFx0QHRyaWdnZXIoIFwic2VhcmNoYnV0dG9uXCIsIEBzZWFyY2hCdXR0b24uZXZlbnQgKVxuXHRcdHJldHVyblxuXHRcblx0X29uRm9jdXNTZWFyY2g6ICggZXZudCApPT5cblx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0QHNlbGVjdHZpZXc/LmNsb3NlPygpXG5cdFx0cmV0dXJuXG5cdFx0XG5cdF9vdXRlckNsaWNrOiAoIGV2bnQgKT0+XG5cdFx0ZXZudC5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdF9wb3NXcnAgPSBAZWwuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGV2bnQudGFyZ2V0IClcblx0XHRpZiBub3QgKCBfcG9zV3JwIGlzIDAgb3IgX3Bvc1dycCAtIDE2ID49IDAgKVxuXHRcdFx0QGV4aXQoIGZhbHNlIClcblx0XHRyZXR1cm5cblx0XG5cbm1vZHVsZS5leHBvcnRzID0gTWFpblZpZXdcbiIsIktFWUNPREVTID0gcmVxdWlyZSggXCIuLi91dGlscy9rZXljb2Rlc1wiIClcblxuY2xhc3MgU2VsZWN0b3JWaWV3IGV4dGVuZHMgcmVxdWlyZSggXCIuL2ZhY2V0cy9iYXNlXCIgKVxuXHR0ZW1wbGF0ZTogcmVxdWlyZSggXCIuLi90bXBscy9zZWxlY3Rvci5qYWRlXCIgKVxuXHR0ZW1wbGF0ZUVsOiByZXF1aXJlKCBcIi4uL3RtcGxzL3NlbGVjdG9ybGkuamFkZVwiIClcblx0c2VsZWN0Q291bnQ6IDFcblxuXHRjbGFzc05hbWU6ID0+XG5cdFx0Y2xzID0gWyBcImFkZC1mYWNldFwiIF1cblx0XHRpZiBAY3VzdG9tXG5cdFx0XHRjbHMucHVzaCBcImN1c3RvbVwiXG5cdFx0cmV0dXJuIGNscy5qb2luKCBcIiBcIiApXG5cblx0ZXZlbnRzOiA9PlxuXHRcdFwibW91c2Vkb3duIGFcIjogXCJfb25DbGlja1wiXG5cdFx0XCJmb2N1cyBpbnB1dCMje0BjaWR9XCI6IFwib3BlblwiXG5cdFx0I1wiYmx1ciBpbnB1dCMje0BjaWR9XCI6IFwiY2xvc2VcIlxuXHRcdFwia2V5ZG93biBpbnB1dCMje0BjaWR9XCI6IFwic2VhcmNoXCJcblx0XHRcImtleXVwIGlucHV0IyN7QGNpZH1cIjogXCJzZWFyY2hcIlxuXG5cdGNvbnN0cnVjdG9yOiAoIG9wdGlvbnMgKS0+XG5cdFx0QGN1c3RvbSA9IG9wdGlvbnMuY3VzdG9tIG9yIGZhbHNlXG5cdFx0QGFjdGl2ZUlkeCA9IDBcblx0XHRAY3VyclF1ZXJ5ID0gXCJcIlxuXHRcdFxuXHRcdGlmIG9wdGlvbnMubWFpbj9cblx0XHRcdEBtYWluID0gb3B0aW9ucy5tYWluXG5cdFx0XG5cdFx0c3VwZXIoIG9wdGlvbnMgKVxuXHRcdHJldHVyblxuXHRcdFxuXHRpbml0aWFsaXplOiAoIG9wdGlvbnMgKT0+XG5cdFx0c3VwZXJcblx0XHRAc2VhcmNoY29sbCA9IEBjb2xsZWN0aW9uLnN1YiggLT50cnVlIClcblx0XHRAcmVzdWx0ID0gbmV3IEBjb2xsZWN0aW9uLmNvbnN0cnVjdG9yKClcblx0XHRcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcImFkZFwiLCBAcmVuZGVyUmVzIClcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcInJlbW92ZVwiLCBAcmVuZGVyUmVzIClcblx0XHRAbGlzdGVuVG8oIEBzZWFyY2hjb2xsLCBcInJlbW92ZVwiLCBAY2hlY2tPcHRpb25zRW1wdHkgKVxuXHRcdFxuXHRcdHJldHVyblxuXG5cdGdldFRlbXBsYXRlRGF0YTogPT5cblx0XHRyZXR1cm4gXy5leHRlbmQoIHN1cGVyLCBjdXN0b206IEBjdXN0b20gKVxuXG5cdHJlbmRlcjogPT5cblx0XHRzdXBlclxuXHRcdEAkbGlzdCA9IEAkZWwuZmluZCggXCIjI3tAY2lkfXR5cGVsaXN0XCIgKVxuXHRcdEByZW5kZXJSZXMoKVxuXHRcdHJldHVybiBAZWxcblxuXHRyZW5kZXJSZXM6ID0+XG5cdFx0QCRsaXN0LmVtcHR5KClcblxuXHRcdF9saXN0ID0gW11cblx0XHRmb3IgbW9kZWwsIGlkeCBpbiBAc2VhcmNoY29sbC5tb2RlbHMgd2hlbiBub3QgbW9kZWwuZ2V0KCBcInBpbm5lZFwiIClcblx0XHRcdF9sYmwgPSBtb2RlbC5nZXRMYWJlbCgpXG5cdFx0XHRfdG1wbCA9IG1vZGVsLmdldCggXCJsYWJlbHRlbXBsYXRlXCIgKVxuXHRcdFx0aWYgX3RtcGw/XG5cdFx0XHRcdF9sYmwgPSBfdG1wbC5yZXBsYWNlKCBcInt7bGFiZWx9fVwiLCBfbGJsIClcblx0XHRcdFx0XG5cdFx0XHRfaWQgPSBtb2RlbC5pZFxuXHRcdFx0X2Nzc2NsYXNzID0gbW9kZWwuZ2V0KCBcImNzc2NsYXNzXCIgKVxuXHRcdFx0aWYgQGN1cnJRdWVyeT8ubGVuZ3RoID4gMVxuXHRcdFx0XHRfbGJsID0gX2xibC5yZXBsYWNlKCBuZXcgUmVnRXhwKCBAY3VyclF1ZXJ5LCBcImdpXCIgKSwgKCggc3RyICktPnJldHVybiBcIjxiPiN7c3RyfTwvYj5cIiApIClcblx0XHRcdF9saXN0LnB1c2ggbGFiZWw6IF9sYmwsIGlkOiBfaWQsIGNzc2NsYXNzOiBfY3NzY2xhc3Ncblx0XHQjaWYgX2xpc3QubGVuZ3RoXG5cdFx0QCRsaXN0LmFwcGVuZCggQHRlbXBsYXRlRWwoXG5cdFx0XHRsaXN0OiBfbGlzdCxcblx0XHRcdHF1ZXJ5OiBAY3VyclF1ZXJ5LFxuXHRcdFx0YWN0aXZlSWR4OiBAYWN0aXZlSWR4LFxuXHRcdFx0Y3VzdG9tOiBAY3VzdG9tXG5cdFx0KSApXG5cblx0XHRAX2NoZWNrU2Nyb2xsKClcblx0XHRcblx0XHRyZXR1cm4gQCRsaXN0XG5cblx0X3Njcm9sbFRpbGw6IDE5OFxuXHRfY2hlY2tTY3JvbGw6ID0+XG5cdFx0X2hlaWdodCA9IEAkbGlzdC5oZWlnaHQoKVxuXHRcdGlmIF9oZWlnaHQgPiAwXG5cdFx0XHRAc2Nyb2xsSGVscGVyKCBfaGVpZ2h0IClcblx0XHRcdHJldHVyblxuXG5cdFx0IyBleGl0IHRoZSB0aGUgY2FsbCBzdGFjayB0byBjaGVjayBoZWlnaHQgYWZ0ZXIgdGhlIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZG9tXG5cdFx0c2V0VGltZW91dCggPT5cblx0XHRcdEBzY3JvbGxIZWxwZXIoIEAkbGlzdC5oZWlnaHQoKSApXG5cdFx0LCAwIClcblx0XHRyZXR1cm5cblxuXHRzY3JvbGxIZWxwZXI6ICggaGVpZ2h0ICk9PlxuXHRcdGlmIGhlaWdodCA+PSBAX3Njcm9sbFRpbGxcblx0XHRcdEBzY3JvbGxpbmcgPSB0cnVlXG5cdFx0ZWxzZVxuXHRcdFx0QHNjcm9sbGluZyA9IGZhbHNlXG5cdFx0cmV0dXJuXG5cblx0Y2hlY2tPcHRpb25zRW1wdHk6ID0+XG5cdFx0I2lmIEBzZWFyY2hjb2xsLmxlbmd0aCA8PSAwXG5cdFx0I1x0QGNsb3NlKClcblx0XHRyZXR1cm5cblxuXHRfb25DbGljazogKCBldm50ICk9PlxuXHRcdGV2bnQuc3RvcFByb3BhZ2F0aW9uKClcblx0XHRldm50LnByZXZlbnREZWZhdWx0KClcblxuXHRcdF9pZCA9IEAkKCBldm50LmN1cnJlbnRUYXJnZXQgKS5kYXRhKCBcImlkXCIgKVxuXHRcdGlmIG5vdCBfaWQ/XG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdF9tZGwgPSBAY29sbGVjdGlvbi5nZXQoIF9pZCApXG5cdFx0aWYgbm90IF9tZGw/XG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdEBzZWxlY3RlZCggX21kbCApXG5cdFx0cmV0dXJuIGZhbHNlXG5cdFxuXHRfaXNGdWxsOiA9PlxuXHRcdHJldHVybiB0cnVlXG5cdFx0XG5cdF9vblRhYkFjdGlvbjogKCBldm50ICk9PlxuXHRcdGlmIEBtYWluP1xuXHRcdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRAbWFpbi5mb2N1c1NlYXJjaCgpXG5cdFx0ZWxzZVxuXHRcdFx0c3VwZXIoIGV2ZW50IClcblx0XHRyZXR1cm5cblx0XHRcblx0c2VsZWN0ZWQ6ICggbWRsICk9PlxuXHRcdGlmIG5vdCBAbWFpbj8gYW5kIEBfaXNGdWxsKClcblx0XHRcdF9pZCA9IEByZXN1bHQubGFzdCgpPy5pZFxuXHRcdFx0QHJtUmVzKCBfaWQgKVxuXHRcdFx0XG5cdFx0dHJ5XG5cdFx0XHRpZiBtZGwub25seUV4ZWM/XG5cdFx0XHRcdG1kbD8uZXhlYz8oKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRjYXRjaCBfZXJyXG5cdFx0XHR0cnlcblx0XHRcdFx0Y29uc29sZS5lcnJvciBcIklzc3VlICMyMzogQ0FUQ0ggLSBDbGFzczojeyBAY29uc3RydWN0b3IubmFtZSB9IC0gYWN0aXZlSWR4OiN7QGFjdGl2ZUlkeH0gLSBjb2xsZWN0aW9uOiN7SlNPTi5zdHJpbmdpZnkoIEBjb2xsZWN0aW9uLnRvSlNPTigpKX1cIlxuXHRcdFx0Y2F0Y2ggX2VycmVyclxuXHRcdFx0XHRjb25zb2xlLmVycm9yIFwiSXNzdWUgIzIzOiBDQVRDSFwiXG5cdFx0XG5cdFx0aWYgbWRsP1xuXHRcdFx0QHNlYXJjaGNvbGwucmVtb3ZlKCBtZGwgKVxuXHRcdFx0QHJlc3VsdC5hZGQoIG1kbCApXG5cdFx0XHRAdHJpZ2dlciBcInNlbGVjdGVkXCIsIG1kbFxuXHRcdFxuXHRcdGlmIEBfaXNGdWxsKClcblx0XHRcdEBjbG9zZSgpXG5cdFx0cmV0dXJuXG5cblx0Zm9jdXM6ID0+XG5cdFx0QCRpbnAuZm9jdXMoKVxuXHRcdF9lbCA9IEAkaW5wLmdldCgwKVxuXHRcdFxuXHRcdF9lbC5zZWxlY3Rpb25TdGFydCA9IF9lbC5zZWxlY3Rpb25FbmQgPSBfZWwudmFsdWUubGVuZ3RoXG5cdFx0cmV0dXJuXG5cdFxuXHRvcGVuOiA9PlxuXHRcdCNjb25zb2xlLmxvZyBcInNlbGVjdG9yIG9wZW5cIlxuXHRcdEB0cmlnZ2VyKCBcIm9wZW5lZFwiIClcblx0XHRyZXR1cm4gc3VwZXJcblxuXHRzZWFyY2g6ICggZXZudCApPT5cblx0XHRpZiBldm50Py50eXBlIGlzIFwia2V5ZG93blwiXG5cdFx0XHRzd2l0Y2ggZXZudC5rZXlDb2RlXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuVVBcblx0XHRcdFx0XHRAbW92ZSggdHJ1ZSApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuRE9XTlxuXHRcdFx0XHRcdEBtb3ZlKCBmYWxzZSApXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdHdoZW4gS0VZQ09ERVMuRU5URVJcblx0XHRcdFx0XHRAc2VsZWN0QWN0aXZlKCB0cnVlIClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdHJldHVyblxuXHRcdFxuXHRcdGlmIF8uaXNTdHJpbmcoIGV2bnQgKVxuXHRcdFx0X3EgPSBldm50XG5cdFx0ZWxzZVxuXHRcdFx0X3EgPSBldm50LmN1cnJlbnRUYXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKVxuXHRcdGlmIF9xIGlzIEBjdXJyUXVlcnlcblx0XHRcdHJldHVyblxuXG5cdFx0QGN1cnJRdWVyeSA9IF9xXG5cblx0XHRAc2VhcmNoY29sbC51cGRhdGVTdWJGaWx0ZXIoICggbWRsICk9PlxuXHRcdFx0aWYgQHJlc3VsdC5nZXQoIG1kbC5pZCApP1xuXHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdGlmIG5vdCBfcT8ubGVuZ3RoXG5cdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRfbWF0Y2ggPSBtZGwubWF0Y2goIF9xIClcblx0XHRcdHJldHVybiBfbWF0Y2hcblx0XHQsIGZhbHNlIClcblxuXG5cdFx0QGFjdGl2ZUlkeCA9IDBcblx0XHRAcmVuZGVyUmVzKClcblx0XHRyZXR1cm5cblxuXHRtb3ZlOiAoIHVwID0gZmFsc2UgKT0+XG5cdFx0X2xpc3QgPSBAJGVsLmZpbmQoIFwiLnR5cGVsaXN0IGFcIiApXG5cdFxuXHRcdF9jdXN0b21FbGVtZW50Q2hhbmdlID0gaWYgQGN1cnJRdWVyeT8ubGVuZ3RoIHRoZW4gMCBlbHNlIDFcblx0XHRfdG9wID0gMFxuXHRcdGlmIHVwXG5cdFx0XHRpZiAoIEBhY3RpdmVJZHggLSAxICkgPCBfdG9wXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0X25ld2lkeCA9IEBhY3RpdmVJZHggLSAxXG5cdFx0ZWxzZVxuXHRcdFx0aWYgQHNlYXJjaGNvbGwubGVuZ3RoIC0gX2N1c3RvbUVsZW1lbnRDaGFuZ2UgPD0gQGFjdGl2ZUlkeFxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdF9uZXdpZHggPSBAYWN0aXZlSWR4ICsgMVxuXG5cdFx0XG5cdFx0QCQoIF9saXN0WyBAYWN0aXZlSWR4IF0gKS5yZW1vdmVDbGFzcyggXCJhY3RpdmVcIiApXG5cdFx0XyRlbG5ldyA9IEAkKCBfbGlzdFsgX25ld2lkeCBdICkuYWRkQ2xhc3MoIFwiYWN0aXZlXCIgKVxuXG5cdFx0aWYgQHNjcm9sbGluZ1xuXHRcdFx0X2VsSCA9IF8kZWxuZXcub3V0ZXJIZWlnaHQoKVxuXHRcdFx0X3BvcyA9IF9lbEggKiAoIF9uZXdpZHggKyAxIClcblx0XHRcdF8kbGlzdCA9IEAkZWwuZmluZCggXCIudHlwZWxpc3RcIiApXG5cdFx0XHRfc2Nyb2xsVCA9IF8kbGlzdC5zY3JvbGxUb3AoKVxuXHRcdFx0aWYgX3BvcyA+IF9zY3JvbGxUICsgQF9zY3JvbGxUaWxsXG5cdFx0XHRcdF8kbGlzdC5zY3JvbGxUb3AoIF9wb3MgLSBAX3Njcm9sbFRpbGwgKVxuXHRcdFx0ZWxzZSBpZiBfcG9zIDwgX3Njcm9sbFQgKyBfZWxIXG5cdFx0XHRcdF8kbGlzdC5zY3JvbGxUb3AoIF9wb3MgLSBfZWxIIClcblxuXHRcdEBhY3RpdmVJZHggPSBfbmV3aWR4XG5cdFx0cmV0dXJuXG5cblx0c2VsZWN0Oj0+XG5cdFx0cmV0dXJuXG5cblx0c2VsZWN0QWN0aXZlOiAoIGlzRW50ZXJFdmVudD1mYWxzZSApPT5cblx0XHRpZiBub3QgQG1haW4/IGFuZCBAX2lzRnVsbCgpXG5cdFx0XHRfaWQgPSBAcmVzdWx0Lmxhc3QoKT8uaWRcblx0XHRcdEBybVJlcyggX2lkIClcblx0XHRcdFx0XG5cdFx0X3NlbCA9IEAkZWwuZmluZCggXCIudHlwZWxpc3QgYS5hY3RpdmVcIiApLnJlbW92ZUNsYXNzKCBcImFjdGl2ZVwiICkuZGF0YSgpXG5cdFx0XHRcblx0XHRfc2VhcmNoID0gQCRpbnAudmFsKClcblx0XHRcblx0XHRpZiAgbm90IF9zZWw/IGFuZCBAc2VsZWN0Q291bnQgaXNudCAxIGFuZCBpc0VudGVyRXZlbnQgYW5kIG5vdCBfc2VhcmNoPy5sZW5ndGhcblx0XHRcdEBjbG9zZSgpXG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdGlmIG5vdCBfc2VsP1xuXHRcdFx0cmV0dXJuXG5cdFx0XG5cdFx0QGFjdGl2ZUlkeCA9IDBcblx0XHRpZiBfc2VsPy5pZHggPj0gMCBhbmQgQHNlYXJjaGNvbGwubGVuZ3RoXG5cdFx0XHRAc2VsZWN0ZWQoIEBjb2xsZWN0aW9uLmdldCggX3NlbC5pZCApIClcblx0XHRlbHNlIGlmIEBjdXJyUXVlcnk/Lmxlbmd0aFxuXHRcdFx0QHNlbGVjdGVkKCBuZXcgQGNvbGxlY3Rpb24ubW9kZWwoIHZhbHVlOiBAY3VyclF1ZXJ5LCBjdXN0b206IHRydWUgKSApXG5cdFx0XHRAJGlucC52YWwoIFwiXCIgKVxuXHRcdGVsc2Vcblx0XHRcdHJldHVyblxuXHRcdHJldHVyblxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlbGVjdG9yVmlld1xuIiwiY2xhc3MgVmlld1N1YiBleHRlbmRzIEJhY2tib25lLlZpZXdcblx0dGVtcGxhdGU6IHJlcXVpcmUoIFwiLi4vdG1wbHMvc3ViLmphZGVcIiApXG5cdGNsYXNzTmFtZTogPT5cblx0XHRfc3RkID0gXCJzdWJcIlxuXHRcdF90eXBlID0gQG1vZGVsLmdldCggXCJ0eXBlXCIgKVxuXHRcdGlmIF90eXBlP1xuXHRcdFx0X3N0ZCArPSBcIiBzdWItdHlwZS1cIiArIF90eXBlXG5cdFx0XG5cdFx0X25hbWUgPSBAbW9kZWwuZ2V0KCBcIm5hbWVcIiApXG5cdFx0aWYgX25hbWU/XG5cdFx0XHRfc3RkICs9IFwiIHN1Yi1uYW1lLVwiICsgX25hbWVcblx0XHRyZXR1cm4gX3N0ZFxuXG5cdGluaXRpYWxpemU6ICggb3B0aW9ucyApPT5cblx0XHRAX2lzT3BlbiA9IGZhbHNlXG5cdFx0QHJlc3VsdCA9IG5ldyBCYWNrYm9uZS5Db2xsZWN0aW9uKClcblx0XHRAJGVsLm9uIFwiY2xpY2tcIiwgQHJlb3BlblxuXHRcdEBwYXJlbnQgPSBvcHRpb25zLnBhcmVudFxuXHRcdFxuXHRcdEAkZWwuZGF0YSggXCJmY3RpZFwiLCBAbW9kZWwuaWQgKVxuXHRcdFxuXHRcdEBwYXJlbnQub24gXCJlc2NhcGVcIiwgKCBldm50LCBjYiApPT5cblx0XHRcdGlmIEBfaXNPcGVuXG5cdFx0XHRcdGlmIEBzZWxlY3R2aWV3Py5fb25UYWJBY3Rpb24oIGV2bnQgKVxuXHRcdFx0XHRcdGNiKCBldm50LCBAICkgaWYgY2I/XG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblxuXHRldmVudHM6XG5cdFx0XCJjbGljayAucm0tZmFjZXQtYnRuXCI6IFwiZGVsXCJcblxuXHRyZW5kZXI6ICggaW5pdGlhbEFkZCApPT5cblx0XHRfbGlzdCA9IFtdXG5cdFx0Zm9yIG1vZGVsLCBpZHggaW4gQHJlc3VsdC5tb2RlbHNcblx0XHRcdHRyeVxuXHRcdFx0XHRfbGlzdC5wdXNoIG1vZGVsLmdldExhYmVsKClcblx0XHRcdGNhdGNoIF9lcnJcblx0XHRcdFx0dHJ5XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvciBcIklzc3VlICMyNDogQ0FUQ0ggLSBDbGFzczojeyBAY29uc3RydWN0b3IubmFtZSB9IC0gbW9kZWw6I3tKU09OLnN0cmluZ2lmeShAbW9kZWwudG9KU09OKCkpfSAtIHJlc3VsdDoje0pTT04uc3RyaW5naWZ5KCBAcmVzdWx0LnRvSlNPTigpKX1cIlxuXHRcdFx0XHRjYXRjaCBfZXJyZXJyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvciBcIklzc3VlICMyNDogQ0FUQ0hcIlxuXHRcdFxuXHRcdEAkZWwuaHRtbCBAdGVtcGxhdGVcblx0XHRcdGxhYmVsOiBAbW9kZWwuZ2V0TGFiZWwoKVxuXHRcdFx0c2VsZWN0ZWQ6IF9saXN0XG5cdFx0XHR0eXBlOiBAbW9kZWwuZ2V0KCBcInR5cGVcIiApXG5cdFx0XHRuYW1lOiBAbW9kZWwuZ2V0KCBcIm5hbWVcIiApXG5cdFx0XHRwaW5uZWQ6IEBtb2RlbC5nZXQoIFwicGlubmVkXCIgKSBvciBmYWxzZVxuXHRcdFx0XHRcblx0XHRAJHN1YiA9IEAkKCBcIi5zdWJzZWxlY3RcIiApXG5cdFx0QCRyZXN1bHRzID0gQCQoIFwiLnN1YnJlc3VsdHNcIiApXG5cblx0XHRAZ2VuZXJhdGVTdWIoIGluaXRpYWxBZGQgKVxuXHRcdHJldHVybiBAZWxcblx0XG5cdHJlb3BlbjogKCBldm50ICk9PlxuXHRcdGlmIGV2bnQ/IGFuZCAkKCBldm50LnRhcmdldCApLmlzKCBcIi5ybS1yZXN1bHQtYnRuXCIgKSBhbmQgQHNlbGVjdHZpZXc/LnJtUmVzP1xuXHRcdFx0QHNlbGVjdHZpZXcucm1SZXMoIGV2bnQgKVxuXHRcdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdGlmIGV2bnQ/IGFuZCAkKCBldm50LnRhcmdldCApLmlzKCBcIi5lZGl0LXJlc3VsdC1idG5cIiApIGFuZCBAc2VsZWN0dmlldz8uZWRpdFJlcz9cblx0XHRcdEBzZWxlY3R2aWV3LmVkaXRSZXMoIGV2bnQgKVxuXHRcdFx0ZXZudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRldm50LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdGlmIG5vdCBAX2lzT3BlbiBhbmQgQHNlbGVjdHZpZXc/XG5cdFx0XHRAc2VsZWN0dmlldy5yZW9wZW4oIEAgKVxuXHRcdGV2bnQ/LnByZXZlbnREZWZhdWx0KClcblx0XHRldm50Py5zdG9wUHJvcGFnYXRpb24oKVxuXHRcdEB0cmlnZ2VyKCBcInJlb3BlblwiIClcblx0XHRyZXR1cm5cblx0XHRcblx0ZGVsOiAoIGV2bnQgKT0+XG5cdFx0aWYgQG1vZGVsLmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHRyZXR1cm5cblx0XHRcdFxuXHRcdGV2bnQ/LnN0b3BQcm9wYWdhdGlvbigpXG5cdFx0ZXZudD8ucHJldmVudERlZmF1bHQoKVxuXHRcdEBjb2xsZWN0aW9uLnRyaWdnZXIoIFwiaWdneTpyZW1cIiwgQG1vZGVsIClcblx0XHRAY29sbGVjdGlvbi5hZGQoIEBtb2RlbCApXG5cdFx0QHJlbW92ZSgpXG5cdFx0QHRyaWdnZXIoIFwiY2xvc2VkXCIgKVxuXHRcdHJldHVybiBmYWxzZVxuXG5cdHJlbW92ZTogPT5cblx0XHRAX2lzT3BlbiA9IGZhbHNlXG5cdFx0QHNlbGVjdHZpZXc/LnJlbW92ZSgpXG5cdFx0QHBhcmVudCA9IG51bGxcblx0XHRyZXR1cm4gc3VwZXJcblxuXHRzZWxlY3RlZDogKCBvcHRNZGwgKT0+XG5cdFx0QHJlc3VsdC5hZGQoIG9wdE1kbCwgeyBtZXJnZTogdHJ1ZSB9IClcblx0XHRAcmVuZGVyUmVzdWx0KClcblx0XHRAdHJpZ2dlciggXCJzZWxlY3RlZFwiLCBAbW9kZWwsIEBzZWxlY3R2aWV3LmdldFJlc3VsdHMoKSApXG5cdFx0cmV0dXJuXG5cdFxuXHRyZW1vdmVkOiAoIG9wdE1kbCApPT5cblx0XHRAcmVzdWx0LnJlbW92ZSggb3B0TWRsIClcblx0XHRAcmVuZGVyUmVzdWx0KClcblx0XHRAdHJpZ2dlciggXCJzZWxlY3RlZFwiLCBAbW9kZWwsIEBzZWxlY3R2aWV3LmdldFJlc3VsdHMoKSApXG5cdFx0XG5cdFx0IyByZW1vdmUgZmFjZXQgaWYgY29udGVudCBsZW5ndGggb3IgdGhlIGZhY2V0IGlzIGluIGVkaXRNb2RlXG5cdFx0aWYgQHJlc3VsdC5sZW5ndGggPD0gMCBhbmQgbm90IEBzZWxlY3R2aWV3LmVkaXRNb2RlXG5cdFx0XHRAZGVsKClcblx0XHRyZXR1cm5cblxuXHRyZW5kZXJSZXN1bHQ6ID0+XG5cdFx0QCRyZXN1bHRzLmh0bWwoIEBzZWxlY3R2aWV3LnJlbmRlclJlc3VsdCgpIClcblx0XHRyZXR1cm5cblxuXHRpc09wZW46ID0+XG5cdFx0cmV0dXJuIEBzZWxlY3R2aWV3P1xuXG5cdGZvY3VzOiA9PlxuXHRcdGlmIEBzZWxlY3R2aWV3P1xuXHRcdFx0QHNlbGVjdHZpZXc/LmZvY3VzKClcblx0XHRcdHJldHVyblxuXHRcdEBvcGVuKClcblx0XHRyZXR1cm5cblxuXHRjbG9zZTogPT5cblx0XHRAX2lzT3BlbiA9IGZhbHNlXG5cdFx0aWYgQHNlbGVjdHZpZXc/XG5cdFx0XHRAc2VsZWN0dmlldz8ub2ZmKClcblx0XHRcdEBzZWxlY3R2aWV3Py5jbG9zZSgpXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblxuXHRnZW5lcmF0ZVN1YjogKCBpbml0aWFsQWRkICk9PlxuXHRcdGlmIEBzZWxlY3R2aWV3P1xuXHRcdFx0QGF0dGFjaFN1YkV2ZW50cygpXG5cdFx0XHRyZXR1cm4gQHNlbGVjdHZpZXdcblx0XHRcdFxuXHRcdEBzZWxlY3R2aWV3ID0gbmV3IEBtb2RlbC5TdWJWaWV3KCBzdWI6IEAsIG1vZGVsOiBAbW9kZWwsIGVsOiBAJHN1YiApXG5cdFx0QGF0dGFjaFN1YkV2ZW50cygpXG5cdFx0XHRcblx0XHRAJGVsLmFwcGVuZCggQHNlbGVjdHZpZXcucmVuZGVyKCBpbml0aWFsQWRkICkgKVxuXHRcdGlmIEBtb2RlbD8uZ2V0KCBcInZhbHVlXCIgKT9cblx0XHRcdEBzZWxlY3R2aWV3LnNlbGVjdCgpXG5cdFx0cmV0dXJuXG5cdFx0XG5cdGF0dGFjaFN1YkV2ZW50czogPT5cblx0XHRAc2VsZWN0dmlldy5vbiBcImNsb3NlZFwiLCAoIHJlc3VsdCApPT5cblx0XHRcdCNjb25zb2xlLmxvZyBcIlN1YiBjbG9zZWRcIiwgQHNlbGVjdHZpZXcubW9kZWwuaWRcblx0XHRcdEBfaXNPcGVuID0gZmFsc2Vcblx0XHRcdFxuXHRcdFx0aWYgQG1vZGVsLmdldCggXCJwaW5uZWRcIiApXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0I0BzZWxlY3R2aWV3Lm9mZigpXG5cdFx0XHRAc2VsZWN0dmlldy5yZW1vdmUoKSBpZiBub3QgcmVzdWx0Lmxlbmd0aFxuXHRcdFx0I0BzZWxlY3R2aWV3ID0gbnVsbFxuXHRcdFx0QHRyaWdnZXIoIFwiY2xvc2VkXCIsIHJlc3VsdCApXG5cdFx0XHRAcmVtb3ZlKCkgaWYgbm90IHJlc3VsdC5sZW5ndGhcblx0XHRcdHJldHVyblxuXG5cdFx0QHNlbGVjdHZpZXcub24gXCJzZWxlY3RlZFwiLCAoIG1kbCApPT5cblx0XHRcdGlmIG1kbFxuXHRcdFx0XHRAc2VsZWN0ZWQoIG1kbCApXG5cdFx0XHRyZXR1cm5cblx0XHRcblx0XHRAc2VsZWN0dmlldy5vbiBcInJlbW92ZWRcIiwgKCBtZGwgKT0+XG5cdFx0XHRpZiBtZGxcblx0XHRcdFx0QHJlbW92ZWQoIG1kbCApXG5cdFx0XHRyZXR1cm5cblx0XHRyZXR1cm5cblx0XHRcblx0b3BlbjogPT5cblx0XHRAZ2VuZXJhdGVTdWIoKVxuXG5cdFx0QHNlbGVjdHZpZXc/LmZvY3VzKClcblx0XHRAX2lzT3BlbiA9IHRydWVcblx0XHRcblx0XHQjIEBwYXJlbnQuc3VidmlldyA9IEBcblx0XHQjIEBwYXJlbnQuc2VsZWN0dmlldyA9IEBzZWxlY3R2aWV3XG5cdFx0cmV0dXJuXG5cbm1vZHVsZS5leHBvcnRzID0gVmlld1N1YlxuIiwiIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuamFkZSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNZXJnZSB0d28gYXR0cmlidXRlIG9iamVjdHMgZ2l2aW5nIHByZWNlZGVuY2VcbiAqIHRvIHZhbHVlcyBpbiBvYmplY3QgYGJgLiBDbGFzc2VzIGFyZSBzcGVjaWFsLWNhc2VkXG4gKiBhbGxvd2luZyBmb3IgYXJyYXlzIGFuZCBtZXJnaW5nL2pvaW5pbmcgYXBwcm9wcmlhdGVseVxuICogcmVzdWx0aW5nIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhXG4gKiBAcGFyYW0ge09iamVjdH0gYlxuICogQHJldHVybiB7T2JqZWN0fSBhXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLm1lcmdlID0gZnVuY3Rpb24gbWVyZ2UoYSwgYikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBhdHRycyA9IGFbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhdHRycyA9IG1lcmdlKGF0dHJzLCBhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJzO1xuICB9XG4gIHZhciBhYyA9IGFbJ2NsYXNzJ107XG4gIHZhciBiYyA9IGJbJ2NsYXNzJ107XG5cbiAgaWYgKGFjIHx8IGJjKSB7XG4gICAgYWMgPSBhYyB8fCBbXTtcbiAgICBiYyA9IGJjIHx8IFtdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhYykpIGFjID0gW2FjXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYmMpKSBiYyA9IFtiY107XG4gICAgYVsnY2xhc3MnXSA9IGFjLmNvbmNhdChiYykuZmlsdGVyKG51bGxzKTtcbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiBiKSB7XG4gICAgaWYgKGtleSAhPSAnY2xhc3MnKSB7XG4gICAgICBhW2tleV0gPSBiW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGE7XG59O1xuXG4vKipcbiAqIEZpbHRlciBudWxsIGB2YWxgcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG51bGxzKHZhbCkge1xuICByZXR1cm4gdmFsICE9IG51bGwgJiYgdmFsICE9PSAnJztcbn1cblxuLyoqXG4gKiBqb2luIGFycmF5IGFzIGNsYXNzZXMuXG4gKlxuICogQHBhcmFtIHsqfSB2YWxcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZXhwb3J0cy5qb2luQ2xhc3NlcyA9IGpvaW5DbGFzc2VzO1xuZnVuY3Rpb24gam9pbkNsYXNzZXModmFsKSB7XG4gIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsLm1hcChqb2luQ2xhc3NlcykgOlxuICAgICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpID8gT2JqZWN0LmtleXModmFsKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gdmFsW2tleV07IH0pIDpcbiAgICBbdmFsXSkuZmlsdGVyKG51bGxzKS5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBnaXZlbiBjbGFzc2VzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGNsYXNzZXNcbiAqIEBwYXJhbSB7QXJyYXkuPEJvb2xlYW4+fSBlc2NhcGVkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydHMuY2xzID0gZnVuY3Rpb24gY2xzKGNsYXNzZXMsIGVzY2FwZWQpIHtcbiAgdmFyIGJ1ZiA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZXNjYXBlZCAmJiBlc2NhcGVkW2ldKSB7XG4gICAgICBidWYucHVzaChleHBvcnRzLmVzY2FwZShqb2luQ2xhc3NlcyhbY2xhc3Nlc1tpXV0pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5wdXNoKGpvaW5DbGFzc2VzKGNsYXNzZXNbaV0pKTtcbiAgICB9XG4gIH1cbiAgdmFyIHRleHQgPSBqb2luQ2xhc3NlcyhidWYpO1xuICBpZiAodGV4dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gJyBjbGFzcz1cIicgKyB0ZXh0ICsgJ1wiJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cblxuZXhwb3J0cy5zdHlsZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWwpLm1hcChmdW5jdGlvbiAoc3R5bGUpIHtcbiAgICAgIHJldHVybiBzdHlsZSArICc6JyArIHZhbFtzdHlsZV07XG4gICAgfSkuam9pbignOycpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbn07XG4vKipcbiAqIFJlbmRlciB0aGUgZ2l2ZW4gYXR0cmlidXRlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZXNjYXBlZFxuICogQHBhcmFtIHtCb29sZWFufSB0ZXJzZVxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnRzLmF0dHIgPSBmdW5jdGlvbiBhdHRyKGtleSwgdmFsLCBlc2NhcGVkLCB0ZXJzZSkge1xuICBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgdmFsID0gZXhwb3J0cy5zdHlsZSh2YWwpO1xuICB9XG4gIGlmICgnYm9vbGVhbicgPT0gdHlwZW9mIHZhbCB8fCBudWxsID09IHZhbCkge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIHJldHVybiAnICcgKyAodGVyc2UgPyBrZXkgOiBrZXkgKyAnPVwiJyArIGtleSArICdcIicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9IGVsc2UgaWYgKDAgPT0ga2V5LmluZGV4T2YoJ2RhdGEnKSAmJiAnc3RyaW5nJyAhPSB0eXBlb2YgdmFsKSB7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHZhbCkuaW5kZXhPZignJicpICE9PSAtMSkge1xuICAgICAgY29uc29sZS53YXJuKCdTaW5jZSBKYWRlIDIuMC4wLCBhbXBlcnNhbmRzIChgJmApIGluIGRhdGEgYXR0cmlidXRlcyAnICtcbiAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSBlc2NhcGVkIHRvIGAmYW1wO2AnKTtcbiAgICB9O1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbC50b0lTT1N0cmluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKCdKYWRlIHdpbGwgZWxpbWluYXRlIHRoZSBkb3VibGUgcXVvdGVzIGFyb3VuZCBkYXRlcyBpbiAnICtcbiAgICAgICAgICAgICAgICAgICAnSVNPIGZvcm0gYWZ0ZXIgMi4wLjAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcgJyArIGtleSArIFwiPSdcIiArIEpTT04uc3RyaW5naWZ5KHZhbCkucmVwbGFjZSgvJy9nLCAnJmFwb3M7JykgKyBcIidcIjtcbiAgfSBlbHNlIGlmIChlc2NhcGVkKSB7XG4gICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsLnRvSVNPU3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0phZGUgd2lsbCBzdHJpbmdpZnkgZGF0ZXMgaW4gSVNPIGZvcm0gYWZ0ZXIgMi4wLjAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcgJyArIGtleSArICc9XCInICsgZXhwb3J0cy5lc2NhcGUodmFsKSArICdcIic7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsLnRvSVNPU3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0phZGUgd2lsbCBzdHJpbmdpZnkgZGF0ZXMgaW4gSVNPIGZvcm0gYWZ0ZXIgMi4wLjAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcgJyArIGtleSArICc9XCInICsgdmFsICsgJ1wiJztcbiAgfVxufTtcblxuLyoqXG4gKiBSZW5kZXIgdGhlIGdpdmVuIGF0dHJpYnV0ZXMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7T2JqZWN0fSBlc2NhcGVkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydHMuYXR0cnMgPSBmdW5jdGlvbiBhdHRycyhvYmosIHRlcnNlKXtcbiAgdmFyIGJ1ZiA9IFtdO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcblxuICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgICAgICwgdmFsID0gb2JqW2tleV07XG5cbiAgICAgIGlmICgnY2xhc3MnID09IGtleSkge1xuICAgICAgICBpZiAodmFsID0gam9pbkNsYXNzZXModmFsKSkge1xuICAgICAgICAgIGJ1Zi5wdXNoKCcgJyArIGtleSArICc9XCInICsgdmFsICsgJ1wiJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1Zi5wdXNoKGV4cG9ydHMuYXR0cihrZXksIHZhbCwgZmFsc2UsIHRlcnNlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1Zi5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogRXNjYXBlIHRoZSBnaXZlbiBzdHJpbmcgb2YgYGh0bWxgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG52YXIgamFkZV9lbmNvZGVfaHRtbF9ydWxlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnXG59O1xudmFyIGphZGVfbWF0Y2hfaHRtbCA9IC9bJjw+XCJdL2c7XG5cbmZ1bmN0aW9uIGphZGVfZW5jb2RlX2NoYXIoYykge1xuICByZXR1cm4gamFkZV9lbmNvZGVfaHRtbF9ydWxlc1tjXSB8fCBjO1xufVxuXG5leHBvcnRzLmVzY2FwZSA9IGphZGVfZXNjYXBlO1xuZnVuY3Rpb24gamFkZV9lc2NhcGUoaHRtbCl7XG4gIHZhciByZXN1bHQgPSBTdHJpbmcoaHRtbCkucmVwbGFjZShqYWRlX21hdGNoX2h0bWwsIGphZGVfZW5jb2RlX2NoYXIpO1xuICBpZiAocmVzdWx0ID09PSAnJyArIGh0bWwpIHJldHVybiBodG1sO1xuICBlbHNlIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFJlLXRocm93IHRoZSBnaXZlbiBgZXJyYCBpbiBjb250ZXh0IHRvIHRoZVxuICogdGhlIGphZGUgaW4gYGZpbGVuYW1lYCBhdCB0aGUgZ2l2ZW4gYGxpbmVub2AuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBsaW5lbm9cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3coZXJyLCBmaWxlbmFtZSwgbGluZW5vLCBzdHIpe1xuICBpZiAoIShlcnIgaW5zdGFuY2VvZiBFcnJvcikpIHRocm93IGVycjtcbiAgaWYgKCh0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnIHx8ICFmaWxlbmFtZSkgJiYgIXN0cikge1xuICAgIGVyci5tZXNzYWdlICs9ICcgb24gbGluZSAnICsgbGluZW5vO1xuICAgIHRocm93IGVycjtcbiAgfVxuICB0cnkge1xuICAgIHN0ciA9IHN0ciB8fCByZXF1aXJlKCdmcycpLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgJ3V0ZjgnKVxuICB9IGNhdGNoIChleCkge1xuICAgIHJldGhyb3coZXJyLCBudWxsLCBsaW5lbm8pXG4gIH1cbiAgdmFyIGNvbnRleHQgPSAzXG4gICAgLCBsaW5lcyA9IHN0ci5zcGxpdCgnXFxuJylcbiAgICAsIHN0YXJ0ID0gTWF0aC5tYXgobGluZW5vIC0gY29udGV4dCwgMClcbiAgICAsIGVuZCA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgbGluZW5vICsgY29udGV4dCk7XG5cbiAgLy8gRXJyb3IgY29udGV4dFxuICB2YXIgY29udGV4dCA9IGxpbmVzLnNsaWNlKHN0YXJ0LCBlbmQpLm1hcChmdW5jdGlvbihsaW5lLCBpKXtcbiAgICB2YXIgY3VyciA9IGkgKyBzdGFydCArIDE7XG4gICAgcmV0dXJuIChjdXJyID09IGxpbmVubyA/ICcgID4gJyA6ICcgICAgJylcbiAgICAgICsgY3VyclxuICAgICAgKyAnfCAnXG4gICAgICArIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xuXG4gIC8vIEFsdGVyIGV4Y2VwdGlvbiBtZXNzYWdlXG4gIGVyci5wYXRoID0gZmlsZW5hbWU7XG4gIGVyci5tZXNzYWdlID0gKGZpbGVuYW1lIHx8ICdKYWRlJykgKyAnOicgKyBsaW5lbm9cbiAgICArICdcXG4nICsgY29udGV4dCArICdcXG5cXG4nICsgZXJyLm1lc3NhZ2U7XG4gIHRocm93IGVycjtcbn07XG5cbmV4cG9ydHMuRGVidWdJdGVtID0gZnVuY3Rpb24gRGVidWdJdGVtKGxpbmVubywgZmlsZW5hbWUpIHtcbiAgdGhpcy5saW5lbm8gPSBsaW5lbm87XG4gIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTtcbn1cblxufSx7XCJmc1wiOjJ9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcblxufSx7fV19LHt9LFsxXSkoMSlcbn0pOyIsIihmdW5jdGlvbigpIHtcbiAgdmFyIF9nZXRLZXksIGlzQXJyYXksIHRvU3RyaW5nO1xuXG4gIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbiAgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oYXJyKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoYXJyKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgfTtcblxuICBfZ2V0S2V5ID0gZnVuY3Rpb24oZWwsIGtleSkge1xuICAgIHJldHVybiBlbFtrZXldO1xuICB9O1xuXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5cywgZm9yd2FyZCwgZ2V0S2V5KSB7XG4gICAgdmFyIGZuc29ydCwgcmVmO1xuICAgIGlmIChmb3J3YXJkID09IG51bGwpIHtcbiAgICAgIGZvcndhcmQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZ2V0S2V5ID09IG51bGwpIHtcbiAgICAgIGdldEtleSA9IF9nZXRLZXk7XG4gICAgfVxuICAgIGlmICghaXNBcnJheShrZXlzKSkge1xuICAgICAga2V5cyA9IFtrZXlzXTtcbiAgICB9XG4gICAgZm5zb3J0ID0gZnVuY3Rpb24oZm9yd2FyZCwga2V5LCBuZXh0a2V5cykge1xuICAgICAgdmFyIF9md3JkLCBfaywgbmV4dFNvcnQsIHJlZjtcbiAgICAgIGlmIChuZXh0a2V5cyAhPSBudWxsID8gbmV4dGtleXMubGVuZ3RoIDogdm9pZCAwKSB7XG4gICAgICAgIF9rID0gKHJlZiA9IG5leHRrZXlzLnNwbGljZSgwLCAxKSkgIT0gbnVsbCA/IHJlZlswXSA6IHZvaWQgMDtcbiAgICAgICAgaWYgKF9rICE9IG51bGwpIHtcbiAgICAgICAgICBuZXh0U29ydCA9IGZuc29ydChmb3J3YXJkLCBfaywgbmV4dGtleXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfZndyZCA9IChmb3J3YXJkW2tleV0gIT0gbnVsbCA/IGZvcndhcmRba2V5XSA6IChmb3J3YXJkW1wiP1wiXSAhPSBudWxsID8gZm9yd2FyZFtcIj9cIl0gOiBmb3J3YXJkKSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oZWxBLCBlbEIpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgX2EgPSBnZXRLZXkoZWxBLCBrZXkpO1xuICAgICAgICBfYiA9IGdldEtleShlbEIsIGtleSk7XG4gICAgICAgIGlmIChfYSA8IF9iKSB7XG4gICAgICAgICAgaWYgKF9md3JkKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfYSA+IF9iKSB7XG4gICAgICAgICAgaWYgKF9md3JkKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfYSA9PT0gX2IpIHtcbiAgICAgICAgICBpZiAobmV4dFNvcnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5leHRTb3J0KGVsQSwgZWxCKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIGZuc29ydChmb3J3YXJkLCAocmVmID0ga2V5cy5zcGxpY2UoMCwgMSkpICE9IG51bGwgPyByZWZbMF0gOiB2b2lkIDAsIGtleXMpO1xuICB9O1xuXG59KS5jYWxsKHRoaXMpO1xuIl19 diff --git a/js/iggy.js b/js/iggy.js index f9ab226..342839d 100644 --- a/js/iggy.js +++ b/js/iggy.js @@ -42,6 +42,7 @@ IGGY = (function(superClass) { this.triggerEvent = bind(this.triggerEvent, this); this.triggerChange = bind(this.triggerChange, this); this.getQuery = bind(this.getQuery, this); + this._filterEmpty = bind(this._filterEmpty, this); this._error = bind(this._error, this); this.addFacet = bind(this.addFacet, this); this._prepareFacets = bind(this._prepareFacets, this); @@ -65,6 +66,7 @@ IGGY = (function(superClass) { idx: IGGY_IDX++ }); this.view.on("searchbutton", this.triggerEvent); + this.nonEmptyResults = this.results.sub(this._filterEmpty); return; } @@ -175,16 +177,37 @@ IGGY = (function(superClass) { return _err; }; + IGGY.prototype._filterEmpty = function(model) { + var _v; + _v = model.get("value"); + if (_v == null) { + return false; + } + if (_v.length <= 0) { + return false; + } + return true; + }; + IGGY.prototype.getQuery = function() { - return this.results; + return this.nonEmptyResults; }; IGGY.prototype.triggerChange = function() { - this.trigger("change", this.results); + console.log(this.nonEmptyResults); + setTimeout((function(_this) { + return function() { + return _this.trigger("change", _this.nonEmptyResults); + }; + })(this), 0); }; IGGY.prototype.triggerEvent = function(eventName) { - this.trigger(eventName, this.results); + setTimeout((function(_this) { + return function() { + return _this.trigger(eventName, _this.nonEmptyResults); + }; + })(this), 0); }; IGGY.prototype._initErrors = function() { @@ -802,12 +825,12 @@ IggyResults = (function(superClass) { return IggyResults; -})(Backbone.Collection); +})(require("./backbone_sub")); module.exports = IggyResults; -},{}],13:[function(require,module,exports){ +},{"./backbone_sub":2}],13:[function(require,module,exports){ var BaseResult, BaseResults, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1953,6 +1976,9 @@ FacetSubArray = (function(superClass) { if (this.loading) { return; } + if (this._isFull()) { + return; + } _vals = this.model.get("value"); if ((_vals != null) && !_.isArray(_vals)) { _vals = [_vals]; @@ -2786,7 +2812,7 @@ MainView = (function(superClass) { MainView.prototype.template = require("../tmpls/wrapper.jade"); MainView.prototype.events = { - "click .search-btn": "_onSearch", + "mousedown .search-btn": "_onSearch", "focus .search-btn": "_onFocusSearch", "click .add-facet-btn": "_addFacet", "click": "_addFacet" @@ -3317,7 +3343,11 @@ SelectorView = (function(superClass) { }; SelectorView.prototype.selected = function(mdl) { - var _err, _errerr; + var _err, _errerr, _id, ref; + if ((this.main == null) && this._isFull()) { + _id = (ref = this.result.last()) != null ? ref.id : void 0; + this.rmRes(_id); + } try { if (mdl.onlyExec != null) { if (mdl != null) { diff --git a/package.json b/package.json index fea7836..9dfa637 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iggy", - "version": "0.2.1", + "version": "0.2.2", "description": "Browser search module to use with Backbone.js", "keywords": [], "homepage": "https://github.com/mpneuried/iggy",