Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

biojs-vis-pinpad

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

biojs-vis-pinpad - npm Package Compare versions

Comparing version 0.1.1 to 0.1.2

54

build/PinpadViewer.js

@@ -106,9 +106,4 @@ require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

},
removeElement: function(category, elId) {
var index = _.findIndex(category.data, function(datum){
return datum.id === elId;
});
if (index !== -1) {
ElementFactory.removeElement(category.elements[index], category.title);
}
removeElement: function(category, index) {
ElementFactory.removeElement(category.elements[index]);
}

@@ -240,3 +235,3 @@ };

.on('click', function() {
element.remove(element.content.id, catTitle);
element.remove(element.content.id);
});

@@ -260,13 +255,20 @@

Element.prototype.remove = function(id, catTitle) {
Element.prototype.remove = function(id) {
var element = this;
var container = d3.select('#' + 'pinned_elem_id_' + id);
container.remove();
element.category.elements.splice(element.sortedIndex, 1);
element.category.data.splice(element.sortedIndex, 1);
element.category.pinPad.dispatcher.remove({element: {
category: catTitle, id: element.content.id, sections: element.content.sections}
var index = _.findIndex(element.category.data, function(datum){
return datum.id === id;
});
if (element.category.elements.length === 0) {
element.category.removeDom();
if (index !== -1) {
var container = d3.select('#' + 'pinned_elem_id_' + id);
container.remove();
element.category.elements.splice(index, 1);
element.category.data.splice(index, 1);
element.category.pinPad.dispatcher.remove({element: {
category: element.category.title, id: element.content.id, sections: element.content.sections}
});
if (element.category.elements.length === 0) {
element.category.removeDom();
}
} else {
element.category.pinPad.dispatcher.unknown({element: {id: id}});
}

@@ -280,4 +282,4 @@ };

},
removeElement: function(element, catTitle) {
element.remove(element.content.id, catTitle);
removeElement: function(element) {
element.remove(element.content.id);
}

@@ -344,3 +346,3 @@ };

pinPad.categories = [];
pinPad.dispatcher = d3.dispatch("duplication", "add", "remove");
pinPad.dispatcher = d3.dispatch("add", "duplication", "remove", "unknown");

@@ -401,9 +403,13 @@ pinPad.getDispatcher = function() {

var pinPad = this;
var index = -1;
var category = _.find(pinPad.categories, function(cat) {
return _.some(cat.data, function(datum) {
index = _.findIndex(cat.data, function(datum){
return datum.id === id;
});
return index !== -1;
});
if (category) {
CategoryFactory.removeElement(category, id);
if (category && (index !== -1)) {
CategoryFactory.removeElement(category, index);
} else {
pinPad.dispatcher.unknown({element: {id: id}});
}

@@ -436,2 +442,2 @@ };

},{"./CategoryFactory":1,"d3":"d3","underscore":"underscore"}]},{},["biojs-vis-pinpad"])
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlc1xcYnJvd3NlcmlmeVxcbm9kZV9tb2R1bGVzXFxicm93c2VyLXBhY2tcXF9wcmVsdWRlLmpzIiwibGliXFxDYXRlZ29yeUZhY3RvcnkuanMiLCJsaWJcXEVsZW1lbnRGYWN0b3J5LmpzIiwibGliXFxQaW5wYWRWaWV3ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKmpzbGludCBub2RlOiB0cnVlICovXHJcbi8qanNoaW50IGxheGJyZWFrOiB0cnVlICovXHJcblwidXNlIHN0cmljdFwiO1xyXG5cclxudmFyIGQzID0gcmVxdWlyZSgnZDMnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcbnZhciBFbGVtZW50RmFjdG9yeSA9IHJlcXVpcmUoJy4vRWxlbWVudEZhY3RvcnknKTtcclxuXHJcbnZhciBDYXRlZ29yeSA9IGZ1bmN0aW9uKHBpblBhZCwgY2F0VGl0bGUpIHtcclxuICAgIHZhciBjYXRlZ29yeSA9IHRoaXM7XHJcbiAgICBjYXRlZ29yeS5waW5QYWQgPSBwaW5QYWQ7XHJcbiAgICBjYXRlZ29yeS50aXRsZSA9IGNhdFRpdGxlO1xyXG4gICAgY2F0ZWdvcnkub3BlbiA9IHRydWU7XHJcbiAgICBjYXRlZ29yeS5kYXRhID0gW107XHJcbiAgICBjYXRlZ29yeS5lbGVtZW50cyA9IFtdO1xyXG5cclxuICAgIHZhciBjYXRlZ29yeUNvbnRhaW5lciA9IGNhdGVnb3J5LnBpblBhZC5wYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1jb250YWluZXInLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5oZWFkZXIgPSBjYXRlZ29yeUNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2NhdGVnb3J5LWhlYWRlcicsIHRydWUpO1xyXG4gICAgY2F0ZWdvcnkuaGVhZGVyLnRpdGxlID0gY2F0ZWdvcnkuaGVhZGVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2NhdGVnb3J5LW5hbWUgdXBfcGZ0dl9hcnJvdy1kb3duJylcclxuICAgICAgICAudGV4dChjYXRUaXRsZSlcclxuICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgY2F0ZWdvcnkuaGVhZGVyLmFwcGVuZCgnc3BhbicpXHJcbiAgICAgICAgLmNsYXNzZWQoJ3VwX3BwX2ljb25Db250YWluZXInLCB0cnVlKVxyXG4gICAgICAgIC5zdHlsZSgnZmxvYXQnLCAncmlnaHQnKVxyXG4gICAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwLXBwLWljb24tdHJhc2ggdXBfcHBfY2xpY2thYmxlLWljb24nKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucmVtb3ZlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyID0gY2F0ZWdvcnlDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1wYWQnLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5yZW1vdmUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB3aGlsZSAoY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzWzBdLnJlbW92ZShjYXRlZ29yeS5kYXRhWzBdLmlkLCBjYXRlZ29yeS50aXRsZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkucmVtb3ZlRG9tID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gXy5maW5kSW5kZXgoY2F0ZWdvcnkucGluUGFkLmNhdGVnb3JpZXMsIGZ1bmN0aW9uKGNhdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2F0LnRpdGxlID09PSBjYXRlZ29yeS50aXRsZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5Q29udGFpbmVyLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5waW5QYWQuY2F0ZWdvcmllcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5waW5QYWQuZGlzcGF0Y2hlci5yZW1vdmUoe2NhdGVnb3J5OiBjYXRlZ29yeS50aXRsZX0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkudG9nZ2xlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5LnBhZENvbnRhaW5lci5zdHlsZSgnZGlzcGxheScpID09PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmhlYWRlci50aXRsZS5hdHRyKCdjbGFzcycsICd1cF9wcF9jYXRlZ29yeS1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bicpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5wYWRDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LXJpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5Lm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LmFkZEVsZW1lbnQgPSBmdW5jdGlvbihpZCwgc2VjdGlvbnMpIHtcclxuICAgICAgICB2YXIgZGF0dW0gPSB7c29ydEF0dHJpYnV0ZTogc2VjdGlvbnNbMF0udGl0bGUsIGlkOiBpZCwgc2VjdGlvbnM6IHNlY3Rpb25zfTtcclxuICAgICAgICB2YXIgc29ydGVkSW5kZXggPSBfLnNvcnRlZEluZGV4KGNhdGVnb3J5LmRhdGEsIGRhdHVtLCAnc29ydEF0dHJpYnV0ZScpO1xyXG4gICAgICAgIGRhdHVtLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XHJcbiAgICAgICAgY2F0ZWdvcnkuZGF0YS5zcGxpY2Uoc29ydGVkSW5kZXgsIDAsIGRhdHVtKTtcclxuICAgICAgICByZXR1cm4gc29ydGVkSW5kZXg7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LmRpc3BsYXlFbGVtZW50cyA9IGZ1bmN0aW9uKHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgdmFyIG5ld0VsZW0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHNvcnRlZEluZGV4ID09PSAoY2F0ZWdvcnkuZGF0YS5sZW5ndGgtMSkpIHtcclxuICAgICAgICAgICAgbmV3RWxlbSA9ICBFbGVtZW50RmFjdG9yeS5jcmVhdGVFbGVtZW50KGNhdGVnb3J5LCBjYXRlZ29yeS5kYXRhW2NhdGVnb3J5LmRhdGEubGVuZ3RoLTFdKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuZWxlbWVudHMucHVzaChuZXdFbGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5wYWRDb250YWluZXIuc2VsZWN0QWxsKCcqJykucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIF8uZWFjaChjYXRlZ29yeS5kYXRhLCBmdW5jdGlvbihlbGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFkZGVkID0gRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbSA9IGFkZGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuZWxlbWVudHMuc3BsaWNlKHNvcnRlZEluZGV4LCAwLCBuZXdFbGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld0VsZW07XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgQ2F0ZWdvcnlGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVDYXRlZ29yeTogZnVuY3Rpb24ocGluUGFkLCBjYXRUaXRsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5KHBpblBhZCwgY2F0VGl0bGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGlkLCBzZWN0aW9ucykge1xyXG4gICAgICAgICAgICB2YXIgc29ydGVkSW5kZXggPSBjYXRlZ29yeS5hZGRFbGVtZW50KGlkLCBzZWN0aW9ucyk7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5kaXNwbGF5RWxlbWVudHMoc29ydGVkSW5kZXgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGVsSWQpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gXy5maW5kSW5kZXgoY2F0ZWdvcnkuZGF0YSwgZnVuY3Rpb24oZGF0dW0pe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdHVtLmlkID09PSBlbElkO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgRWxlbWVudEZhY3RvcnkucmVtb3ZlRWxlbWVudChjYXRlZ29yeS5lbGVtZW50c1tpbmRleF0sIGNhdGVnb3J5LnRpdGxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn0oKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gQ2F0ZWdvcnlGYWN0b3J5OyIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgZDMgPSByZXF1aXJlKCdkMycpO1xyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxuXHJcbnZhciBpc0xpbmsgPSBmdW5jdGlvbihpbmZvKSB7XHJcbiAgICBpZiAoKHR5cGVvZiBpbmZvID09PSAnb2JqZWN0JykgJiYgIShpbmZvIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgdmFyIGtleXMgPSBfLmtleXMoaW5mbyk7XHJcbiAgICAgICAgaWYgKChrZXlzLmxlbmd0aCA9PT0gMikgJiYgXy5jb250YWlucyhrZXlzLCAndmFsdWUnKSAmJiBfLmNvbnRhaW5zKGtleXMsICdsaW5rJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbn07XHJcblxyXG52YXIgYWRkTGluayA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgaW5mb1RleHQsIGluZm9MaW5rKSB7XHJcbiAgICBpZiAoaW5mb0xpbmsgJiYgKGluZm9MaW5rICE9PSAnLScpKSB7XHJcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgICAgIC5hdHRyKCdocmVmJywgaW5mb0xpbmspXHJcbiAgICAgICAgICAgIC5hdHRyKCd0YXJnZXQnLCAnX2JsYW5rJylcclxuICAgICAgICAgICAgLnRleHQoaW5mb1RleHQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjb250YWluZXIudGV4dChpbmZvVGV4dCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgYWRkVmFsdWUgPSBmdW5jdGlvbihjb250YWluZXIsIGluZm8pIHtcclxuICAgIGlmICgodHlwZW9mIGluZm8gPT09ICdzdHJpbmcnKSB8fCAodHlwZW9mIGluZm8gPT09ICdudW1iZXInKSB8fCAodHlwZW9mIGluZm8gPT09ICdib29sZWFuJykpIHtcclxuICAgICAgICBjb250YWluZXIudGV4dChpbmZvKTtcclxuICAgIH0gZWxzZSBpZiAoaXNMaW5rKGluZm8pKSB7XHJcbiAgICAgICAgYWRkTGluayhjb250YWluZXIsIGluZm8udmFsdWUsIGluZm8ubGluayk7XHJcbiAgICB9IGVsc2UgaWYgKGluZm8gaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgIF8uZWFjaChpbmZvLCBmdW5jdGlvbihkYXR1bSwgaW5kZXgpIHtcclxuICAgICAgICAgICAgdmFyIHNwYW4gPSBjb250YWluZXIuYXBwZW5kKCdzcGFuJyk7XHJcbiAgICAgICAgICAgIGFkZFZhbHVlKHNwYW4sIGRhdHVtKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAoaW5mby5sZW5ndGgtMSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJ3NwYW4nKS50ZXh0KCcsICcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFkZERhdGEoY29udGFpbmVyLmFwcGVuZCgndGFibGUnKSwgaW5mbyk7XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgYWRkRGF0dW0gPSBmdW5jdGlvbih0YWJsZSwga2V5LCBpbmZvKSB7XHJcbiAgICB2YXIgdHIgPSB0YWJsZS5hcHBlbmQoJ3RyJyk7XHJcbiAgICBpZiAoa2V5LmluZGV4T2YoJ3N0eWxlZF8nKSA9PT0gMCkge1xyXG4gICAgICAgIHZhciBsZWZ0Q29sID0gdHIuYXBwZW5kKCd0ZCcpLnRleHQoaW5mby5rZXkpO1xyXG4gICAgICAgIGlmIChpbmZvLmtleV9zdHlsZSkge1xyXG4gICAgICAgICAgICBsZWZ0Q29sLmF0dHIoJ3N0eWxlJywgaW5mby5rZXlfc3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcmlnaHRDb2wgPSB0ci5hcHBlbmQoJ3RkJyk7XHJcbiAgICAgICAgaWYgKGluZm8udmFsdWVfc3R5bGUpIHtcclxuICAgICAgICAgICAgcmlnaHRDb2wuYXR0cignc3R5bGUnLCBpbmZvLnZhbHVlX3N0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkVmFsdWUocmlnaHRDb2wsIGluZm8udmFsdWUpXHJcbiAgICB9IGVsc2UgaWYgKGtleS5pbmRleE9mKCdzdWJzZWN0aW9uXycpID09PSAwKSB7XHJcbiAgICAgICAgdHIuYXBwZW5kKCd0ZCcpXHJcbiAgICAgICAgICAgIC5hdHRyKCdjb2xzcGFuJywgMilcclxuICAgICAgICAgICAgLmNsYXNzZWQoJ3VwX3BwX3RhYmxlX3N1YnNlY3Rpb24nLCB0cnVlKVxyXG4gICAgICAgICAgICAudGV4dChpbmZvLnRpdGxlKTtcclxuICAgICAgICBhZGREYXRhKHRhYmxlLCBpbmZvLmluZm9ybWF0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHIuYXBwZW5kKCd0ZCcpLnRleHQoa2V5LnJlcGxhY2UoL18vZywgJyAnKSk7XHJcbiAgICAgICAgYWRkVmFsdWUodHIuYXBwZW5kKCd0ZCcpLCBpbmZvKTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBhZGREYXRhID0gZnVuY3Rpb24odGFibGUsIGRhdGEpIHtcclxuICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihpbmZvLCBrZXkpIHtcclxuICAgICAgICBhZGREYXR1bSh0YWJsZSwga2V5LCBpbmZvKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxudmFyIEVsZW1lbnQgPSBmdW5jdGlvbihjYXRlZ29yeSwgZWxlbSkge1xyXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzO1xyXG4gICAgZWxlbWVudC5jYXRlZ29yeSA9IGNhdGVnb3J5O1xyXG4gICAgZWxlbWVudC5jb250ZW50ID0gZWxlbTtcclxuICAgIGVsZW1lbnQuaGVhZGVyID0gdW5kZWZpbmVkO1xyXG4gICAgZWxlbWVudC50YWJsZUNvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgIGVsZW1lbnQudGFibGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgZWxlbWVudC50b2dnbGUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoZWxlbWVudC50YWJsZUNvbnRhaW5lci5zdHlsZSgnZGlzcGxheScpID09PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgZWxlbWVudC50YWJsZUNvbnRhaW5lci5zdHlsZSgnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICAgICAgICBlbGVtZW50LmhlYWRlci50aXRsZS5hdHRyKCdjbGFzcycsICd1cF9wcF9lbGVtZW50LW5hbWUgdXBfcGZ0dl9hcnJvdy1kb3duJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY29udGVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbGVtZW50LnRhYmxlQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgZWxlbWVudC5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctcmlnaHQnKTtcclxuICAgICAgICAgICAgZWxlbWVudC5jb250ZW50Lm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBlbGVtQ29udGFpbmVyID0gZWxlbWVudC5jYXRlZ29yeS5wYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKS5hdHRyKCdpZCcsICdwaW5uZWRfZWxlbV9pZF8nICsgZWxlbS5pZCk7XHJcbiAgICBlbGVtZW50LmZpcnN0KGVsZW1lbnQuY2F0ZWdvcnkudGl0bGUsIGVsZW1Db250YWluZXIsIF8uZmlyc3QoZWxlbWVudC5jb250ZW50LnNlY3Rpb25zKSk7XHJcbiAgICBlbGVtZW50LnRhaWwoZWxlbWVudC50YWJsZSwgXy50YWlsKGVsZW1lbnQuY29udGVudC5zZWN0aW9ucykpO1xyXG5cclxuICAgIGlmIChlbGVtZW50LmNvbnRlbnQub3BlbiA9PT0gZmFsc2UpIHtcclxuICAgICAgICBlbGVtZW50LnRvZ2dsZSgpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUuZmlyc3QgPSBmdW5jdGlvbihjYXRUaXRsZSwgY29udGFpbmVyLCBzZWN0aW9uKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2VsZW1lbnQtaGVhZGVyJywgdHJ1ZSk7XHJcbiAgICBlbGVtZW50LmhlYWRlci50aXRsZSA9IGVsZW1lbnQuaGVhZGVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2VsZW1lbnQtbmFtZSB1cF9wZnR2X2Fycm93LWRvd24nKVxyXG4gICAgICAgIC50ZXh0KHNlY3Rpb24udGl0bGUpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxlbWVudC5oZWFkZXIuYXBwZW5kKCdzcGFuJylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLnN0eWxlKCdmbG9hdCcsICdyaWdodCcpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXAtcHAtaWNvbi10cmFzaCB1cF9wcF9jbGlja2FibGUtaWNvbicpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgZWxlbWVudC5yZW1vdmUoZWxlbWVudC5jb250ZW50LmlkLCBjYXRUaXRsZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgZWxlbWVudC50YWJsZUNvbnRhaW5lciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpO1xyXG4gICAgZWxlbWVudC50YWJsZSA9IGVsZW1lbnQudGFibGVDb250YWluZXIuYXBwZW5kKCd0YWJsZScpLmF0dHIoJ3dpZHRoJywgJzEwMCUnKTtcclxuICAgIGFkZERhdGEoZWxlbWVudC50YWJsZSwgc2VjdGlvbi5pbmZvcm1hdGlvbik7XHJcbn07XHJcblxyXG5FbGVtZW50LnByb3RvdHlwZS50YWlsID0gZnVuY3Rpb24oY29udGFpbmVyLCBzZWN0aW9ucykge1xyXG4gICAgXy5lYWNoKHNlY3Rpb25zLCBmdW5jdGlvbihzZWN0aW9uKSB7XHJcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgndHInKS5jbGFzc2VkKCd1cF9wcF9lbGVtZW50LXNlY3Rpb24nLCB0cnVlKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCd0ZCcpXHJcbiAgICAgICAgICAgIC5hdHRyKCdjb2xzcGFuJywgMilcclxuICAgICAgICAgICAgLnRleHQoc2VjdGlvbi50aXRsZSk7XHJcblxyXG4gICAgICAgIGFkZERhdGEoY29udGFpbmVyLCBzZWN0aW9uLmluZm9ybWF0aW9uKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhdFRpdGxlKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICB2YXIgY29udGFpbmVyID0gZDMuc2VsZWN0KCcjJyArICdwaW5uZWRfZWxlbV9pZF8nICsgaWQpO1xyXG4gICAgY29udGFpbmVyLnJlbW92ZSgpO1xyXG4gICAgZWxlbWVudC5jYXRlZ29yeS5lbGVtZW50cy5zcGxpY2UoZWxlbWVudC5zb3J0ZWRJbmRleCwgMSk7XHJcbiAgICBlbGVtZW50LmNhdGVnb3J5LmRhdGEuc3BsaWNlKGVsZW1lbnQuc29ydGVkSW5kZXgsIDEpO1xyXG4gICAgZWxlbWVudC5jYXRlZ29yeS5waW5QYWQuZGlzcGF0Y2hlci5yZW1vdmUoe2VsZW1lbnQ6IHtcclxuICAgICAgICBjYXRlZ29yeTogY2F0VGl0bGUsIGlkOiBlbGVtZW50LmNvbnRlbnQuaWQsIHNlY3Rpb25zOiBlbGVtZW50LmNvbnRlbnQuc2VjdGlvbnN9XHJcbiAgICB9KTtcclxuICAgIGlmIChlbGVtZW50LmNhdGVnb3J5LmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGVsZW1lbnQuY2F0ZWdvcnkucmVtb3ZlRG9tKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgRWxlbWVudEZhY3RvcnkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50LCBjYXRUaXRsZSkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZShlbGVtZW50LmNvbnRlbnQuaWQsIGNhdFRpdGxlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEVsZW1lbnRGYWN0b3J5OyIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcbi8qXHJcbiAqIGJpb2pzLXZpcy1waW5wYWRcclxuICogaHR0cHM6Ly9naXRodWIuY29tL2ViaS11bmlwcm90L2Jpb2pzLXZpcy1waW5wYWRcclxuICpcclxuICogQ29weXJpZ2h0IChjKSAyMDE0IGViaS11bmlwcm90XHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMiBsaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG5AY2xhc3MgUGlucGFkXHJcbiAqL1xyXG52YXIgZDMgPSByZXF1aXJlKCdkMycpO1xyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIENhdGVnb3J5RmFjdG9yeSA9IHJlcXVpcmUoJy4vQ2F0ZWdvcnlGYWN0b3J5Jyk7XHJcblxyXG4vKipcclxuICogUHJpdmF0ZSBNZXRob2RzXHJcbiAqL1xyXG52YXIgZGVmYXVsdE9wdHMgPSB7XHJcbiAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgIGhlaWdodDogJzUwMHB4JyxcclxuICAgIGhpZ2hsaWdodENvbG9yOiAnZ3JlZW4nXHJcbn07XHJcbnZhciBpbml0ID0gZnVuY3Rpb24ocGluUGFkKSB7XHJcbiAgICB2YXIgcGluUGFkQ29udGFpbmVyID0gZDMuc2VsZWN0KHBpblBhZC5vcHRpb25zLmVsKVxyXG4gICAgICAudGV4dCgnJylcclxuICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgLmNsYXNzZWQoJ3VwX3BwX21haW4tY29udGFpbmVyJywgdHJ1ZSlcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIHBpblBhZC5vcHRpb25zLndpZHRoKTtcclxuXHJcbiAgICB2YXIgbWFpblRpdGxlID0gcGluUGFkQ29udGFpbmVyLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfbWFpblRpdGxlJywgdHJ1ZSk7XHJcbiAgICBtYWluVGl0bGUuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9pY29uQ29udGFpbmVyJywgdHJ1ZSlcclxuICAgICAgICAuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cC1wcC1pY29uLXBpbicsIHRydWUpLmNsYXNzZWQoJ3VwX3BwX2ljb24nLCB0cnVlKTtcclxuICAgIHBpblBhZC5vZmZzZXRUb3AgPSBtYWluVGl0bGUubm9kZSgpLm9mZnNldEhlaWdodCArIG1haW5UaXRsZS5ub2RlKCkub2Zmc2V0VG9wO1xyXG5cclxuICAgIHBpblBhZC5wYWRDb250YWluZXIgPSBwaW5QYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKVxyXG4gICAgICAgIC5jbGFzc2VkKCd1cF9wcF9wYWQnLCB0cnVlKVxyXG4gICAgICAgIC5zdHlsZSgnaGVpZ2h0JywgcGluUGFkLm9wdGlvbnMuaGVpZ2h0KTtcclxuXHJcbiAgICBpZiAocGluUGFkLm9wdGlvbnMudG9QaW4pIHtcclxuICAgICAgICBwaW5QYWQuYWRkRWxlbWVudChwaW5QYWQub3B0aW9ucy50b1Bpbik7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKlxyXG4gKiBQdWJsaWMgTWV0aG9kc1xyXG4gKi9cclxudmFyIFBpbnBhZFZpZXdlciA9IGZ1bmN0aW9uKG9wdHMpe1xyXG4gICAgdmFyIHBpblBhZCA9IHRoaXM7XHJcbiAgICBwaW5QYWQub3B0aW9ucyA9IF8uZXh0ZW5kKHt9LCBkZWZhdWx0T3B0cywgb3B0cyk7XHJcbiAgICBwaW5QYWQub2Zmc2V0VG9wID0gdW5kZWZpbmVkO1xyXG4gICAgcGluUGFkLmNhdGVnb3JpZXMgPSBbXTtcclxuICAgIHBpblBhZC5kaXNwYXRjaGVyID0gZDMuZGlzcGF0Y2goXCJkdXBsaWNhdGlvblwiLCBcImFkZFwiLCBcInJlbW92ZVwiKTtcclxuXHJcbiAgICBwaW5QYWQuZ2V0RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBwaW5QYWQuZGlzcGF0Y2hlcjtcclxuICAgIH07XHJcblxyXG4gICAgaW5pdChwaW5QYWQpO1xyXG4gICAgLy90aGlzLmVsLnRleHRDb250ZW50ID0gYmlvanNWaXNQaW5wYWQuaGVsbG8ob3B0cy50ZXh0KTtcclxufTtcclxuXHJcblxyXG5QaW5wYWRWaWV3ZXIucHJvdG90eXBlLmFkZENhdGVnb3J5ID0gZnVuY3Rpb24oY2F0ZWdvcnkpIHtcclxuICAgIHJldHVybiBDYXRlZ29yeUZhY3RvcnkuY3JlYXRlQ2F0ZWdvcnkodGhpcywgY2F0ZWdvcnkpO1xyXG59O1xyXG5cclxuUGlucGFkVmlld2VyLnByb3RvdHlwZS5hZGRFbGVtZW50ID0gZnVuY3Rpb24odG9QaW4pIHtcclxuICAgIHZhciBwaW5QYWQgPSB0aGlzO1xyXG4gICAgLy9hdm9pZCBkdXBsaWNhdGVkIGlkc1xyXG4gICAgdmFyIGV4aXN0cyA9IHRvUGluLmlkICYmIF8uc29tZShwaW5QYWQuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0KSB7XHJcbiAgICAgICAgcmV0dXJuIF8uc29tZShjYXQuZGF0YSwgZnVuY3Rpb24oZWxlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZWxlbS5pZCA9PT0gdG9QaW4uaWRcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLmR1cGxpY2F0aW9uKHtlbGVtZW50OiB0b1Bpbn0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vYWRkIGNhdGVnb3J5XHJcbiAgICB2YXIgY2F0ZWdvcnkgPSBfLmZpbmQocGluUGFkLmNhdGVnb3JpZXMsIGZ1bmN0aW9uKGNhdCkge3JldHVybiBjYXQudGl0bGUgPT09IHRvUGluLmNhdGVnb3J5OyB9KTtcclxuICAgIGlmIChjYXRlZ29yeSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcGluUGFkLmNhdGVnb3JpZXMucHVzaChwaW5QYWQuYWRkQ2F0ZWdvcnkodG9QaW4uY2F0ZWdvcnkpKTtcclxuICAgICAgICBwaW5QYWQuZGlzcGF0Y2hlci5hZGQoe2NhdGVnb3J5OiB0b1Bpbi5jYXRlZ29yeX0pO1xyXG4gICAgICAgIGNhdGVnb3J5ID0gXy5sYXN0KHBpblBhZC5jYXRlZ29yaWVzKTtcclxuICAgIH1cclxuICAgIGlmICh0b1Bpbi5zZWN0aW9ucyAmJiAodG9QaW4uc2VjdGlvbnMubGVuZ3RoICE9PSAwKSkge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcnkub3Blbikge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS50b2dnbGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG5ld0VsZW0gPSBDYXRlZ29yeUZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgdG9QaW4uaWQsIHRvUGluLnNlY3Rpb25zKTtcclxuICAgICAgICB2YXIgZWxlbVkgPSBuZXdFbGVtLmhlYWRlci5ub2RlKCkub2Zmc2V0VG9wO1xyXG4gICAgICAgIHBpblBhZC5wYWRDb250YWluZXIubm9kZSgpLnNjcm9sbFRvcCA9IGVsZW1ZIC0gcGluUGFkLm9mZnNldFRvcDtcclxuICAgICAgICB2YXIgY29sb3IgPSBuZXdFbGVtLmhlYWRlci5zdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpO1xyXG4gICAgICAgIG5ld0VsZW0uaGVhZGVyXHJcbiAgICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgICAgLmR1cmF0aW9uKDE1MDApXHJcbiAgICAgICAgICAgIC5zdHlsZVR3ZWVuKCdiYWNrZ3JvdW5kLWNvbG9yJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZDMuaW50ZXJwb2xhdGUocGluUGFkLm9wdGlvbnMuaGlnaGxpZ2h0Q29sb3IsIGNvbG9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICA7XHJcbiAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIuYWRkKHtlbGVtZW50OiB0b1Bpbn0pO1xyXG4gICAgICAgIHJldHVybiBuZXdFbGVtO1xyXG4gICAgfVxyXG59O1xyXG5cclxuUGlucGFkVmlld2VyLnByb3RvdHlwZS5yZW1vdmVFbGVtZW50ID0gZnVuY3Rpb24oaWQpIHtcclxuICAgIHZhciBwaW5QYWQgPSB0aGlzO1xyXG4gICAgdmFyIGNhdGVnb3J5ID0gXy5maW5kKHBpblBhZC5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXQpIHtcclxuICAgICAgICByZXR1cm4gXy5zb21lKGNhdC5kYXRhLCBmdW5jdGlvbihkYXR1bSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0dW0uaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICBDYXRlZ29yeUZhY3RvcnkucmVtb3ZlRWxlbWVudChjYXRlZ29yeSwgaWQpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuUGlucGFkVmlld2VyLnByb3RvdHlwZS5yZW1vdmVDYXRlZ29yeSA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICB2YXIgcGluUGFkID0gdGhpcztcclxuICAgIHZhciBjYXRlZ29yeSA9IF8uZmluZChwaW5QYWQuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0KSB7XHJcbiAgICAgICAgcmV0dXJuIGNhdC50aXRsZSA9PT0gY2F0VGl0bGU7XHJcbiAgICB9KTtcclxuICAgIGlmIChjYXRlZ29yeSkge1xyXG4gICAgICAgIENhdGVnb3J5RmFjdG9yeS5yZW1vdmVDYXRlZ29yeShjYXRlZ29yeSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogTWV0aG9kIHJlc3BvbnNpYmxlIHRvIHNheSBIZWxsb1xyXG4gKiBAZXhhbXBsZVxyXG4gKiAgICAgYmlvanN2aXNwaW5wYWQuaGVsbG8oJ2Jpb2pzJyk7XHJcbiAqIEBtZXRob2QgaGVsbG9cclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgTmFtZSBvZiBhIHBlcnNvblxyXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFJldHVybnMgaGVsbG8gbmFtZVxyXG4gKi9cclxuUGlucGFkVmlld2VyLmhlbGxvID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIHJldHVybiAnaGVsbG8gJyArIG5hbWU7XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IFBpbnBhZFZpZXdlcjsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlc1xcYnJvd3NlcmlmeVxcbm9kZV9tb2R1bGVzXFxicm93c2VyLXBhY2tcXF9wcmVsdWRlLmpzIiwibGliXFxDYXRlZ29yeUZhY3RvcnkuanMiLCJsaWJcXEVsZW1lbnRGYWN0b3J5LmpzIiwibGliXFxQaW5wYWRWaWV3ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKmpzbGludCBub2RlOiB0cnVlICovXHJcbi8qanNoaW50IGxheGJyZWFrOiB0cnVlICovXHJcblwidXNlIHN0cmljdFwiO1xyXG5cclxudmFyIGQzID0gcmVxdWlyZSgnZDMnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcbnZhciBFbGVtZW50RmFjdG9yeSA9IHJlcXVpcmUoJy4vRWxlbWVudEZhY3RvcnknKTtcclxuXHJcbnZhciBDYXRlZ29yeSA9IGZ1bmN0aW9uKHBpblBhZCwgY2F0VGl0bGUpIHtcclxuICAgIHZhciBjYXRlZ29yeSA9IHRoaXM7XHJcbiAgICBjYXRlZ29yeS5waW5QYWQgPSBwaW5QYWQ7XHJcbiAgICBjYXRlZ29yeS50aXRsZSA9IGNhdFRpdGxlO1xyXG4gICAgY2F0ZWdvcnkub3BlbiA9IHRydWU7XHJcbiAgICBjYXRlZ29yeS5kYXRhID0gW107XHJcbiAgICBjYXRlZ29yeS5lbGVtZW50cyA9IFtdO1xyXG5cclxuICAgIHZhciBjYXRlZ29yeUNvbnRhaW5lciA9IGNhdGVnb3J5LnBpblBhZC5wYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1jb250YWluZXInLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5oZWFkZXIgPSBjYXRlZ29yeUNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2NhdGVnb3J5LWhlYWRlcicsIHRydWUpO1xyXG4gICAgY2F0ZWdvcnkuaGVhZGVyLnRpdGxlID0gY2F0ZWdvcnkuaGVhZGVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2NhdGVnb3J5LW5hbWUgdXBfcGZ0dl9hcnJvdy1kb3duJylcclxuICAgICAgICAudGV4dChjYXRUaXRsZSlcclxuICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgY2F0ZWdvcnkuaGVhZGVyLmFwcGVuZCgnc3BhbicpXHJcbiAgICAgICAgLmNsYXNzZWQoJ3VwX3BwX2ljb25Db250YWluZXInLCB0cnVlKVxyXG4gICAgICAgIC5zdHlsZSgnZmxvYXQnLCAncmlnaHQnKVxyXG4gICAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwLXBwLWljb24tdHJhc2ggdXBfcHBfY2xpY2thYmxlLWljb24nKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucmVtb3ZlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyID0gY2F0ZWdvcnlDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1wYWQnLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5yZW1vdmUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB3aGlsZSAoY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzWzBdLnJlbW92ZShjYXRlZ29yeS5kYXRhWzBdLmlkLCBjYXRlZ29yeS50aXRsZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkucmVtb3ZlRG9tID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gXy5maW5kSW5kZXgoY2F0ZWdvcnkucGluUGFkLmNhdGVnb3JpZXMsIGZ1bmN0aW9uKGNhdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2F0LnRpdGxlID09PSBjYXRlZ29yeS50aXRsZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5Q29udGFpbmVyLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5waW5QYWQuY2F0ZWdvcmllcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5waW5QYWQuZGlzcGF0Y2hlci5yZW1vdmUoe2NhdGVnb3J5OiBjYXRlZ29yeS50aXRsZX0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkudG9nZ2xlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5LnBhZENvbnRhaW5lci5zdHlsZSgnZGlzcGxheScpID09PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmhlYWRlci50aXRsZS5hdHRyKCdjbGFzcycsICd1cF9wcF9jYXRlZ29yeS1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bicpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5wYWRDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LXJpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5Lm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LmFkZEVsZW1lbnQgPSBmdW5jdGlvbihpZCwgc2VjdGlvbnMpIHtcclxuICAgICAgICB2YXIgZGF0dW0gPSB7c29ydEF0dHJpYnV0ZTogc2VjdGlvbnNbMF0udGl0bGUsIGlkOiBpZCwgc2VjdGlvbnM6IHNlY3Rpb25zfTtcclxuICAgICAgICB2YXIgc29ydGVkSW5kZXggPSBfLnNvcnRlZEluZGV4KGNhdGVnb3J5LmRhdGEsIGRhdHVtLCAnc29ydEF0dHJpYnV0ZScpO1xyXG4gICAgICAgIGRhdHVtLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XHJcbiAgICAgICAgY2F0ZWdvcnkuZGF0YS5zcGxpY2Uoc29ydGVkSW5kZXgsIDAsIGRhdHVtKTtcclxuICAgICAgICByZXR1cm4gc29ydGVkSW5kZXg7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LmRpc3BsYXlFbGVtZW50cyA9IGZ1bmN0aW9uKHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgdmFyIG5ld0VsZW0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHNvcnRlZEluZGV4ID09PSAoY2F0ZWdvcnkuZGF0YS5sZW5ndGgtMSkpIHtcclxuICAgICAgICAgICAgbmV3RWxlbSA9ICBFbGVtZW50RmFjdG9yeS5jcmVhdGVFbGVtZW50KGNhdGVnb3J5LCBjYXRlZ29yeS5kYXRhW2NhdGVnb3J5LmRhdGEubGVuZ3RoLTFdKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuZWxlbWVudHMucHVzaChuZXdFbGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5wYWRDb250YWluZXIuc2VsZWN0QWxsKCcqJykucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIF8uZWFjaChjYXRlZ29yeS5kYXRhLCBmdW5jdGlvbihlbGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFkZGVkID0gRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbSA9IGFkZGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuZWxlbWVudHMuc3BsaWNlKHNvcnRlZEluZGV4LCAwLCBuZXdFbGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld0VsZW07XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgQ2F0ZWdvcnlGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVDYXRlZ29yeTogZnVuY3Rpb24ocGluUGFkLCBjYXRUaXRsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5KHBpblBhZCwgY2F0VGl0bGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGlkLCBzZWN0aW9ucykge1xyXG4gICAgICAgICAgICB2YXIgc29ydGVkSW5kZXggPSBjYXRlZ29yeS5hZGRFbGVtZW50KGlkLCBzZWN0aW9ucyk7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5kaXNwbGF5RWxlbWVudHMoc29ydGVkSW5kZXgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGluZGV4KSB7XHJcbiAgICAgICAgICAgIEVsZW1lbnRGYWN0b3J5LnJlbW92ZUVsZW1lbnQoY2F0ZWdvcnkuZWxlbWVudHNbaW5kZXhdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IENhdGVnb3J5RmFjdG9yeTsiLCIvKmpzbGludCBub2RlOiB0cnVlICovXHJcbi8qanNoaW50IGxheGJyZWFrOiB0cnVlICovXHJcblwidXNlIHN0cmljdFwiO1xyXG5cclxudmFyIGQzID0gcmVxdWlyZSgnZDMnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcblxyXG52YXIgaXNMaW5rID0gZnVuY3Rpb24oaW5mbykge1xyXG4gICAgaWYgKCh0eXBlb2YgaW5mbyA9PT0gJ29iamVjdCcpICYmICEoaW5mbyBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICAgIHZhciBrZXlzID0gXy5rZXlzKGluZm8pO1xyXG4gICAgICAgIGlmICgoa2V5cy5sZW5ndGggPT09IDIpICYmIF8uY29udGFpbnMoa2V5cywgJ3ZhbHVlJykgJiYgXy5jb250YWlucyhrZXlzLCAnbGluaycpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG59O1xyXG5cclxudmFyIGFkZExpbmsgPSBmdW5jdGlvbihjb250YWluZXIsIGluZm9UZXh0LCBpbmZvTGluaykge1xyXG4gICAgaWYgKGluZm9MaW5rICYmIChpbmZvTGluayAhPT0gJy0nKSkge1xyXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJ2EnKVxyXG4gICAgICAgICAgICAuYXR0cignaHJlZicsIGluZm9MaW5rKVxyXG4gICAgICAgICAgICAuYXR0cigndGFyZ2V0JywgJ19ibGFuaycpXHJcbiAgICAgICAgICAgIC50ZXh0KGluZm9UZXh0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGFpbmVyLnRleHQoaW5mb1RleHQpO1xyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGFkZFZhbHVlID0gZnVuY3Rpb24oY29udGFpbmVyLCBpbmZvKSB7XHJcbiAgICBpZiAoKHR5cGVvZiBpbmZvID09PSAnc3RyaW5nJykgfHwgKHR5cGVvZiBpbmZvID09PSAnbnVtYmVyJykgfHwgKHR5cGVvZiBpbmZvID09PSAnYm9vbGVhbicpKSB7XHJcbiAgICAgICAgY29udGFpbmVyLnRleHQoaW5mbyk7XHJcbiAgICB9IGVsc2UgaWYgKGlzTGluayhpbmZvKSkge1xyXG4gICAgICAgIGFkZExpbmsoY29udGFpbmVyLCBpbmZvLnZhbHVlLCBpbmZvLmxpbmspO1xyXG4gICAgfSBlbHNlIGlmIChpbmZvIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICBfLmVhY2goaW5mbywgZnVuY3Rpb24oZGF0dW0sIGluZGV4KSB7XHJcbiAgICAgICAgICAgIHZhciBzcGFuID0gY29udGFpbmVyLmFwcGVuZCgnc3BhbicpO1xyXG4gICAgICAgICAgICBhZGRWYWx1ZShzcGFuLCBkYXR1bSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gKGluZm8ubGVuZ3RoLTEpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKCdzcGFuJykudGV4dCgnLCAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBhZGREYXRhKGNvbnRhaW5lci5hcHBlbmQoJ3RhYmxlJyksIGluZm8pO1xyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGFkZERhdHVtID0gZnVuY3Rpb24odGFibGUsIGtleSwgaW5mbykge1xyXG4gICAgdmFyIHRyID0gdGFibGUuYXBwZW5kKCd0cicpO1xyXG4gICAgaWYgKGtleS5pbmRleE9mKCdzdHlsZWRfJykgPT09IDApIHtcclxuICAgICAgICB2YXIgbGVmdENvbCA9IHRyLmFwcGVuZCgndGQnKS50ZXh0KGluZm8ua2V5KTtcclxuICAgICAgICBpZiAoaW5mby5rZXlfc3R5bGUpIHtcclxuICAgICAgICAgICAgbGVmdENvbC5hdHRyKCdzdHlsZScsIGluZm8ua2V5X3N0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJpZ2h0Q29sID0gdHIuYXBwZW5kKCd0ZCcpO1xyXG4gICAgICAgIGlmIChpbmZvLnZhbHVlX3N0eWxlKSB7XHJcbiAgICAgICAgICAgIHJpZ2h0Q29sLmF0dHIoJ3N0eWxlJywgaW5mby52YWx1ZV9zdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZFZhbHVlKHJpZ2h0Q29sLCBpbmZvLnZhbHVlKVxyXG4gICAgfSBlbHNlIGlmIChrZXkuaW5kZXhPZignc3Vic2VjdGlvbl8nKSA9PT0gMCkge1xyXG4gICAgICAgIHRyLmFwcGVuZCgndGQnKVxyXG4gICAgICAgICAgICAuYXR0cignY29sc3BhbicsIDIpXHJcbiAgICAgICAgICAgIC5jbGFzc2VkKCd1cF9wcF90YWJsZV9zdWJzZWN0aW9uJywgdHJ1ZSlcclxuICAgICAgICAgICAgLnRleHQoaW5mby50aXRsZSk7XHJcbiAgICAgICAgYWRkRGF0YSh0YWJsZSwgaW5mby5pbmZvcm1hdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRyLmFwcGVuZCgndGQnKS50ZXh0KGtleS5yZXBsYWNlKC9fL2csICcgJykpO1xyXG4gICAgICAgIGFkZFZhbHVlKHRyLmFwcGVuZCgndGQnKSwgaW5mbyk7XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgYWRkRGF0YSA9IGZ1bmN0aW9uKHRhYmxlLCBkYXRhKSB7XHJcbiAgICBfLmVhY2goZGF0YSwgZnVuY3Rpb24oaW5mbywga2V5KSB7XHJcbiAgICAgICAgYWRkRGF0dW0odGFibGUsIGtleSwgaW5mbyk7XHJcbiAgICB9KTtcclxufTtcclxuXHJcbnZhciBFbGVtZW50ID0gZnVuY3Rpb24oY2F0ZWdvcnksIGVsZW0pIHtcclxuICAgIHZhciBlbGVtZW50ID0gdGhpcztcclxuICAgIGVsZW1lbnQuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcclxuICAgIGVsZW1lbnQuY29udGVudCA9IGVsZW07XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IHVuZGVmaW5lZDtcclxuICAgIGVsZW1lbnQudGFibGVDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICBlbGVtZW50LnRhYmxlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGVsZW1lbnQudG9nZ2xlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnYmxvY2snKTtcclxuICAgICAgICAgICAgZWxlbWVudC5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bicpO1xyXG4gICAgICAgICAgICBlbGVtZW50LmNvbnRlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWxlbWVudC50YWJsZUNvbnRhaW5lci5zdHlsZSgnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuaGVhZGVyLnRpdGxlLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2VsZW1lbnQtbmFtZSB1cF9wZnR2X2Fycm93LXJpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY29udGVudC5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgZWxlbUNvbnRhaW5lciA9IGVsZW1lbnQuY2F0ZWdvcnkucGFkQ29udGFpbmVyLmFwcGVuZCgnZGl2JykuYXR0cignaWQnLCAncGlubmVkX2VsZW1faWRfJyArIGVsZW0uaWQpO1xyXG4gICAgZWxlbWVudC5maXJzdChlbGVtZW50LmNhdGVnb3J5LnRpdGxlLCBlbGVtQ29udGFpbmVyLCBfLmZpcnN0KGVsZW1lbnQuY29udGVudC5zZWN0aW9ucykpO1xyXG4gICAgZWxlbWVudC50YWlsKGVsZW1lbnQudGFibGUsIF8udGFpbChlbGVtZW50LmNvbnRlbnQuc2VjdGlvbnMpKTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC5jb250ZW50Lm9wZW4gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgZWxlbWVudC50b2dnbGUoKTtcclxuICAgIH1cclxufTtcclxuXHJcbkVsZW1lbnQucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24oY2F0VGl0bGUsIGNvbnRhaW5lciwgc2VjdGlvbikge1xyXG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzO1xyXG4gICAgZWxlbWVudC5oZWFkZXIgPSBjb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9lbGVtZW50LWhlYWRlcicsIHRydWUpO1xyXG4gICAgZWxlbWVudC5oZWFkZXIudGl0bGUgPSBlbGVtZW50LmhlYWRlci5hcHBlbmQoJ2EnKVxyXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICd1cF9wcF9lbGVtZW50LW5hbWUgdXBfcGZ0dl9hcnJvdy1kb3duJylcclxuICAgICAgICAudGV4dChzZWN0aW9uLnRpdGxlKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgZWxlbWVudC50b2dnbGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIGVsZW1lbnQuaGVhZGVyLmFwcGVuZCgnc3BhbicpXHJcbiAgICAgICAgLmNsYXNzZWQoJ3VwX3BwX2ljb25Db250YWluZXInLCB0cnVlKVxyXG4gICAgICAgIC5zdHlsZSgnZmxvYXQnLCAncmlnaHQnKVxyXG4gICAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ3VwLXBwLWljb24tdHJhc2ggdXBfcHBfY2xpY2thYmxlLWljb24nKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKGVsZW1lbnQuY29udGVudC5pZCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgZWxlbWVudC50YWJsZUNvbnRhaW5lciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpO1xyXG4gICAgZWxlbWVudC50YWJsZSA9IGVsZW1lbnQudGFibGVDb250YWluZXIuYXBwZW5kKCd0YWJsZScpLmF0dHIoJ3dpZHRoJywgJzEwMCUnKTtcclxuICAgIGFkZERhdGEoZWxlbWVudC50YWJsZSwgc2VjdGlvbi5pbmZvcm1hdGlvbik7XHJcbn07XHJcblxyXG5FbGVtZW50LnByb3RvdHlwZS50YWlsID0gZnVuY3Rpb24oY29udGFpbmVyLCBzZWN0aW9ucykge1xyXG4gICAgXy5lYWNoKHNlY3Rpb25zLCBmdW5jdGlvbihzZWN0aW9uKSB7XHJcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgndHInKS5jbGFzc2VkKCd1cF9wcF9lbGVtZW50LXNlY3Rpb24nLCB0cnVlKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCd0ZCcpXHJcbiAgICAgICAgICAgIC5hdHRyKCdjb2xzcGFuJywgMilcclxuICAgICAgICAgICAgLnRleHQoc2VjdGlvbi50aXRsZSk7XHJcblxyXG4gICAgICAgIGFkZERhdGEoY29udGFpbmVyLCBzZWN0aW9uLmluZm9ybWF0aW9uKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHtcclxuICAgIHZhciBlbGVtZW50ID0gdGhpcztcclxuICAgIHZhciBpbmRleCA9IF8uZmluZEluZGV4KGVsZW1lbnQuY2F0ZWdvcnkuZGF0YSwgZnVuY3Rpb24oZGF0dW0pe1xyXG4gICAgICAgIHJldHVybiBkYXR1bS5pZCA9PT0gaWQ7XHJcbiAgICB9KTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB2YXIgY29udGFpbmVyID0gZDMuc2VsZWN0KCcjJyArICdwaW5uZWRfZWxlbV9pZF8nICsgaWQpO1xyXG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTtcclxuICAgICAgICBlbGVtZW50LmNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgZWxlbWVudC5jYXRlZ29yeS5kYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgZWxlbWVudC5jYXRlZ29yeS5waW5QYWQuZGlzcGF0Y2hlci5yZW1vdmUoe2VsZW1lbnQ6IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IGVsZW1lbnQuY2F0ZWdvcnkudGl0bGUsIGlkOiBlbGVtZW50LmNvbnRlbnQuaWQsIHNlY3Rpb25zOiBlbGVtZW50LmNvbnRlbnQuc2VjdGlvbnN9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY2F0ZWdvcnkucmVtb3ZlRG9tKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBlbGVtZW50LmNhdGVnb3J5LnBpblBhZC5kaXNwYXRjaGVyLnVua25vd24oe2VsZW1lbnQ6IHtpZDogaWR9fSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgRWxlbWVudEZhY3RvcnkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW1vdmVFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKGVsZW1lbnQuY29udGVudC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufSgpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBFbGVtZW50RmFjdG9yeTsiLCIvKmpzbGludCBub2RlOiB0cnVlICovXHJcbi8qanNoaW50IGxheGJyZWFrOiB0cnVlICovXHJcblwidXNlIHN0cmljdFwiO1xyXG4vKlxyXG4gKiBiaW9qcy12aXMtcGlucGFkXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9lYmktdW5pcHJvdC9iaW9qcy12aXMtcGlucGFkXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNCBlYmktdW5pcHJvdFxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIgbGljZW5zZS5cclxuICovXHJcblxyXG4vKipcclxuQGNsYXNzIFBpbnBhZFxyXG4gKi9cclxudmFyIGQzID0gcmVxdWlyZSgnZDMnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcbnZhciBDYXRlZ29yeUZhY3RvcnkgPSByZXF1aXJlKCcuL0NhdGVnb3J5RmFjdG9yeScpO1xyXG5cclxuLyoqXHJcbiAqIFByaXZhdGUgTWV0aG9kc1xyXG4gKi9cclxudmFyIGRlZmF1bHRPcHRzID0ge1xyXG4gICAgd2lkdGg6ICcyNTBweCcsXHJcbiAgICBoZWlnaHQ6ICc1MDBweCcsXHJcbiAgICBoaWdobGlnaHRDb2xvcjogJ2dyZWVuJ1xyXG59O1xyXG52YXIgaW5pdCA9IGZ1bmN0aW9uKHBpblBhZCkge1xyXG4gICAgdmFyIHBpblBhZENvbnRhaW5lciA9IGQzLnNlbGVjdChwaW5QYWQub3B0aW9ucy5lbClcclxuICAgICAgLnRleHQoJycpXHJcbiAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgIC5jbGFzc2VkKCd1cF9wcF9tYWluLWNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgIC5zdHlsZSgnd2lkdGgnLCBwaW5QYWQub3B0aW9ucy53aWR0aCk7XHJcblxyXG4gICAgdmFyIG1haW5UaXRsZSA9IHBpblBhZENvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX21haW5UaXRsZScsIHRydWUpO1xyXG4gICAgbWFpblRpdGxlLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXAtcHAtaWNvbi1waW4nLCB0cnVlKS5jbGFzc2VkKCd1cF9wcF9pY29uJywgdHJ1ZSk7XHJcbiAgICBwaW5QYWQub2Zmc2V0VG9wID0gbWFpblRpdGxlLm5vZGUoKS5vZmZzZXRIZWlnaHQgKyBtYWluVGl0bGUubm9kZSgpLm9mZnNldFRvcDtcclxuXHJcbiAgICBwaW5QYWQucGFkQ29udGFpbmVyID0gcGluUGFkQ29udGFpbmVyLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfcGFkJywgdHJ1ZSlcclxuICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIHBpblBhZC5vcHRpb25zLmhlaWdodCk7XHJcblxyXG4gICAgaWYgKHBpblBhZC5vcHRpb25zLnRvUGluKSB7XHJcbiAgICAgICAgcGluUGFkLmFkZEVsZW1lbnQocGluUGFkLm9wdGlvbnMudG9QaW4pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuLypcclxuICogUHVibGljIE1ldGhvZHNcclxuICovXHJcbnZhciBQaW5wYWRWaWV3ZXIgPSBmdW5jdGlvbihvcHRzKXtcclxuICAgIHZhciBwaW5QYWQgPSB0aGlzO1xyXG4gICAgcGluUGFkLm9wdGlvbnMgPSBfLmV4dGVuZCh7fSwgZGVmYXVsdE9wdHMsIG9wdHMpO1xyXG4gICAgcGluUGFkLm9mZnNldFRvcCA9IHVuZGVmaW5lZDtcclxuICAgIHBpblBhZC5jYXRlZ29yaWVzID0gW107XHJcbiAgICBwaW5QYWQuZGlzcGF0Y2hlciA9IGQzLmRpc3BhdGNoKFwiYWRkXCIsIFwiZHVwbGljYXRpb25cIiwgXCJyZW1vdmVcIiwgXCJ1bmtub3duXCIpO1xyXG5cclxuICAgIHBpblBhZC5nZXREaXNwYXRjaGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHBpblBhZC5kaXNwYXRjaGVyO1xyXG4gICAgfTtcclxuXHJcbiAgICBpbml0KHBpblBhZCk7XHJcbiAgICAvL3RoaXMuZWwudGV4dENvbnRlbnQgPSBiaW9qc1Zpc1BpbnBhZC5oZWxsbyhvcHRzLnRleHQpO1xyXG59O1xyXG5cclxuXHJcblBpbnBhZFZpZXdlci5wcm90b3R5cGUuYWRkQ2F0ZWdvcnkgPSBmdW5jdGlvbihjYXRlZ29yeSkge1xyXG4gICAgcmV0dXJuIENhdGVnb3J5RmFjdG9yeS5jcmVhdGVDYXRlZ29yeSh0aGlzLCBjYXRlZ29yeSk7XHJcbn07XHJcblxyXG5QaW5wYWRWaWV3ZXIucHJvdG90eXBlLmFkZEVsZW1lbnQgPSBmdW5jdGlvbih0b1Bpbikge1xyXG4gICAgdmFyIHBpblBhZCA9IHRoaXM7XHJcbiAgICAvL2F2b2lkIGR1cGxpY2F0ZWQgaWRzXHJcbiAgICB2YXIgZXhpc3RzID0gdG9QaW4uaWQgJiYgXy5zb21lKHBpblBhZC5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXQpIHtcclxuICAgICAgICByZXR1cm4gXy5zb21lKGNhdC5kYXRhLCBmdW5jdGlvbihlbGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtLmlkID09PSB0b1Bpbi5pZFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIuZHVwbGljYXRpb24oe2VsZW1lbnQ6IHRvUGlufSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9hZGQgY2F0ZWdvcnlcclxuICAgIHZhciBjYXRlZ29yeSA9IF8uZmluZChwaW5QYWQuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0KSB7cmV0dXJuIGNhdC50aXRsZSA9PT0gdG9QaW4uY2F0ZWdvcnk7IH0pO1xyXG4gICAgaWYgKGNhdGVnb3J5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBwaW5QYWQuY2F0ZWdvcmllcy5wdXNoKHBpblBhZC5hZGRDYXRlZ29yeSh0b1Bpbi5jYXRlZ29yeSkpO1xyXG4gICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLmFkZCh7Y2F0ZWdvcnk6IHRvUGluLmNhdGVnb3J5fSk7XHJcbiAgICAgICAgY2F0ZWdvcnkgPSBfLmxhc3QocGluUGFkLmNhdGVnb3JpZXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRvUGluLnNlY3Rpb25zICYmICh0b1Bpbi5zZWN0aW9ucy5sZW5ndGggIT09IDApKSB7XHJcbiAgICAgICAgaWYgKCFjYXRlZ29yeS5vcGVuKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnRvZ2dsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbmV3RWxlbSA9IENhdGVnb3J5RmFjdG9yeS5jcmVhdGVFbGVtZW50KGNhdGVnb3J5LCB0b1Bpbi5pZCwgdG9QaW4uc2VjdGlvbnMpO1xyXG4gICAgICAgIHZhciBlbGVtWSA9IG5ld0VsZW0uaGVhZGVyLm5vZGUoKS5vZmZzZXRUb3A7XHJcbiAgICAgICAgcGluUGFkLnBhZENvbnRhaW5lci5ub2RlKCkuc2Nyb2xsVG9wID0gZWxlbVkgLSBwaW5QYWQub2Zmc2V0VG9wO1xyXG4gICAgICAgIHZhciBjb2xvciA9IG5ld0VsZW0uaGVhZGVyLnN0eWxlKCdiYWNrZ3JvdW5kLWNvbG9yJyk7XHJcbiAgICAgICAgbmV3RWxlbS5oZWFkZXJcclxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgICAuZHVyYXRpb24oMTUwMClcclxuICAgICAgICAgICAgLnN0eWxlVHdlZW4oJ2JhY2tncm91bmQtY29sb3InLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkMy5pbnRlcnBvbGF0ZShwaW5QYWQub3B0aW9ucy5oaWdobGlnaHRDb2xvciwgY29sb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIDtcclxuICAgICAgICBwaW5QYWQuZGlzcGF0Y2hlci5hZGQoe2VsZW1lbnQ6IHRvUGlufSk7XHJcbiAgICAgICAgcmV0dXJuIG5ld0VsZW07XHJcbiAgICB9XHJcbn07XHJcblxyXG5QaW5wYWRWaWV3ZXIucHJvdG90eXBlLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihpZCkge1xyXG4gICAgdmFyIHBpblBhZCA9IHRoaXM7XHJcbiAgICB2YXIgaW5kZXggPSAtMTtcclxuICAgIHZhciBjYXRlZ29yeSA9IF8uZmluZChwaW5QYWQuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0KSB7XHJcbiAgICAgICAgaW5kZXggPSBfLmZpbmRJbmRleChjYXQuZGF0YSwgZnVuY3Rpb24oZGF0dW0pe1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0dW0uaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBpbmRleCAhPT0gLTE7XHJcbiAgICB9KTtcclxuICAgIGlmIChjYXRlZ29yeSAmJiAoaW5kZXggIT09IC0xKSkge1xyXG4gICAgICAgIENhdGVnb3J5RmFjdG9yeS5yZW1vdmVFbGVtZW50KGNhdGVnb3J5LCBpbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLnVua25vd24oe2VsZW1lbnQ6IHtpZDogaWR9fSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5QaW5wYWRWaWV3ZXIucHJvdG90eXBlLnJlbW92ZUNhdGVnb3J5ID0gZnVuY3Rpb24oY2F0VGl0bGUpIHtcclxuICAgIHZhciBwaW5QYWQgPSB0aGlzO1xyXG4gICAgdmFyIGNhdGVnb3J5ID0gXy5maW5kKHBpblBhZC5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXQpIHtcclxuICAgICAgICByZXR1cm4gY2F0LnRpdGxlID09PSBjYXRUaXRsZTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgQ2F0ZWdvcnlGYWN0b3J5LnJlbW92ZUNhdGVnb3J5KGNhdGVnb3J5KTtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBNZXRob2QgcmVzcG9uc2libGUgdG8gc2F5IEhlbGxvXHJcbiAqIEBleGFtcGxlXHJcbiAqICAgICBiaW9qc3Zpc3BpbnBhZC5oZWxsbygnYmlvanMnKTtcclxuICogQG1ldGhvZCBoZWxsb1xyXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBOYW1lIG9mIGEgcGVyc29uXHJcbiAqIEByZXR1cm4ge1N0cmluZ30gUmV0dXJucyBoZWxsbyBuYW1lXHJcbiAqL1xyXG5QaW5wYWRWaWV3ZXIuaGVsbG8gPSBmdW5jdGlvbiAobmFtZSkge1xyXG4gICAgcmV0dXJuICdoZWxsbyAnICsgbmFtZTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gUGlucGFkVmlld2VyOyJdfQ==

@@ -1,14 +0,8 @@

� �Y[o�6�+�J ��S�E^!d����>L���`$:fG!��L���sx�(ٹt�i_b�"���w����۽,�Pr�C%e�Q��Mz��L^��d��ӳ� a*)
��p��i'v>�k\���U���k9�@��2�qƴC�e!����J'�I��l+d5�Wվ�ȹ8'?�tmvZ=�ʬT/ȿ?}��_7�}������} ��P^[��Łm�6m~�5�p���JV�I��O4X�pg�,����5�Y{UU"/e�ӎ�tXɩ�]�g��c�KP�~���(�k���\ޙ�Z���*a��^�.9���A[�<=�}�g�Ѣ4�z� OH�I)��e�u[*�I�RU�P��c��4���(�u��ݰ�Zf������TfF���o�.��%<Ṵ��������Yg ���4LH�3���
t$�ʚ�-��}�i�M� ��e�Ol��l��R�u��nӰ�пI �0c ��4B��$��3ۚ� �,}\T�Q�2ÿ�Ĥ��� *=����]͓���۶ ����jd|֚'�A��b���ngP�#�,�f��F�v7������y^o���C�;ߛ�����"��c�<+�!mB��V�W�%�*d"=[AE��}�f /X�(�+T�פ�F��������}��n��K׋�
���1􄸬m���h}�ڔ;�/>'����,�D*ɉ�eTC>#Pt͠�/��'Pr[+��Ǵ �_�ٚ�����wv�gU���������������`���U�i��67` �p6��*JF2����B{( )��*@VTһ�c���c�%��2Hv�g���X�.S���<��$�oy=�{�F`�5�vu"N0�4��,$?B�y�2��]��וQ��'a���U�)��^��(�������.�qg��ɼ
�1g8a�$h;�
����_t�j>=>݉ɣ<B>�ǘOc��~�S"����82FQ��L9��l$�X(o������P������\�/h�S�T�4 �)AwC/�D)��"�#�`�"Q�B^ \��,�3![�d�#�fOi�}�}�O-�Frx�����,����V�a��p-$��'�gKO��V�,󦁇ɂ��/�������<�j���x�nnk����>�ᩣ�xzN� ��o߈����a>�U��,"���k�s)Pbf͆_�3�͑#/�+X3��%���m��D���� �^����<� �3՜���� }�ȣ�U�lA�ٚ��.m`V�'H{HT�=ٰ�
�K� �~�+0�.6�b5|K=�K��ցa�������ItJ;^CL����Cc���Dk�����^�#�� ��;o��m
���t�pb�)��
�&��w�ww�̐�7���I��� ^�[c`��y�'��
��6���3d4h������K�g,�$�yy�_"?o_�>��zM����4H�X C��ؼ�t�mt$UB%�y�^a�l�n1-{y�8%>y%�JSZQ�\�zr�Ȉ̘ϣ�i �E+�ݖϠ�MJrϼܟ���!����᫹2.�g�-7����Id�e�>�ЛqgŤ�'A ����)�~�ف«���!ү�%�V�2�y������z._F��
�{x�݌��h:�'�K�xtt=!;*X8�Tܖ�;e�2�X\��ύ{���=�����5�e�89���:H����c����=⡯~��8Mԣ��u���-��1GT�*�:�&�B��.D���M�w�p{����jO[<9��y�|%t�r��ҽ�[�#W�V:'w�sIƴ60�> 9 � �(0�#����=���R/@���A���{ �Q�g,�pG�������!<n� a����ۖ�Ϫ�䕪�*�C���>���DX4�S{��p��b{̍�шQ� iy���N�N|�=NM�
��u;@G�X6���.��2�Di^��=B sHJ@5<�laaG�A��aXxTгX.�(6`�*RJ�8�p�l|ɐXt�k����;��9��غc3Ҫ{���7�����&2�^�P8l�$�I��c��ȇ��-e�����W�2�5'�Q�m�b
^��כ�.)�r2,ƫ�XM�]tƛPT2܌�����4���rxx�G@z�,~�&z�d�n
=���T�td`���M`Wӂ�|�e��-��kL�j����U/͗�-+��i� @h:��3�f�V���@j���/�Ϗ��'D��b`�) ׍���� X0�tZ"!;�L�8���0:�/�7fڛ����}| &�Jt|���F�0֠Os��ĺV'���3�b�@�n�gr�z�ZVv���%ܤ��)���
� �Y�o��W�I ��s��B���C �����#�1oR��d������D�N��=�%�(r8Ù��F�����v/K#����PIYz�GT"h��6��7��=�����*H�J��<7\mgډ�����4�y�jn�Z�*z�Lq\�1��PjYH�4���� ���Tf���=�j_���R\�H�6;��feV���ߟ?���O�_>�����_>Zv(�-P����5J�6?t�m�Y�f%����'�I�3Pv����߮��*��2�iG[:��ԝ]�g��c�KP�~�yQQ,���,���7����LU���{���omq��@�-��F��{��HxB�IJ�w/+��RiNҔ���w�j������F�g���Xl ;Ѯe��+�
Nef��y�f�ᲸX�S� +nn�;�-����aqְꃒ� �u�X\��⑤YY����o6M�)����բ � ��8[���w��b{�� ��f ���F�T�d|�c[�a�O�J=IXf�7��4���Ţ�J��Jpd����I�EZ�mۆ�c X�ad|֚g�A��b���~gP��AL X4�e-�f�n�-B�]��'�ޚ?�Ǡw�7;��wŠh̎��(�� ��C��^h8 ���b�T���`��?! �%}4z'�O4�u�O]�^�@UH�D�CO�����C���G�r��ŇpHy��5�Kl�Jrbu吏]3H���� ���
�<ͅ�1�H�;[���>�����YUy4;a�8����a'q�7<7?.tD�s�r���M�2���h������ 2r<��
Ch��
���G�)����Q�j� �]�Yi.'���*+5��r鷼�̽M#0Κ}��:�'�R��P �� ���fg�.���ʨvڊ�08��e�)��^�>)�������rŸ���d~�1vg��@��Y�O�O|�/:R5��OW1yGȇz����|JdzP��k�03�i�u P�@
���qAίh�c�5��;�kywK�����?&��o9Qw�C@ $�y�𙐭a�đ�Z��4�ʾ��V#�����9D�����<�z[N�k!�<�Xzu���7M��dA�^\�e{����<�j���X)7w5�MB��yx�h3A �''�����D��
��9�؜�����\ ��Y���Lsst���e���2q]|B�M��B�.��^����<� �3i�����`�ϣ�U�b&�ٚX�.�c��g��Ն�AO6����#9�l�
���}_ �R�ǒ`�=��^O�G_S�$: ��!�z��<�o�ZN���H�� ����g��8^捵%�p֠���mNB�=u<0@0����=%3���d*�ѫ���4d��*���kd>TXK�1�r��6�B�T H�x<z}���e��,�O�C���쫤�[<"/�Tx;}yE����U�z��kݒ�V�&�.%d"n�������V�ò��p��W"�4��u8��_ONQ��y�ꬁuhe£����A�B���p�qc�ƍ{kcw6VƩ�B������tw,�#�;"��0I��K„b:qZc��O�2;Pw�\�� @�u�̊��<�!ɋK�K�2��3���9�s3�s�鴭��<�5����O3��W���$��u׶�>Slob�zB�r��P@��4�h��%��E^��r���Ck�P͕�B+곎ः�s��X��&�o}���2���{�UB:G:c�[:Э_�BNs�� iGM�����$�454�>���v�(��+��ۋ��< 7��8ؤ���O���;�p������j��j�sr�9�dL�C�1ˡNXg�k?=�I�>�L�PzT��(K�*����_�}�_�ߣ1��M=!̕,P{�m�����RU��~���/'�0�����n�9�'�F�hĨ_����� O�Nچ��&L���n��(GP ���Dwfxwl���� /P�+d:�1�9'.����Ǝ&�v�� �(�g������a�� ʼn;A��o'��������˨IM��� ��'��U�4��s%~�lݐ��+��c���H�r�u�\�U������^���.|xߋ�K����a1� �j¬�4ބ���f$=�8�d>�[����� ,Y��]��͚�zr�A�5k�B�7��MS"D����Ԫ�1�E��]�4��w��z�@4@��p����'[���W�>Ϳ<�E����1\7��3���i����3Q�Цg�����eo �)�:Ϟ��N�l>w��zr-Ǡd��m\ᄅ'����#��J���X؅(�ku���0�сUT�ZqZ����{EX�ћc�q��� #��<

@@ -1,1 +0,1 @@

require=function e(t,n,a){function o(i,p){if(!n[i]){if(!t[i]){var d="function"==typeof require&&require;if(!p&&d)return d(i,!0);if(r)return r(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var s=n[i]={exports:{}};t[i][0].call(s.exports,function(e){var n=t[i][1][e];return o(n?n:e)},s,s.exports,e,t,n,a)}return n[i].exports}for(var r="function"==typeof require&&require,i=0;i<a.length;i++)o(a[i]);return o}({1:[function(e,t,n){"use strict";var a=(e("d3"),e("underscore")),o=e("./ElementFactory"),r=function(e,t){var n=this;n.pinPad=e,n.title=t,n.open=!0,n.data=[],n.elements=[];var r=n.pinPad.padContainer.append("div").classed("up_pp_category-container",!0);n.header=r.append("div").classed("up_pp_category-header",!0),n.header.title=n.header.append("a").attr("class","up_pp_category-name up_pftv_arrow-down").text(t).on("click",function(){n.toggle()}),n.header.append("span").classed("up_pp_iconContainer",!0).style("float","right").append("div").attr("class","up-pp-icon-trash up_pp_clickable-icon").on("click",function(){n.remove()}),n.padContainer=r.append("div").classed("up_pp_category-pad",!0),n.remove=function(){for(;0!==n.elements.length;)n.elements[0].remove(n.data[0].id,n.title,!1)},n.removeDom=function(){var e=a.findIndex(n.pinPad.categories,function(e){return e.title===n.title});-1!==e&&(r.remove(),n.pinPad.categories.splice(e,1),n.pinPad.dispatcher.remove({category:n.title}))},n.toggle=function(){"none"===n.padContainer.style("display")?(n.padContainer.style("display","block"),n.header.title.attr("class","up_pp_category-name up_pftv_arrow-down"),n.open=!0):(n.padContainer.style("display","none"),n.header.title.attr("class","up_pp_category-name up_pftv_arrow-right"),n.open=!1)},n.addElement=function(e,t){var o={sortAttribute:t[0].title,id:e,sections:t},r=a.sortedIndex(n.data,o,"sortAttribute");return o.sortedIndex=r,n.data.splice(r,0,o),r},n.displayElements=function(e){var t=void 0;return e===n.data.length-1?(t=o.createElement(n,n.data[n.data.length-1]),n.elements.push(t)):(n.padContainer.selectAll("*").remove(),a.each(n.data,function(a,r){var i=o.createElement(n,a);r===e&&(t=i)}),n.elements.splice(e,0,t)),t}},i=function(){return{createCategory:function(e,t){return new r(e,t)},removeCategory:function(e){e.remove()},createElement:function(e,t,n){var a=e.addElement(t,n);return e.displayElements(a)},removeElement:function(e,t){var n=a.findIndex(e.data,function(e){return e.id===t});-1!==n&&o.removeElement(e.elements[n],e.title)}}}();t.exports=i},{"./ElementFactory":2,d3:"d3",underscore:"underscore"}],2:[function(e,t,n){"use strict";var a=e("d3"),o=e("underscore"),r=function(e){if("object"==typeof e&&!(e instanceof Array)){var t=o.keys(e);if(2===t.length&&o.contains(t,"value")&&o.contains(t,"link"))return!0}return!1},i=function(e,t,n){n&&"-"!==n?e.append("a").attr("href",n).attr("target","_blank").text(t):e.text(t)},p=function(e,t){"string"==typeof t||"number"==typeof t||"boolean"==typeof t?e.text(t):r(t)?i(e,t.value,t.link):t instanceof Array?o.each(t,function(n,a){var o=e.append("span");p(o,n),a!==t.length-1&&e.append("span").text(", ")}):c(e.append("table"),t)},d=function(e,t,n){var a=e.append("tr");if(0===t.indexOf("styled_")){var o=a.append("td").text(n.key);n.key_style&&o.attr("style",n.key_style);var r=a.append("td");n.value_style&&r.attr("style",n.value_style),p(r,n.value)}else 0===t.indexOf("subsection_")?(a.append("td").attr("colspan",2).classed("up_pp_table_subsection",!0).text(n.title),c(e,n.information)):(a.append("td").text(t.replace(/_/g," ")),p(a.append("td"),n))},c=function(e,t){o.each(t,function(t,n){d(e,n,t)})},s=function(e,t){var n=this;n.category=e,n.content=t,n.header=void 0,n.tableContainer=void 0,n.table=void 0,n.toggle=function(){"none"===n.tableContainer.style("display")?(n.tableContainer.style("display","block"),n.header.title.attr("class","up_pp_element-name up_pftv_arrow-down"),n.content.open=!0):(n.tableContainer.style("display","none"),n.header.title.attr("class","up_pp_element-name up_pftv_arrow-right"),n.content.open=!1)};var a=n.category.padContainer.append("div").attr("id","pinned_elem_id_"+t.id);n.first(n.category.title,a,o.first(n.content.sections)),n.tail(n.table,o.tail(n.content.sections)),n.content.open===!1&&n.toggle()};s.prototype.first=function(e,t,n){var a=this;a.header=t.append("div").classed("up_pp_element-header",!0),a.header.title=a.header.append("a").attr("class","up_pp_element-name up_pftv_arrow-down").text(n.title).on("click",function(){a.toggle()}),a.header.append("span").classed("up_pp_iconContainer",!0).style("float","right").append("div").attr("class","up-pp-icon-trash up_pp_clickable-icon").on("click",function(){a.remove(a.content.id,e)}),a.tableContainer=t.append("div"),a.table=a.tableContainer.append("table").attr("width","100%"),c(a.table,n.information)},s.prototype.tail=function(e,t){o.each(t,function(t){e.append("tr").classed("up_pp_element-section",!0).append("td").attr("colspan",2).text(t.title),c(e,t.information)})},s.prototype.remove=function(e,t){var n=this,o=a.select("#pinned_elem_id_"+e);o.remove(),n.category.elements.splice(n.sortedIndex,1),n.category.data.splice(n.sortedIndex,1),n.category.pinPad.dispatcher.remove({element:{category:t,id:n.content.id,sections:n.content.sections}}),0===n.category.elements.length&&n.category.removeDom()};var l=function(){return{createElement:function(e,t){return new s(e,t)},removeElement:function(e,t){e.remove(e.content.id,t)}}}();t.exports=l},{d3:"d3",underscore:"underscore"}],"biojs-vis-pinpad":[function(e,t,n){"use strict";var a=e("d3"),o=e("underscore"),r=e("./CategoryFactory"),i={width:"250px",height:"500px",highlightColor:"green"},p=function(e){var t=a.select(e.options.el).text("").append("div").classed("up_pp_main-container",!0).style("width",e.options.width),n=t.append("div").classed("up_pp_mainTitle",!0);n.append("div").classed("up_pp_iconContainer",!0).append("div").classed("up-pp-icon-pin",!0).classed("up_pp_icon",!0),e.offsetTop=n.node().offsetHeight+n.node().offsetTop,e.padContainer=t.append("div").classed("up_pp_pad",!0).style("height",e.options.height),e.options.toPin&&e.addElement(e.options.toPin)},d=function(e){var t=this;t.options=o.extend({},i,e),t.offsetTop=void 0,t.categories=[],t.dispatcher=a.dispatch("duplication","add","remove"),t.getDispatcher=function(){return t.dispatcher},p(t)};d.prototype.addCategory=function(e){return r.createCategory(this,e)},d.prototype.addElement=function(e){var t=this,n=e.id&&o.some(t.categories,function(t){return o.some(t.data,function(t){return t.id===e.id})});if(n)return void t.dispatcher.duplication({element:e});var i=o.find(t.categories,function(t){return t.title===e.category});if(void 0===i&&(t.categories.push(t.addCategory(e.category)),t.dispatcher.add({category:e.category}),i=o.last(t.categories)),e.sections&&0!==e.sections.length){i.open||i.toggle();var p=r.createElement(i,e.id,e.sections),d=p.header.node().offsetTop;t.padContainer.node().scrollTop=d-t.offsetTop;var c=p.header.style("background-color");return p.header.transition().duration(1500).styleTween("background-color",function(){return a.interpolate(t.options.highlightColor,c)}),t.dispatcher.add({element:e}),p}},d.prototype.removeElement=function(e){var t=this,n=o.find(t.categories,function(t){return o.some(t.data,function(t){return t.id===e})});n&&r.removeElement(n,e)},d.prototype.removeCategory=function(e){var t=this,n=o.find(t.categories,function(t){return t.title===e});n&&r.removeCategory(n)},d.hello=function(e){return"hello "+e},t.exports=d},{"./CategoryFactory":1,d3:"d3",underscore:"underscore"}]},{},["biojs-vis-pinpad"]);
require=function e(t,n,a){function o(i,p){if(!n[i]){if(!t[i]){var d="function"==typeof require&&require;if(!p&&d)return d(i,!0);if(r)return r(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var s=n[i]={exports:{}};t[i][0].call(s.exports,function(e){var n=t[i][1][e];return o(n?n:e)},s,s.exports,e,t,n,a)}return n[i].exports}for(var r="function"==typeof require&&require,i=0;i<a.length;i++)o(a[i]);return o}({1:[function(e,t,n){"use strict";var a=(e("d3"),e("underscore")),o=e("./ElementFactory"),r=function(e,t){var n=this;n.pinPad=e,n.title=t,n.open=!0,n.data=[],n.elements=[];var r=n.pinPad.padContainer.append("div").classed("up_pp_category-container",!0);n.header=r.append("div").classed("up_pp_category-header",!0),n.header.title=n.header.append("a").attr("class","up_pp_category-name up_pftv_arrow-down").text(t).on("click",function(){n.toggle()}),n.header.append("span").classed("up_pp_iconContainer",!0).style("float","right").append("div").attr("class","up-pp-icon-trash up_pp_clickable-icon").on("click",function(){n.remove()}),n.padContainer=r.append("div").classed("up_pp_category-pad",!0),n.remove=function(){for(;0!==n.elements.length;)n.elements[0].remove(n.data[0].id,n.title,!1)},n.removeDom=function(){var e=a.findIndex(n.pinPad.categories,function(e){return e.title===n.title});-1!==e&&(r.remove(),n.pinPad.categories.splice(e,1),n.pinPad.dispatcher.remove({category:n.title}))},n.toggle=function(){"none"===n.padContainer.style("display")?(n.padContainer.style("display","block"),n.header.title.attr("class","up_pp_category-name up_pftv_arrow-down"),n.open=!0):(n.padContainer.style("display","none"),n.header.title.attr("class","up_pp_category-name up_pftv_arrow-right"),n.open=!1)},n.addElement=function(e,t){var o={sortAttribute:t[0].title,id:e,sections:t},r=a.sortedIndex(n.data,o,"sortAttribute");return o.sortedIndex=r,n.data.splice(r,0,o),r},n.displayElements=function(e){var t=void 0;return e===n.data.length-1?(t=o.createElement(n,n.data[n.data.length-1]),n.elements.push(t)):(n.padContainer.selectAll("*").remove(),a.each(n.data,function(a,r){var i=o.createElement(n,a);r===e&&(t=i)}),n.elements.splice(e,0,t)),t}},i=function(){return{createCategory:function(e,t){return new r(e,t)},removeCategory:function(e){e.remove()},createElement:function(e,t,n){var a=e.addElement(t,n);return e.displayElements(a)},removeElement:function(e,t){o.removeElement(e.elements[t])}}}();t.exports=i},{"./ElementFactory":2,d3:"d3",underscore:"underscore"}],2:[function(e,t,n){"use strict";var a=e("d3"),o=e("underscore"),r=function(e){if("object"==typeof e&&!(e instanceof Array)){var t=o.keys(e);if(2===t.length&&o.contains(t,"value")&&o.contains(t,"link"))return!0}return!1},i=function(e,t,n){n&&"-"!==n?e.append("a").attr("href",n).attr("target","_blank").text(t):e.text(t)},p=function(e,t){"string"==typeof t||"number"==typeof t||"boolean"==typeof t?e.text(t):r(t)?i(e,t.value,t.link):t instanceof Array?o.each(t,function(n,a){var o=e.append("span");p(o,n),a!==t.length-1&&e.append("span").text(", ")}):c(e.append("table"),t)},d=function(e,t,n){var a=e.append("tr");if(0===t.indexOf("styled_")){var o=a.append("td").text(n.key);n.key_style&&o.attr("style",n.key_style);var r=a.append("td");n.value_style&&r.attr("style",n.value_style),p(r,n.value)}else 0===t.indexOf("subsection_")?(a.append("td").attr("colspan",2).classed("up_pp_table_subsection",!0).text(n.title),c(e,n.information)):(a.append("td").text(t.replace(/_/g," ")),p(a.append("td"),n))},c=function(e,t){o.each(t,function(t,n){d(e,n,t)})},s=function(e,t){var n=this;n.category=e,n.content=t,n.header=void 0,n.tableContainer=void 0,n.table=void 0,n.toggle=function(){"none"===n.tableContainer.style("display")?(n.tableContainer.style("display","block"),n.header.title.attr("class","up_pp_element-name up_pftv_arrow-down"),n.content.open=!0):(n.tableContainer.style("display","none"),n.header.title.attr("class","up_pp_element-name up_pftv_arrow-right"),n.content.open=!1)};var a=n.category.padContainer.append("div").attr("id","pinned_elem_id_"+t.id);n.first(n.category.title,a,o.first(n.content.sections)),n.tail(n.table,o.tail(n.content.sections)),n.content.open===!1&&n.toggle()};s.prototype.first=function(e,t,n){var a=this;a.header=t.append("div").classed("up_pp_element-header",!0),a.header.title=a.header.append("a").attr("class","up_pp_element-name up_pftv_arrow-down").text(n.title).on("click",function(){a.toggle()}),a.header.append("span").classed("up_pp_iconContainer",!0).style("float","right").append("div").attr("class","up-pp-icon-trash up_pp_clickable-icon").on("click",function(){a.remove(a.content.id)}),a.tableContainer=t.append("div"),a.table=a.tableContainer.append("table").attr("width","100%"),c(a.table,n.information)},s.prototype.tail=function(e,t){o.each(t,function(t){e.append("tr").classed("up_pp_element-section",!0).append("td").attr("colspan",2).text(t.title),c(e,t.information)})},s.prototype.remove=function(e){var t=this,n=o.findIndex(t.category.data,function(t){return t.id===e});if(-1!==n){var r=a.select("#pinned_elem_id_"+e);r.remove(),t.category.elements.splice(n,1),t.category.data.splice(n,1),t.category.pinPad.dispatcher.remove({element:{category:t.category.title,id:t.content.id,sections:t.content.sections}}),0===t.category.elements.length&&t.category.removeDom()}else t.category.pinPad.dispatcher.unknown({element:{id:e}})};var l=function(){return{createElement:function(e,t){return new s(e,t)},removeElement:function(e){e.remove(e.content.id)}}}();t.exports=l},{d3:"d3",underscore:"underscore"}],"biojs-vis-pinpad":[function(e,t,n){"use strict";var a=e("d3"),o=e("underscore"),r=e("./CategoryFactory"),i={width:"250px",height:"500px",highlightColor:"green"},p=function(e){var t=a.select(e.options.el).text("").append("div").classed("up_pp_main-container",!0).style("width",e.options.width),n=t.append("div").classed("up_pp_mainTitle",!0);n.append("div").classed("up_pp_iconContainer",!0).append("div").classed("up-pp-icon-pin",!0).classed("up_pp_icon",!0),e.offsetTop=n.node().offsetHeight+n.node().offsetTop,e.padContainer=t.append("div").classed("up_pp_pad",!0).style("height",e.options.height),e.options.toPin&&e.addElement(e.options.toPin)},d=function(e){var t=this;t.options=o.extend({},i,e),t.offsetTop=void 0,t.categories=[],t.dispatcher=a.dispatch("add","duplication","remove","unknown"),t.getDispatcher=function(){return t.dispatcher},p(t)};d.prototype.addCategory=function(e){return r.createCategory(this,e)},d.prototype.addElement=function(e){var t=this,n=e.id&&o.some(t.categories,function(t){return o.some(t.data,function(t){return t.id===e.id})});if(n)return void t.dispatcher.duplication({element:e});var i=o.find(t.categories,function(t){return t.title===e.category});if(void 0===i&&(t.categories.push(t.addCategory(e.category)),t.dispatcher.add({category:e.category}),i=o.last(t.categories)),e.sections&&0!==e.sections.length){i.open||i.toggle();var p=r.createElement(i,e.id,e.sections),d=p.header.node().offsetTop;t.padContainer.node().scrollTop=d-t.offsetTop;var c=p.header.style("background-color");return p.header.transition().duration(1500).styleTween("background-color",function(){return a.interpolate(t.options.highlightColor,c)}),t.dispatcher.add({element:e}),p}},d.prototype.removeElement=function(e){var t=this,n=-1,a=o.find(t.categories,function(t){return n=o.findIndex(t.data,function(t){return t.id===e}),-1!==n});a&&-1!==n?r.removeElement(a,n):t.dispatcher.unknown({element:{id:e}})},d.prototype.removeCategory=function(e){var t=this,n=o.find(t.categories,function(t){return t.title===e});n&&r.removeCategory(n)},d.hello=function(e){return"hello "+e},t.exports=d},{"./CategoryFactory":1,d3:"d3",underscore:"underscore"}]},{},["biojs-vis-pinpad"]);

@@ -105,9 +105,4 @@ /*jslint node: true */

},
removeElement: function(category, elId) {
var index = _.findIndex(category.data, function(datum){
return datum.id === elId;
});
if (index !== -1) {
ElementFactory.removeElement(category.elements[index], category.title);
}
removeElement: function(category, index) {
ElementFactory.removeElement(category.elements[index]);
}

@@ -114,0 +109,0 @@ };

@@ -121,3 +121,3 @@ /*jslint node: true */

.on('click', function() {
element.remove(element.content.id, catTitle);
element.remove(element.content.id);
});

@@ -141,13 +141,20 @@

Element.prototype.remove = function(id, catTitle) {
Element.prototype.remove = function(id) {
var element = this;
var container = d3.select('#' + 'pinned_elem_id_' + id);
container.remove();
element.category.elements.splice(element.sortedIndex, 1);
element.category.data.splice(element.sortedIndex, 1);
element.category.pinPad.dispatcher.remove({element: {
category: catTitle, id: element.content.id, sections: element.content.sections}
var index = _.findIndex(element.category.data, function(datum){
return datum.id === id;
});
if (element.category.elements.length === 0) {
element.category.removeDom();
if (index !== -1) {
var container = d3.select('#' + 'pinned_elem_id_' + id);
container.remove();
element.category.elements.splice(index, 1);
element.category.data.splice(index, 1);
element.category.pinPad.dispatcher.remove({element: {
category: element.category.title, id: element.content.id, sections: element.content.sections}
});
if (element.category.elements.length === 0) {
element.category.removeDom();
}
} else {
element.category.pinPad.dispatcher.unknown({element: {id: id}});
}

@@ -161,4 +168,4 @@ };

},
removeElement: function(element, catTitle) {
element.remove(element.content.id, catTitle);
removeElement: function(element) {
element.remove(element.content.id);
}

@@ -165,0 +172,0 @@ };

@@ -56,3 +56,3 @@ /*jslint node: true */

pinPad.categories = [];
pinPad.dispatcher = d3.dispatch("duplication", "add", "remove");
pinPad.dispatcher = d3.dispatch("add", "duplication", "remove", "unknown");

@@ -113,9 +113,13 @@ pinPad.getDispatcher = function() {

var pinPad = this;
var index = -1;
var category = _.find(pinPad.categories, function(cat) {
return _.some(cat.data, function(datum) {
index = _.findIndex(cat.data, function(datum){
return datum.id === id;
});
return index !== -1;
});
if (category) {
CategoryFactory.removeElement(category, id);
if (category && (index !== -1)) {
CategoryFactory.removeElement(category, index);
} else {
pinPad.dispatcher.unknown({element: {id: id}});
}

@@ -122,0 +126,0 @@ };

{
"name": "biojs-vis-pinpad",
"description": "A component to pin tootlip-like information",
"version": "0.1.1",
"version": "0.1.2",
"homepage": "https://github.com/ebi-uniprot/biojs-vis-pinpad",

@@ -6,0 +6,0 @@ "author": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc